From 929488c1dbbdf176f4930ee400426d6dd41d0181 Mon Sep 17 00:00:00 2001 From: wancheng1990 <25022549@qq.com> Date: Mon, 2 Sep 2024 16:36:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dh265=20=E4=B8=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E7=9A=84=E6=97=B6=E5=80=99=E9=99=8D=E7=BA=A7=E5=88=B0?= =?UTF-8?q?wasm=20=E5=8D=A1=E4=B8=BB=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/public/dist.zip | Bin 534944 -> 534956 bytes demo/public/pro.zip | Bin 12466953 -> 12444235 bytes demo/public/pro/js/decoder-pro-audio.js | 2 +- .../pro/js/decoder-pro-hard-not-wasm.js | 2 +- demo/public/pro/js/decoder-pro-hard.js | 2 +- demo/public/pro/js/decoder-pro-mt.js | 2 +- demo/public/pro/js/decoder-pro-old.js | 2 +- demo/public/pro/js/decoder-pro-simd-mt.js | 2 +- demo/public/pro/js/decoder-pro-simd.js | 2 +- demo/public/pro/js/decoder-pro.js | 2 +- demo/public/pro/js/jessibuca-pro-demo.js | 2 +- .../public/pro/js/jessibuca-pro-multi-demo.js | 2 +- dist/jessibuca.js | 2 +- src/jessibuca.js | 4 ++-- 14 files changed, 13 insertions(+), 13 deletions(-) diff --git a/demo/public/dist.zip b/demo/public/dist.zip index 773dfb626d97284af152589e308617102285f81a..aa62450a4796131b36d15ae6a7411c26c0c0dba7 100644 GIT binary patch delta 1521 zcmY+EdpOg39LImZZRN)-w<9`cw8J)fLgktwi&Ug_NI5m7TuzC(3u8!lbR^m7mq#s~ zNGX?GHaT|2DTjnrNTs#TB>s(wxm zIUuD)yEE@--c9y#1xHI#j9}VfPbuBBsn(6(SThs<%u}eBt3I;5ys0N;e(gaGv(YQM ze=5|NWuE?i;Jl-D!2NE35ty01=#YTPVSNlKo#aST%91lGwHFNxRGC44D_FO0Hn=Ug z8+7`&j+>f$zcuK3MH&_KTFy=k;xMIhVFOxIkuXpmx?UWIkw3GT&dW})S?^2I15c`?H_t=hbx!T#gf9RxN19BFPn5w>QYCplD8*!(?ew zOAR-^S3E{-;?B%X3{uD+#U({YqTDOu*XRf$W%opOE)q-5$h{={llwauhHk{VPqeb!0h*(Kl{DlL3zG4*}3i|zb{UztIE%?4|IJ;+v;i?RyM=Y_P5SADFzuM`p2>0b zU_VhsOO0EW^jw<4GD+eq;S6fipWC_ruzg1+E3oadJZ%Zx;w zz#7I+jXHm{sN?UUwcmegUW4DH&az&0g_T# zM;GzqePb1*N{wX>Z*JH>4R!UMp0!W0g`>Hksl7`?v(5062I@vhb?@?} ziysz2nuiKhdHwN*6e0*%QPIFRjDa6iGd6*evq_xj)fmCsa0 P98NTYjF)?mAY}AEL$bK9 delta 1524 zcmY+Edo+}39LL{xX7J`xDCIgBmvK2Ej2Xm4I_{HFE|p{xSuw|*aTz4nP08iWR#q)h zDjJ!w)x^n)YM7$ME|br^Z4RFiUZMq_pW z>xYmhohPNF6R6b?a2C<}jEa>2K+GHn0K&|-ECfKptecj^_iT|?!^31Qh(=~!vR-}y zihw5ON#{R8X-Nbl--IASX6+D4K2ORlPug3!54n`{w-l&I1R?f@&hIH;?I{3BSo-@8 z`|>HQqP2EmOyLJ7-K15;!?-(;RkE=$=$&`Soaxy&A^PI&O4)>O%ToK!p_?CbV^67f zELCQrdK_1*4Q@6%3_Wp*4YZ_1SxrvX6qo2JDs)V{$5s5Xbi5vWxQDEtHZQk8DSpcM zvKXWJJo5(lzEx6YEn)`RF~@Zpw4yh!Py~>V(kjtRcHvbjf6dE1ENA(W*;RHn&-uu0 z4)JHUYtI@DZCS?W)}y7T<9hD~8}~bHRo~Tej~V+6w2?f<$`PoFL<#3EvjvEpxLI=(4uuDi+TLZ&7=h^UITi zI{2mjvTHwt+gHZuZ*Op%YvK`Y1`JEan&S0pmAKYNr>TW2D%3Pwc4mW5d3PAwXE*mY zZ(DcfKqhdd|1O7ON`2SFIuHmqiyO#>?VOnOBG0s7Nst=FxM#LFJ~_jO9^Y8KSFcS`XagG?e(37x!t-DmL1ftrQg|oUyuCopBm}8Y42`6JF!2>8BsRT%jG&-_g?`y~%JPHQ=+tqIQqLkgwjOTel%XJv`l8^?E&kQ$;cM0B1sBa-CR1Tg zyeZdrZr9k3YEu^OrhQX^{!+xJ!+WCXVN`B-H4h9?pRD8WnszZgJ? z%y}OG8`+NGaSK=n$8@@Xi_cuj$`IAS?89F&4@fg^<1IzW>2hS^s5;h?Rc!fcV%%(g zKoT1@qC7TE{%G)seaNl#_bx4l@?J^0q{1%+WyQ>T|8_d#q^85uk$vn&iWDuj5pNzk zX%S;)@mL8Y$$U`n=Ktu|Z|tXaj?i!bBd!y`C#W?R@Zz%)m?xs~0$b^{P#S|+nRY+y z{N3~~S&Y{?an;u)Yz{_GHN4HJp-sf9KGu!fRl`$dGn2^A606_@&u&&#4Wpqi zd0uFxCovvT0__LeM9hc0NL|5p9$za-Nn2q$6VxJ2QyU2*`zs=-nsrg3xJalSH6!=i zotd@8HPFpj3>s~^k`j&s0cBe>@IT7HeM}H9V8?goAUnA!VU+UmG&n%rl__i{YWNb*g>KAxwkY z@JMbG)P#-@YX5eCO?4ps%~bnuOO_6#q}9X(0so+gNJIZKr>XvD!VO~lB0`QHkpjfl zdAiZ_+x}r42#bC$4#A(rAw#%C8~C$!nKMb`)iuhOf!`=t8p+FkfDsv`2%@B~Ii2fRGY~UR}ZqxGXopCseOWInGmU;KRo|m+BNY3wmYqDiK zv`$9BW{O@f?DL*H8RLgb-^L}W;FnB}2;yh`s4HKNAK%>wI?h{vsGMA8h#=#nMAA@3 z1Gi8*Q<6Su_E)$6Q5uW{MoKqH_``)+f8S^Q;i1p^FT-7yKvWI-07D3f$?q!37mEcV z3dx3E;p9M{xS<;B3kC=joSNiE$^t2t54Ap14YhvahFVe!Odzsf(kufT#*GCAw8atw zdSlUm&WHv6cRU&Ae;=>PnT!3;Q2UbkKTiZ#WB^h%0AHP<|FbqL{Fk-iKp_|t^iKbC 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ⅅN>!KNV`xOG6V#rRo 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⁢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
_Pjm{luL)nNg`u zisi_Mz@NC+o;`Rly5*B4A$v|P{rJe!%s$aS?bN^0rStWyqoeVZ#K`pZ<<-^qTjfsS zp79WpdE7ui%}=)?+f4g<^p0gRx0!zW(zf>4*{C7)J3xpEhkraum_jr22M~02|Nd-p z8Hw&gw&17*$Pri@zXz z)zGdC!F%$Rp+IQ^j*Sl*vIc!PZ$9j)(jHn=)&0)Q@N_3~Aherb#U!C%bMgMY+50^W zz8hdDR{;&{Zht5P@DYpp>fXJQKk=sEniQG8p_)Voderb@T5p6ef_QQN+``)Lf;8Sd zLX&lo+*yWllcQ;#gr1H{ORsj4A46RAB3VsNb=xZXO`GuQ)uxojRjRI!S8rC+t7Lt= zX48H?$pOTU%2KqFZ67>6KaMKu*fh{^J?s`dZV*&c0)JH2G}rJ9ugEq}=}&H+Giv0X zWJ<=adrKi9%TG$;{McIzI{l12U*Fh!H@1M4%SO3Ouf5v0LffT%UR{?q8e6AL*;9G1 z^HK39cc3MI=GZKOd-u|v^T86h;fkyUaG~xsy-C40X~M^h2U8-iv^Il

?_*c4u&R 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%0A(IEMnF>M4d4(-`0A~! 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%0Dy(9) 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%0DuN>d{a(~UUk&t$IVr$!c)t;i4Hr$ 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 z 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≠g;czt)EY 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

Ns#B)z(Q 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

    B4VLz~RQE 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%0AXJ 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¨?J$r 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

    T z++vjJ%yi47&qm^>v}G3a7tRXaW~$3@4oSj);4*h=>qjK4=3ggfXk9x5RtNf?3Nk9o zzPXsz2N|r=fJ1RJAYj!1`7*doH#g;$iv9cOi?*dw1Xe~leIsPEOY0_c{f>f~Qf$P; zr|Ryld_?P}-yl*-0!FEM#oNf5pTC34Q8dcqnKAu+l71J-TTx4n>{92yLCn!eb-gfu z5eF3`p)>Lr!=X=&>t0fLFZD(ybs5wcoCRB6V0NQH#L7A``^DI*;=+JpSIji(XX0+u zW+<{6VIZy<{8;vqeVelTZTd`4mOXT5gK0Af8#DNWimo@VBsU=ee;V=w1^4@kx$em| z_YkWL#)ob8t0I!lgl^UhJDes>x}IQvk~jO>-B`l8w~VrS z*IdL?JsRr>X16Tkh%#C>3n}xDNo`_Z1HfR2h;yb>2A!I$R_8MCu&(0JKqn`E@vS%V zZK7@vmu6Q^h16jX1rmYEvjbjC5m_61d12DnH;OE@sBm9@qz__fQGO>@^r? zzlIh5KU0km(kEJ?u2Tp}OD##$MI>j&Dy2mI19F6VwMNQZODQTPvPd_|4iP8fXEfLV z<`TB#nERh9zj)0Aj-q`ZYrIx}RD$8G;wS!Aa^}$qStU2afVZ{n>fCDAbyKv1Nqy%8 z4o>|(jzl;t63gJyzj7|GlpFVjB2pJZGw>EL&xzIl8=N-Qptca|#lX2~DuoPxkr&21 zzlC#QSxt7(s>})i88PESGu1MvtYAMXbXrugCZKE=IUVOU4X5Y|L27>q`F{dsrb=__ zPnQI{Rw4|&51&a5Na$nfYx0JdGP_nM1cbPJxtCqLRwDuImw~%hCI{~QaRo5wU6-!A zRz`nMZhM+KBQPx6b&fgz#cZt4r_rS9_=`&(wF}Nm6kA-Ofo=X9uS76mc?mj8<>9|j zqGa>@1-TM^)r3odgnmBpJP%WCUa#j}jNiiI+LBQ)oci4`)Cr*~qYmqS6AuWG>!%K!{W5is7Dmx=)W3&-NH5dcYOVbz* zcKN88=E?gCr6#Z}xZ}R8o?i^VKRs!DJb8co7FpZI+vBRbiQL@W2nGq>8L!FdY+z)| z%j)Uy{STjpKb%zU>igk4{5kq@_;Gjyob%iBi?>JT@MZYv;_Uq7^yKIQUXD-R3_pLJ z;?tY6k4GoRn0|hKcGQqHU0K{0QQ#ipU~!({2T+^RURat&f6b|P;{%%!okkA;Ca^tf z7RAXxw!Jq^4c_thCFxmTcuaWbnU3hs)m~;rJ1WzvMfo zf@&GWn4sPnDg%vC#sVh-2AMO=o-sw=OO{aNx@UMlx@DqQRdFn)4 zL*|S}Jc!Rcy0ECh=f-jQ{h(Ee_wmBe#IiATySNKqtpaXBz}EtGeeq-jdex89;SG9{ zSDtibb9O*tABaL)Ogqxdzy1>A*4e`cfoXwU@B}iDtAlwvDa}roo#y`e!5+I zzXw0N_Wrih>A~BM)7gJ+*)Rt9+J;|9?d`%ZB)9hA7t(w9eb?FFY3;$op3~m#!S6o& z?%3^a%W3aH#%|kb??c9J$Jy)cb>N}vw0H2g2ftnT-FEi(x=^wURd(=q*Xd&V9<+?V z`|uem?6u$>l6!6Vg$A+rJ$#2AZbJh-sBa(Y>tPS^9ja^N?=FA*Vt%Nv10(7|ecMp) zcFWo8w4vf{=;01z-0nC%{NBayFx2gyv)|i=8n?G00}N$*2ZsPvZ0|xA?9=uhKH!&q ze1J-JVA%Um%MK13dbiVoUnsi+y=+0o9hk=!reiOm?j7i5cN>18mo2Dq2YT6p#&@8X zT`0E;qi#d~T^N5gc4`+#jo+cZHvYn>ccI-~=;I!y??8J{-!9bG!FQ|=-=V%1^k)xe z5!%_q`k+61SRd5ChxI{!_Hdmc{~pxW!FQ;ygYU4;m~GF&QSI$J*vLK%7FTS)?Eq6i ztiSB-?%)HC7HZ#z+Bz`j2vcqRjzERqafzYU{au(*tN?(9%I)J&RBzibMNq*m{6hCS z`|u0hgEfMwf(rKF7uRGDGXT`|0Ip!t@BxeN;=_JskCu3Q!7gu_=sx7=&Wlm0wsyCK zt-4wPhFmP&_O?BTzpyB`mq4_uAb*VI$LVl-n12WJ?_qwNQpnn+tlODAfvm7)pr1Qf z^*&S$8)MgoT>+!(Vb!pMu1}zr*WOV+E7Ocm!FA~rK-K<);<~wF-r0RIIxxo@87UnK zfWHq$iG0V48&Q%^J*yE~Lw_T}jGJfwr?&&GoTtkvT90V6R#hzmOvq;7nKytCBddlN zs;`=#>{Op@MU}yH_wyRjHB|Z`NV!a|fRRbAU~Ms^4RNuOF6F})TCb{`z}c8nB0lgA zZ*KDOyV6;L=)TBFW61n}Ej-d$HI8*{1(5&H+s&;6CTpEARt3{!e}D4pgNb^lv~{8; zsduAjzLbQD)+xP9dDzhUV*-inOaWH(p6CE0x}k2u#k!25X%xHFdah&js$Ee%;mPs? zri#w+H2#VyI_%bSJ;Zd@CDA1Hi!&S#rMq=80<7;=D|`z8am@S+ASHgiG-rNvYF_+^xtdhRGS^ zXSijPxqtP@3(=i2YXGK~vbU=gf1G~_=5uoAm~K?1w(GhPrX}OE^Yhdud7JOWZ-65I z5G6`Rf@=p{?z)X5kT4Y%3t-gLvYx~s|o|{bl@K> zbU2(x#p#;!AwNv*c;K%uL^vH5xzj;Z^vvNnAUG1}rKUU4E@U&b8A`}h ztmAqyuiPxsie8Qd83I6C`f1fTi>PGVR^FD-Z$gmFr`{4th??@c^n#s}D)(EpbmH8W)4PgTUE~rd-2g2=PgZHYYs#du zV=0$WC1d7ycpZc&Pk7VC;RvY(4b3k>pzLsacXoW@B3WqJ^nCr{>_g-1y_B6{@j>}a z7T1`w)-RiLeMo$bMISz%ot`#6eW;d=C%@cln6?rCEabGb#W#c)C89NXfB7Pr9lifL z*^eAg-w^KT^Wm1x$e?=s_WVQDslGpZe@%~t6PYhqiU$mrZ|FV99e^7xORebe?fVN{ zQ*%1kPqlE$RHO%}o2SEHPL5?K^6OFB5p63V+L>+t`@seK7KW~tpubhQze`-Ur`;pW9t&B!_ ze6$9}j*k?K9S5;LN(HE`hcdC9u;z<33wH6byf6V8b?M@GO_wf?pDB8B{I0wxB*17+ zVsuv_kza)^im3C+Q@a2n=<;DSI$ATxqmR(skr&4Ss!V@m*DfV%BKVjm8##HuZdC8p zsNP3mW4vZ$>q!o*fBo!8vwO=maE3sDd+O{~tbX;0<1pv>I5(sHQu=UB57$zQ{+g|} zu8K9N`lVPJIg_Ur=i+P)nt%j}CN8|23bPF=0|HZKH5$Epd;Ib2@A^f^qvF#^mruI} z{2k9fMxq71EG$f+9uTXOtNAXG$Q_)vEn2-DZlkI3$Ec;*zI^p zt$4IU1@mc;T@I;=QdVFcH7mRH#9Wq*f9)*$rD(rwiqQWsmmPe0N_OCdp`UY`!WBx7 zSem@HnvH)9k`&R|qvsH5enUT5+2x6G&%~3EC%#$s&4w?jCguW=xf-(MTfI%{>{pkm z%T_plD;_a@qishl+yZx&7w{lGDk^6l>2x{jzpU2pm$gf(nbmoP@+1s-Tw_TvOZdrB z_Di0dTQrhxAG+@GQuvG$WIyV~e=1UHl z_fdtH;vsyNe%h=ct=K^NWdIZ-3^L-_zC-|Ugn{V7?@|_`u7b=1MyEt;sfw{sl_(B> zCQhXUv=DK~<&crkYqbu7D;zYPJ^tI~zZB;P!y_EJ-45OYxxHO@#UfpnrQ6oBbSX=B zTT@yQ8%Q=Gs;2UTw$riIl{K5wK-v-&3hn9r8gx5I?G2zPV@{oJSAIag(&_f(JMnN% zcU$}L9zX2J55&_s-Cb4Zr&8nfOoP)?9X+BFs-HxEJ3Z(U*`eCcYH0%lFqUC^bPSj2n@*2gj38cX z@ACQGE?aj57QlqNa^V6+uILRJ;am(&k?Ol3nc?X#w*m&#$pBgs->6CHv(14@GP|((58O_7wSu?KHoXC& zr3u>U(FDPTJE{&L@9qY=$`nLx)O|iLUi`IB4 z++A!;Ztu01#?Dqnf1l6&QQ%E+tHpTJMY>$|>UX&3#P+M!12P8#P+|v{&o;bI@JyFy z47rg51=>8Co#(nOhm$~#&XS5-Vdqd{@e4A$ieg4STcxMCb}p4|r5Bt-y={?2?Y11) zW_`16To8R-35(LY>MF~_CEy@CB_@{;kd|g@4qqq!EI=JLe~HL-O=H~v!l{|M_xvhc z;P;xLf!~r;V65SdQmQ$=((fP0vF#ewCGJ=Gi@!{2Mjcj36!g^16F_~kkromhgYe3e zge44@DZDr8)&=>Gh8Bcu9sM-})!Qu8n`!pbr_zQwXnL-12hAHdRmn%ooG(?(MS824 z5f*{-T3-vi50+-6g3E&@<|skS-(N1cmmb5bPk;1V10T2HWt(w^i4&w9mVX!>JB_OL&=pH{<8HU?dsnX5HNHQ{_dZ9# z%uA#+R|@TF01F$}9y5DtqY1sEff66xII|Ny0cIQfS@$tEy1lmIxwlCCv+(3Ax)pr7 zg}Y)4FbNyaG$8lFbJdTE)g!2e6en1Ls$U*bg2ZCv?MeoeKxL^ks(2MvMHA!ZNPmAj z#}w({U5l>|xf+rS^=BF;nZd?$bZeDl^1ss|J)kf z|DiQVg5RIrDA(US|L0Ka({q3QhvwdU$(%p@pPTcCr{+8qcVT*bb3xNZT3CV!>aqL7 zSvR_2UXYVe6C8%LKXA01RTV_XDO~fepxWwSNq_roc z5`tK-R{LcXwO?FK=4iQrK7YhvS^Tk>4)TRol>!yk(5H`Y(f>{qlHZrG_{q{;gS};T zKH^mc_Y{Ng?zCF3Yps=U)pzJ2wd(LUu<9g$c{7c?w3e(^E#aXhaQ!BUXlq;ltPPyn zuj9JqSOfTd>|~b1e`~)sF=4Q!B7zUJ3WLkem36qiKVXk`aM``GTYvD=yRsbo*2Zrl zfqf>9iOu?lQqyXHDsu;-TIhMEe;@!6$_~sD z4ssLDQ|TG|E*)DDC!+FX-c+_{+KmK)!Kv31w5m$+`Vbuxu%U>7$w-o6>Wlaak6Zt2 z3}6*rZ2{mW=njfYxnO~t--&k z>Xgt$TUtgJ1&3~nZW|GO>Eb8WcEF`gT(+*@_4{QmfNCXnlYvj>1OSJYgYqQB(a}7{ z<*aKAS=9xrpy*<{|E1aj>S;&w!lm8E){@KCm7M?}${_0Rn1AZ`@v_zeSglqq`^{2v zXs|5rmQBK+1M$tN;)DXNqgd@vMR$2BF|H|0N*h;sy>!ze+IZ(p(OaO;*aHd*jF);U zY8rZ7h<(72BOg}t@}IvZUgP&+;~$Ny`WE#+)frzhw9xYZny_5xzc->F#7cUBwjTJc z+Gzaxwd)h<#((3swd}6-Twg2H*-A}4CmMGHz(lvqH_OU*tp4vTJ}_T4(`6k~46$f^)KQ**8<`4T5-ihX~H!W$CfTp5lyiOzN~k~a#2Srm`k?23kM^BBMszo^|y zU+~@!`(m;OXxS^;#B9(kQQlBPhkSjrA!1?7WRSv$lBHzn&6gC`Ry+Zkmr>SMS%3Iu z$p#UL?~3Or3?$mz+-|Xfh+L#_!Fx#Ixv5$>nQ6||mqE*+#W3=)1<^7=Kb>vrs;J)u zQjOSkiRaFi`Z27~-N8)^)J)~qEo*SNH3@7o)Z*mE`%-d)oQk{Ex9{Ixyd9o$X9~9AP^M7^U2oZ(vW>hGC`OREIn@P7?z$kWWmiI}aOL}Fr zWZqR9ul5nk`R*Aza-@L-@a4b8gxZ0+!Ix0H^sRbb-IXcKABdv|3%a5pRYN=#GJ>)X`lqo4=-{u^(X-d~ZhT;1;=qWW(Xawpa`T3R)mWlW+YR|9={;ehmfb z!ke&+sCB*@)GTdOlFI#G|L_0&|NiIyZw>x_@;&efwadz{=~WX*p;uel2@N#z2GR^q zoqdeSs3ZWa9<=Ktai0o6`tf9VeDblHG1`y2>+OrK_P=2u{47fbSdBx&vgLFT+T(3G zfX7%xK(dydjSSUU4jGb2h*UqWD&;PQM&F-ZoK&C91)m%uEHQiS)ruz4l0ATZB??o0 z{N!Xjm8^*rifO}`w3sY=^y#E(6UJ0m4uVdhHlQ$`*uGLwquyaT3iU`iw9b4#JjR!S z%c~O+*H@+Wn#=-nQzkw;lGJXrHIs6Z?l{F2bnW(vDM(%I%;o9r)4(x&3$3Ga|dt z-|p_UZImZyk!Jfr-%8zX_jUSD=9LOPWDe6>qahEMT6%bR*s}CUXzGOfJ%3sMcl2MP zvRZZckmf%G8ijxGO0u9L{;{|V#5H-pw5RT?1$lq@1Z4Q0yb9%(;gY2IZOMoTK?u{< z;K51Lfj)_DTlV%7I;`CHdv<$^E*Y9PuxZ$RIbBI7Ksx%C(;}j4WG~z*&^)bHv(;)< z?YY~sZ{gnz-Liz7jwp)hA`&1_4IcV&7%@|iz8Ge0-nf6WwxAQra|DoX5o)FblrusD zaM0~QFYSr|O8NM+>^MVPN>pLG#K7eK{m~JNqaDMc8MBHL{IMh?$$EV(kf4ed*2+Kf zn{4gth5V3MoP^g3L@Fr zY{a9eja+|y3kOL;eyhSD{cv$kL4$B7zx#0V!^Jr&OM7nE2uj)!-kV__IH%k2HI<5m z`}?E@OZB>@eXV7Iq8Wc?kYleXmc^{ReAz<}yUifxFM%+?R$_~*W*PY#I#L)5C+QfXHb;N`8UPLF3*}%$upX;%;MGQ!6V=90 z$JC5Z0*f`HCHn!ldiCeV#oKo$=NH3w9~$q5A6%poW)v4tgreWEG;Y?ci&b%Yb~HS7 zs@7m3>De92VQFlQArUsu+?7%{k#853t~o7xTY@AD1sYu~Qb{p&$8PjUWv`gDZ#Q;P zRbGE$+{68Wo@;T#WN1KBX#|FY3VBY8DZ9QJkr)wv0``-zAD}?_!NnsoszWO`y-wvc z0wjh}88a0X05)XX@4g1UpziJf;3oLc-SM|y1Am*<7S(|Kf+=6Pm*2RN{F5R{k1tDaW@eD z_Fs5`*W@f6eyxF3yIajx$!eCYZda)Vnf|qOACZ%FgiwLW1EpNhCKi^lwmgo3$cX_D z=(~2d{k2RuIxikY_GNW8_E1(K3{GM*76|h(lhiZ}MaBcYS6X3%UNG@}{JUM^}bR&15rEr{KuZ;t(Z5(L?|BHO%Fz2D3>tZRvUjgP3H~^MX*}M zc#xux2jtB>w@N2Qd`}|ST)8R?-$}T2eCYmdS^H&KOHd%RM0Yz?_Jm9kkTf!N>Mf%M z$-9^&%R-`sCEY~hB_v$lKuUNeFQzW95Gt6b|FK=uL$v;k5X-G=0yyi*;j-34s;Mfu zS5kqNs{O;7pBoU*j`4q==`y-nmjWP(PWeId0UkcgA&qjPD zvx~^`1=I0+Gz~D2BM)taWPB`Sj5j1>44NV2#?b>0F<^hkzQcI{=B7?oh#_0qIXL)v zNtP{63MB&Cj}-qaO!Hja7G8r*>}mzzIhPd%hSy_qVE@Roo`o&*{v4w;q=O4KExw62$vY6dP1WT*)1Xe^|scNT+^M)l{~J`WD{UAVB{TQ2YQG2yzI~ zlBsgD8cjUgXMK)0MHHLk$Rj_`M&fM{Cn<~UVK}z)VH%7tF$S#;P?3gmn@!+O z$(es&0G$@59|0%ktS#`OVU5WKcHCdnX9jr94`=6ZFW&xia{c!G8x;QiQW!;}t&c$6 z{}lQ!%|f2)yIy{RA-7{K@HUIEVGc;HLSdx77GPWqSB99#*Dhm&W9Ni|NgB=hbcp2q zAWM6W(^}po!i^;Z8Nx2;gquQcB7U-@knWyeqqF0aqjOP!MK42XDG#NQAIX35 zN!dt_ePbk9*#ehO^6l-PoMl$QH%>Dz^lkIZ3VqW=vm)Ox)B0#$Hr1umW1eVYSFq^e z2}WII{uQXm6>}RAB=j~!gI0e`f|*i0!enZXH$jT}HBQjvPxhTpVhAA9>A`*o#_1ir z(r<cW*9q<6JK%=s?x`5Y(!~3Hvi$HNjLVI%wEDEA~e^OzRX&!z2I|3GbGX#I;WiXNR zPpkldRYo#?wk=*g=7yeq)jzQ*!a$R0k(vlfJ|3>=d+E`+=5sRyMuv)? zGuqf%L(UYN&$7&z*y8+ai?n}{3q#z{O$7xzO#Bb`QJuqPNJ|C>$R?Xs%sJc<5B0_V zeo2r_;2GGt$+z<}57d#d5wz_obc0_`Q}=)F4{ak^qVT_B zbhE4#gab*Yr`L|~b-?McO#*{SKbB@e*a9>$l1Gx0u%P?5f9FweNj%bXcfZ>|ba1KO zb?Vf4A9xZ9WH1cup^wyWK4}{l&;bTzc+0QVhJ3{~DCV4z+K-s+x5)Cqs=r4#yBUV^=|)(0ZS%yxyUVyPJbRIZ(o8g=GP&AY;J>6R0jbP` zNJ$f=T}Ul%=}tW10~0-txo2o-;N3Ox_c^}dX!s&0wf$*w0}RRaXgZCHLR7#& z9sKd*AlL&yN{bkCn=kWt8?JpBnxp*;{XlyJcZCh1@7>u^ra#HyW#<^aRWvUC zhPjo)Xw=)@`LK;4ww4P~eR$kddeWD}2>NQAPV<`uKq`OZu~WC$#Q37!uTg@;2<#2a zKsB>UYprJS`SLOZa)$ok&+#(IMmiEw$izZ3@MM~}ZS60KrXZoZ5-4Kq5Gmpg| z?eYmn;85p63l((Mq*4J9xG5}XpaIIR2_EFRnZWaInNAtB;Epl8{C1TC#kX99s^l;( z7SM6L9nF8|s4bCz8v_e=&As83RzLPxVy0k5$ugRcz41_60nuQZct>01Aqx4{g%}2( ztl2rm^ENhQM%HO4x4xyJWX<>XM>{49Eci1K_xllz>wG=7mE$%@D(v;w#S4$!fI2Jx z*d1`B6HnZNhSm@40lZ2A;Z0BpoPWwSJ$|dFLJv_2$EUH7reo~oN2BYkua}_)- zDiuv3F9TF3stTUQ(X#jJ?#}p^-H&6S%w^4F;A+s%(ySv|cSu8>cRn5Nb$Bp9%`;+< z0OHpRnqnVvx-feUiCTl6S+8j5Oa7?H)ui}&@T6S;M^WA@s0{IT3G|`8NGqH!X+O4E{h8gTiKk1gH zNGTl+%RbIC9d&Qf$*=#9Y47Lp@28XBCr9HCr{lxJ{lfrQBY69Z{?FF8kNc;i?d|bo z640Xs7vdr+qdEE!1Spv*is&*XL#%3mV^@^mr}YIf#7nmiJT%TVBR2(=Y+N}jCX#=I zKHJt8&5E<#RR}m=niEUfCPq~so)}eocw$to zePY!~)y>7ZR{{bITv8)GRY-s37H$dOM)uZY{E!cssO{%&3u5Fm9S*yDcF1S}MWC@H zWrci`cffqhBSsf+5wFBEig4`&&xbVuP7nc???<+UlZU5$ec`S1t)Ere#K?GR^vaM| zM91W;lbyrck;>UaL5)1YWuT}Q?MgH8!X;L30#nwBn?%nVHj9UfXJ>!fyV&%K&}-`)KUoTQjPi1Usl0XED8Jb(MJxMz58AM&#jOywP0OKqD(_Cj_HKCOzMP zP=PCru#KTN0Hh$Fi zi3xS_EjQJ-4x=Q0b126uzmr~xVm;*b%DVOcus~;HM-Bvc@btRNWf;H3`;xG;> zxPXfAzvvQ|B;TtzF8F!bHOLV5C_#E@vb0QGiO(f})xuzQ9ZeojgAYb*pt|B+#YLJN zByf$!T#nF}ir=d#9U?QK)zCFNXsig&x(f3rm6$-E9tC|Ia4oLm@+z0m->V`b`%$OP zpkU<9xTkhlJ1Q1iYA9-wi07Em0rfD1YJCUETF}xWeoV9!rMefdiU@;3 z+J^p_E>8CYO06PQnfmO%Px!XI|MA`KPoECQJEwcQ+vAUuu_1svlQflqm!;@f%8Mh8 zQpJ33otLy^!c819@CK&4;XRuOL|aWKr)AHk)CI_J`4gpl9GgPv-nwU=df&@ z8!5xa^l&Hy!K<2EArKM*a>WdhWhs{D5qPo(z0YF>{$8F1{5 zr%=DxvyMO)iq`&Dzp9LcfVO{!J2|OZc!g%q_HsTNU}!?|&8wFUj%Q_f`vv7@z(#EZ z42oAX>nkd-bxr;j^Wh9u=vf)zxC_^=oTz zsI~dyk3amd`TEsge^?2vPG0+NRf;QxbF}LH=x=Rpy?h<0uUnf|!?J%T*AxDGJ%T~7 z`7+r2!N?zBcKz~4d{_)iDM z5y;&@t<+R*fgwe%y1IXR3ZqBy4y1NXIqbn%6n=2q_GB0u6Un9bQ(=aU`!o-uBg|2L!v+~F8R`>lKSL5#`%A5(x0L5A zf*&)d;S{f6WKMg`f76gIkR*N}h6yq1J}xYr8`RlTNF^4WYJ7jPPUr;bq;-nygl_H9 z)@2S)pcw99rsOz3X=F=Wa+lcXXmCG4$x%hl7hP|6vcLZF)yBr=`d_^u3xo?>#0-u< zjQXBt;nTL=OV#eR61?$~2;Sl`1g}Zhra|kLd=J4}G@oLc$wRD&b@PMyLo{#Yn#`Dq za2ptyL&ozH6uUQ9)cniMCvHva-tfy7+bXr zX-FC<+*e`=8JLiNBvU0+Yvf)UWGauQkWb}dGuh>{rY3)+U^B+mk2e3GOvntBZ!u^XclU1#WE7yU)X zVwUtBZd9q`R9Qs$tE;KnOr(^hZ@m$4Eb(h1#>wY|E$~edV=h<809C-{ z?WUQc6@7n8>0D&%Ve0CQcKqP zDO4~c`ntlOp8=io`*$T4q=oqS#k=mT4G zNjY$(!K1Ad5ONHWN)3SOgN%AkN)lyo|AfqBjZP>@=o1`yv1 z3c`Qr>}RP)+NOc@-APy&${z=^V^!i|gm0x~5iaG%qVcWO+EArr(UQ!$lG)YOP<}P2 zFBDUdjS&i!+oC6S(F?B7LGKX_Y8&eXQ@P+}XiLOJM1&a{F3Jrp5ybGfu@9sjPT19| zzz3-7Een)OW891`fFCFSUe^Zfv|U5Cj`@EMVaw!bbo6O*y8r3u;M39R;dpX%xVw%1 zjzZqDSq0wvo$Z4TNlH6Be8(6b?*wJ_Or!Zauk4>Pquq~3w% ziH1Q8LX!Eu1xQ2FZU}c;LC@E#WFE`+57D&5ByAV2Hm(|ziAohmy$(FiD@zIzlk$JT zC(*>0@->$24C_aYFajVguQ;HY)y~TgcLMRc^PZ4e$Ej5EPVgF^GkfMrN#@j_2#_x56O$sSC z(R{ALFC_)lLE4vAe0)i8^DHm>$`D+vOuS_gexwJu zss;(&pl%evs3hR%yL=1<^|;6O%8o^3-;#niHb$LPz3KlBQQXs_>~ z{YtT1ENCT|!DD;pgGZ;#k6WT`I}GyQ?IO526fc07acb;XIcwQJ)Y8ruA`o^tVyKVjXZMXr|V0=OCUF+Pl=*$qth1An(g zV9Yl6Pz#lXZT=uurXtoeui8t}>3lhhi>}u&lnxC@pem@S_c6XL zXfj2Hx$B7AJst9KKpD+3M(?t`SpN|Nk}LUI*9so#*CIzIfrpb%*m#`-NCudpqZT^N zdta6do(WrHNiU174H3H4)MQ{(VU?=(O~L7ErH5r1=4g>2=cs>VN~Jw&*Gr>o+!8HZ zGNO?Mscab48&Z}jqh(~a92BdotO{{=7{eP&x6jnwgf6CWpW~X)e`GF3PvsD)H3XjZ zyus)#N)cm_ea;)z-4=S^7<{mnPy&k`mDzcB?i2P~F2t?-?fqdrG^#1IbKLxt^~0``&;wA|OXwnxSV z!A%l&{|)_!A#T52Ar=tZqfVfo+}#zJWDnk|hB>&K*49g5xY1bn)3y`kBZ333lVF4U zo-e6DljLRH6;2BoY+*c^!YUgB^=N14qK4E-rY&<>k@;NPhdsRSQivP%Ou90(>B^{= zrL_AbO%Wm*TZRt@M~>oc;+njBpKu1cc^#tLwmxG_MfGxHgG!l25xR|g{h|l#ZLU{i zY|@_EoN1f@bR*5yqE~m#FVD1;sNoKm7x-2yf6Hq@o+}~sJ=?Oj_Mk`k*8J{H?(TmD64-q?uK=;J`gMc^H&C$hkfnG6@Tftu zXEw<$8xuKa^@QZ@z&MB`oUcE)&6@*5C`0Gda3=#cofL|=qJyC}v}CY`SQrB$dZ?<( zfAa3e_f7vYZq7;=+LybxvyZN=R&^rHQL11RhLO@&S?>_RY+zVKB62JnP;A8{xFKjZ z9nL7uC6kM-gcuU|l=%h_nlM}Sop4<;?(rsJyX|3O#wsEe#(tYd5Ba z|LDjRb(N=#8Sz~)E6x`jkq170$`h)zJNpoqdF-p47~>P0lxlN%5R+$}KS~?_lp6zv z!*)UMR+la9t40C%mvrr`E`PkbTu+{9vu2{~(ZP59Ct?Eg&R10M>Txuu`6!r;f~(PB z#k63IRm73dyGBqNecIXG2c8E1{$+P(41a&YzdwBXZM*~J^aDe|g@0axe{PQsj&}Dy zhTar^VX~KF%Dgl1W zQ61n2Y)C|8Md!ji%-1T07x8<&q>xEwC~QQmgOQlL;c_&LNq=#*90_+5V~E)59oP__ z*rGX#7{@Osvwv%HW_fI+O1K!+QrsIZVHe8e94{@3ob#}BmX`ZN$GIT)`?<^Q;9D49S{NQB_aiPjb-q5X(Is&`mb)tepcm%i82yitDPX=U=CIoQTqtJUB z<#A^h-dImS+<)aLd~y88w~dYUKfY~V{PFFt7bj~kbjF~Yk)sBH?eU5@Pog=c`rwax z_eLXWM31C_!Q#X22m^N^qoSU@x4`zps^JQyQ!S=D!)!Hh&gW$obsOZv-CnPUq4oM_ zv_K;Z`MDh5yvb4+_GbOx?EmiWoPsx)F2J7QE@#U241Z<5kvC8c{6(iph~LP#wChm1 zP8p*m*-Y{J7TMSC=0?DY?x`d?FS_yb=l(O92iG|CGVqQt zJ%VA^s;4)h>4^w2;$q6AxG9|*=YV}SbpYvlq<^{-=bIF}G7GyuB*5*{!HC4;v_zE$ z!f_e69I2$Y<}vWT=zByq$vP9sA81l^*}*`aGMf@xSVs zoo5-6Cv8(x-&Jg)*uL`Ov%XM6Z@3BgZn)v;;RW);y|iA29h6lz3@jG>zn|Tni=<7c z27m5S+Be`ADv_GW>Pzd(l<&o;sorAbTf1OKYI1jOej`2UUdfBR$o zwD|C-^gZVXB?cT^?E4Tm+}=d41t{4)lGV#Hje>2eo?)Xy*h&g^|b2@NDqx zmS$C*_4VK3v)c(~+W_j*7wnapkLI(LQh&sGpU^tV8mIsz{^eo-wd-s_aTkd;{Ez=1ck^xg?w*M4?grd0CAq&Xnw%) zi9y}9y@R&YdN~Til}+TWLP4LPUmGjwXj2Id6{6!6;qQcdG)&e)*rQVJQNIfXUVrF0 z)Ptz)WA(G{v)e9^I6jxr#6FMYQ6VGj)4mtRzC*LmG%3tsC90kU?8Gbxf$b3nWHa9f zKlnyvn;RR?w_z18;15680c!L-?{5RukN-QL_rJlP^nV~V@t+jUOoTAN*k?@9_bKPV zVC^aRJ{|6f6B0l8K}>pCo?Ip=d4K)$pGt>oxRxzo`l!y7i8Wt%@-^7Rm_WsS73jI3 zT(9}@#t9rzhFP!tTt=n~G8LnaYGqQ`<*N@t-dm>px7X{Lnmaxm7>xoh$-Te?rS$}- zC=bbbE6a1(Vx+e&+*Q6#R~rBRU-CBJM1rGUjV3!aDnHSOM3aDTeOXSCF& zfgE9=jPnBbu>P4`0d#mkW$IS2Zc69+?H0c2h>DSf3#p(^!yJF403K18b|Xw>guF*c zj*W;hBUs-8tw!~4WD(>8t0>}lNY89vC7AOtiy{2GLOITT&J#yXGqMNAjVmtHUtH!> z4pRBxs?H;xAHe2f1RcSB!he7<5rqsgXsKO+*eZ=Fhc?WMV#a^~72;$AJO&dTZlX1m z4_HZee&CYd&?XMd?rC5%Hy6N(1eqpm=#))IO8n}4>DEqvx-813~{=0L~|Y`fxBhdjIR_cm7la847ZQ*c&+1j6`~B z6F(W7$b#qh`;()79vqAgM;|8r3}Er3A5|fH<)#CFcuKp{CMQycH<-RPrI$7JwIdSk z3r6SUM^(K>fC{nlymyrqCG35W*~gd3XTeTN4Tn7M6>*eLuMUW^KwS(>KRb?32mwNe zd3+%*#y(t(|3n|3KZ@taf6RI(Yw*Xj7s<5{8GUS)%zTp}v+dk#Bu*1HoX)2*ziItI zCbCU`@#2lp*TP_+u)|?fLULWghQ~$$%D(ML^lIjm2SEN}XFjtHo=UW=O>)DHR^Bu* zl9=xbHwqo%#+h4vjkWct$&#AL>DE?@a`ywBl0)ovx8Z2~ptYJlCcvbmOKq@c5#iIb zbdhJ5d0dFKzs85#P$@_~9c^e&Sh$8OD9RRpIt936;xBr3gb9kfeZq-QhToAJPI@X~ zRx34Q@|!F-CSdKcc_bX}$;jqlOnT1hJ9goz8-S6zF7HeuKzr%@rgI*5mId1W0>h!g z!Zq~7(RdeePDC44PP4BPP$U@GVf0J)9wd4Vdao+`r$AOB3TGUMu4UwGdX6w_MOm|d z127?0;wM`_6sUB4u)Kj@Af=Z+}~EfDaxv#xtixK4mL);L;{km^ukw z5?8nT#C{TC|Mt@u&EM#0A~QUz`?}9F_KjgYMA|E>Yf*;%j?x)gqy2V8{RK6{=Nd>e z)ZLP8Ph#2jDEr+?TLkv+8OSLWu-|NdIA||kYxH_oL{1jL?RE4Gk;YN>4$mIt!XMCz z-tv>^XI02{?QG=7vF4FQ6Y@f|`z-thLsWn?csMa*Pmb7UoX#5URlP%2hk9s^R)pS~ zs81o&*1UCZt*d(gCX!Pm)^MA^gLbKzV8gcC}*UDGlYEUlmIDA>l-Nl!R`o`jq) zF87By&>Kw;u1qRr^@o!aJ(zP--QqOKgb0l_?NyujgP|;7*zUuTAWX~f=52VSpfyW~ z3M{K!VF4~~1qQ_lU&4d2LB9MJE_+r%^`pFhbwGuj2v^5))4S7{7WhKE3E#D_M7E8mu^kjdh8aNBOG~0Rxv> z`Ku)ZUoX0sg88dseEmk=Oo5Z2v63koS%v5g4KoQ|CQH{@-g$^DdlF0^(r|-N9 z?qlGxOn=8s5wPIPKi1X)wQ@LPI-#NW{^;mH7#(-KwL%237Sr_VfKZcj;bsJ#TpAQ( z918kTy+Eij%)u)pH=f-(bFHom6)yB49_~>rRGs;4eE{TGf3;*@dU{OWOH5qz!(~dm zl!z%7e*`j+BTA%}C0Y!UeHo*znE$1~m)mG?JEDi5qlu}Ia{xm?yuW(!tE>A$Vr3Mf z&TcfHOY457$O`1|>>29XcGa%Oo<0D+L-xvonyA_Bi(FSirB-hk+x~cRj>xkd#+T!7 zi|*NfqGYW92MIV>!heAxj`sJAph+%aJQIX?$=RmMvA*6etlbg zsLNtp$%`1)nW(iii-B(5uf}`cu!+W++$ESZZIaVC^=*#RAb$*6LCWLgCyL~2R$ShSSli6eUL%d*O|!i4f@vO8zME){ITNDmc%7A( zUQi^Lu#fP@31+vi;8kJm^Y9>shaLL2wmBnEjzewH@K8^el;((J7n)*R^-Rx#06uE_j{7##N!(Zzb| z9{u0nnAv(aU3cdSoJroxK1iH6LIQ6c(_Fep##@LIU=G62UJ!AGQxADf9Xz5IWs( z1Mr9vX&_Yo?K(hrmh)_O!=ye94a5|=a59pymRK#_|3 zu?#l`%Qpa$*;kp1b+BAp^C^Hf7auQA0HT1tp92KWLeC3UvR+b*uNNgSIZV}0o!H)4 zkK&t{5x$=Zeq4Myj!$|^{0l>^4(DrYfBi0ihx-u+-t-4hykz1NQ3`IDh}W2`g`4sE zYd@H8g_}PN=j-cz=t`TX-E?P|hvORN87#v8y6N)v4U{>T;5#sEB@BW5#uTp-Y|-1B z-B}k+kc5fWm1rA8y<`?H;GcPt#^G{p6aI|mK;4EOx_)DDg+*2*^2ZDJbg$so3JDBX`*}^P5%Fu~C&L9TuepyhI zC1mBVHUcE|t+LG*8^J{mR1TNEL)3G01sL!uo6qR0>Vz^9c< zensRo%PtS%JOQ@uCGfhlOA$y9YtqjTGCbQW?CM<}UG8Ps=TD0x=q^Xfpx=A>mtYPH zn%tz*9g%E=JhY+7oEG|R51#ULdSidZ`MT}onKZYPUy+Xz4e?NLpAIo=>n636wRcnW zZ7y%{OtAc|yPfnlLth`9f35#vV%lDK`{WV#77^s2@j0iy1e}-J))T1PQm*sG|XN(&# zb)AtD<;rd{4c+6#$66{gkB;8Gg&8kHaRovG!NMCecK41FJ(S^qzY7t)H z1N>qcT!fL$jt!mP?xEl_cpd7kzu1C;OBFcat*KR%Zo zzPMCW{3$eo&Cs8|^Z_e}r^D{~x-9cwoc4cwe*WTeZHm56xT{~^gbREBCeY@`=coNk zn#(vi3WZPF!Tx0TX!n=#>F&pO=%M{Pk&fd~EPZ`*e=y#f4aV#1TEcO2JU+o45G%w1 zkJNUu1Q3xLqO>keDVPN5^Egv{|YO2)$vS4C{%F z?!s|!J*+`u5nV6lad*D1_IMgxAh{@Zt>4muz*e#EpKGgaf}7_O>q~7fJQQyMwf&mR z%BxR{e|HhS4qKmv$Q&LubxUBcKT8h9yyr^Ic??~hbl%Bqpdt|{W-#?ox>I)0WQigo zpdSIIf8{9MIz1?+bCt@^GRr!}Jo`Go8OY?QI3l_?W7gQ5#l9GzU;*&{4k)}?_Z5Z@ zmbK-YXVfJHEv4AHQ%21yZ7Fu~^=VzqFs(iNe_2}H95r`?=hTTsUs!MB?xN~ktMB5m z=)C>as`YHzz4V70cb9$dQ;L!IQ`oihg=+Q@cnhb=#$D5yTdgKEZQfyZ0OP9jzp43W zs!MrGj4Xuj4o5$o?(L6uPRAd{hd+%!ZvTEddb@v!k=N<*6R)09l}D9d1&Y3i>u)O+ ze<1azflH~TE-@HLZp6E;959T@(jSc|Waw53(jsX0&iU6^I>Ae2w+-*(uh-EIa~sN> zMKa$lw9G?uubkhu?Xn);4EYDlWh|#N0Z9KP+X+;`JD|6$0%yXwDYcCfjmnQZWNz@pQ#Knt7~+_X z>W@8VxwYSY(A+`WN&BwOzwzW79+%+~R~uW2G@eD%@~c{%*2(H{OUCdjz*@uN+`3Gf z$Z&VfENvqUbPaKCjdN|`b*q-1ZtvUg28Oz_?ywVJd4=(%_CFn$wFaysf6`qwSQv-JuyBM5K<>D<*JOxc^R*9HYXe_vniQ|DW^gSX z8tGove9*=-<(g-TgG?Gp1JA^%Snp$;a=#J@GOIc>=!RK}*OC|IT300Jaxq+gL!l%U z;Lr^Ot!cpER%{NPo!aMuY^Mv}u>pBPSa{0Bs5ylW2^9SHP<~oxI4n69e>X9yOccxp ziAiQ+Ndu4B)EFt!#351r$|M0Wv?Fl@C36HxrER7#DI7yrsZFO!%1enliIuCL1JMVUqcEm zJx3`(d(yl^g^SQp=7ze>FLZ}!8{|dCSQ2kzfxX!|G1v%-U^8GLI4(^&bt<4y{nG-d zE!=AbEK07MaXbhWlF63D>6o6Be}dv1W1tf>p|Aus5iI`cb%ba^$b@K2^d3M7_&h;# zg4?X>Oy>YiGQ41fl9h<}ILoK;%-m#CBjD1e!}ZO617@Y3tP)p*;tV6>W1HYUjZzbi z!+Tf)qHRTp;Jdq$=%&W`u7nB(%wn_-apL|IXp)o+W$lmH(c42~J$?Ohe^^SFb&dyP z+Z5>sfZs?F*-o8&9H7NPiRKP?wTaAq6PCw?@mt&BnJ3~rX+;YU(Y)%QsA^?0yqRz| zab=IEy4<-VXkaA7r7tmpNaLni-1#U6E2b>_6~I4AuYW$Az*Cew4eGYTn7X-3$MaWX%n@)e{XlEdUx&VKD(U{ zy*y@R10u-y+ajh+qJ5G35Oo%qzTw8Jf=;$TNSSy3v5e+Pd86d(OT?E;1J^H=vQTRA zj(e>&8GIc@!Ee-mEKxJ79zR)@SNpgAB>UnG@t@2oea73bF(AcIPh z2>3x&KxKo7-~@vlKqZptz@_10v6cgrwLLU&?dge`4I3Wx{>uQ=;lDT>qKNv0?3D&7qPZONN{d=jAB zc#0=-`x0|re_lm}03S3Qf?xQ^Fk^^8(^!v2K1ZBzzzi=Ty8>GHrHb~LsA7!h*0p}Z zCi-ie(4`(VG=Bgkqq2Kaxt>hu{Kl$C0v7bk>XLK{`X>Qhh*3eDE@VAjqN`GrGpCQ* z2B}is@cwOuQOzzm2h=&S?L-?jaNL&FiT%lr$ghR3e-dsCajfY@WlMWRFh(d_+q6Qm zB|38&bu@{~Iw6=aa1u~*z^pusk97+`=oB2zC<*iM7T#6Cb+f5plD?0V%d1lUdWW}3 ze}>n53VasODs+L!#RE1GE+YbFE1Zg5XC@tARZhsdQ6Y1vrw|&fsV>#rp|6+~RS`YG zaK2FKe=8C>M%+oY7N=V-M8O^XR4a6!BjRFe}PQ|Ijp*i;E3Z91bOYYnLY`2G|(Ut zk>v{cloVCEU?wWA1+Ypr#~(* zcHtEwU};l{yDew@1vXD%*pf3wOD6@29L$Q|LMWzHNS`HgdhJ`viEMt|ErK)nqWFyL z0+*f+tRjC+%BzlecRN{5qLp=iSUUxBC7lcWzb86R5nIT_Flnz?o^y29?ndz1_y6TD zE1JFI;UQn{U7N*c$N$>9F{_5%s_yvEAuxVa{2R9Y<;Bi*l#QL+cH5zvH z*^|rBlK4Y?{9F-FA3!p>US9LJ5gj`5uEs^%Iyd{fki|xKs%ovrbJ62dl234H#T{wA4tVO4WJOVUUVv#0Jy%3o#VZV!MlO;ctcTPwAs!t@Xlf#ejzF zBH(|P`rV7rcrP*Rw*n5}bCM`6#X(S}ob|)e$DhVLvXkxO8dz=xgy@ zf3b*_>%hdd7KyVA4032uRWPm7APy$M7@ii@U1oI`*a^q!TqmKllFmor>=-+l zY$Xv_TU{7y!p@f12FL-ZymJ_Jmts8)9r1i^4?E_HI-JA2Ls>F7&6P*Cr&6R;RCSoc z6be47?&VaG&9F!PlCV=zdL0P0nb> z;+KL+O21z}fZ`f;kzb@EFkUC%7Qfuxonn!`MNoKpcQ;*K{km0Z_5ny`Dgqkl>l>@Q z0gz>Q@NZ%5qXmatL}HU~fJu7Ab(R4mU!hpY|&k`rV=%0z^-5KnJ(_!>H?q|;>v>t|^ITqpb&*DWM;&pdi0s2&? zP054ZHmmu)U?(_yJ{AZc`nw?ZeP=5?q!7_z2tdf0CX`}=2QHoW2;Z;8=<4UCO?snhI{reR}%FusSimW*Je#}3++sa20pcExEv4qpf=LB857&HO=06Mp2 zdPmQ%B&kS`FujdrCN!b!ipDe9hl{&7-Uc8zVdyO2{^}wPoz;NT?q$~tIKA_E%)LVM z8?)glrDwE-)4~FM3PUGotI>aUdsVG(Azj#sW`AD-`7}HK+O-7aJ8)2&*2RW~_LucT zSYBCPoI^i*N;R_yh0&Kw<>L43c5Hn^r$bXD4;AKCg$w8FuKm>#-t>`t>Zs@a+3lCA zqqnM$+t49It7M&_Ob#n)Xv-3Wz z*K}cIH^ewFjzmS#mJ9BB)Io zVhh92*>p$wFy7f6osN!46CxEjzl6 ziBm%}Ot!mWlv))wtg$(O2Hd0jn#Wk9)>`ak?JOtx6t+a;0d<;450&)pi4debNX%Q` zDe`IOYgCZ>mBUd+lxrPHH)FaTcvgs;MmHPa`Av5p#YlL^j1SgzG_Mm+UaLuecX^e09HMl+$NX6oKDVajnR<7FVjSke_1A6uY9$rK-ty zrrE`bEIaKTrDzLHyGeDo-y`*GRo=+SWZr#!Hp2zlJ-(V%Bl ze?072%^m}MR)hPY&#L-Z@H2hA9tD4f3);f~XjFa>0vmAsZJk(@6r@9RqvL0K)2-E) z&y%9V1qpk6e~RxR@wo_Mh}un!eC>X9zUA`e=k590fSEL>zL}8Q_bKPRZ#W3 zhsh^NqR@+Gv+tpe+Z!^O+DhWy*OUn4#->DE`$28%i1TRZ4mqVla!R^Kn}cee3WjQ{ zw=_9774t$E>l)0q%yZV`lVMs-C{NCpWef|*r=C{nwve=g zq&G_ne+(pp!qqaCv6jM?^1D0W6RjMzMKHVRCVtQyPnd?CWz!`x24Y2mLz5?lK|I-k z$Da9N8iJA#N0rr4fzLj+;BMe@{?8N zKGE9dzlldQ*&`#>OQ~Ikhzm1sS7#=>2FBN;e@h~gYN%K>c%+!pakhWKAY-mnaT?t- zcdmVkgdy`B3FZq!3X|Qb?hX)7{lO=Xra!^z-q-fQ8+~u<@4D1&JwEbYw={pu)&3LG z3`F7b{^#+R?6YzI6WC<@C>XT4K=P8J>Xq)C?x&$njg3gcXnU87*}`yS)_fy=R#<|g9d)uvT_ofIuYtf3}uWO6*iR*vZ&T4yJ;t{mQ2Q8z`Q81sH*y z`B?<{t{KlIPM-`8WH?8ZQe8g`uLeU|kKrDNm5%KE0wgmL&v@F;0@Chql*x#)21W^- z0h$Z|Hm2Ceb9fJ6z+e`>TXcn`W+2S-si7ZS3Elln(p58+*>-*tc+WOHwmq9-e-~&y zK9H^mf<7z4sjto0YHeYy)790hl`vfTw;s{P!c&f{Q#XRYAWb|CKPs=llrvNb z4Op8LKD(V(XQudVTWuKUe%9n=p<)HG_0h9iAd1Q5VyYCj>S)4S5t2!sgxYL#f31zz zn~hGQc?JJzM^6heVE-js7zT+Oe+ycvVeUsp>zl!b^pb3=gXzN?u2}0MUw+s9#x~ZlqkuFxu4{47C5_F1j0!mm#!NG z*;#;N1FVw+a>@?K^I(dM_Xhxf$}$0%WY$wYM#m9a-?U@^xnhUlaH?^M@LpE!gGD$W z&fQXu!hwqSC3gV_x|E&yf5C#4@(cBCp}q~Ir9#g9IpMTxOm(VpQUnl8KY#&s5M1x`I`Tv{j}tlheNB4a&>l#({T0uU9=$GPy5n z?X_cSVBL-AL^{X`WP7mnI{hpSbg&X~D%lEKB_uLbWnpKyU92Rw#4`Bx^LWi)Fxa~3WCgXV}ffq4cWqwD)8$cAb${tN%7_&VtNM7M&& z)Q92D{)h3mX-w9`y}y0hKZ0rfwmlxh7T}P+vVjWqjNX0Pf7|2v42+bFak#eDbh?A4 zF04h>UkrRFUSJA6=?_?s+g$M##EZvYI|YXG++ zXHiTPpDDS(?oALiKU0zMOi6M1qh5W0m9D~s20tRvf=)G9n3tSOfp|AHo~= zfIrFn74*j@e;~KM?L5cMMV?*PA9#M-F@-YrIMi>v2rok!g7Dw|qj^H34`jP3Lx`z6 zcp$jQF$QcwmsX)ykMbK9GGJVhTG=2wo-I#?BAmack&oy1yV-HNJi)O3#zzmf|9EZ| zi|YP>&Fn1>Q0%2Jw<|i=ON^o%eL>xRXC6oBgOkRcf3Y(y+!wS1=n?(Yr)-lH$AyjK zxIjd1jjg~+({z*~~IM2mP%C~=fh)+;QK1Bm<$CN179H?Zy^0{f3*><7W#B8#hZv7bgxuqSU)Z*X}8QW zlDG<-dY=`SUs)H$)YdCfq!f|x&6Mkj^hsCFUpj2zy$f>Fv`eERK+Nzqv-cMoGGpc_ z#$aq=EvJmZLCEc0=6MM@#G0F;V%S{Vhs|_~M0T_Y?ozb1p&1GtqaD3qg?}t(dC6a7 zfBy4qUBvOGJVtt;F2*A$DH<1ai%}U{(vJA#oZ9xaaVka6Np=$4*MCr&t}+;dufB-2 z(pbbh-4(4O!R$)T>db7L3g8QiFqMq<;88dwGcva2#~CqgkqLIAfIC8pe?2gQj!{^Jrf&8y$o<284WyG@#K;Ar)w@`HgR^YuRyY zkdS>$-6BXxczB7h$STZN4p^cF9u^o_hhIG9@O8RApvjJNI{Zw>C3FryLkDD)e}M}3 z_svT;WxWW~*o`nG;GAPO(hm|)Z>4v4zy@Ia%{SrPKwX(Usd#<<_>;-24qd_+5KUiK~i+8%mC8{oq*x_f0SI%DwVVYtt1Lh$-NcdM+%Du7HXF z4Ik9QNRBv^e^%rISJ4(Rkm*dLe|$ou%8O=L7+!XRSUd-%WbK+V84Zp0<$?RU=DfJ|51c^ET3=d7zZ*fBU{IzcI3+PBqO;OOrMh0?(o6A=_S%CaGHh72b%|SZ>lN z_o_>}c0X?Ke>fN&?Y`X`3(H1PSIDk5lt>FERZu1+X_SHQRMRQMjc-(G;UdSJ1nZm{GnN?pRsOrpi~GR z2{0@jXM{S==pG$siaO3rs~8MzXC$?q+G36ng{cEa{iu&mW`3hZ{jg~v*&tc!@)QGr z=0d_eo7qZyjAOu9f0yu`VW9Gs8Mq0f!G~JI0_$yo?7Oce0c}Goa;|JLC~5ENT#!Pn zPxAs5JWGeNVR77yWzixlW}+Q{4S%GE#D7R&__i`R*UIErXpv1Vy>ZTg1xWgbRxM{e z`6r5XvR*Q)9BVA$21EY{+6v%6L_>xBu|UN((mHFF@;?b5N;#qCl>}X3p_()vqgh^) zMzx<3O2X)=(y*w@mtQ;K$h&Epld78;v-*V$^n9Uj#X+QhS4UTngUyf9|dosZ!XFs(CM^!(`1B((a>lCL)t8z2rsxMW{Ig3m29fC+{7r{q=dUA<1nE6!~ZO^2T zb<5rzNJnJ#3x`dksqG@qt78!hGB(zvH(4Z5f99K^$kU`lRO^u4t&Vw5xM;2xv1I{P zzAU0&1Cf7#(`GqHQBIb$XvmTQ>K?SG)-tk)S~<1q>96FMpU1y9HBiN}zCrM#UKrOf z;_xr>K}PjGncwW^oHdNUqeZHnh6`Oq6@A+m`J~zGo@AqBY=0Ro{Pr<#BaUVB?-#+v zD?GX^`hUBqoKb!n9oWkU_V4ibgCjAlBo3aql%PJD9?vEG$Az8&U#9Vgm-!{EZGR`P zQ#Lo?dGu*#cmMS05EY3H^R0b$Z{Ot8+oRp1y>U}x^{t`3sa%W66p1n#7!YzIvek7n znf&Xw1?m_mO0kTb4If1ScK_~9Rs0WGak4xwlX4!rbrt*nJ-cYk(GOZKQqwJ?dmjFF zQG*slRg>Q*N8=BtlcUkmr^zYo(0{?FBXrz9I^5lc=d6GKRs~5|dpM%91iH_Azq5U? zPGIN3jt-l#&_5&=`j3m?YBpWSfL8p}0O>rrftT@`5r0`*zytXZ562%q{dPLq+uMIk zro@Nwbkij?GDwo=k5rQ=DMpEJ|i=4e`sb z7Z|@k*uP-6N#KhY(76&1$^#w!U6erX;QaFJfaLh@vy05LOJxS2`MsBKD6CTf*_Xp8tR{aKVRwN>ewYC? z)bL>uqEam`JRlvxGwrRl2lj(?ch|l}Xm>Fa!MeM*I+*|(riWW*dI3t*<_FiI_8s{r zPsN;x3WFI3#-vJ~lo9bZ#xvG6$Xe1D68+0S&_$HCfFII~%^`{EhD$9xYd8waOj#uu zc?@!3f7Y)2f0-F33psxbe1+C4;S~P=CS0;(&+IriGtfEALqgw)qYNE1un-ww1%N2z zM;%I_=hzIguV)tm>jj1tY`{gr-ejN{xJ2@8D*i6HnxatlQqZ4?Lx0`?-FYcU&ZJIq z-uPBrYze@MwJFRjFlhFvPV6ahKNmH4NQ|F% zcPmbX6}Q4QewP47%~h@&wR`h0ABgnHn8Qv+f0nl&`kbr8I2O^+A|`rAd9FeKHdP<#I9~M7en3)yQrWDm!&p6K_P}<3(FM#7os!BLPIA1Iq{c(&9bHY= zG(&q2()FNrb_&2m;q?vS=GLkf6Y{nMP&;68Ot<~!Jshs zo7@2&%=jpwL5igQCQp`%Wwy7>H?y<<$3>s~!BMmJUiKcIUL2oZD4UktU*7~aO&vRB zz%owi5M`3dl=fF<#lwx(>>CD^rgJk#fiuI%>)BUSu2qQ%RZX+5>;k+31l=Oqr@4hT zAZaImnGu#%e_#ww&ot#`Sv%MPi%XjmFt@^PvZu&{=AKX?aj_`AOYx8tl%_{UJNg^v zU>tpcxg&j|)SH|m*lg(rIYED7bPup2{zBnSo?&os$}v%d<_8P{?|$G|GkPs;DvTz5 zLJ^C2HoCc5c&*>KQT?EH_{rfnTQmf^!zV{pbOrNte+H|o4`g$`M|}U-!`4Upm}qU9 z-DLAusTM<4cRYQjo-C@Ql5y)ma4y{#GonZ(54H7rhE z+Xt5p=;!gdvZ*FOn_Z7gVPVa()bRJg9Bhk1+=LHVn!ufe-8_i%B%4VqT4?GjTN~W{ z>`+_cf70nKF4nCN=)AMud=*gxvEF!mi3#CDlm5xo+{lfS$ll1YnX%{>`lOOSWTI!2(soNx$3wOZ=CXPamRh@b!nF zo?yG*`?tRYO$oO9y}x2Pv_whPVI0k6e})rYyps&M|2l9|SYru`LS(~@0PwmHd0;PJ zVMD(pX}p(AVrj<@_J^)Byh3WNlCZ`b7Ja?c1S?Ycerm)*Ee<~Te z)93MZaoPN3cjuM+p(*rajO++e_e&@OgHYieN)CBe=Z2{+y-Rs;QDf0jDqG}JeT zsgUrE-@`kDJohgnf&YJv&wn{OGTws^lkH9Yb9+4c>&B1p67YkDuYmab2&gzBGB)?3 zbD#*lae4_z;L2;PkzOvN%NV7PeGkLb*6O?zy-XHxIE}r$bb2Wo>bw%Yd`dq91Cn;O zx0@@O9W~T={g`fEyWL=Jf73Wu-;0kxb->XhJw@4)gIg)=b@_f4fpnlH#;@)Cer-!b zn9C}b3u)gPc*nA|Gv~Cf7)`$F>b`_wRt^g zJZjtKOkA@`sWM~Y4gUG8OL|M%s{MZyE4+7tRe*%(6!{1{~f&Ux?Hudoo5NvG!1Q>MM ze-{w`i4-S~1w+d=e_6;4q#Rxruq$7}J+kn#OxL#imGQ2rn*5^cmoecMGSRoT{& zbEN#HOs1a+nn%c^xjOQT!#zmP!_-j-c*R(y*4}hG&@_e^PSU8ij_^9wZ7AJ}ITZ zkHd{Y{6+?V8N_RAD9wttLUbLGpRI(E;lYY$5nIm6atYc82SXTY zi;9gw@ExK;DTMO+H@xsBuu7ckurN6Nz;>4A4Z)1u zGByEbgO-8T?e=xgaa)DvSnNq_y(Xk>#Q72+JFKnMEjZG_eH-^BkZE4sr`+8y^Sv|N z&~NQY_KQH6{^^kA!s9!`SP7B9r|R)B_JvIcf8?MX8>Hxb1sLj(v%QF;FlS;wnH5Cn znl4`%89N)FCv`N+72Al}VGl#ybQrIob8^Oraq;Cnky9b?e{V;e1RI zImko^t(BHHh`>i)aC%%qdR}gyu?=HjY=i-URyfNIz;lLekEd>q6vC7HIvqR47Q#gH z(jv+8_34K)qfT{tMFJU#?QsVctrlBEaTzRN2>6b!<#E7t^)$a(loWd(flWWhH~3HTWp&jXjVJ4yFMmWkT-=TFDx2vGRJS*vLB*ut zp%Q;}@nQUwq~(vJJdY?H8jT{enBZ9AZ@yTG2!KI^vAYPAdo^(~oSjMEJ zTeUE;qlM9z_cp9De+Nc`nOUD?XHjvJP7h$>yc6_7hZy;VzAo$!UCCT8i&!bSurY^d z7xNGsBg!QYqeeWH6?T#W=@K=|EY*rLK`MkYhfmw6cXw?@kS)^y?4l1x(tw5oVw(of z6wSpZVl2a{`O@`D)zlxf2#6Av*m+mUY$o!7q3Gv2o5g-ie}Ai3M_zH2eZ@qUR;61} z%M|DdPWU28XEgk~Os}FVquE$szd{l;Me3TLFpX=w+4AG#Z!kcMbxVtB3(B2uEwJ4L z8tvfAY&4-2HC4hT4&-Sp(g>Jno?UAq#qc#Kj;+f|t}fiGm-}kaMzb}~aBo)zH6M@5OZ%}Km!^Q_5 z1&#g2o*MFW%gC{5VncL1cJp88_nOI9?yHZ(jKf0*8>LEESV70jrLXa4)<*hru> z?`C7_>4!J8{>Zd}W@y&*2dzYk9ae63VWvg4VS2sM+oo9~{69hKRxaYQayZd^N_$Dg zeKK{%>X;=;xmOoT!h^ze^hc?!1j#ZA!j0iRZxFvy||E~HcH}QDjtf+Q+6_)10?oY zsGeR{<_xvGK3DR3jLI+N^=FtjCbS?^P)Vl!FzNA77EsyGigBE#8>9>vQ@Jn7L-j3R z%DPXg)cgoxQ)!D(5(AdlahpZ{GFFL%cw!jxf4Uw@3b2F_r_fQffiDXOO+ ze~(e#kWS-)7)U`~(}Z=DgliJIa4s2m|MM`GoS%|HQ5|De{=hOR!CcuD0$AZNf4j48 z?hgncfJ{K==7t)ig_Y<5?LBNYc3c_SIhCiRu(g2!NrZV9D=x#d*$Pd05;Yk>tkY|aazr5W0V?8e`~p00b9MC&kke6SW-9E#hk^>ZLPPoGB?ph z92WG*U_Ny~P@;h%+!z#EG*GOq>3|&NaY49;5Jj#o1e_-PCKo=;CvtV&#gIKJBwA5% zs^WWu4>~rkc&>6_Y&qZ<2C}7pkG;Lo$Dclpej3A3jV6=*?RBGI`~3(`*wa z-JW*Qi z{4H&1{$qjGHL@_7t=OO{h(n2uO<D%WN~7d@HC*aAg(BAx{<_TaBI9S z6skeo#WnEG*3nsjuzPG&>{KkA86Vv$=|R6h@D>;q57n2j(M!4w~LQK6LxK?;|U%BY!x zOp(Ac`Tiz&r3XhqErnV%e<(OWehEDz#~UX>A#e-t^e6HI!pI?rdi5?T;XRb ziDVRzf0+vp8U8>VgLek}zi->cFnK@jmBTX=IOfBWJ$>zkBA&`@GO zn|7O$oA5#GreC6YGINM9ETcENmSC)h1?t7j}QH)uL)V+^F&kL}de#+?<=K*4eSrs;?uWsKD zqtC_;%(`{z} zV0U|^4@75ltAa*vw!BFHM78w6(M0`TrVEk;{Zf+NSyxo9eB54UDSt?_lofv4&EKbS z^uxxFBwflkt+|ZhtyfKGZ;0g+(e~(MJvU@~OkUY#Hv=qlSC+)Zt#W4EOp`!@Yj$ zaF#!Q+~g_H z+PsNR1J|efd8)V6d`S)B$08$I>4yr*nQh}kVc69Q6y6l00R@Bgaip=6HIlEnCgh#J zu_ayL=~o-A*?(HTz4VaHZ2tDj!!YH|-(JfMzxF<0<tp|Gu|8{fUGZu;4t<7o-vQ)E?Q`!DBo=Dpf zwutxS;9fArU{Wv;&Z19gmF-K4u5-dfox~)9c<&d)X%y3FPI+Sm%6Cb53Tuz}-$RcK zk6FF0$$teLm%Zr}lgvg1`J1>MQ#uvXjj@Sa$egrmE;@AaC27w|3OmNceKJF#sZtg> z?X@%~@ojBDVj2oGDF)06LPt=H;7o5*PR~iaY8j9`y?={-q=E&{Ey*8eq_$Wc#lJlO zacn)p9dMa!-Z#HUc1nqKn_6g;=EALG$Y0|wV1JEv8-OB_G*mjfF_oO#G%$h=-v3A$ zujKn!GxwLEso2$gFlo>PP>Gn-5BTp zUlIs==NiR0-zlAGkPrQT?7d%e+(?!$_J381a9>Vgm@F05-Mh0@g1FUGsl{oD(vVbl z&t)(uunHtGssd^Nlq3!d5&Pf>J8VC!U;OBBgdgsk-|Pq5_tRYO#(oUvIVb-kQ7o#} zb2skYjv284Bog`etzRNz1x8b;}fE+x;+tsf<$7{{kcSL~el}Z;9_|a-IYpwpz)kW$Pg# zi6JQ~tq={vTBgZv3VHr~zzPIQ${= zD?jN%h$5FJ4bxB}r^#S2kl8HJhGHb|wT+*NZ7ZU3kS0YT5F~Vdgp@vtxGD*AOlb@{ z31MY}xvt_YTiID=OTIN-ml6sx6iy-?-sWECI9bf%Ng@*!h$11SP2ne?43F-pNoZXSy35HlE2&b_F{j#v0E`%JA8%@|OVOf53UoZm3R8<;7$N z904~R`Z?;24nJh3Ygcn%99V0G!%ERt^S3|8^P}$m;NW1z#rhu)55{5lY;X6Q^YBqG z`IJof9s*o+z@7sSQ!kJ4PJb=5ukI=?3DxhUgPey^NzaG0Y;lw$YekFunu&|lN|#XU znCjSOMV{xy{r-LQLz&y%Xj7Sp@8IQYF6QhWj4xu}FK0|r=Ot6=gQ zopM$12j+3YxiRYuLB16ZYboq7egF?*R$@RYRn28q4K+aV{3WIDtbans2{7DG`Ed+k zjNlQL@g1D+?5$QAZ&<#)J(JEU7DE69V)Mzt1hK=_$yca@&N6qz7O#={SdCd-Tar{0 zfk{R#OVFQGj$?TRw6!z>$o0leosjeZqn^=2USTb^Ma=+q`4Ea72V~h zZV8$G45zj>Gok}-b|-^amx;6YEXd=MUUYm{br$YPTR(dT; zNgTpv&lz&J)CI~-gX$a1R!+${(}y*`Pt6Bv7*gewBfR^LU|BQZM8L*&2+|Z&p1gbT zXT&HaVw5Tjm9LFiNN7`6!?wknusf;TC|H{!gG-}QS4D7DTVibqw=m1Ipp(QYxJT2)$tR=FcuhRgt;jLxe!#J_)w$@>5z2mil=#(@J+urdaG8KQmY2W+Cx1)K>U2a@S%;pmFce-VdsQyf;@ zUJf9Lz$Vy<1;ugB7a$)W(d}n29^f*G{)cdZFE6T+6@WRxO5cOMbK=DtP=*$SVP!xV z8gPaRdJqULEG(_>CIvyR2bZ>ix750(z2$6u(yRF;mGZi_cU&mC@51&^&=`3IaMx zqMPh$N(#xPMwN?9`r>Kle~%Hv+FtA7p zf2<_(g0G9>Njfa_f=DCY!JQr8=k^}|?Y6kcjSC4bSx~ofEB_B9qHT$(pk`{7bejJ1@r^QicO@P!!PyT0{<`>q=fOi_+cWN zPUZi(P|F`YV*mBRoR8iZ*?=jF*7@HUFE@kB_1kS20p{y=d-c1Yhs`cL1&+rj z<5SyB;21<@f9Zqcf3ewnDt~}#zAu4$ZocDwMQp5J>J#*D(CV8(tAFmIZ@m4$Ro{Gn z(`COYB>ct;-zvV@%Krsm>knG{pX*|@>FWPH9|(W~QhpAmR(>)WTB6^2p9i6a11a~= z5S%9y3Lp@1o0Jroe+};HjIb8JpfdXroZp`%beVvPw}I=Ge`p|Zdab}F3xz&m+8{)A zzn(kMM-E2405)<_@eM$TJ;cEWgh|w+B>P=G3a>wKQJnXyV>N@~S)31b{vML|R{8Vv z6PLQa4q;sQ44C6^G?!3kE+Y1xS?n+KFN@2sFc(GcWBn!AdJigi$k~{#l>qrK z^8sqGM6mOne?(wpf{T;RDy)=Pj1(FYMO{LoQkv$(L@q3~J{;ITF1j5|v(sgk9A=d<-1)>!+>L<~tO2wWx;4fv66D5-3RY)a5@-#{n1aD=dm{)vpB=0$ykVlT_ zZK8TBkSBG#NN_Aa0C~LexarVXcVwRD!)GtY9qfjLN`FJOI0DE5^59V}tu#^tt%eM2 z{nS_&P}3NVKl9PB6x0SoJv0JeHRva3qZ#tZoCr(=o+|)X;3(<5(GBXMqU?Medy9NP zP5yqDTUS>mmwrmD5CKG&k4mga0gsp1O04Vx%a)hMORO>t^@&u6qYf&l!v^>ELYDl-` zaS95sr9jF4N#t0Kn00dA$6pXM3)!jR%BrO{%Y^ zf&@h9Sl`v@ckt-sH?wlS{G?;y*QMR5y($#j=n3x6fLK8im{4;AwuNEg5(liZjgecE zH|Y>@8gDa6tbNg+h|f0;KCQo(;>Yd=I$ceXwe(o79WtzL}^=6gr_KW>JvYUN_>4y553E`fn!C`Xg|AgNZZe+7w zY+MEN#W!*9n||+cfMjB#9IFING3151jk_45o8GF!gG;E)RO(5VL@MffmuW^MJoJ_m z=eAKyNySTBbxE#?3+aCY?Ycf{ckZdsm?{mZk--Lz->BRd{?ZV;lt&0OS+N+q_Ho`7 z3ksYbGxB__fG94r_Xqhht5{)pC9?|R{wBg3ge}+&3jz#Qp4z0DC0x8&3RgCLcF64W zq+!(N8eG?tNzFPRrD~4f*QG8Kex2}T#D@@`lIRBu$lN0Q1X6$bZR!q#D{%xdd0gpS zes`ow7CNRTPh{L!tsF{0ufq8KVXjrtTYL2|p`md+Pm3`0D%Bd?kjZ2Id46vuGq<7p z?v0*o9G4#l8)=y>183Ka7c{d5`lXVThKjqc>Uq?N@d2AHm6vZ{ zR~Z5?nwN@SS2Pm%QUc{bV&Fsw^^!Qzx&#xk6_?OoR~UcX)X`L^HU|@gej6-VI{kXE zV8(GXxT>RKZMs#^W8b(LIKP_vPL=KLiHhT<@f+!b(x?8DF~gXykr)XBQOM-LIZGkT z`_hK3a|BMAe3|pXIXK$8SxqIGLcgq&@%OLBN2kJbDk0A)5gIEis?nG+k?aa-3r|lV ziYuGKkBWccy=VL8rWIca>bO0L~ECD(t6{oU@Vc zd{{uP2tgB+sW~xZVMCP%?Gdt+$Qvw!*^>g*ZR)CqC;a8|40rY;3i&&aAeDLjh>G&Z zm=c9I82r-mUb&d16=p`z+)+U%GKFO2eh6ymNBNpFEhntfO1{F}fJ3#EI3E{#LuV~( zE;B<}d_34RRRrY^8aU|GXTY=#B;bp`b#w@W&!$X<3Z(mRj`SYg8hp7&t*EXwsa8>s zSPU(xLuD)V(5=;~#DuH#cRrVC{L{?~Zbd!KZb` zi5MDkX(xyRlne3jnbqZPZg2Te(_cLVqHYuv2j-|sMj}7>Eg@@-qHb0?K9!Hp z@LO$9#uwjH$jrp2%dSboXB65j2j9qip_Vsv_C1$gk8MWiMO4yWNp(G;n zBtb}7&aVSw)Mwv>>?T^m*;5j57p@as58sm+>{3+~7@3!)SFBh9PAQlFSFG$ij7NOU zPNuH9-qq2|CfVr|o9Q44)!DpLa>3hr$+=#Z$%`bOCPk@O+BBQYmeb^i>m#Y`Nd5jSV6Z-vhlpu0b~p$Qg5?GwmF_I(XIri*YYN#{i>6 zrVoT_kt7KegwN832Cb4H%~Cy`lZyxd53RuyrF4Y%L^Tl_U{8_ALe}~Vy zCbd;_pG2Ijito|P@@sS&|8ACFLV_{?;6EX8LGjq|PLX`b-y83M?t>CfgPt}nDRhc6 z>A|BQ+}Sg}4#z_k;YT3YD8xDDR8`dTOKezHy{ul5TVD5tMqq9%9=Z~(L z0k5A%-D+p=Z+?pc7>z+U4FBEUf8VV7O6DZ#>}r;Sli#DgzX@44_!IzqOgi{_J6-)Q z)IH}?6jmzSAU{sd?3E!CYg)lu|V)3%(41q4NgC2e*Ob z-48Cd&R*y={)?c|-P`;Jf}=gaGUt5K;14WX(KzcGhn%*U=_AfLrjSc;e}-j!N+rrE z#ksHX2cRdS@!degX9Ug%!}V`1s2zcGd^)L`G=8#3Ze@g22*0$?XpQ&9wg#Epj*PnS zM1jb(5sk?)e6r2>5W_KB_^NqlQKXA7V?d0w5%i`=vxSa{p#Taa`gHeUu*b@)!F1H) z{4V2Ee;~;}o5&0PgDr}Ie+CRw{WW02U~~XW3)M>VYB5lU{G~iq$6Riji?g?`<-u7+ zcXfF8mx(lUm~Az=|GbLua0mYwP&CPFJo?QWc;G8oGGNTMx9N<$ERhrJl}ppnS@4XZ z5TM~PmM)iOusF=L@ccChss#{GMJ6_K6`E>4Q2KQhWiGoZCgI?6e;2{8fzJ$R_(GS& z?{kUlhJJ!(Q2vH7V{bPA?GzvNQc$FS_Ot`T*#pNa`Fap(gq@Js>_YZ)0}}2Yw41O z20Mu~-xpSq^)=g^e+DjbpOhMxSD1jFFxlA~NN!Y0$WV>AL;OY`oZmp47IlG3UKJ*i zqkIZ$jMpcx6&sU2?enw#C_buPCemkACVI;2F}k$x(u{#i3Z%hUS)n`pd$Iw*INQ); zDc=MJdWlF!5~ zj9CSH2iR3Gp3^a@P&o?q#6rR<*8Of8ClsOMC~O<}lCE*L~$=2wy-YkTOgz2`(oxPA(I1L}YDHC!0V-(cdv> zqUq^q<)kqCz$--kz#D40PSc1&svZ|gyFwA($&v+UV!(GxG2-U~4XOD6-$}3F@ylE% zH_O}p+3uE~y$ucQU@O|Af2fS*skEH=Qsv*&N!P@d(yxof zuLljaLH739?KS{rcdeI^Re0KOTDVH#1#p~P6-g-qrTF(%r~~XqNkHVNs8WcQEa8jq z?A}UvBBU2qu&hDr8Z^b#1mhUh_T?Sn8aUJf48qCm%6`=?6#9tFL*!5wt@*|xG$t04 zNp#xie@#u|mfz8iDx=iPX64FeTSZSR%4NC6&D3qMODugf*rB)gQuqgV+n@hYfHl~M zmZ|U4dD3+wQvF-EHpL}uu1D#xqxWaH&KcI~g?Z&YI^3MJw(k#h3%!d*s7Mr9l&-o> zN5&WngaAu^g+VJb$ov~cKf5vOVsRM$Z_Y6*f7AY{(NX>`82c<*B@HGJD<#Uwd_I6J zC5uA@O|oAog|IjnpXbH*Q~~F!!6je-!e9|`x?g}Boc}bH3jfA~v*Nr7lpV4yUTK2v z9*N~n0&*q6q8m<6sv9AoE}<8Rc@w2ga4>-^v!&@wVl4bO_DFV1fSlyiF`s>qC~T@m ze+Z;8AFoy_b*xr_i-!m{EDX|hr;DaBTo%&1tqwx6z`1+`y4;Coff=r-I|88yY;yb3 zX^!*CodvZzC41fPPhKDO$QdQQf}ZdKa@al3{qq8jigis?hjt1QtWtB(wEvSKX`baO zp;CO2h>D!88_Ik|ZX76NI_jSrD_1gHf9R4(AJe{;qH-A>rrxT1os*=hWTw3|o~fc$ z4tB}34#4o(-rO{FDPF3wAc-bZgcJ$&hSvoqNWke9-i(h-e^Jo`qwPVX@z}JGPpGe9 zi4rdaVy7_+`)B6^IL$_L9cNk+{Z zhPoWTv1YLVYa!`L-;9%#i_l(t15u-hCX=`_{@ z^4TIS@X6`uyO-nLA4kWBqodQ^f5T_NIbYB5n#Vv>g^~wLir?}Jg!{zLSk7U{{+8%A zbe&LY4)FrOGs%~07!lYW^4j!@wjIWD0W-m6Tkj#{i@f!3Y&h5^ab+@A5bF{;emG-But>E#$Hy+Czd9s9Z@r37^yeZ$3$t=(0e{L+>_(5;P z1$a#Hf1Es%;*dXlHYix|-RNWtlQ_s(@b>s{_jvr~<>+7xa0J017P%EFGtxjWOgQ91 z`_TG|WnX{DMZNY*! z<70J)5AI0-K+@Al;Pc*Lrw5hkHf8!cGO_drY7?-VB)z_YEbR1yp>vipk#P{`jy)0zUM_rerXDN$0v#K81%sVUbDVU?Z zvae5dEp(HqaH38MV$8MEA&93N2*9XstauNK+q;tX42ZO3{uc)R%GNC^d2Y`DQ}iYS zmObgnu5|cHRZd-ie95e|%YqYffmh=x(N71k_L} zFv!7x@KWd%UX_er;Y))U9vm&_qKZDFq(8|lhG+WXRS6H}Yx22ujYVoUi|!z&F6Cwx z{`ZA)uEN<<1wi6fS~ddim3zR;N|P1@kubq^sP6? zhp&$hPyZMUW_5%xDRHP=!cc!fq#%D37~f2th4lE5tF8;5ima+#H(2#HXG zf{zu5hiAbd`UgLoYW#&J5X!;Bn_q|Tnwqt5_WCH+Pjm+D`)20E{cJ~mfGG1 zl3eJZ2<4l%k=YbMn9){r!j&8~*ob6q4nvixxA^Ih_wW2TM)><`gGi0E#rmnli}B1!oHF ze|!ZUtwDsqF9}RD#uJFM!Ohq;TsI-q4JHy3HgORReviPYs;#2p?lIq9@G-(YQ#Wxv zhK2{II#TQxy5OL))z?Q$ErY-6u#3JglHL1$pX|fk{vw&_evmoKa7Tie?{}hQ7aq`t4u%|6g+)UG#5hgC($Y{FjSCa zb!of3FuhLnT~fs3JoJquZ;hh|`2+Jo7w|RKxLVC;g>_ShRigJ!r zbPv8GW#2-o3$NIc(k|erl!LiY>&AQ@`SR*+K?=7kKGqo^>_l5zOD+NOpM1e>O(Y;L zXL;tL+p86yu&o1_A*lgO!_{g@H7RsRABcvg7f|>z8j4Ecycr&_R~JdGtMh^`ee$*vIJIS9kn>m#Y;Y`+E0X zZJG^szq<9R6lqCx<~J1%u#&^g&VOnr2STZGFZm zS26f*v?q&$ydZt8$uv01rYD>YM&d+h8D+NwkSUU-+6x)553n_IplC7tlhLBC}*C7rzJ%mK)hmOa=Z`RCI(t88_c&)_a?b^UW;8PS+ziGjrvWWw+*{R8HUxJp4H zBCK9*4wpi55PEe%n?dC$*6Hx*;PorMP!GR*IhS;5tUiA~j3D}7yX}BkG&bCLN+=N< zS!^@u2_FvmPjJOmpju>Kp)GBYw{t|7_1q676?idn^Q zo8Xt|r%rlH*Sqoo*=0=35(B|Rzol;N8jtB+3jxIhM3HYBo6syB?ivrQ_l$aRj&!{i z0!SJiFRYg_Ypfp^A$&^R<{vs-bd7S}LhKO~$3PQFu@XKSpVf8tM^X@GDVSh6oh zEyc_XmyL0WlCY-vp=L}XfcPufGLkMMnE_A?SRS_da}YBT`wUSPoU$8N@(IR&sV5j- zt7mfHPA$Xm2q+JK>EnZf&V2wH5xLw3Tb$R-wf_O+90s*;i&4XM+~%BYw=v2~;I4(o zrw9(YA&F{|s0R|vRSlkK|4_FsD`_i5gv_KAD+oYex*J_s?7}{*r-AuEzwHEyGz43O zLYsNrgDx( z3T>?Ke}~gS-)QaO)NU`o#*972L-W#4ja{g3!*@ypD`SdM$ks_Ic`Z|^h3Z9(ZXou` z^)mCJc>$6LkX1uz=nz*|ortv6EH2%d8+yk?GY781Ql7=84l@ZEYTFVkaw8IPg!*7~ z+GiY@*fgV{Y?;L{$*9Ca)uvK|dK%gcy0T6-f5Lq<#bd}X${AK2&2HmB)>hMX9oTfE zRf$K*n`{7%YGb4F4*g+a-lQQlJ)fojgb8BW%mPV?mqdOr)ldAMFFjy0nG&vI$4*K- zONBhkS#|EZN~YFqcyHPUYbFjP1!<-9je;(cU=9NNgM%B^t_{$@6=I;gx9sS3k^$|l~@%=DgS zHsImbK)h9LY>bD$5wbrK%_g2)8frx~f8eVsc(}3w4_E$5@Nm*4FZFU!dUXp+i?dKF z&RnQ{*>sYbms!YJkC^u`<2(o6;M@#kdcsRg`2-vbG?myChePQ+2yxC%dVyGTrQl>M zBWB9mS2&3K_aM;$4Y!=!)uEt+9NqJ1-+NaRYN$`s>9X+!D{O}!ZW=|}t<#h=f2~^K zFmqxTZHE}!Xec$m@}R(xv{q>$q@@~;M;%sT z*?ps`#)I`0*-hmOQiU7Kb#V|cD;5y6i7dKWEqtr+%NNthf-Y07*c~?Qv2-4HJ%-xK z+rd|(pD#vlPhVfqm!5rB909?Xyl|`@5qabVYw%!Ca-QUEk)Gy1B)6C9eODi@ z5$U(lvIYdyij|oeydoQEo~1?4@Nqkwca^s1Xngw9>*F6BeNQE=L3>Q(HI?4@gF>l! zvZVT$7w<(*J}~Vei*x`dFtMUi!D1~{mDCkw75->UE^aD4YR2oHOaP8*J<73UODd7J zrhF0=y$LuZxG+yC-;~a+7@}8Zt5y00{>o%ARx<_KGpwUqeumATgO~h%R~Q?u#9V%0 zxJYQ_sZe(7^ZOgOD3L7!^Z+SEA3~Qee^(+D{deO}3z1+1D1h-6D8(+5&NR77mt}uf zKz{`_8wpvYXvOz8#qL1vDG22dCZpI-EGTwW2{bWEFD7y0FUW=#a1q7sW9AymWdh^( z^o>DWlg&LdK2_qUustZFP!*v_buZ3&Hg=k(cYj8g#sNiq=wD+zJpB)4-mGrxJVbX!J)Ab$ zpQlu{MAzxJe_-%g%>Xu_y2+)pp+_xpRhe=GWZGJ5sq<#=}lu`e&u^gNro$|esR<}g{-pj4MuV@2r*NfBBH{F;e2F2ia$FIhC6SKhwQ19O3-+!q= z_r5Is ze+tII5PV=9de}TMa4O%XS@k;+XM#b7A&ZTbfJ-m4Amxf~V_<4K2#pw28I45FxmW=R z=Iw(}ttS<*wCT4It|p_KU~E+A+B-f3n4|>eD@LOVQgeaei4I0i_>`FUU(#SeC4K$& z)SNdtV`w$xADedg=V*f9`x6-4^2@${cyu~GJ{rBe7=8Ep7?(1FS2KT|P*$F^0ur2S zc}a`z|9+(HF&NfEUT9=HSgr8ZPs!yETrMyk==YOLvcPP;Uv#D9suKPr5mY~vyghiG zVuUrwRomOm=)jKg9I!4qb3@;|w=n6=gxa9GbmMvia%7A0KtnkT4^ca9y;ar)ip-YN z>jWvFfzvpf9Vc|$nz?@}W}qY2Ux5Z2&y(amC48_I6lM!6fAdn^veFg4-L5I*aJLd< zt`_`Ac0kE^BlsGnRO}@ay+9KQuSIgbk#-FeHWdSG7JO}}bAY!|GU>-f_qMmUV(|R8 z@5M%@IU1LkaFd+CE8S_xwlo!U%*$7vMVUHa z)(Y|_9+=C;BD-HxNOeTHI9r#w>-hXD1hhe8kw zN^ASn={6j*YF~nmN?q*cPuwBm+wv(yV5hyC^!kP#`~=d|G{1h66lo4gk5qn})8c91$#yVvd1yv~gu!hR* z?Np<%nq*dE#~Uo~8%fNuF!FH~knz-23IHfsZ44}$<7piljG}84x zJorGQ4>>svW|=;9YBO1EbH`Sq&xCNcwI`iN3)AI=@5~W$oXHfnCYNgHldBLA zn&T&+g`OhVKX^DG^1cDu2sRV<ItL_616~|p9qhnn<^0R^PnV5( ztUiB-i`PH$UoT$29J~9hlHR#01Glj7)Jk2Hs~E+8-5_c9227Yu$~24R*^Q}vhJZ|H z45(s@bsal93@{?`#w($W(HV)0oo>0a7yechcztzMf|I9}@0>q?0sf8go!@weTdtm1 z6S~xy?$0NDM{l2fKfZW4PAC~+!4 zv<=P(3c~`c019N}0YGovlaKL2Ntk?3dQIcf`$K|TSWyG&Z5h9yZ(!c>Y<8>ez?Oe8 zlS|29{tpY^P1xraqX4hJjLYhW%S9<=>j`*ieaESKW#vJ?ly@ZUbh99c-h-J!z2r}i z^+n(>eo?kG6Y4?dy}Ac3Sv zvf1+fwQ*bE42>n}h~%b$T&4$xmQ;U;X__Gv zytSRjf^%=^jPfC#b@%$xsaqY{TaqC!D(Itt?*iQyNg=5j_CQ$#K(3J{TfjF_S=cN9 zZIv@%znjRzScEN|@|Qp`8bI}Sv;^>nHkNf_HkeEp8n+|^eL$B_idQ~=S#j=a zZQ-8Gg>aozui`X&{!thrQ2}P^yJP!p2OnOzeTp|kOD{-T8-uo}8?(%aoxiJ<>xkXO zZbE@t0(!{r^Da)*@#_)N%I8K3k|@UtpF_gT+!(84|8q6is1lbH^!uXvNCg; z@w6c+8>1V`)YOnMMe7>(Y3V+Vh0<`1fGV3eiTs83*L`4sA3&YvQg!QykGRqwP8b;q zJ(9C&dE*=GLz*x7zFcl^TOPoCq?f%?E?bYW301V+WylL&&&j^FP-ZlL=?}SR>0P+L z7%W3x|L%->baKS1Xl6usB)fa(;AOk)O(q!YkABO`7CX4`0Z`os5MX@}d!`T9#CEj;r}%U!x>OLkwa7NH0iQdqqk_}Dd8=CO3*Zg)qBrro`j}s zB;?#b&C!>?^S$`{llc3U`1|9RGJ&jP0;jr{mw~Kc0jrnzfvl|#7IH>}9@{xuk5j}m z+cKB1k5?mqcR63uqtU^m7vo+2r-NlRIVQJ8sf%KKa!4U zBY2=vYBRz0mcER+)g(9IyfP7o&l7d(4N!`E;#SWf1blnAOhf2c9QMCI|GQAUHfirT@yOk`8z<1VV%ju zsQcicW*t#E|9#$3uE><^ODR7gnKhd=8Ae;l2T5_}3i*U?{6tzmsqvTKRx>+~poe28 z&{%YTKF@`5LdE=MYT6NP3Z*9kVpVD}P;JWH=Li9J+y zbEdw-Y!Fpvg&HWTvRxp7skgy@%1d9p2a1FHp#TPjF`}p~V*=<^*VtzA&{B5V40Chq z@8{-5EN?SNm5`->f&5MU{&;!~Ln)YVVen9wQ-rL30RflNgsd-rL!QuEWhMmuB~?bt z=TsDxS&kY4kyB16PK{zATOe2}vIK+OJ$4l#ldxcO6kI;eyJDaj%m71cdIdyenY}*% zd^%S2E^k4t1w1BOu&a;>Rtm<14;!ER$>e;vq_hMDyI~VH!{E-$K0nx$&Dk{^P9EP4 zPc*XRyl@?DZBcH2IUOve)yWE83yqovFRQ^=bHLN*>mIoXNUD`|uyjv(Pjcp6CUT>q z*1nclOz}*InB)%{OK$0~YhCr-Dd3)Kmtqs0h;~4_9fYM#BS*-CF zuGvIj3n{^-v`#L^#mOBBT&EOw06`PrEbF2mrCR5j3W%NnS{InbH zgC<^SWrlL7^PV5<0tYfhYxowzmO5?$NKFV1LOL<1JU!;Q>K^4^-Ie=6XEEpmJMsho z*hJqUd&P-4Slq>4#(FQMc%+)&bkTOC}>qoKTdIvdXpfrfBQcqbLo-QECtpIZ5)A z?LuU=4Qxxo6XrcZ&-T#h-0$a@9;hQV$chmbj!VK}@B7i4fpr7CG$EHS`a#-{o{bNV z|M=#A)b~h(9(e8xYytJeMoDPimgR*?Pp+TWg^kT}1^Qd^bCOkPw^65V#kH16MjyL6TN~Vzfrt6j?c;j8{s>2bc_ITevk^t2u@usZz@|k%`8ox=^4t&Z?d!x?oVLC!K1Gp0v!0q6P zE6qy7`bIigJ}nUA@6!=7dDb<28?DI5y4`8H>$vCnoH~ug*HkBM?1X8^kB8EhY#hgb z(jy`faXA9`8nWMHOR;lWJv8)?cB{{G(ZJf8{uy8-Qb9R_f$)HlRwhm@qN%!5X#=dg zPc2kbN0nEXALE4~cu7O36CvceS%b3tG?$Wmiwy?N&bCsove%CY!fZ|{p6pMfKJV_6 zG^G4e(%rH_7Laq9D9C0gM+Suyz!+wKxTRF&poGZ_m71}!n^+NbRpJuSux>vb^uyhB zSYX^~@kFTLrR~-XxNbc37S7*>B4+@tHSQ)5Qi=87FZ0x&3B^0r}j^k z`wg#M4hUKO-A}+UkrSVo7zEOh8G)?niqg7vgmvK-A+dd_%K}bH7sCvLS}kvXc{N%K z3#p*R*As575cN<+4V-zjMqj^gX!i%^16I|oUN$<3qVQlBT7qdV=^GXkuw$u0u)5L8 zU`wm*VLUaKYvpE%^?9GKp@~*Y_Y`}W2&S-r(-sgQsg6irbJj01SwZ>SVh-D!q%D1; z;+(iBn8Gr#+XR3|Et;4nPByWB3CtWzcE{z?<)`DML_j=-N|jgq)BuHEV))|GbQtk{RssU{Uj3sC2GZ zbu?vjTM;8UuY%V5I{73E!%dVEnMkc^;MwrS^VOU!kX(}1oA0NEkURB%L6+I>eL~55 zA!GWrbKI24ms!Gc-vW>vDX>i!C*$v5jgL+hEMz+6vKqZVkQLPuJS2%0QVYg+Gk?s< zOF4;W2^fksb(D&-3>0P2-6iM9(4?F&^#VW7?UrF<_)8bhU%x$i#^l6eb3}d4`yp!H zZ??Cunm(@?pxvsmyD}ULQsK$&-tLvOxSaEs{g+oNS~LE$fP3&Gt|K&A%)(hSHOJWv z^7a62K$5?FtTwHTL@?+-$$|i23t11hw{OfgZg1~lT8R`OhEfIA?%1FK2&gv&B{eu$ z+;}=^c(-}%`7DpR#eM-~XdsK(jyT~?mw}j9QVtq-X88*7q~bQ@x9i?Om*JRKCV$SB z-UaQiXWc|(OC|x}S_fcG1AsK)N`gl%jWhiBl*}#feCyV1Fh@%qdM5UBp7^S4ghYVk;FIL^CIQugYKMACuyM zA0S;F2jO~Aa0v+Z%x7_zN}Z2Dx+va)>N)`LjVzg=MTj3R9exkf(34+>e6m{Yg(3ha z)!!A#<^wzrBlBx@1*KbCDIOYCabB$8yA~c%8sJCsMRFbBQ3U!SPK(K#EPpaOXb2G_ zdVkQtkVKOo7tUK;T0ldK8d6Ya=qr(7O4X-0dzH4-tTF)adi`=8z-QrZ1@OeIAPJW8 z-h-Vjok}iJe*u=WsFc<>>!^+n0Pk2`frkU8kUk^4_+wkpF>Zj+?8UHY3si+^> z?UMHjN|{%mgO3>HTGH(^(|`7|yuGPd%G=c3*VIM}&F{#D<+@=Zi_P)ZqtpJ~c*F0~ z6Zl@Nzqiisjk0KSd5W1?#JG6nap|IL1t!lrG@RhIfz`-h+Wa8t714x-I-rCJ^l{Uq zfSzkw(g2SF)RmFCwAOxLuBOS)%UA&wyomkS)f(-)Hw?WJ23zQpR#0a?ahR_*Z|h{O z8S_eOOTUj7p#Rv+IBNK)O51?;{cEW0q@TPc>DK-*Q;%Eekmx0;hXOT)aBhWnRPn^!gm!Hdz+_v2@mk(*Z|0=s*cwwqTye}Pz+ZnZ0L z7!*)Ec$Yk*Xg7r`=61$A^k&Q2M%|sBjq0EYXo>dH18t)fG*Ww7PbIchc?pa?r>GsM z;X_iCb7 zUs{4suKE~|g|i_3Fxl&UfAe_U-y1W7k>dCJd%b?IzxS%w{~f>nu;~9?ug{saK3t#c z{F#kbldCfO3XT}3?zPQTyA8(8KkhyN@)2_;f7 zL?ZAVf&=_drKF%8BAoAx{H8xoqCZT8^AG)ogcMNiYQ>jg@L~r3t$cB2lO%A{veNo* zj6kBIQYNE*J@ZR0{*&L&x`6O(Wo1`EU~e@})$V9>{(M=I0d zoyCF-Qsy!qgOWAb4VfR)xRbN1MQL1v-j`*_ALYV{U%0y1Ob-SHhyo%!r@{L`nNpMy zkvSd~2uc;A)C8|$akZqYD{;BN%S(BACEe|^>O`b**0r*EbhQtE#YJh-I9*3xRtn1f zafAigJYUJ)^Gs4TCM`rMJ$Sxy4=Y``!f!6Gnjl$s#1>)Gnx|h7KEe`}W_z;~f z*)_X7AI`V8KlI84r$tG3kM*I6t-P;z`64=-u_;D5EZFV&u$>X4P9dE(T2Xlmvk$Uy zA0tu1ZU68iG?wUJ8bogBfe6<#n{DlADX*Jy66r#X)|^JHP3P zoOS}Sogb&a*-=pbJHH8fofi-jmzJFveB(%Cn+$#f=83H~nNY$ac%(&@X(WxnqhBt{ zq4|ObEB^KA3xMl$vErM~#{wZfW!OishEtjX8R6q?)1K5M@*ZDuu92C)cSXojMlvxz zA?Tea?gaLSp>NN|C#T1+mj|L(I0L3Q;g>?9S5PeL31{Te*>rSS=Cfs$ygh!|MK{G+ zK0&dqcT*%+oOIm9vybs@c?7PDv-B^Q!IiAj0=!wbmX@q00RyA>2$#Q?tQ&tbTGkjV zC7`=cYg{7r^5@$Uoll6n14HV$$+^0-XgR&oZyJ=S2@WiD@OPq= zh#lk7wkOE3V@Uo&3PgklgnWPC@?iNS9hN&gA?P&D%5wwv_Gu(zqdST%>dOgU)4Im` zs+c(y3UCcufIu4&4XJcz7rtN^>L`Eg?hQb*BU@fY<*?e_RS7Cfzym%9ez7Ref)~#Y z-t3~cSa2>9gOpEH;=)cP6=NHsUN4vbn5?7$SC^!jtSSL=m(Q83C@n(g zhRyBNure*I;5HX11xV)XboBkj(dgAU0=KVc2}Era0ZV!p`J$43f!U9jB$}*&0X3JV znyfJamzUU@tXcx^+Ltt&tfB&+z?ayYtj2%7E)HgSiF&UFlEOXP-qX~uL+`-CpUO`J z+I`uY5^dTbLpyEHweu8;i5h<9l1OX&pddUTdr^uGm{LQ1^@jszTv+|c6 zovbMiBz25^>;R|zie-mo@`smHovdO3VVAd^tVMqfrwNs@C2mwMdh_5Q$74>G=LDe#CD z_%LGP67n#-rvh4gN8{6T}IzS{Yx z|MwsM=|B9B|MWlnZ~yWi|D%k%>&(Ai{_cNY{?GsRpa1WF4Au;wRTnn<0TbrD+_Ap> z&;QGR_y7Gr{}(mtpZ<^k>7W1me}wsjj2;`b1^~a*AU>!m^rqdEfB6sp`#=A$|0o&( zGV=w(DDukYOG=5lT6H~lqfy=s*ECl{pKr22bZK*(+siAg(oHHifla$zu!EzQs_K__ ztXCa>)0_@p5ZTJL-!>8QH`rMc?0%DBdq~;mZ%!_r9lw6V(3|%Dau+n=2Yk%1`g`7L z1txvamTaviFjKN_ZFMnTh|o>-FEZSQnEIrp1Wsuv5M-S9ge+*^HS}^4U=A29`P+h% z+i$r)=rfQaCX^k~7zTmd*SID4I5f4R|G^!9=No_rflyAW7>w|8G zd_kP~V8v#wJ{7cK05qqPFWDX$B#?k^ zBsJ&{3ZWrj6bS-}$NeKUefUU0{z1%txCGUf{%S#9HPgH*5j9yOqHd~i<-PUU<9z1Do_rbJ4c93dFesK4p%a|uwM+{J5UVmx`1=~4+&lwVrL60Jo5{MW zsMQvzhPGKP@Y3_k=yCt={&w%%$1J{#0t_4sSjK;Tx+wxS<3Hk}-~)gbvVcwb4M3F- z*bV>nr!vn1HsQbc88btk@}gWMkh6Sw83_zdm3p{WK?FVDkwfVp+*w?9DIra8Mujc~)se1G*ww(zf2{NQtaa&TW23*MoY$Y;Za+I9) z&sQsjfpd`flNICpoo@Humdmd1iOK9KI3I!^Y74GtkMmdUm9x$ zbScy1?eU?C0)?bJxMBEwKKgfGj~-p8EEojl&Bxz7x@N&w_Pqlv$n2YceJHqN-TU@C zEO=($e1^UIb$i+mcoO~%Bp1h{j z*bN6Be|3=n9*~wBSX*^}myo6+7XyV8t#@DD;S|;p{;0zG9S}-HSqZj@YF?#~4zK%N zp3jmvGagzg3xTmz{ONzg9}+Gz8f%hXi3k~-=K^%(ov2GuIr@ctfRx_nOM_RtQ%Y}X zW98po$~b;V8pvWqC!ew#J_3;d!rjNy@Hr=m&5*%9K}Wc@!U^ zqPAN`eYqL$5ED0HQ@(-+70c0OcW_q#6&}n0k9#m>lngHezxWCx>cBS2g#n1HF9?qv zGc@GvN`n00bqoOQ_zR|5q!d{cDLDq0gPWQaNy#@)nGDiecYh?-uNk2w)7vG#-AlfH zRH11r6nK)C+8+*o)s?nSoJ2Jz&$u#VFK-BbBS6$2g12IQ<9=F7v>&#$XWXYu)F7<{ zoFW?!)DYP9h~C>bX^6{!DZecUc2;n`XvUP-u5xrB2@iGk!v?N@>Qfh#EnB%628?`> zbOC`?1g-Qu1+ZQJeQH+oiAa9vjN1h+pn&aKHw!xHo0U(0lJr9|rB!B+-9@p?GGH5> z`e!*rPB-h~%a_yDz`T`b{7?cW=~bHXPdN4G*#WwbHLKFgw((4IH2hP~;fxj`!j2Cn zavs{Tp3`3p>P~Twl}yY8-%oOMQR2=SHW;Co_@<9Rt)FdDYO72`7UO+FpWxr7EyF9+A`GN0ZKZrL2f@)6^5D&+G> zV=nn$vPnF-Nd_NymD7|@S2eicKRF9h@X9`_p9ESqIAP9^55^`9IIW{Z#_H4J(JpMx zi_uu!ryfUBX1r-&&;*=TBv)z1SK^jD8Af)Q?QLLx`kb4hIoUnEl%3^(cP~*)@6E~#j}B6gJi&lJ3yhq8&yVR2)b{^~ z2#_Uzeh+{yir?GY*9xAJPoXS*-9rSJX*W0~8gdX0u6y`9I^eR23Q;o~8#P?#_<{aX z%`v%+a_TuVvL*q_7xeEvZh01n`uKT|c)N53Rm>pMAZ<=##fbfAtQy?xYQdQMz+Epv*nWX1HqKrdjnn;>~BCmdFLJ`@j2%RT1aAW@h?&2?dC5MU$6br>t0iOHMpN z)-cKA<>h`daA}r23CbujseUOpZz)l+csmsv8+~F)PjIisB4H-gd&#c^FB^Sf(#JrQ zmdX$!Dv~@?UMh1iGys`qAo^_sC}}`=r@XiYm%F`9`^mhg4h6%j+o4)!aY8?`TVtHL z#wVReJ-qgO#^r1912zvN!?fjBb@$63Lk9gZQ$%egJz!iop{5_OGmdc}q{m)^;#BfT zO%UuU2pHdrn!$x!>p-#P=sMK~8n5qHTX|;kNFcWpj2JVTdddf)4tls ze8F}Xa_vjHYtwiyecA0U_7@gm4A};+{WZzCBz(%OU`S*sD?lRiQqIaRnH4CR`QL!{ zR9^;KLTll(HQhC?1oGs4A}$*Qbk6@0n9{gJPm{3GG|q9XId zC1epq)Ooi+tE@5se~%9`6r)4YhQ{1`Y{s8q)m;`IgR7>?&1YVFvN+qDrA2r%YOugB z@`vvN_Vw?+@${+ru6JNQrq#`Xw$e2V82$jej-fi9g1-trG7mhSM^HgOwX|j;~gv!j*(kFQ+K!nU|u3oN|r7uUr^#D8+Br zzz>h;r}`2($RyHLrfF|aj3X0F@0*IZpXAEvz>x*QY^N}sQHAbNT!7EcwbWztFQQ9@ zPHxb!)%wAYG~srLg5*3sw0}TxkVep`V`O@O^>ryvDaWXS#?*BNCN&K9#8_6Os?CbD zMv?pgwQ*7_=mvqYMv*2mVYp{)M$zn2aXc`e)`dd-2-VwqlS>)QSjlR-!5Qthf+J`g zHZr}%daVP&wOS?j&WF_#`^IjHw(oSO;=>r7arx?eGcJrTZowezK7U0SyXp)Yn%k4* zB|1?sa`i?5H!+*^1-})~X2!RMatTnPpVx~7fl1vPh6zotGGnhG~>WWOJu26}HZ#F?@PS=3xkHVH*+MoCVsCs373@V&$bVa26$bOs?TLQizKCx8ku*c2C2y$cfNiNOqV@Y+*p;BQt5#DBPeEw?78K)3qhPENQm z|Jnmvg|$*xS!^1z3uT0X2Po&K!mF%AIp6e>PeVIF3?d&35<`A!{E$!2l5-uKy8+$g zm1I*+HGu`G8d^~D+FD);(HJQwtMHw!<^zpHY8#C07aP&qLx6x}KSq|709Da6O$Fq^ zE00qR8mCWKO@GF}U{0<9>g&N}oRdyT8+_^~NSaKKHKI>lw`x zv`K83v?doa_kOUG{uO)?){QoD3rr{qb4|BnZ8NXhY~}_rZnv4QVW4ORGK=~c=C{UZ zQs_h!`;EXDDQ(()l(O5gTAQVO9&8R@z}c=g>q(1WTYq|w^<-23wzHD?`+9zlr%k~* zWK7AuQEOuja_45dBqn^P+CuLE-oFnOI8E)QoTU=$0%=~c@b z2pHH)U!v`>+OI5|9qI#ZsInw6HUs(wwYLp6@T=a(Q0EdrG=J8w?4>j-Qij`>Ym5d zwm?<%2cypRv>H-{o9aB7O@679g(5BM%24^SG+PtJ2Mx46JS_n`cgpNp_9@8^ zVsw&xhViC37PmB0#In+yP??OK)Jg)-#;zg@D68ge?*PnmNJM|rhIjx)sBWTqR}~*U zjCc|yHtoovfl%K71_exC@!Sw?IOWBkx0?PmHkr`5F39lCInN~%tns-jVRN`$z?{@y_ zsU&&RSpHI)Rn6c+lwV{nt*o;=4ajoX0&agnQJvnJRF|X=o{CfgYq=+h4797sE#$-) zo|f=o@$Ou2m9R8XhM`O%WTb#DfST7HFC=|$IKktcrDDDJWYj;A&I_!TL+>+rOBzX1 zBr8kL_;6qr;M25DylnaT6x~XD`$VyJkfEPV;UV8LPJp+ZWaC(a6*H`kS=9?yA2fef z>ktBq4tshKiLUlf^?Y=_=c8+$4|-zyL?dOiYe@9Vko3XfNZR1lsv{;YFhN>eQoI%^ z*D#7nU63kpX!dfY8RC90x`B4hMp*mC6vv?66Z$HUfHS-mbbzn{;C{gs6F-GtuK{IXaJ; z!W6F=zR@3A_WltPv+@!J*w5hSRXj~E04p@Z1Ngc`N%UvyfM*db^&@q`pmS-sNEM%RV=}loeaL^?hkbpS zqmqsvOc~oD%Gg>~67`78$Os-$5eo7X^b;6;JZB@#L&IAHMeL^T1bC~V+_;7j3Q)0p z_uiZjj?S4cRviJ#{)l6SG>c%WOE9t=R5^2~dh-ZP#mKg`(%1+FV&WM zeI9N8>%Uq@KfO8q*Wm14(As|+3|gIgL9qATW_S#ltY(wm5S`?0rY>7Y{0~e%vG~$6L{}JB=zQa-#D^5wvsFq-lt8Zu|GP21Dp13K@GLqCc)7nu_vZAf#lt;0Y zz2VsfdS_9!C8J9BEZFGDo%pwNR}tC3f~-(_3oc3*mGy>Q^)$@Zza#ir?kY@a9DG%+bVEcZ9& zf>ai;~^loqMg`{f#nM@87?_l)K^Q^K0=^q5bk( zxe0$5!_UL1vsrQ?iYhxV5E{2dtNC9*Wk26~+YAgJG934!c|2Xf8+c5f@EheG~r1viDZR{=4M!x=BsD> zKR-J@d9(56=T}Eqp4rg!4pmN#=AANoJDW*ii&_88{_F3L-WJ@H&P4e-_Qp5+`=8Kmvj#%aX`O%xdygUr9`8@Fu(bbDWsB1rEsYJpgV_vHB|5#Agz#UxAB1ojEv@6Q|EjX4 z3VkWSBptO?*Vmn`YUBa7>R1#hDUl#*?0T?Z7qMWJD-5@kZ}Iu9=Uvm zh8F0cA09p3fBWnWwQ+pdM9;_gs)mxJ zDh1d&MxBAqGuTCM_rE`a4R`RD{TDBeo}JJVOI||6UV2+PTVlD*WPd+$*&{W z5qkNv)8;;G5t#bMll>QmKOP^x`AhQ*eLJX6^sYug%NS^dS}59)xKdf?_0h@8XK(Ss z4b02H%#aZK4EI7IB7^9d0qnz#f`Vu?LLp1C4hQto8&akyYOWEUwKpr2+fW2EA!bMP z;#>ys2&ps8IH9bVAE1<_I3$#R!#>-SU@7Vliv-3%%NSxfROW%mbhUPPl`>z17p?#d zsAQrtM`1j?y8>vsL9hjU`k-50}UklaB-AlwzYY+AYOd!M&y{aV!D6 zozytuZyJXMAsULqHv-gLGa9R^9FRb$T5rH5$u+%izarqA44MHN$JyzB8$WH>R3ns< z523%;KZ}LZbCSPiTWQ;H3_}Qzi2L6~cunG`!QpvF%Y8y+uZ*EC%;-suV}nG-o1{dk z=NUEsGAW)5A)K(OG%Q|N_jqV{8Q^F`rKysWlFqu+z9~X-lAvtcmpZU5Yc&X&tZ=Y^ z_~qohg&Nw9S7dQySO>^|>9ACtSvo!3vIS4eGEj;yX?H&R4-PG;27@whvoWuVJaAyu%k*CKOl8~3OP`ra%sRW0Oh@y zhSRgCs==Y&(?Ze+)FvE#)VvPMy;c@gMB|hdi*!Tf9MgkA?606*4e~R{LP<*;CW@oU z_1-l4`Mks2pByj7wH_(G3xV)uG&SYGm$I8ndI1C7GgSoi`uf_`rKYRAoaAa&erd>J z4MgQYDP*Kbtp-AWJ|u{yAM3;zRyS}bCIsov&cg#zF_Nq~RKQSzxIG(F{|J~`Mpqn6 zmqyqa%Kp{K4#HE~Drd_X9y}u^M6DTnj!%#5=4LC|q74_jIJSdLz1D6`B(<;IyVSO< zH(4V$9lsdIhIUwv1grG8a!dbV(Zb?ke%ix-`ez25ksnoS zh@N^~c%`6!xMhFwfpT0uY_pE7kyn_Bd$*?L$#_1}_V!5|&i1CK)}Y$&imKJ&4Z1j; zXE8Ei{?HkndJ1gx&Z^@-t?L&{cL7(S3qh%EYp$A71uW#Z+_e8#L8l`2ddXzP*dSAx zIHV9Wsn!lEWSAKs0F&_AcA1yec-OOI&rFt4PR5#l<7m1Oi^G2|Lx-Ov`2u!YM<0^O z%}r`L%N%Q3m@)6qfO*NtYaANJM-#T`S-PeFUa%Ha83MgEE0XbGd~?&S6#J_xri_8$ zt6-lIqGGlYSL*!)^`zRjay-ry{D1aoPysR9*Ps6(uK;mT-%bZxLD2rNH^IsOGsF3q zeECm*j>1*e7r4Y7oVqhqN`(S9CSp+URcPC<3oFb2$Z*!md~0~yEmk&JR9jmTcBIIs z%05K|NARN}_j(9pardpLps&XzBkU)#kiy)RYGN^#=1YdP&?>UgEw5a4%ap5boegA+ zxEwjflIwvSZ_+i8)E}um2&kjoJ0cV+)H4cy?Hfze0>Tdpne>zh&ge8%dc2&eHmb{m zPcd%C>g_J=RCf+H#!o}5f&eTBbFiLu0$O8)mef&K$oOyaKEN9Qu>Kffn25I?N!rPq zpeZ{I#A`{pD=;&$%1}C!zlvuEX!L{O_i|}qQ|UUTZhNZRRK{)*euLmvw_*WWO$WPw zTUt$ACPo;q$1@1^w4@A^K%fnR;gt1@S-<)03Bn+1-hepuf^A^k8l7|zO3P{Zkv7x{!9Bh4w|`do!MROX#O#vhaECWgLr&0n!u^6VkEN6P98b z@yW6g@gamF;)?_^&8F6XlD`dchDVS_3yIHMZA6>LwPz)s`ikItk8C8dVUZ`n*W%kHv5uh)VP!F+ERa-h-7^z! z8O9z`*CN0-5zPlS=F#{=;!H+7?xf-+{&q&>_H6*Brf+CRb?Yq25$rB^%5DeVRjlvo zK_x_XLHWf0ut*dY>UgbYx7j$9OvI-f#{RdKv07d4j0k?UP3u!+`wv}64ys-0j@m!HI}87)b^%1peG$X_P@NcgXfMH2bT#3o{$Zf^W& zC9%J~NG5R-LU%f$3{GAJ`ue(;<;1LvJ}ZXh6vdHAOd?yBc&(M#XT%+IEs_abw6_9v z)ZlOFfzz9-dNRz(h4OH>yAoWQ%1EUn4&-c;2P3KW+qy27uf?n!0mYZh#jF`QYH$t9 zTegs)-x;B#!gKdsv!!BJJ^w7i!cZwkM@@3)4$H?m>6W9O(P?>x;Mt9EcSWVp$CL}W zTbCZjtQbbsbt^l;t+A0VJzG~R>uHRu*aviBDy6IRG}V+HfJa;jrrSy+yf%7RKYuK) zKhJd_o6HQfPy68*UH+KlL5>2^D0|%9)0ce4tRfATf%a=zo!n@|lPh;)m#fCCB_5Rv zR|Fy--YePWu9c=dIqn-_yvTo~U?M6ch#0`Dm+r=_7k?_!*J#b6w7;qYiQv6mociW} zMx9OJUjL(eYWL1O6DxiP(5WqT#}~@C^x9|48mKw9HK!c9&u9GFD!tHT2Loc#GJadL`_{;Z!&Aj{_ z?+sj4G2ka(_=dmZx~>G;X>x}4hA%WqmaYG0=Rn?xBpY`N4OKHH($w>`8!Tm!@DZh{ z>=P1>SLkOCrUBwj60B)h5Xq{YJpjon9X>?p+aXMLrD+vlipONaA$>m-TF7%+YV?GC zJdexEPJ9lu;zreh4K@)x?(~%p2~~FqZ?PiDORc!f++tG;u%RO!n=t(`mx{=&E`Ro% zZ^ca&s&zVtgyqSiWjF(~&y!WYd#0>b>R+bU*89b3jjSPpYlpk5WT`S;VRG~*Egr~9 zjPrdFUXvzZz7!T2CRulfDX1wkYq?s%=#ej~_4PFyqsRx4Mlrr~P}P=#GoaYOA*y>- zAEqX*zr$^UuJS64R9LUS5$)XX4u8GpU9G7D9%Refw*f_!m`m&8di=A*NZngZW^kQ7>F88G{Y$G~|Z3^@5CVIr;UuUQiQ*BU=#Azl>7Z_@y2ooz@m|-mq6lxOvGA0Kf_!n85_*aLa zFr87bHs+@+9~S^t)Uhqn52#^_5iQ`eaE-B3%LZGRT}Qp3K%;9Q@^^Q4`)Byi_C^=- z-`n?g(2A(zVl5L?4yZ583Qk=}(B7snHeJGE+t5Exmj;pXgXV$01?0ZvKmUuKQx*VcnL3&U>s1z0I7{_3h*;gq__vAb-lEbop z(324fX!35x9>(Mg7+(LrGzCnqW+ySa+lQgS<*fmzydSB`%0JSY1w?$Qy@I|?)fEOf z<{Y{?JRi8=fQ-4CJweXDZjb>|lZk9g8q(3{Q9{Zc-^a7VOh;g@7I?Wx^2u$5o}qZy zX(}yFU_bBgADkrrW>4^H9H@hx0sBeZ+6<63x=Z zi>_=xa*0ap;ql|%gB$ef_W1FC4*cy?ZS;|zT5(5iVHCYrgW;Fvt30_#KR1fYY(5z` z&XY#3aXv2_82hlXh$r);@!fR_k3DIrvepgpDjhV9+GLy1T&kC9D>>c9Q3mbg^ga!< zfVar5V(UMU(-Yd+Dm+$l`cP5Ny+{3Z^4=2N-+Hj~u=}Xjzt`$*uP3K}kIsVjcJI;l zR(Jbe3y2*^>UANl_h4&>Qm|03hbjFXRiY2yGH>fF*zAW7w%21ct##Y)ZF@SnU+Lh1 z)4@ZdgB|K1-^h0FZzuO@7FiGsvM852v!uX6b|9@s7%+5J7K1z-!@pU`zO3WPD@v1J zhnTlqz9S#o-w*&{eck+j0upttRjJ$e*6pJ*q4}xx3>+Hox05_UxR&1Blq$B+??5w3 zwJ1HfjyUDE2C6^HHv|%XyuGX+W2m&~>Lw5bBB-o96`K9{-+)4f+Wy7Yg0Xvw4cJq~ z2J9?TH)B{nE`}vM6Lxm!h4v5;MRHo6RV}aIoHScn`iUVJ^`@)(Y4}NQVhw|aX?e1>x_GmEha&O zPO1NJ03hAa!7}7)DBwcQ6G?~i(eEL%xvdAkvANf!d8&9rYhdz!=D_Qbuof{n0uQEP>uTc+ z<{|Ikpt{%OV(Pw4?Bwg4u%XqrRpU;5_Z|-D?@sSgZ}2V4@o}1cno5`#2=nDi@c2h= zpw$cVT}SlhD4qz>v4N3q%P&>Vqh!0%dTH0Ip!3)87(h)0x;yu$9E0eCPJPD ziVl@KK{P0T6{PF(qy0<=Y!O#8v9d%GkVoi`6Gc1~*clPzJR9KZr$hmo!$M7tDj`U&n-C$WE6lm34JEP)XNhDIS_N!u;OtN!5#MTNO z7iapaxoC0o1$w@`F4|FF`<9eBeadOe3}kL^^wC?Pdro1iZS-O0;|$9$KV7Diq{V|S zVE8Z!fOJ%}dpv0CG}}Xgjcj!uZQZ%|u-b#f3)qfQ(tKQc8-WJ$rQjL|!%}!Z;Mgf_ z8cL^s4I=|}fS`qcfuIelD90zjK8UACd(eh##EVg54wPZh)RdI7iI$#zO%b|%ifnCG zM_}xF-Yo)@U9{Lrf!Sls#|548$}d3D;l z#{IPUs7s-D2U$n#EKNKo3V(4 zAu4~Ax*&!(;3PQTp4x#!)Car7450pU& zf=UvGpia4vSJjKUCSB@z z=aND)$VfBBZk22{<>QrOCM6v91+bFtF}q;82PM3c?$KfGocCA+FEYKU{eFHennuwx zfWsc+E3|+Az90l{Zu;ABySMt=57rs^!9W6m;DC-vU5S5v5ei?ytq0w8Mv(yu1H)eWT?EK{!TN(jw*Yzg?EZctkxYxVE-^g9ux@qAG&u@6AG&3kQR0UjoJ-14v=>*g$EO9o~($d5>0# zLt?$6cu>;D5{L_^tzkje>1prb{jhh2_bVrGxv;Ml!mf#ehH=h_F1D%T0!d?k5obba zdwLkKHR49!FDuBw02lxcMDT3zprgNW(w@%_nf4pKxxA6}Rd$&89XY z^qnfbfY`#?@osl7X^&+HQ(MMMnS*3wtav5UJsz>$ezn~J25Ok>(Zsxk&3*>mp;BN6 zl0FS~Kj-z6bJxpRQP13$Qiwq=vMBk-%Vf$*yCiick6VgaMl@S1H&Tdyz(xPKL{;bw zqUc7M5WuZ}sf~My`C#tGM3Sh?ov^cJDr-d6g$O&UKtYZ>1;!*-8q~ZD#M}tNOaD8+ z5(6NakO($c8$y$ZH}EUWO+RH`5jKa5+hQiE1)vGrXl1tY!JxF1MsT?S~JTsd2| zX_>hZE69Z+wFy*GC}O6t7zLzCYoU_09?Pzx-ewoD5&S#Ug<%n;wnt7p0Y)9B`MxTU zQHUnmB95X6ZM&;<+CopkO7xv=x#6j7vS#0=gJcFc!=jx`OmYRTeUiXUchy+O%Vc6&} z_H?vCY!j+B9ahgcb5+_=91@=fe|*KU=MxR5y>XtDpORz&+LyrPS4MxLw;Hb4*!WD* z%x@Y|q|d!a$<}}dcL7&(-fE2n35ny|Y(ddLYhhqCr~Gj`%-e14&Y?Wb=~BSmKso`$ z*NLFqMsF{s*0KTQK&N{OXJi|kLKUaMU>X(xjGLR{ao3_Ns{oOgtLN13O?f6)F$yUA z54&Bh=21mbH#gm3jP!pq3}F{pR`6Q%D5-wUX5<&C=VCw+tJpT1i5Bg8?+~@Ye7VdJ zG4?hB-%zLW)%ohv0RQ8y(m1sCa`FZ+_Jbq9aL#<3@@s*9x{9jC^LUte3I#i>#05*xu@k*C7 zIETLSBLtP)qcwkLMz!W83~}3wQ!;i=$$QtlWlB*6t9t?VeMqAHjSc3nz#4DxV(&&9 zKt=4e?zlW!Rr!`BGIW}$#jjbVjO(siDQmT|y4CWmSa#cr-ECEFU6}wK^32#nQrHVZ z0DUlMnRE)BvepXHvK!uU08l`$zfla;@LN{JR3iV1Wf5|@ zzS~lM>vG;0SZ#|G_xr8@T=f-2Fs=MinmC4?RAYjRE?3SU^Nlq z7Bl0498YuW67HdG!99nI-TbByvYo^pe8qpk5TBj8D5|BuYujJj_P?gL9#m=R>7p_ z*i#-kdyuHHQc*nOZnxGH;Z9Jjw2WO}WjS)_<7orh4>>vzIc}L326P3qYav{3S@T-nIze?)L8`>+4uDn-noZ8=Oj`*@oWBXANY0H&QVLs~jnOQBLA|EFMgS^Hzzd1=uW2l_yNJ?& zQWbFv1pYH9xZ~zHlsNbLe14JSc`}wyxIs6BeTb!=842 zn_XS;T?*KSg_I$bsIBKTfSMKRflIy^+~KxO$&4;b%0 z`AfWri&37=O0>yNBeXSV6-C3=T&_8`A_$jMTu$2LJgqesH-bmOx;{C#N_IWJ=F^DpbZbJO=9Ja#=BcFP62`uJ*Iz7uf1n zR*R%Hq zZN_hnT$^PqH#WbNufj&Y_y!B|J@aEAU%f3fD<g0P zd%bSl49D{KRWrQA0t+ZGf*+TEaOj&u_P#VWuvY+{)^Yr!6-#er${t^Sy8Cz<$aAIH!%@%m0Peo9*Txv?^ z9q2tzlOmjuOGf@ZCNK2-`!Y)D_ZM_HScEbxTP9n`WJy9;^KcekP&~GOIeKOp*=hmv z(`2J}7Oi!WyBOl5V@9L0OF=u=BM~1pySM;SgB)@>(utC!6El9wrzAwC5nQ1Ugbz_S z`~v^&!++=S-va)77fr~wHH(v90ii)c_)m}wD}n!XNT5#18@&Ol94QBGVvh9#9Ve4A z9u#%syol%q_@KjD6k&mX9vm-Eznr1>J02FoSk8HTx_{PQglrD*1z-u_x+4tWpu6a>L#``$aICL?c|6nFA{WFlz98xQ4C)4{xl8n%XAK!*Mc`y*-599`5L2UwzfEE$w_t?oqm4ZIQa8Q%UDP6Eod>aR2_+1DJ*$ z!H0#G%8b%$%+v&9(bcHqscNDS`_X(%y z4@-=o!fm0d0xm?s!J@FUQ?u3?5cn69_(NftBLAM(mAajJ#_iPS+esU5=nl#YafBoz&&C%hr4mHW6<(!_!9(lC5xmX9qdy54Pdw_748D-GlF~ zKK$%sV!z+L--Rs$KYN%6S5*Igh$SCx-G>*fSfnot%h(CGhFm@IU`#3aC|uUUluolZ z^G&6AIkYYcQ8N*yLfOW~Fc26+8&<}hU$S)CYBmFeM!{9OVZJeyjkc%DaNii8WetHX zlY`^R3Wv;p85i~sLCD6SCHo0Sb5Fg{g);k0ZL11l-0)@5Vnt49M?azQ9QMiQGWyv> zhKji7&(%F&aW{3oASbdzm6RVoYv#*(d3RDX~+o|8>owP$6)2XmymFG74RGyncg_Ji2 zs)C${56qE^nXd$S`H?}6e_e=RnhEl&aT?R|z~9R9K$;JF)b2My&zzYTcH0CCpy>y0 zaUbL!Fr>TsWg%d8zi+%PWSRv>n(u8}cPzH<*t2!VHXJX{(o`DRCj9TxN&K2*&d54-X8eZT}DhZm%I>V3s2d?EnA*Xs4V=g zl!Y|k_MkDWB!E8T@$51k73h$EoR$l_%4VZ%lI77UzrTSd^IFBb7 z!JS(-YvM#!0uvt(#N|S#BW1y$g1^=27Y?Y(g3FdgwQO0KWk;gy$WwOYl!bmqVhkhC z7)DOnUq#tpJ!OBj%Z@TGJIbnMN10oeRLw`(gKZi({H+We(kdNr75xr>lu>6$7abrd zxnNFE^Wx@4mc*Dn1snl0JJ;D6S`v>gQ#0FOB$hz7NNV%l@ef45@WP74Dm;r-*b4wn zP+9m}DGO<`Y#3V`4NL!4Zo|&dv%^z~V@+cuK!)h=4j!{ap=w8`iayMsboMwOW~NsD zHQLgp@g)6~aOw{Us*0h1e`GJmG4J?_W2gdnKerRMcWFm(dgY4*4jPe%dN}f_p6dbk z9p|PAMVnQRdZJ+|h{DSY66BIGy{J!KqC%DbD$iK)m&#585Dg;@hUxBz*%w0Z(gg}fUV;b(Okl|CT*!8(* z*Vpaj+_#hUKo3>}2nKqQeh@FZAA}@_46BpQ{tpMQ*hkaxbexX((MQ(SFdEJ{$gXCP zex6R!@(bkkMZIUqBAHmVwlIg?V^w59VM_A(UZ?4Q?Ds9&?j`v!v)TNb^Gq?g-gnt~ zHST^D)-_$WPHDI_E*t^@k}D!-^m#g+7cZwtw6$KIZsP!pS-}b&5j;Q3)B7S#(iV8U z?GYMPXsp*h79lsn2emZa#-{CpPiz5n&`kAh;)B_&sNw;m@XB6iHN8fvTl0PWd+q8v z{G5M(1%6(&t1s(zwHPM5%o6g*P&i{F#gAU6*Ll!+_Gqi~q}!w%&+bRxBZ`-S0px}l z#(A3L@kAVllUWQe+hTVY?su8>CQWkWqerc+{(3HO;D1xe&^ zu6-)Im~nsxvGd`_Y-W(x{jCt5GAO4CrxjY;YLRK+EPAlDo&o_Jibn%QvCh%6vLiOs zFOZmCAX8DEO4EKOy%5tqd)}S~lsz48_37nFuW5h zf#|v-qBBY*g+Nl-m2=$Zl=28y75Jy!Bc#P#W2XDRQ3!+iX8pGqo!2+6A}a!^|?J=s6xc*w;cKi&%93;kar4*-uc$riMWLU@@8ptYmSzL&@=akHa6(Tz^UUme$) zc#{lsnP&>x-SWtcG<_cb{;jLY5T#>Hs13aZfSt$WkH57QHoHxS*oTGRLcM!`gY4k9 zR_&<~yW4uWmMizDeCYEbGmz1?gMU) zVnV(CooDpx*UTuB+;FMDkxDOrk~_}3qM&z$@bFL7FdQwa8YylU$>meUIpC2NVx+8< z8RgbsN7?TWegSd<+x8vL0rH)H_kqO5K<>UF{{W2f4G_7?vRfa*R~JHfc;OKqUR31X z7aqCyg-`B%L2_?%Ft_Ty6zn25Vf85nk1bNZbvC7#P3f6U>CWb2Tyoieaak=pF727m zr&JdHR?0$}SNx1+Z`%gf0`m^ikeK46(o3%w6}G@WiCQrzW(1z^#_Q`qy0h+#*6PtH zH4aFn3K0aB-4tG%+@Ee^@-G35s{ThH?WhA zMID(-Hn#Asl=?)rJl~Lw8cL8|vX(V|xw&{GNKHdz8{WqZ9gegT2rMSpky49QN9%+b z1;)x&%o@_BJ%oEkk4ic!n@Oh^q{`rmp2?4aluYnn7=;vnOo$&8Q>2&?7>hW6jf06! zIZ?gCMIrSJ$9VL_i3-w=4ooy!gyJ*eT;aehCFX}n!jK~=F+oH^K?yURFrx(GcZn1- zTa}O3wVXJ+)u@nj5dw}K+aN3&L}@f(2O6WiG)EbmqvS!w?x12Zs3mUStMEhkCEO3s z!$tTm{KO!C7AleGIx6iXpG&+`=m$&W<;EV16*D*XSf8rPXiRHqW?$;;QFKYGY-W$- zu^3TLqEphtkk#g%PUpJSSv0S7I@8$~(X7(xh3xc#dP22Z7LcI|1IsSqL~>|$A*#Vm z55UPSL5%F<3UwWvAzbMpe2A_pst_OK5I)$d5YViD(TOQ3lC6F5boNDewjX_|bha-$ z+jsOXbn|AXLi{9KJoj{Xt~*>r=ami@vcrW}(IXTNDo#+qRK)?1ie4{0$;!EOZi#T@ zP~Le)`c9AZQ}mAHNM`mYInqyNi!i`>ksLig0>sHbAmw8^rn@;x)K5HNs9MSzrnq@w z7r_fx4MR+?uZvsuBs>b=gdf9a;X(L0JPcne=kjTosj;6#)5@K3A_sTk+!++E2=9!k zb7z$HoiTOpjB@3jQQmTAlxE1s%AGOw-WjF7Gp61M~Pi$7msd; zKZ`zA?)PUp`yhH&x!(`u6b_iED62%pXHTb}b*qQb=SruCI{S5WSn2e&?DRDg6@NCi zUU&9lr2W zFeSUCAPS~>BM}ATO;!|4S)njWFMoxBminVOijk&B`KeeXOxMUgRV72j%<*lswG=&h zRWjh2O#}wDhr|p+X)U7SI1;95ehI%If8rRIyf)1uPTbxI>p<^Q<0!zL#$rSJ6GgK4UXA`O$Ag%*w(w9lln! z+su?k&=7bWwlL>9sSv<~KKMv1CPMJUXI( z>Al9puZjdyVF~(DY0zo4iS#R)&@RjKs(IzjO*fpl8QQH5itcN64!ZM*6%TbH9LdC& z{qw90G)CQU6m5_!ea&qH-&AHB*Tt!t`I)I}!2%GgFbhMB@=Ur{h6S>Mjh>9%V*z8X2cxnfZgICRXN)U;HMiWYID-i*flifE z;n8IR#D*M;1dvK)N0BIPGequ%`C)`~zN0fs6`IiiLZGd_Tul$41e#}o5O-+@FobC< zU}8~`1E>+;fvjv?p!a5?EE?z8=VmZOf87#8^ea9QFVf1-79(FnG!id%pofA>ctjNi*Kl3VCYq#hI(8Wf3spzz3z2aHHCrgDnZ{29Cny(IjQ zuT(AVCRZ23Lfft-9VR*3QKp0EYIR1L9jbCn*`XU9j&qiy%RSr6s3g5Hkn_|Hf8@*w z1?qICw#tMR$~h(qI9Aa=r#{kGklWTSB-5oO!*SIHCMTuIstrtM1a`%$ZCyr=W`(n@ z%c{7uZr7$4t(uLCDqFZ~eFG8K$v5t0LL7B_SsfJrZuVo8yG4{>QLlY+hWrR4Hb!AE z`J?Ef*egh1UB2iF(rVXVGvf<(HuY%Ix<-nFDxq%5j6P=kv7nCyeJsh#d$FpqzfV^* zMy|E)2ndf6u?7l?S#9vVxci>C4 z75#MMgI z6Iec-E%J2DjWBG;uEa2mJoDA%$whR%zD}NpqsXOGH8u|_Wb)FzK|BK%G`1M9rgkk{ z?dBCL@>s-IA>)^xo6g`-{Vi`@3scX5e`x_@K2H-@P$-|P1KW&#>Gx}1qHA|?3H%x2 z?9UKqe}*{wGsM}SAmKn&usZ#yZE(c zI4tuo*LsonP#4eer~HMi)7uw^VNovy$SzsQqRtsazE%d*EG>T?oFZl{n8wf5`z+6l1NR zAYmu=IV$9fVWl}x0{b&G>{i9Cz5j$rwG((orK6;|jEgVRQN!Jb-m&OesQsyvDqGZ< zGhs#IR~-VPW~DIzu*o_?jjkkeYny6aiPjxMT10LVOJ`4NewEClg5Id->G{dI#!+1{ zZ@xUtsCjqcJvp_4CT=J{f71USn5MU5F&vD$F&3NTe+cT{JIfr-J{u(bN5)jS0nLH^ zz_y(9nEjsL3A{U}IW7LwNWt~*OW$z4J zw$=-R!TE1(q#JmsV!wirG3iEvB?gTVUOSRVE(;`v`S8Ys<#_eXmzxM!9uRMCa^#DP zaT0TDe=-pxy&IRw2v{C}bk{pYGzlLsFHT5OQoS~$P*f#!tm2{x7}K+Kk(?yS$M_s2 zaMKS7&um#hxe2^}PWYuMJE)FP-s30!dpx;H%TnvqzAKXSB;hB?2`foWTmL9R)~r&a zrb3-~jLwKqdQK#S&`;viouJCQS(vl{95v-+qtg%JVbg{`hnU&HqKMnm}MeA*`0>?5WY0T7qbJ*!j?U>Nc)h@QnDdd+P~ia|IB3{+R_cHy7L zy>3@hqqvpe^$p`8l!J|#I)%KSgadhNS4ki8l|3swOICJ#qV*%t_xG%LF~7ot3%?GN zsVVj6yiJ)kEOFGOJ8G1bz_5urk;8V6lrBcjYWNN(|7;A?-8Og*cDs<9Pzu zqPdBIGbz-6VL#kLwKXX)(4DdWWlr>ml-D>o*RuPf6d1$I>g9oYf(W&t&1 zsn5~W=sc_GJky<{b2hGty|)6(*iH5y!^uLtlukcT$HwX{m)2gm)*T`-_Z<^+=IS{3 zOX)iX=6=MwKL|q5tXy-uEi0A(A}X`0H2XMzMnTb@)0%NNv4N?08|f0pH6Th@9@@{a8u1)C`&=sI@lji{Wxp#Lfpf)%a3NFgbV)hse@n$>3TsR`{Q#IP0SqHNL0{bHjNc&UF=cXks}wao5+ zN=03=%67!rQ;$i32>(Ct*{x+6;;7J13c<{c1MaIHZ?i z%a%OVbuL==!a!|!+ayxBmoa&$@ie_iijwtbEY2wpshS}HW~QB+Oi{a))R)S~#b`56 z7BH8SsVDJZWHC|G(MLp|xtpj|Tkdy%yJ5`^*9_o1L9oA^zJkfvt_Ww@Wb#_)_d}ep5LH8g?Qq60pu1?R8zQTLrE>#+7%wmA zljIU^ib0P$|Lgo}b_ktgTu10miz5KsfR2*#S&S}JzKG)Tt51qU*{5X8+zZl2KDb0) z1^D-?b^+Phs_yl%!vJmTt)x4slG)_G{ z+(Fn!!zjko>k}Xlh<9VKFe~W7C{*R&HPq5sZ#IF`X#Iq^Mb$7-fsJUc5jK=`UU_`Y*HJ}`OA!fjDZBmRmEzhDA#0u%LB^6Z|7poke3zb!h>B~mS zc*IkE{?+=-XGM~il8z^`S3x_Fr$4QGx)Pp2Yg)Qs_|rlQhO}1jaY=+#_Hah|p+ihzYE!ol=*&>WQ@pY6MA8+gdX3!C^JJPI;M3mG{4YQ*wHD2G>QociYjx zlFDKgF{>0WD{RC)+)-oLUdsmYq+fZqOAvJUybJ!|?I#|!i#3Kc{XrVau_o1egk252 zki&L_E`||wXEmg_nENuMyYJ;hqe5g#!Si6vKO6~M3wxr+{8rrr@Nr`BP-~$R_L8l8 ztqOZxH8%llAbPBS@r|h@UFZ?eLg^0Q?7D{a=dku}^SyHmr%(3QSOWsODQ$1odcyia zt6cgRP~Fg`C-dar`%(!2PHz1H1-p4q-dXriBy4~QXP8#PIh z9DfDs*WF0F+nbitfH!{Yj#N-xt4I~$mTWluWB*IogWvADLGkKfEib$~v^rDWuKOBa zHigaSW_LP;#pzbpWwMuaMkDlOKMK|Pm)u<>TLh*=6(2Y}xphM9S1QwFfboh7U6yn% z;DtCb*tu4JO;U%8k}#nsVvbf-mcCII)l;Ch@>r+S$yuV2eKjJnT51^VfTq^qMsOAA zn53A7Q~ts?&p^1R2`8)R59?;O=V2*DX6W1}!vIr^n~l&#hKfxkPwP~yqS-6Tg}S$* z!t{@#c%v6igV5O;+M$6e8XHUj!KS>My}Kw3$H2pXAanTpnirwicD1}xdy|cjJ3gsl zZ+5V~S9rr~=BXD~t5eECNA?p{5e{~}!olv@`nvgLZHL?GUFuO`BEOjA?$VlCfy(d0 zz&80&KJL;gJ~o#}`)b1IciTi%R6$4T{u!64ska4)@6G~UbIp2ZLna^Bdaj4vEKfhA zQ|hXJPR9#TV6bP|$|rDL$%GPl6Ucs%35giDli-kRQia1uo>2wQk@+SvqRc5=YAWeb zg7_^vfGTEGQTaDt)^e~!P)M55AYq=Jpy85^p`gK(VrLf5i)1Wc^vYx4-MCz4d*tKl zHjY;j7|$~K&ZG@qqtT+-upLWvhS+96@WaM`Zbv#?CN&O!6qR|r!$*&Nvq)EdKi8+1%F%m#^8{tc}<78YjHB-H&4O*=Lch7sSh z71|*c?GA~OfS6>lGfQrjr#)NjZ_AxcL`NBRzR>KPnCLnoT_GV4Qd%$PQdV$Ol<5_J zxqqs-d7*ZaPmPZY&EdB+(Oh|`BWcKHPwIM+ryshoWsYcF=m_=XbOO(OwC_Vto~b37 zw3Nz|3y@&7fd8)kZ;`g~C}-h>;Lreu)9-E3q`rCHl~|5`ho*iNI~A!1;_}uK*I%(1 z^?Rb~ZpM17;~Wi<)zF<}YrpJ#d@@6SwJoJmw~0Y9Hg|$fnLSNEC*xK>(Cb~5XAvht z2v2XFZtX<;-d1Xh-wGEt?pq;3qxx`R!fAFkxm6tZ4tbVSHj036Q5!@NkX?%uK2KTiQ0trmE5qK#kUMZ#d))xN^u5bwWk(L_=}bNV$!7$7zD5Q`9<8l?jwyb0jz8n(X4|TXt~g0E9!q#`dtT9Jm7>$v%^*vvu@6diXS>of6D2VLqI5)C~_Zsgs^FXO~b4ttNl3jCNam;>m9&`du>6PgrWr0mIj1rFlLCa3Pz%zIt}BOGfRy#Sp(OjxPi6|D<&Zi|!|0!5;sgPa2Mki)&WuW=gfM_~mibfhpvE((w$ zb6lcjpn0O#%1{jvXJ})+fe%53{zE!gb+p5p%`{lK)xvoS>DFOGsb4T9F~ns(;8h#& zB8#sjF>;LvA0{d!RmkwKCof;1UKU&@>BScg7eEYMxDHoVOoL^YB@3+|1iK;a)t5*M ztsQ@>sH8kWsnZ<@rR?IOP8wzIL>;n3A>8XKdLYJ4*s?uRP$6!hoasR9t7R2?<_8)w)gTvjJgR7CA8p{mzh-FdRk*ac<=qT#Toix6 zqmQ$)P`cFyYQl66-m`m`$dLMT5nem$X~offia4asZDs7_-1ae^a3jo}@G4pD5dD!v z?vOXCP%}kVkwToGcP5keL>Vb!jfe@ zZEvvP>Tk?d*ZnQrH$M&V757x4?6t*2UCT^U7SSww;ZxwcM+)y~4NUth*pt8X*~15cIfkp`pNEcOZ}ystj((EX6~x>fNDEsNFSi@eMiZ!gS@JB?tC{r?{0U zt}KOz2chTzM_11*1C)RRx1oQHgFTO)M53M{2C0@nPLUi)??r|)inQRPW^FerS4Jwv zm-X;30~P$Iyt#RjDnxc-J}+B2n=DyCQ}Qey*8-Ip(M^W1Uy|KbjcpVQW9cv?DsNv? zanO3kni=-P7u$R-{E`@t&txSHffd+kfsV%fh`o6n-iT-@m==Th;Ja zl&xW^RzX@*P&BiWr&?`nW$|U@c)|93k#^v6n#{)(NLvM;SjBX&G($cFY?k}0XZt@t z*+2N(yMvc6-n@SK?A?Ex(~1~ql?NgfmQa(Qm&Eg%Hqs=nhnVBQ-w5B)-o!}s-FXVEz}AWDr(oFqH^VM>3v~D z1(5+a(4YBj^_by#O~JY^vw6SAhPx%{{K(I5zLmA)TL;*-@6`i~oF6xK8`b7z{36@B>b(lg;A3)s;|kqc z##oJ|Fz0o9@>$WE`O9gX=QggEL<8XhA&aXZw_u}3abIitu-41%969(su<8bi_liH%;yRF(7B8Or;f6G zES=1-f5c%E4utlyLtFYm_a0|ThNJ0^f-7Gyhso|nkBVQ@A)}3dG09Mpz4@RE{}2BA zL6?r3lSS#`%q8%9sqMbd0fcQW=cn`ZqG-f$TNMO6BY}UkgCh>p4h#;XMbc2hE=Id7 z4NB6sWJT4!=Wt1(UJ9%ANz{m>CR#J(9BdPRMEq@wiYh1>){%r5R+P0m;g_{&w>B%z z+j42}JWobB=^R%ShukB}1>rSZKW8x<;!wGY#hw=!`rJjILk>OvnB(x6?~~mq5i~eG zK$d<&T@8O=t@p=tzt$D~1HL-YE8<`(W384z$>^^abOh^58|T!nctWdvOGVxiONS79 zk(HVj+nE$c+P5NJSBTei^Dwr@WIqvPK)nh8_jbwO&ou~e?VJGl$R%q9}Eq_lk&?Xp;!tq zw<|k1UbWx}Ir*~-aks0o-ehxtp5dx2EpSNYNHNyLtE@=rnScFx&<(!~x*`q?u~K#B zB)KS&o0`p32?nA?4zTd+SMEl13zX-0l8CMetn65a*b?ftW5`QiIj)d*J~eeCzh;5{ z@Wp@lZ7^IVbQB;l1dbLc1@Yi`-oI5-3|rk0_(l6OFrYiEuxI@0!hl-8OcM6&jes*F zk*%o3(Vw3ID8lrPh2LbeVaW<+PbV3LY=yeUH@?jzfo;LOgCNJCgsDFpmLgJ;($(7{ z5xhr?M~k`&o8;o}pRLpG#-mQyIJ@`HVDo$!+Q9YJ5Rl;f3Ji6F>|GFMO&mg^ z)dXCXEsmWQq7izf!rPfyT+#D-(jtI71(>M=FYd&X`D~WurMSY5r_ZzV6lh^+@BoFq z*G9*p40AT#T;^F>!uq|l~PR&f=5joLH2>ymPt=#R|P`+O3E7ongFmaPGBR*baKIzRpU8OXuKAqJRxf^K2G>h)qnbDJ1&<3X*>f_3scl zqA7WD5zi;3qz5oo=1+qXBZU5p{;p=^xJzgym^4u5^F}G{-K_L48$y8MyP^H*8-<6C zqD$MKypdOFvd(A8*0M(1NH5! z2Bde|r>MPK0o3jExaWOv7vMGTJoC3RYu*YJABD& zG)9IPt%a0)h*sLcW?6x`m<$%F%Yur-)MzD4zp<6@oAyH!|F&swO{eB>Wd|82a_INcmZE|A@t0 z{2NYEdM|Ak_X?xM)NFrIw6syG7DY=UMYY)5>E5GO<1(K1TSb@#oAmwac)6@6qrUDW z-^Rf4F_gSa9q(DW?fSp{I0#R4-eH02nK2GPAY;5kQkM*$o32X%ZEF0Q_v}vyJtMD@A|jo^Y}A0Uu0ykFRQ(7@8-zf|s)|(Qa(C|AVzd=oUf4Fc>>R)yJ-Bas znw+kkhI_nf3!;BJ95r~>r%sTo5jcabZ=h#1P_lEpV3|kHvsRApAoyG8`!%^&+^g>6 zUeGS!icRk2{>+>pG96AMGDFqEXUR1T_R{wI27h4e-|)NZcp1DOq>7d3<4T6_D>YWL zoZr`M4fJx3^zBcB1_mZ>Z0t6u&Bo7|kc)(P*`Nhw!wr8{La1=;rc1>it11YI3@Oz) z{5Gl11;FDlDU%U}8dg|4JO2feJQ?W~5CgsnqtRrJIK@|InwC$Ee$?{?(qCE~nK{R1 zPgWJTtCm!(X2Hm?GBLcS+EJ6tU*P@GF!PjQlQj^xhMgoLK`mJ+BL59G@g@c>sx&oayQmIwl|;9#>c(3IQg23Oc-}pG zJG>2HQ*~>*sw$Ev{?u9rW)pY*iayQG=c5=XEwg~F$5B_Rbv>qEKk9&uW~Xtg3sVs? zM|}-n7{P=lR;@(IocRo%ij$fWl*h&1&eL&CDa?Ob20*ltS3>FQR@)k^f-%Lk$IaLn zi|ICs`3RlBHGMnPgU(RS+WbYrj>I^ay&>D%NT(NBlg$sEMU&beCI~Z%Cl)&9LlsD$ z2pH>Uz{=uS^nkp9V*EFFD!{V@EhbTqKj>V=Gh$`7SPLm?qT@=WZAaMzCS7*UvmC&6 zfM0(%H_iX*!vCH=#R8Lbn$V)FLiBZW(?>U8K~;EUbC8%2iO1vp6tyr=Qzkng{#z?$ z133)(=R@Fi`~RhbKRhSEE>eF6oGx!W1!nR8rRRVVY3)gH@ND8s^_&JS@O9_GhW&~Y zVHT{OiPJMjuI;I1AB~}PFf2a5Xug^gqRxjZqRz+X0s7Aym7UM< zv=cwSh^V;Y(~65L()eo$^s*R73G|pA$H*8#GrWL9MW%OYNB+FI>1~Ht2O9kK(m#rg z{{7{!WRVC837t4*UwM*C`y@LASKUEAwy$o_IkrmFA7i_}>;Dx8k*JW`b7<2jiN=>& zCRh!Btw5HQzW;YXS`laUSg%69F~s>@W?tNkMSd^qYn!63k{yE8!F?u@5n&_F-*-eV zZSF(={!v+H@b?{*L*jcV{2D;H%lbRRs(Qd`UJLH<#6$b_w>`9o5J-Dp0$>xWaw1& z>l#)@?4D<*75!pjV<@BuG)v=TRI58+I3$tt-azsVS}M4Wci&X`G9|^|Pv2CTfmWlS zBq>TuQE6Dgl195v%Bi`TZ!KyOKU5m7_ves%Tqai{cyPTo#>m`$tS3<;7GwZxHI&YO zXp%yypHPWJ{Qfz-7F19nD5N|jws%Hs@7Mx@DL+P^uV@XFPCpz_ORvc#ziMtOnwy9g ztesz1o7h0(sNBfH%P8H5hh=-Ro3)W6FplyKc-p7!>2BOcH-(o`u`vz8h0w>bPZqQ8 z-+y;KUd}$hr>VflC4MY#1Meh7YZL-p?8lLeRbe$Bh`3R_2VEMDwS&(m^E@=}OI3FH zZV^vX#7xGDORaz9kC9OZ0H)Rq&^e%@II<)2vI)zjxxaop9+n&GP2753 zkUmHf@%7jN1e<=CmoOWx8Grwey*KN1T+I%}{z`en-Kc8TIh;kRj>`>+6eWtII7(_5 zZi<6QiIX^qVs!z&ND$-(L5u)KklYvul9xOrfb(?okca%4bo=^Wgw(LNw6}Iuo$k~2 zwb6xhszmY|*SEeked}9`=>m=4aUcHjww3Nr z7lP*u$!C#w{sL?}xvKH&_twWjmRX1IyS!_6aPWKE4?-t%<9EMuPbTia`oa38)&A^~ z+YFpdD{{oeL=*V8538f||H@ql@x%M%-G`BV52=&OR*vs&sa@%22h|NvGUBhle`VIc z?qs?nj{p4U!Q1!=-+zk^Q(qF2bK!Gl`K!g~em~xmd$toU+~uU`d@4IJGkgE%(Rukl z#GfCzG5d#JW}uQNN@CMpWrcla$L%lK?R3Ut#)I3~Xh(JG6xQhGkduDQkl;F3_Z}ul z54$0OL4NA0`|uc_{ciZ^GrvBbFB}6xP%Q|%OCXcudF@T_Y=5V|wYvB#sgz&pgLgt& ze@nRPGh~iAijM

    8=}8HyNL=%N&Eu-YL_e$q5dpfZxZo!Jj@q|9H;Rb^Y;t7E-bE z!2nG_vcFp8Nmv$7*${s_q2Y8`bar067Zm&Zs5~MNbX7@tj*f4y#j%SX`6>#&z>O~g z{|oT_sTTj+B4vLC{m*N81HAhSb4oe#vYofz(#^LG=AR>W`YqO8k)b=UI{E0h1YO#L zn{JM79Z!8dr)Kw1^4+_8ri!~8?5rHz!v7da?f%l7gRFgNAKZWacy)R65|irLX3XqY zc4=mRe0aE5<#gd=P!w6PYWsfs&=&2I+&*S2yDfe)Yh2~ky}A|uqRW$T^XiCBpRabv z*GG1$@^CTazZO{k1t+_V;l+nm>s=O}7H_3rhQK$!lIzdwBFJKC5;&jP$fm-#@zN-?G#& zfByw**R!tAVHmBrEBA00<-0H6U`D&!@O7)FXgJrK_U$!;I=xbl{!TAaJ-(_&-0Seo zG40Kphf}hJ&(~KEZXxCTct~|&{*O7RKVRQGxNWxl@y&mBd)jp(x3D^FJhh(PZ{0tK zEq#pVe!76J9)mi-_o>z?Q_eRA2R#p|RmV=%o_WS!A@w`>8T3!2i8}B4HT}03KpPXaX!nVfogsV#8@bK`tQ?Q;_IL3$k zQiXOnt&-j9)baY7Jl|c=JK()v{a3&H`~UN|fB%2|ecYpKm{_42A$8K8=v$k5S%%1gJd~?sQwD1TkmKy!;@BZVL$RDjBe2Ll+JKul&@BZPp|J#4@+rRzq|MBnsm*4*F|M=Vg_J6pY_oqHc2dl~sCABxls^ijHwwptbM@2(PRZ{N?2~Qf?nAp39zGm@ z9Rn?P#Qgl&ad_wQ@Yvqvf4K|raC~01GVAt-<6F-P!tPb^Y!1xv{ktEoir$RzMTMvN z+*G;@>3MPL`2OAJrzL)rp1vKOuB)AbXnp_qd}|7Rtqr9W4_gA)?tnLsH9x$0xNhj_ z*BKvA5?t}}p#SxO9;=4T zQSj|`+?_{*=V?xlgL*V3z1sR?RI;z+ce?VxJtltdykzgNjPCk&H~UBB{WUp1c&U2@ zNA2NExt{^{wU}71K=#zeow?tt<3BZIZ(9FW$i92Ibtoy6S$A9{}|LH&d z!$17h!*d6fo19>$JgwXjyGyml6k*4)y-v38(9qY1dAFHg{qEoY&F}vH-*-Fr#I}C- zH~-In`rrTSzj}B~SN;lZzE7Bsrk9*9SQ&rZr@OTH^XJ!8H}_lftbI+3`*JH+YS2%d zt?ip=&8y$9^HiS1_HGMYVv4n@6VytEH|KuGpeAP=Jb4G6*7nUl`|$SRD6n_Z$ti@{ z5$U>2Q>#Pa=I2hGM@!~Qqu+JFuczOynF!l?T_p!qx|2CA3(`|q*6-j~tKE#|WN<;Jm z>^Wc`rM0(juikbO`tIp+$8($QZNX!#+*Vx`%V^c5lzsusci){qz24x9Dy=$p6{Ic$ zyVE-0WAeWEzFMXE$K(qJW%n8;+w7OQBCRQZ`Q^{|cj}$ZdAu}x3QeYFxA&}mYMgjF zC;5qR;;O+PffLqUoVYr~aX&vl?7ogR|4PuzQ&!91n9TAfmF4Fy&i7B%*vUxsV=`cV zoe_PZk%zBwm_JS$&3o3rPoi~kBl_Ag$6e#}u51zRwd0lQ#rx}6ALr#eg6f`0(!P3s z_chjgbG&&4yvLw-=M{ejmRCn`e`)TO{L(Z|3-S^^Pu?8g zoE-g^*AJb8#WSTYxR|V5N6JoG>)VS1#hYV`-)vR89qPL`r#i=Q4wo(-o}v>!T1UIE z{YRn^S#=lYqsuLR3Y7a2qi#}y9}{GMLO0%1r|ZhMi1OnXKluDQA^PN87x?Gi6rW!h z;y;~5?8`~+GoPN*tgmh(9#aH=+CSZgxEvrN-3$=2Pb2zGBkI*>f>gi^o93v7uyQ2H@2Jkti>?xGtWq-NnBtEY5KL2o6($IDp~ z1-aXDk}jjl)n$_Vdg>4P*)v4y;QlBAW}Q8t3#5EZsnAkeyH$URQ`(Df8fl9cEvS^j zK3VfrC%sB`-3kj&cA4(h{CWJIdsP13e~R3~Pn-`AvZQJc@1qvVA6h+sKFc58+g)tf z4-awj-SJoZqD7V#rvfX?KRle%1w6cOUmgz&K0J6y7$*Df%`wY$CMRKFAC4_tUOlvA zqx00yKYV&PUn%*ni^2Qw;lWDNw)oLF4(3k!@cI2JaSq3b%k4O`@7s6RQu8-J=GS*1 zleu}?u9AB^N$POwlKrlK``vk{+2?#D$K-$6X~@E?a#w#zxUe)mK6%j4poMtHsY=Mx{byN}U%mOp(t-x0FneBVK|1>bUYfT>?)LHssCFL5)DbPM zdgxkt<;z#k5x+KW;PYKatcwk<@<{lG@>O zi>+^eWS5{Otu}x44M}?}|KYkqcSE2%Fmlo-53wIJsm$6xo6~3aC*d*fkKr-@;%w!* zm*%pPk#vS6^>MJz50t(HidS7TugZUXpTtS(#;^Z5e*SkdB7o>YJGr23O5)t@}6{?&L=eLM1<-Kc^mv?{(oi36A8 z)3>Jx+0Sl@b(b)n9It}^938KMKZ@g3@iDk|yvlFTe}B`$(V}o_p_S~8tz9I| z+c9=^UY=au(7@M>xA$%x+zz7E6g!3D&8qC8Xk82(e%tJuJbBXr_09h5l+jU+W7&r; zI>58T(Od986~47u+&yspQlySA!S3!6>xbuR(V2fXJiTZ+Nawo29}jz;3*b>%KWB;U ztM6N+OpnTC7eDv7R3{DM{>p#b@Xu`=*Z!-@Lh-q~U4GO^uU@yx{!vVRc=rr>z6BXi zRnINGf2`k;uOF_hPDlKEcl6l#f|KHr^xo6&K7E7sm%sS(nlrDG)vhb5EXspvE@}ZRn_L~P_RV3Eir)ogkI`CAp z6&(J>?bi8?Svu)VpYMxX54oS-fc)P5W%hr^Fp7S`9Ch9quTX*a!9TA(HUEk1srkQ< zJvILqv#0(NW;Ng03Lm4ZNVVh1v|LDH|vvb7M zwt%9k?+QOl_HUjJaGxq3S0U*%LNADqo~y@(tjqV0Hw~R8vt-IDR`nbd(N;FzA>m<*C9qI~@Fh zUB7C0dj!eF-u4t#?G{?uV)1*mc%ICg z@8107QwWkftp~qX>*p4`^e`8w-D^C5It9&6HnW>sg2%jOM`QIgI_GbV0pRNM@Te%7#z0go^1+Zs=n%v5xd6|E?(kgeesudX1 zOW^C|{N_qF2wT|XMO)-}gXHP`d9{zx=RaQV6rbz2rPUMCKL$Dc>vLf1-(PyVjO{7a z(X+lD`egAZ%^OXPSYI^T}kNJJGbkri#c~^Dg>+tK@2Doni^BFjwT0GxaZ{OWH znz+;1bqw+6EBbgK@ic$qBQ3ryb)BuF`1sa6r}8+SkhWhQ>=rLh*VT_S=H2Na{N2rw z;4S!yW74#%1Gp|FniW2LcnMPIhucH8>|P=Gx==glASv^E<&Yb%hOA}W_WfSbb3x}6 z5cf`r@8BEGcwv9(%RTcFPp+;rKVj=FQl5XjJp%Xrr`+oNJ}!R-%MY-N-eG!ocGW9s zt)GiDr;2adzV3z$`(hX0hVs{4bVsERr^sPv!X!Q^l6m}`M*X1&6|Y(0=tFEpfo-;E zm_=5$eYkk_$Q?f!#NFw9XU%^K$*LAf`tp5dc`SWJ5%MnIYv)DW{rj8We2+YO3!OTA zT$S9nS}j#clHz~-g-&jR6Oa8Q@1lbrW4N3jPv6$vPwJTB;Nzzx{?MKI{pL6L`&L8i zetTZ~a6S&(ck>h4`I$i&D#w_Vk3+xtHgKHhtC_^Dpf)H@+~^$1?ZV|+BBUknet9~T z)fJXXqBMz*QFpKNnEVWZem25>Hl%;nM}Icz|7~#*Z$LcL>Pol=~OY z$y7&_-kp<|+_cjX@wbm+_mOD+{O9MJ*w1h?do*1*C){eKhPUv0=;L+eUqT|-nLy;l6EnV*O9U4F@H z*7kAz_0-3AmtNo77wDBAeehiQ7jR2Y(~o~Pcq!h!_~BI)yH4Z%>p%Zge*W37U#CM? znY`PwX;=0xGM<>yyQhTh9oF2%&I|i`6+urim+2G1ex3WhilgySCV31F{S>7AhV?(& zXD`HpuM*ZH&OfKFKYZ&ZIA=sUReiP4=gTfT9*$jR@{+K8fv8?QQeF}xD@|Kzjp~0= zU3`Haomsnkm!Ecy+4s2V55W@-pKE@H{Nj?kFF2;7e)@jK@vgub%kwXA#%JgooU+7x z8~*0UEHbT5oww5EH4l7EYW$quym`GO^!XW^{&XL)po_S?`9qUu(3y2i>}bX7@Dg0t zY2USM?D6%L+i`>nfKA}9%lK)?m$Ceq37-jza+>3#o#6L454i!##pA1$s$^^J9^ZcaRJRh+ zp%sp<#K*f|S_F9Z{_{%+K3aKROxJzyp4j7GU&H1S+vgs{oaA^2K5?RJh|wnMjXZ`$d?ke`kV&-KdmWi36u zuJgmQJ@6D!x{D@#3%F0u%ihEr>w=A4DFip$>hp7GKhp5aRy&E`y#4I$GehJH_&iG) z^l(WTbViWxx^})>C3SaiV;uQ&+3$}G;+TV}<^F$fA6{MBXVp%e z?vzlsV|LdgJS7KxS_J-*g12ReZ}KDzoHt*ta7^O+`PX;5ypwq6Zn+D~ezAa0Ec{uG zGuwW#x=$5euD}bi=5bTKBozqq?4e)F5`?uWz8CcQAKb_?aVtgGD=*-=V7 z2PbTi;O(<2-`(x_U8}agQsZ#9#^K%j_y#B^$?^q0eFt~K7V&jI&hpg_{X;4eGpaO-3E0;(^D0a*9<{K%X{1lujaA5BZs{Lz)|cd7tQZ-+v+vO@aYLEAD%(!{RMy@Zoqj? zY56S(dO^;!f$Li^^o*UKU#1%E4!ZN8aqph9U(NoQ&AoV%(VpbX&linh`~{8Sr?IbJ zx^D;mn0f5#DDi(d_zP)&q*EW=$C!h>b-qCP*vgC4lELF7k7D-mtZIBZ?7n{gidJwu z`tEM`b*_Rz{_uX3T#dPt%WPLnq?YKlY}SpRa=EqId^h|-nzl%vy6Z9vJA8cG<&^u) zZx_4dy@&-YPmt-|Ax zcWphvv%7_0x+|uY!PMgnA4mP_6`W%+udVRZXy-i8;?BvD;BK>zCEj;lny-}ctT2B{ zv3IY?F@q`nVn*~IWk$#0e0fTzB43(QH|eiT33~Tlu-<-km@Ph}eiEPkL@pgxr@Oev z_>!mdT-ATJLiY|VUn$vPZFubd1}}nq66ViAdp?? z_Gmeq3sy}Bo_BXBcK(&N_HF-PDUt_~^OYjkUN2{to)ggT6^`9vpJZFwZNHqYxpzm_ zv0o`W$*!l{y|0a~yKs6Mq45|kmCdyz;ajeCx7HO1pJhdq9}(tWJ>PAa_ZJ4;`CPS= z|I&Z7+*aeUw{8JLQ15k^A3f5(_Bp;g#ukB0>zo{qI=NL2o-pkiq5Z&d-1w{{eA9Ni zsd2*s$AbUv2B8l_6T)w#$?L?oOig=VgB7{?*Ta{vG`B z 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 delta 1782884 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

    +#xLcCD|dZ&Hf3!5if%sO9Y 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

    pCZ84p9?o)-!w({1_ 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

    ^%c@Rl1eon`Yr$*ee_wfN+)5F!#aPW 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

    l+@c_ZLsSh{#i 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�hD{ulPsbaDXyX=6J&&VfgT!Qm@YUJR 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

    BP8u7$ebf9?F~J^;mw-TV1mmh*WHATN)N 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 z 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®K=zuH%FEO#JwU_bh&#IbH249$es?&5 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

    *XVUKV`n-h*XS|ZT^#uFUUm5SPE-b_*Sk&K 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≻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

    7C14dezIJJnT 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

    b>*$NWLQp79GS!D`el)I17J3c@21BtYUoau6 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�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

    4OrC_5+VlY=<5ou~O}b<>6g>}x4-Ypg%P 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⁣tGG3 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Ðo-+Aut51;PG^{v`|V{kpH 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 z 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�&T=pb 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 BBh&x@ diff --git a/demo/public/pro/js/decoder-pro-audio.js b/demo/public/pro/js/decoder-pro-audio.js index fb39ae4a..1aa46cb5 100644 --- a/demo/public/pro/js/decoder-pro-audio.js +++ b/demo/public/pro/js/decoder-pro-audio.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,s=t(e),n=(r="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,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,s;(s=e).ready=new Promise(((e,r)=>{t=e,i=r})),(s=void 0!==s?s:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,a,o,d=Object.assign({},s),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return s.locateFile?s.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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-audio.js",document.baseURI).href)),n=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,s)=>{e?r(e):t(i?s.buffer:s)}))},!s.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),s.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=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,v,b=s.print||console.log.bind(console),w=s.printErr||console.error.bind(console);Object.assign(s,d),d=null,s.arguments&&s.arguments,s.thisProgram&&(l=s.thisProgram),s.quit&&s.quit,s.wasmBinary&&(y=s.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,B,U,x,k,T,C=!1;function D(e,t){e||j(t)}function L(){var e=v.buffer;s.HEAP8=S=new Int8Array(e),s.HEAP16=A=new Int16Array(e),s.HEAPU8=E=new Uint8Array(e),s.HEAPU16=B=new Uint16Array(e),s.HEAP32=U=new Int32Array(e),s.HEAPU32=x=new Uint32Array(e),s.HEAPF32=k=new Float32Array(e),s.HEAPF64=T=new Float64Array(e)}var F=[],I=[],P=[];function M(){if(s.preRun)for("function"==typeof s.preRun&&(s.preRun=[s.preRun]);s.preRun.length;)N(s.preRun.shift());se(F)}function R(){s.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,se(I)}function z(){if(s.postRun)for("function"==typeof s.postRun&&(s.postRun=[s.postRun]);s.postRun.length;)G(s.postRun.shift());se(P)}function N(e){F.unshift(e)}function O(e){I.unshift(e)}function G(e){P.unshift(e)}var $=0,H=null;function V(e){$++,s.monitorRunDependencies&&s.monitorRunDependencies($)}function W(e){if($--,s.monitorRunDependencies&&s.monitorRunDependencies($),0==$&&H){var t=H;H=null,t()}}function j(e){s.onAbort&&s.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:si};function t(e,t){return ni=e.exports,v=ni.E,L(),Ft=ni.H,O(ni.F),W(),ni}if(V(),s.instantiateWasm)try{return s.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}s.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var se=e=>{for(;e.length>0;)e.shift()(s)};function ne(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,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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(ci(this.get_type()))return x[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}s.noExitRuntime;var ae=(e,t,r)=>{throw new ne(e).init(t,r),e},oe=e=>(U[oi()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;o{for(var i=t+r,s=t;e[s]&&!(s>=i);)++s;if(s-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,s=new Array(i),n=_e(e,s,0,s.length);return t&&(s.length=n),s}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,s){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var n=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var s=Te.createNode(e,t,r,i);return Te.isDir(s.mode)?(s.node_ops=we.ops_table.dir.node,s.stream_ops=we.ops_table.dir.stream,s.contents={}):Te.isFile(s.mode)?(s.node_ops=we.ops_table.file.node,s.stream_ops=we.ops_table.file.stream,s.usedBytes=0,s.contents=null):Te.isLink(s.mode)?(s.node_ops=we.ops_table.link.node,s.stream_ops=we.ops_table.link.stream):Te.isChrdev(s.mode)&&(s.node_ops=we.ops_table.chrdev.node,s.stream_ops=we.ops_table.chrdev.stream),s.timestamp=Date.now(),e&&(e.contents[t]=s,e.timestamp=s.timestamp),s},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=Te.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,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var s in i.contents)throw new Te.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var s=i?"":`al ${e}`;a(e,(r=>{D(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),s&&W()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),s&&V()},Ee=(e,t,r,i,s,n)=>{Te.createDataFile(e,t,r,i,s,n)},Ae=s.preloadPlugins||[],Be=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var s=!1;return Ae.forEach((n=>{s||n.canHandle(t)&&(n.handle(e,t,r,i),s=!0)})),s},Ue=(e,t,r,i,s,n,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,s,d),n&&n(),W()}Be(r,c,u,(()=>{a&&a(),W()}))||u(r)}V(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},xe=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,s="/",n=0;n40)throw new Te.ErrnoError(32)}}return{path:s,node:i}},getPath(e){for(var t;;){if(Te.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)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),s=Te.nameTable[i];s;s=s.name_next){var n=s.name;if(s.parent.id===e.id&&n===t)return s}return Te.lookup(e,t)},createNode(e,t,r,i){var s=new Te.FSNode(e,t,r,i);return Te.hashAddNode(s),s},destroyNode(e){Te.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.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=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return Te.lookupNode(e,t),20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var s=Te.nodePermissions(e,"wx");if(s)return s;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.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),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function s(e){return Te.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&&Te.root)throw new Te.ErrnoError(10);if(!s&&!n){var a=Te.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,s?Te.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,s=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;s.includes(t.mount)&&Te.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=Te.lookupPath(e,{parent:!0}).node,s=de.basename(e);if(!s||"."===s||".."===s)throw new Te.ErrnoError(28);var n=Te.mayCreate(i,s);if(n)throw new Te.ErrnoError(n);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,s,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.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,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),s=Te.mayCreate(r,i);if(s)throw new Te.ErrnoError(s);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,s=de.dirname(e),n=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,a),c=ue.relative(e,n);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,s)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,o)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,a,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,o,u):Te.mayCreate(i,o))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!0);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!1);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?Te.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var s;if(!(s="string"==typeof e?Te.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);s.node_ops.setattr(s,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;if(!(r="string"==typeof e?Te.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?xe(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var n=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),n=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!n){var a=Te.mayOpen(i,t);if(a)throw new Te.ErrnoError(a)}512&t&&!n&&Te.truncate(i,0),t&=-131713;var o=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!s.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),o},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var n=void 0!==s;if(n){if(!e.seekable)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var a=void 0!==s;if(a){if(!e.seekable)throw new Te.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(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,s){if(0!=(2&i)&&0==(2&s)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,s)},msync:(e,t,r,i,s)=>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 Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Te.open(e,t.flags),s=Te.stat(e).size,n=new Uint8Array(s);return Te.read(i,n,0,s,0),"utf8"===t.encoding?r=fe(n,0):"binary"===t.encoding&&(r=n),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var s=new Uint8Array(me(t)+1),n=_e(t,s,0,s.length);Te.write(i,s,0,n,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,s)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),s={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return s.parent=s,s}},t}},{},"/proc/self/fd")},createStandardStreams(){s.stdin?Te.createDevice("/dev","stdin",s.stdin):Te.symlink("/dev/tty","/dev/stdin"),s.stdout?Te.createDevice("/dev","stdout",null,s.stdout):Te.symlink("/dev/tty","/dev/stdout"),s.stderr?Te.createDevice("/dev","stderr",null,s.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),s.stdin=e||s.stdin,s.stdout=t||s.stdout,s.stderr=r||s.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=Te.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 c(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 Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,s)=>(Te.forceLoadFile(d),c(e,t,r,i,s)),l.mmap=(e,t,r,i,s)=>{Te.forceLoadFile(d);var n=be();if(!n)throw new Te.ErrnoError(48);return c(e,S,n,t,r),{ptr:n,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;if(i=-100===e?Te.cwd():De.getStreamFromFD(e).path,0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}U[r>>2]=i.dev,U[r+4>>2]=i.mode,x[r+8>>2]=i.nlink,U[r+12>>2]=i.uid,U[r+16>>2]=i.gid,U[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+24>>2]=K[0],U[r+28>>2]=K[1],U[r+32>>2]=4096,U[r+36>>2]=i.blocks;var s=i.atime.getTime(),n=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+40>>2]=K[0],U[r+44>>2]=K[1],x[r+48>>2]=s%1e3*1e3,K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+56>>2]=K[0],U[r+60>>2]=K[1],x[r+64>>2]=n%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+72>>2]=K[0],U[r+76>>2]=K[1],x[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+88>>2]=K[0],U[r+92>>2]=K[1],0},doMsync(e,t,r,i,s){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var n=E.slice(e,e+r);Te.msync(t,n,s,r,i)},varargs:void 0,get(){var e=U[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Le(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((s=De.get())<0)return-28;for(;Te.streams[s];)s++;return Te.createStream(i,s).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var s=De.get();return i.flags|=s,0;case 5:return s=De.getp(),A[s+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var s=i?De.get():0;return Te.open(t,r,s).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Ie,Pe,Me,Re=(e,t,r,i,s)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ie=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Ie[E[r++]];return t},Oe={},Ge={},$e={},He=e=>{throw new Pe(e)},Ve=e=>{throw new Me(e)},We=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ve("Mismatched type converter count");for(var s=0;s{Ge.hasOwnProperty(e)?s[t]=Ge[e]:(n.push(e),Oe.hasOwnProperty(e)||(Oe[e]=[]),Oe[e].push((()=>{s[t]=Ge[e],++a===n.length&&i(s)})))})),0===n.length&&i(s)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Ge.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Ge[e]=t,delete $e[e],Oe.hasOwnProperty(e)){var s=Oe[e];delete Oe[e],s.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},st={},nt=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{s.getInheritedInstanceCount=nt,s.getLiveInheritedInstances=at,s.flushPendingDeletes=dt,s.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||Ve("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ve("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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 s(){return this.isSmartPointer?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var n,a=this.registeredClass.getActualType(t),o=st[a];if(!o)return s.call(this);n=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,n.registeredClass);return null===d?s.call(this):this.isSmartPointer?pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d,smartPtrType:this,smartPtr:e}):pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var 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},clone(){if(this.$$.ptr||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{s.hasOwnProperty(e)?((void 0===r||void 0!==s[e].overloadTable&&void 0!==s[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(s,e,e),s.hasOwnProperty(r)&&He(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),s[e].overloadTable[r]=t):(s[e]=t,void 0!==r&&(s[e].numArguments=r))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Bt(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=[]}var Ut=(e,t,r)=>{for(;t!==r;)t.upcast||He(`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&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=Ut(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,nr.toHandle((()=>s.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(x[e>>2])}var Dt=()=>{Object.assign(Lt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Lt(e,t,r,i,s,n,a,o,d,l,c){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=c,s||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=xt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,It,Pt=(e,t,r)=>{s.hasOwnProperty(e)||Ve("Replacing nonexistant public symbol"),void 0!==s[e].overloadTable&&void 0!==r?s[e].overloadTable[r]=t:(s[e]=t,s[e].argCount=r)},Mt=(e,t,r)=>{var i=s["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),Ot=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Gt=(e,t)=>{var r=(e=Ne(e)).includes("j")?Ot(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},$t=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=Ne(t);return ai(t),r},Vt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Ge[t]||($e[t]?$e[t].forEach(e):(r.push(t),i[t]=!0))})),new It(`${e}: `+r.map(Ht).join([", "]))},Wt=(e,t,r,i,s,n,a,o,d,l,c,u,h)=>{c=Ne(c),n=Gt(s,n),o&&(o=Gt(a,o)),l&&(l=Gt(d,l)),h=Gt(u,h);var f=At(c);wt(f,(function(){Vt(`Cannot construct ${c} due to unbound types`,[i])})),We([e,t,r],i?[i]:[],(function(t){var r,s;t=t[0],s=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Pe("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Pe(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Pe(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(s,{constructor:{value:a}});a.prototype=d;var u=new Bt(c,a,d,h,r,n,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Lt(c,u,!0,!1,!1),m=new Lt(c+"*",u,!1,!1,!1),_=new Lt(c+" const*",u,!1,!0,!1);return st[e]={pointerType:m,constPointerType:_},Pt(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,s=e.apply(i,t);return s instanceof Object?s:i}function Kt(e,t,r,i,s,n){var a=t.length;a<2&&He("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+=(c||n?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);s=Gt(i,s),We([],[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 Pe(`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]=()=>{Vt(`Cannot construct ${e.name} due to unbound types`,a)},We([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,s,n),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,s,n,a,o,d)=>{var l=jt(r,i);t=Ne(t),t=Zt(t),n=Gt(s,n),We([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function s(){Vt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=s):(bt(c,t,i),c[t].overloadTable[r-2]=s),We([],l,(function(s){var o=Kt(i,s,e,n,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,s.count_emval_handles=ir},nr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function ar(e){return this.fromWireType(U[e>>2])}var or=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=nr.toValue(e);return rr(e),t},toWireType:(e,t)=>nr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>B[e>>1];case 4:return r?e=>U[e>>2]:e=>x[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,s)=>{t=Ne(t);var n=e=>e;if(0===i){var a=32-8*r;n=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:n,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function s(e){var t=x[e>>2],r=x[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:s,argPackAdvance:Ke,readValueFromPointer:s},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=x[e>>2],s=e+4;if(r)for(var n=s,a=0;a<=i;++a){var o=s+a;if(a==i||0==E[o]){var d=Ce(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)pr(t,a,i+1);else if(s)for(var o=0;o255&&(ai(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,s=i+t/2;!(i>=s)&&B[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var s=U[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},wr=(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)),U[t>>2]=a,(t+=4)+4>s)break}return U[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,s,n,a,o;r=Ne(r),2===t?(i=gr,s=yr,a=vr,n=()=>B,o=1):4===t&&(i=br,s=wr,a=Sr,n=()=>x,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,s=x[e>>2],a=n(),d=e+4,l=0;l<=s;++l){var c=e+4+l*t;if(l==s||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ai(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var n=a(i),d=li(4+n+t);return x[d>>2]=n>>o,s(i,d+4,n+t),null!==e&&e.push(ai,d),d},argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction(e){ai(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Br={},Ur=e=>{var t=Br[e];return void 0===t?Ne(e):t},xr=[],kr=(e,t,r,i,s)=>(e=xr[e])(t=nr.toValue(t),t[r=Ur(r)],i,s),Tr=e=>{var t=xr.length;return xr.push(e),t},Cr=(e,t)=>{var r=Ge[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Lr=(e,t,r)=>{var i=[],s=e.toWireType(i,r);return i.length&&(x[t>>2]=nr.toHandle(i)),s},Fr=(e,t,r)=>{var i=Dr(e,t),s=i.shift();e--;var n="return function (obj, func, destructorsRef, args) {\n",a=0,o=[];0===r&&o.push("obj");for(var d=["retType"],l=[s],c=0;ce.name)).join(", ")}) => ${s.name}>`;return Tr(vt(h,u))},Ir=e=>{var t=nr.toValue(e);qt(t),rr(e)},Pr=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),Nr=e=>{j("OOM")},Or=e=>{E.length,Nr()},Gr={},$r=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:$r()};for(var t in Gr)void 0===Gr[t]?delete e[t]:e[t]=Gr[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Vr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Wr=(e,t)=>{var r=0;return Hr().forEach(((i,s)=>{var n=t+r;x[e+4*s>>2]=n,Vr(i,n),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();x[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),x[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+8>>2]=K[0],U[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+16>>2]=K[0],U[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.read(e,S,a,o,i);if(d<0)return-1;if(s+=d,d>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,s){var n=Pr(t,r);try{if(isNaN(n))return 61;var a=De.getStreamFromFD(e);return Te.llseek(a,n,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[s>>2]=K[0],U[s+4>>2]=K[1],a.getdents&&0===n&&0===i&&(a.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.write(e,S,a,o,i);if(d<0)return-1;s+=d,void 0!==i&&(i+=d)}return s};function Qr(e,t,r,i){try{var s=De.getStreamFromFD(e),n=Jr(s,t,r);return x[i>>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=ei,Te.createPreloadedFile=Ue,Te.staticInit(),ze(),Pe=s.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=s.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),It=s.UnboundTypeError=$t(Error,"UnboundTypeError"),Qt(),sr();var ii,si={o:ae,A:Le,s:Fe,q:Re,C:Xe,D:Wt,y:Xt,h:Jt,B:or,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:kr,g:rr,e:Fr,d:Ir,a:Mr,i:Rr,w:zr,r:Or,u:Wr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},ni=ie(),ai=e=>(ai=ni.G)(e),oi=()=>(oi=ni.I)(),di=e=>(di=ni.J)(e),li=e=>(li=ni.K)(e),ci=e=>(ci=ni.M)(e);function ui(){function e(){ii||(ii=!0,s.calledRun=!0,C||(R(),t(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),z()))}$>0||(M(),$>0||(s.setStatus?(s.setStatus("Running..."),setTimeout((function(){setTimeout((function(){s.setStatus("")}),1),e()}),1)):e()))}if(s.dynCall_viiijj=(e,t,r,i,n,a,o,d)=>(s.dynCall_viiijj=ni.N)(e,t,r,i,n,a,o,d),s.dynCall_jij=(e,t,r,i)=>(s.dynCall_jij=ni.O)(e,t,r,i),s.dynCall_jii=(e,t,r)=>(s.dynCall_jii=ni.P)(e,t,r),s.dynCall_jiji=(e,t,r,i,n)=>(s.dynCall_jiji=ni.Q)(e,t,r,i,n),H=function e(){ii||ui(),ii||(H=e)},s.preInit)for("function"==typeof s.preInit&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return ui(),e.ready}),a=1e-6,o="undefined"!=typeof Float32Array?Float32Array:Array;function d(){var e=new o(16);return o!=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 l(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 c,u=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 h(e,t,r){var i=new o(3);return i[0]=e,i[1]=t,i[2]=r,i}c=new o(3),o!=Float32Array&&(c[0]=0,c[1]=0,c[2]=0);var f=(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 i={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")}},s=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}}(),n=p(),o=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,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 n=d();u(n,-1,1,-1,1,.1,100);const p=d();l(p);const m=d();!function(e,t,r,i){var s,n,o,d,c,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Vt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Wt=Vt,jt=Vt;function qt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Yt(e){return Kt(e)&&e[1]===xt}function Kt(e){return e[0]>>4===Oe}const Xt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Zt(e){let t=new Uint8Array(e),r=null,i=0,s=0,n=0,a=null;if(i=s=t[0]>>>3,n=(7&t[0])<<1|t[1]>>>7,n<0||n>=Xt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Xt[n],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Ot.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?n>=6?(i=5,r=new Array(4),a=n-3):(i=2,r=new Array(2),a=n):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=n):(i=5,a=n,r=new Array(4),n>=6?a=n-3:1===d&&(i=2,r=new Array(2),a=n)),r[0]=i<<3,r[0]|=(15&n)>>>1,r[1]=(15&n)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+s}}class Jt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,s=(6&e[r+1])>>>1,n=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===n?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==s)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=Wt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(31&t[i+1])<<8|t[i+2];if(i+3+s>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let n=new Ht(t.subarray(i+3,i+3+s)),a=null;if(n.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+s),n.destroy();continue}a=e}else{let e=n.readBool();if(e&&n.readBool()){console.error("audioMuxVersionA is Not Supported"),n.destroy();break}if(e&&this.getLATMValue(n),!n.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),n.destroy();break}if(0!==n.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),n.destroy();break}if(0!==n.readBits(4)){console.error("more than 2 numProgram Not Supported"),n.destroy();break}if(0!==n.readBits(3)){console.error("more than 2 numLayer Not Supported"),n.destroy();break}let t=e?this.getLATMValue(n):0,r=n.readBits(5);t-=5;let i=n.readBits(4);t-=4;let s=n.readBits(4);t-=4,n.readBits(3),t-=3,t>0&&n.readBits(t);let o=n.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),n.destroy();break}n.readByte();let d=n.readBool();if(d)if(e)this.getLATMValue(n);else{let e=0;for(;;){e<<=8;let t=n.readBool();if(e+=n.readByte(),!t)break}console.log(e)}n.readBool()&&n.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=Wt[a.sampling_freq_index],a.channel_config=s,a.other_data_present=d}let o=0;for(;;){let e=n.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function tr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 rr(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++;return{payload:e.subarray(i),type:s,size:n,uuid:a}}function ir(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 sr(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 nr(){return(new Date).getTime()}function ar(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function or(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function dr(e){let t=0,r=or();return i=>{if(s=i,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=i;const n=or(),a=n-r;a>=1e3&&(e(t/a*1e3),r=n,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){}})();function lr(e){return null==e}function cr(e){return!lr(e)}function ur(e){return"function"==typeof e}function hr(e){let t=null,r=31&e[0];return r!==Ve&&r!==We||(t=ze),t||(r=(126&e[0])>>1,r!==nt&&r!==ot&&r!==lt||(t=Ne)),t}function fr(){return"undefined"!=typeof WritableStream}function pr(e){e.close()}function mr(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 _r(e){return e.ok&&e.status>=200&&e.status<=299}function gr(){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}(U)}function yr(e){return e[0]>>4===kt&&e[1]===xt}function vr(e){return!0===e||"true"===e}function br(e){return!0!==e&&"true"!==e}function wr(){return!!(Ot.Worker&&Ot.MediaSource&&"canConstructInDedicatedWorker"in Ot.MediaSource&&!0===Ot.MediaSource.canConstructInDedicatedWorker)}function Sr(e,t){const r=tr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Qe||r===tt||r===it)||br(t)&&r===je)&&(i=!0)})),i}var Er=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 Ar=Symbol(32),Br=Symbol(16),Ur=Symbol(8);class xr{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 Er(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(Ar)}readU16(){return this.read(Br)}readU8(){return this.read(Ur)}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===Ar){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Br){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Ur){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}}xr.U32=Ar,xr.U16=Br,xr.U8=Ur;class kr{constructor(e){this.log=function(t){if(e._opt.debugLevel==w){const n=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;s1?r-1:0),s=1;s1?i-1:0),n=1;n=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=Tr._ebsp2rbsp(e),r=new Ht(t);r.readByte();let i=r.readByte();r.readByte();let s=r.readByte();r.readUEG();let n=Tr.getProfileString(i),a=Tr.getLevelString(s),o=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,B=2*e,S=A/B}}let U=1;1===b&&1===w||(U=b/w);let x=0,k=0;if(0===o)x=1,k=2-m;else{x=3===o?1:2,k=(1===o?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*x,C-=(y+v)*k;let D=Math.ceil(T*U);return r.destroy(),r=null,{profile_string:n,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Tr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:B,fps_num:A},sar_ratio:{width:b,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=Tr._ebsp2rbsp(e),s=new Ht(i);s.readByte();let n=s.readByte();s.readByte();let a=s.readByte();s.readUEG();let o=Tr.getProfileString(n),d=Tr.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=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&&(c=u[l]),h=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=t[e-1],A=r[e-1]):255===e&&(E=s.readByte()<<8|s.readByte(),A=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);U=s.readBool(),x=t,k=2*e,B=x/k}}let T=1;1===E&&1===A||(T=E/A);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 L=16*(_+1),F=16*(g+1)*(2-y);L-=(v+b)*C,F-=(w+S)*D;let I=Math.ceil(L*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:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Tr.getChromaFormatString(c),frame_rate:{fixed:U,fps:B,fps_den:k,fps_num:x},sar_ratio:{width:E,height:A},codec_size:{width:L,height:F},present_size:{width:I,height:F}}}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 Lr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Fr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,s=!1;const n=Tr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(s=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,s&&(a[d]=252|n.chroma_format_idc,a[d+1]=248|n.bit_depth_luma-8,a[d+2]=248|n.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Ir(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}function Pr(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 Mr(e){return 31&e[0]}function Rr(e){return e===Ke}function zr(e){return!function(e){return e===Ve||e===We}(e)&&!Rr(e)}function Nr(e){return e===je}function Or(e){if(0===e.length)return!1;const t=Mr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,i>=Je||0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class $r{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Hr=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)},Vr=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"}};class Wr{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 parseVPS(e){let t=Wr._ebsp2rbsp(e),r=new Ht(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()}}static parseSPS(e){let t=Wr._ebsp2rbsp(e),r=new Ht(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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=t[e-1],P=i[e-1]):255===e&&(I=r.readBits(16),P=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(),L=r.readBool(),L&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&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();M=s;let n=!0,a=1;s||(n=r.readBool());let o=!1;if(n?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Hr(e),r=new Ht(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()}})(t),a=(e=>{let t=Hr(e),r=new Ht(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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=t[e-1],P=i[e-1]):255===e&&(I=r.readBits(16),P=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),L=r.readBool(),L&&(i+=r.readUEG(),s+=r.readUEG(),n+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(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();M=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=Hr(e),r=new Ht(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}})(r);s=Object.assign(s,n,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&s.general_profile_space)<<6|(s.general_tier_flag?1:0)<<5|31&s.general_profile_idc,l[2]=s.general_profile_compatibility_flags_1||0,l[3]=s.general_profile_compatibility_flags_2||0,l[4]=s.general_profile_compatibility_flags_3||0,l[5]=s.general_profile_compatibility_flags_4||0,l[6]=s.general_constraint_indicator_flags_1||0,l[7]=s.general_constraint_indicator_flags_2||0,l[8]=s.general_constraint_indicator_flags_3||0,l[9]=s.general_constraint_indicator_flags_4||0,l[10]=s.general_constraint_indicator_flags_5||0,l[11]=s.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&s.min_spatial_segmentation_idc)>>8,l[14]=255&s.min_spatial_segmentation_idc,l[15]=252|3&s.parallelismType,l[16]=252|3&s.chroma_format_idc,l[17]=248|7&s.bit_depth_luma_minus8,l[18]=248|7&s.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&s.constant_frame_rate)<<6|(7&s.num_temporal_layers)<<3|(s.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|nt,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|ot,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|lt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Xr(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}function Zr(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 Jr(e){return(126&e[0])>>1}function Qr(e){return e===ut}function ei(e){return!function(e){return e>=32&&e<=40}(e)}function ti(e){return e>=16&&e<=21}function ri(e){if(0===e.length)return!1;const t=Jr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class si{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ni(e){return parseInt(e)===e}function ai(e){if(!ni(e.length))return!1;for(var t=0;t255)return!1;return!0}function oi(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(!ai(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ni(e.length)&&ai(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function di(e){return new Uint8Array(e)}function li(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 ci,ui={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("")}},hi=(ci="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ci[15&i])}return t.join("")}}),fi={16:10,24:12,32:14},pi=[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],mi=[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],_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ei=[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],Ai=[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],Bi=[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],Ui=[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],xi=[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],ki=[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 Ti(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^mi[a>>8&255]<<16^mi[255&a]<<8^mi[a>>24&255]^pi[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^mi[a>>16&255]<<16^mi[a>>24&255]<<24;for(t=s/2+1;t>2,c=d%4,this._Ke[l][c]=n[t],this._Kd[e-l][c]=n[t++],d++}for(var l=1;l>24&255]^Ui[a>>16&255]^xi[a>>8&255]^ki[255&a]},Ci.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=Ti(e),s=0;s<4;s++)i[s]^=this._Ke[0][s];for(var n=1;n>24&255]^yi[i[(s+1)%4]>>16&255]^vi[i[(s+2)%4]>>8&255]^bi[255&i[(s+3)%4]]^this._Ke[n][s];i=r.slice()}var a,o=di(16);for(s=0;s<4;s++)a=this._Ke[t][s],o[4*s]=255&(mi[i[s]>>24&255]^a>>24),o[4*s+1]=255&(mi[i[(s+1)%4]>>16&255]^a>>16),o[4*s+2]=255&(mi[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(mi[255&i[(s+3)%4]]^a);return o},Ci.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=Ti(e),s=0;s<4;s++)i[s]^=this._Kd[0][s];for(var n=1;n>24&255]^Si[i[(s+3)%4]>>16&255]^Ei[i[(s+2)%4]>>8&255]^Ai[255&i[(s+1)%4]]^this._Kd[n][s];i=r.slice()}var a,o=di(16);for(s=0;s<4;s++)a=this._Kd[t][s],o[4*s]=255&(_i[i[s]>>24&255]^a>>24),o[4*s+1]=255&(_i[i[(s+3)%4]>>16&255]^a>>16),o[4*s+2]=255&(_i[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(_i[255&i[(s+1)%4]]^a);return o};var Di=function(e){if(!(this instanceof Di))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ci(e)};Di.prototype.encrypt=function(e){if((e=oi(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=di(e.length),r=di(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)},Pi.prototype.setBytes=function(e){if(16!=(e=oi(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Pi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Mi=function(e,t){if(!(this instanceof Mi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Pi||(t=new Pi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ci(e)};Mi.prototype.encrypt=function(e){for(var t=oi(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-n%4*8&255;t[i+n>>>2]|=a<<24-(i+n)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-s%4*8&255;i.push((n>>>4).toString(16)),i.push((15&n).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>24-s%4*8&255;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,s=i.words,n=i.sigBytes,a=this.blockSize,o=n/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,n);if(d){for(var u=0;u>>2]|=e[s]<<24-s%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.WordArray,i=e.enc;function s(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=e.charCodeAt(s)<<16-s%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=s(e.charCodeAt(n)<<16-n%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var s=[],n=0,a=0;a>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var s=[],n=0;n>>2]>>>24-n%4*8&255)<<16|(t[n+1>>>2]>>>24-(n+1)%4*8&255)<<8|t[n+2>>>2]>>>24-(n+2)%4*8&255,o=0;o<4&&n+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;s.length%4;)s.push(d);return s.join("")},parse:function(e){var t=e.length,r=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var n=0;n>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,s=t?this._safe_map:this._map;e.clamp();for(var n=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=s.charAt(64);if(l)for(;n.length%4;)n.push(l);return n.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,s=t?this._safe_map:this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(s<<24|s>>>8)}var n=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],B=e[t+14],U=e[t+15],x=n[0],k=n[1],T=n[2],C=n[3];x=l(x,k,T,C,a,7,o[0]),C=l(C,x,k,T,d,12,o[1]),T=l(T,C,x,k,f,17,o[2]),k=l(k,T,C,x,p,22,o[3]),x=l(x,k,T,C,m,7,o[4]),C=l(C,x,k,T,_,12,o[5]),T=l(T,C,x,k,g,17,o[6]),k=l(k,T,C,x,y,22,o[7]),x=l(x,k,T,C,v,7,o[8]),C=l(C,x,k,T,b,12,o[9]),T=l(T,C,x,k,w,17,o[10]),k=l(k,T,C,x,S,22,o[11]),x=l(x,k,T,C,E,7,o[12]),C=l(C,x,k,T,A,12,o[13]),T=l(T,C,x,k,B,17,o[14]),x=c(x,k=l(k,T,C,x,U,22,o[15]),T,C,d,5,o[16]),C=c(C,x,k,T,g,9,o[17]),T=c(T,C,x,k,S,14,o[18]),k=c(k,T,C,x,a,20,o[19]),x=c(x,k,T,C,_,5,o[20]),C=c(C,x,k,T,w,9,o[21]),T=c(T,C,x,k,U,14,o[22]),k=c(k,T,C,x,m,20,o[23]),x=c(x,k,T,C,b,5,o[24]),C=c(C,x,k,T,B,9,o[25]),T=c(T,C,x,k,p,14,o[26]),k=c(k,T,C,x,v,20,o[27]),x=c(x,k,T,C,A,5,o[28]),C=c(C,x,k,T,f,9,o[29]),T=c(T,C,x,k,y,14,o[30]),x=u(x,k=c(k,T,C,x,E,20,o[31]),T,C,_,4,o[32]),C=u(C,x,k,T,v,11,o[33]),T=u(T,C,x,k,S,16,o[34]),k=u(k,T,C,x,B,23,o[35]),x=u(x,k,T,C,d,4,o[36]),C=u(C,x,k,T,m,11,o[37]),T=u(T,C,x,k,y,16,o[38]),k=u(k,T,C,x,w,23,o[39]),x=u(x,k,T,C,A,4,o[40]),C=u(C,x,k,T,a,11,o[41]),T=u(T,C,x,k,p,16,o[42]),k=u(k,T,C,x,g,23,o[43]),x=u(x,k,T,C,b,4,o[44]),C=u(C,x,k,T,E,11,o[45]),T=u(T,C,x,k,U,16,o[46]),x=h(x,k=u(k,T,C,x,f,23,o[47]),T,C,a,6,o[48]),C=h(C,x,k,T,y,10,o[49]),T=h(T,C,x,k,B,15,o[50]),k=h(k,T,C,x,_,21,o[51]),x=h(x,k,T,C,E,6,o[52]),C=h(C,x,k,T,p,10,o[53]),T=h(T,C,x,k,w,15,o[54]),k=h(k,T,C,x,d,21,o[55]),x=h(x,k,T,C,v,6,o[56]),C=h(C,x,k,T,U,10,o[57]),T=h(T,C,x,k,g,15,o[58]),k=h(k,T,C,x,A,21,o[59]),x=h(x,k,T,C,m,6,o[60]),C=h(C,x,k,T,S,10,o[61]),T=h(T,C,x,k,f,15,o[62]),k=h(k,T,C,x,b,21,o[63]),n[0]=n[0]+x|0,n[1]=n[1]+k|0,n[2]=n[2]+T|0,n[3]=n[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;r[s>>>5]|=128<<24-s%32;var n=e.floor(i/4294967296),a=i;r[15+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),r[14+(s+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,s,n,a){var o=e+(t&r|~t&i)+s+a;return(o<>>32-n)+t}function c(e,t,r,i,s,n,a){var o=e+(t&i|r&~i)+s+a;return(o<>>32-n)+t}function u(e,t,r,i,s,n,a){var o=e+(t^r^i)+s+a;return(o<>>32-n)+t}function h(e,t,r,i,s,n,a){var o=e+(r^(t|~i))+s+a;return(o<>>32-n)+t}t.MD5=n._createHelper(d),t.HmacMD5=n._createHmacHelper(d)}(Math),r.MD5)})),$t((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=zi).lib,s=i.WordArray,n=i.Hasher,a=r.algo,o=[],d=a.SHA1=n.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(s&n|~s&a):l<40?1859775393+(s^n^a):l<60?(s&n|s&a|n&a)-1894007588:(s^n^a)-899497514,d=a,a=n,n=s<<30|s>>>2,s=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=n._createHelper(d),r.HmacSHA1=n._createHmacHelper(d),l.SHA1)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,s=0;s<64;)t(i)&&(s<8&&(o[s]=r(e.pow(i,.5))),d[s]=r(e.pow(i,1/3)),s++),i++}();var l=[],c=a.SHA256=n.extend({_doReset:function(){this._hash=new s.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&s^i&n^s&n,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=n,n=s,s=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;return r[s>>>5]|=128<<24-s%32,r[14+(s+64>>>9<<4)]=e.floor(i/4294967296),r[15+(s+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=n._createHelper(c),t.HmacSHA256=n._createHmacHelper(c)}(Math),r.SHA256)})),$t((function(e,t){var r,i,s,n,a,o;e.exports=(i=(r=o=zi).lib.WordArray,s=r.algo,n=s.SHA256,a=s.SHA224=n.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=n._createHelper(a),r.HmacSHA224=n._createHmacHelper(a),o.SHA224)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.Hasher,i=e.x64,s=i.Word,n=i.WordArray,a=e.algo;function o(){return s.create.apply(s,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new n.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=s.high,_=s.low,g=n.high,y=n.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,B=u.high,U=u.low,x=h.high,k=h.low,T=f,C=p,D=m,L=_,F=g,I=y,P=v,M=b,R=w,z=S,N=E,O=A,G=B,$=U,H=x,V=k,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,se=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),ne=l[W-7],ae=ne.high,oe=ne.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=se)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&G,fe=z&O^~z&$,pe=T&D^T&F^D&F,me=C&L^C&I^L&I,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=G,V=$,G=N,$=O,N=R,O=z,R=P+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,P=F,M=I,F=D,I=L,D=T,L=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=s.low=_+L,s.high=m+D+(_>>>0>>0?1:0),y=n.low=y+I,n.high=g+F+(y>>>0>>0?1:0),b=a.low=b+M,a.high=v+P+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+N+(A>>>0>>0?1:0),U=u.low=U+$,u.high=B+G+(U>>>0<$>>>0?1:0),k=h.low=k+V,h.high=x+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),$t((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=zi).x64,s=i.Word,n=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new n.init([new s.init(3418070365,3238371032),new s.init(1654270250,914150663),new s.init(2438529370,812702999),new s.init(355462360,4144912697),new s.init(1731405415,4290775857),new s.init(2394180231,1750603025),new s.init(3675008525,1694076839),new s.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var s=1,n=0;n<24;n++){for(var o=0,u=0,h=0;h<7;h++){if(1&s){var f=(1<>>24)|4278255360&(n<<24|n>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(k=r[s]).high^=a,k.low^=n}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(k=r[h+5*m]).high,p^=k.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[h+5*m]).high^=f,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var B=u[l[w]];B.high=f,B.low=p}var U=u[0],x=r[0];for(U.high=x.high,U.low=x.low,h=0;h<5;h++)for(m=0;m<5;m++){var k=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var L=c[o];k.high^=L.high,k.low^=L.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,n=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/n)*n>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new s.init(l,o)},clone:function(){for(var e=n.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=n._createHelper(h),t.HmacSHA3=n._createHmacHelper(h)}(Math),r.SHA3)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=s.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=s.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=s.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=s.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=s.create([0,1518500249,1859775393,2400959708,2840853838]),h=s.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=n.extend({_doReset:function(){this._hash=s.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,s=e[i];e[i]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}var n,a,f,b,w,S,E,A,B,U,x,k=this._hash.words,T=u.words,C=h.words,D=o.words,L=d.words,F=l.words,I=c.words;for(S=n=k[0],E=a=k[1],A=f=k[2],B=b=k[3],U=w=k[4],r=0;r<80;r+=1)x=n+e[t+D[r]]|0,x+=r<16?p(a,f,b)+T[0]:r<32?m(a,f,b)+T[1]:r<48?_(a,f,b)+T[2]:r<64?g(a,f,b)+T[3]:y(a,f,b)+T[4],x=(x=v(x|=0,F[r]))+w|0,n=w,w=b,b=v(f,10),f=a,a=x,x=S+e[t+L[r]]|0,x+=r<16?y(E,A,B)+C[0]:r<32?g(E,A,B)+C[1]:r<48?_(E,A,B)+C[2]:r<64?m(E,A,B)+C[3]:p(E,A,B)+C[4],x=(x=v(x|=0,I[r]))+U|0,S=U,U=B,B=v(A,10),A=E,E=x;x=k[1]+f+B|0,k[1]=k[2]+b+U|0,k[2]=k[3]+w+S|0,k[3]=k[4]+n+E|0,k[4]=k[0]+a+A|0,k[0]=x},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var s=this._hash,n=s.words,a=0;a<5;a++){var o=n[a];n[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return s},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=n._createHelper(f),t.HmacRIPEMD160=n._createHmacHelper(f)}(),r.RIPEMD160)})),$t((function(e,t){var r,i,s;e.exports=(i=(r=zi).lib.Base,s=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var n=this._oKey=t.clone(),a=this._iKey=t.clone(),o=n.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?n.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=n.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=s.extend({cfg:s.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var s=e.createEncryptor(r,i),n=s.finalize(t),a=s.cfg;return m.create({ciphertext:n,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,s){if(i||(i=n.random(8)),s)a=l.create({keySize:t+r,hasher:s}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=n.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var s=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=s.iv;var n=g.encrypt.call(this,e,t,s.key,i);return n.mixIn(s),n},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var s=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=s.iv,g.decrypt.call(this,e,t,s.key,i)}})}())})),$t((function(e,t){var r;e.exports=((r=zi).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var s,n=this._iv;n?(s=n.slice(0),this._iv=void 0):s=this._prevBlock,i.encryptBlock(s,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var s=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,s=r.blockSize,n=this._iv,a=this._counter;n&&(a=this._counter=n.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=s<<24-n%4*8,e.sigBytes+=s},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),$t((function(e,t){var r;e.exports=((r=zi).pad.Iso10126={pad:function(e,t){var i=4*t,s=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(s-1)).concat(r.lib.WordArray.create([s<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),$t((function(e,t){var r;e.exports=((r=zi).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),$t((function(e,t){var r;e.exports=((r=zi).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),$t((function(e,t){var r;e.exports=((r=zi).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib.CipherParams,s=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(s)},parse:function(e){var t=s.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,s=[],n=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,s[r]=p,n[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),n=this._keySchedule=[],a=0;a6&&a%r==4&&(l=s[l>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l]):(l=s[(l=l<<8|l>>>24)>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l],l^=p[a/r|0]<<24),n[a]=n[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[s[l>>>16&255]]^h[s[l>>>8&255]]^f[s[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,s)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,n),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,s,n,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^s[c>>>16&255]^n[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^s[u>>>16&255]^n[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^s[h>>>16&255]^n[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^s[l>>>16&255]^n[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib,i=t.WordArray,s=t.BlockCipher,n=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=n.DES=s.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var s=this._subKeys=[],n=0;n<16;n++){var l=s[n]=[],c=d[n];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=s[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var s=r[i],n=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^s[d])&c[d])>>>0];this._lBlock=a,this._rBlock=n^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),s=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(s))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=s._createHelper(p)}(),r.TripleDES)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],s=0;s<256;s++)i[s]=s;s=0;for(var n=0;s<256;s++){var a=s%r,o=t[a>>>2]>>>24-a%4*8&255;n=(n+i[s]+o)%256;var d=i[s];i[s]=i[n],i[n]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=n.call(this)},keySize:8,ivSize:0});function n(){for(var e=this._S,t=this._i,r=this._j,i=0,s=0;s<4;s++){r=(r+e[t=(t+1)%256])%256;var n=e[t];e[t]=e[r],e[r]=n,i|=e[(e[t]+e[r])%256]<<24-8*s}return this._i=t,this._j=r,i}e.RC4=t._createHelper(s);var a=i.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)n.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(s[0]^=l,s[1]^=u,s[2]^=c,s[3]^=h,s[4]^=l,s[5]^=u,s[6]^=c,s[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var s=0;s<4;s++)d.call(this);for(s=0;s<8;s++)i[s]^=r[s+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,s=0;s<4;s++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const s=16,n=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,s=t>>8&255,n=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][s],a+=e.sbox[3][n],a}function l(e,t,r){let i,n=t,a=r;for(let t=0;t1;--t)n^=e.pbox[t],a=d(e,n)^a,i=n,n=a,a=i;return i=n,n=a,a=i,a^=e.pbox[1],n^=e.pbox[0],{left:n,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+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=e.slice(n+4+2,n+4+a);let s=new Ri.ModeOfOperation.ctr(t,new Ri.Counter(r));const o=s.decrypt(i);s=null,e.set(o,n+4+2)}n=n+4+a}return e}function Gi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let s=new Ri.ModeOfOperation.ctr(t,new Ri.Counter(r));const n=s.decrypt(i);return s=null,e.set(n,32),e}$t((function(e,t){e.exports=zi}));var $i=$t((function(e,t){var r,s,n,a=(r=new Date,s=4,n={setLogLevel:function(e){s=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>=s&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=s&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=s&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=s&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},n);a.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+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;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),s=new Uint8Array(this._buffer);new Uint8Array(i,0,s.length).set(s),this.buffer=i,this._byteLength=t}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,s){var n=new Uint8Array(e,t,s),a=new Uint8Array(r,i,s);n.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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 r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.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)),a.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,n)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,s,n,o=[],d="";for(i=0,s=0,t=0;t0&&(d+=n.end-1+"]");var l=e?a.info:a.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,s=null,n=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+n),n):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[n]?i=new h.UUIDBoxes[n](l):(a.warn("BoxParser","Unknown uuid type: '"+n+"'"),(i=new h.Box(c,l)).uuid=n,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' 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?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(i.start+i.size)):s>0&&(a.error("BoxParser","Parsing of box '"+u+"' 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)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 r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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),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()))})),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:a.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(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()})),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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)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=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){a.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){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.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),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(),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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>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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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))},g.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&&(a.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),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.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)&&(a.debug("ISOFile","Sending samples on track #"+n.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(n.id,n.user,n.samples),n.samples=[],n!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,s=this.getTrackById(e);s.lastValidSample||(s.lastValidSample=0);for(var n=s.lastValidSample;ne*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 n=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+n),{offset:n,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,s,n=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;sthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){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 u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),n.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),n.addBox(f)}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 d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=n.sample_counts[b]),t>0?(e.samples[t-1].duration=n.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),U.cts=e.samples[t].dts+a.sample_offsets[S]):U.cts=U.dts,o?(t==o.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[A].sample_delta+B==t+1&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta,A++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+B==t&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,s,n,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var n=(r=this.stream.buffers[s]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=n)return a.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+")"),d.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===n)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+n+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,n),i.alreadyRead+=n,r.usedBytes+=n,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[n]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+s.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,o),s.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Hi(e){return e.reduce(((e,t)=>256*e+t))}function Vi(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]))}$i.Log,$i.MP4BoxStream,$i.DataStream,$i.MultiBufferStream,$i.MPEG4DescriptorParser,$i.BoxParser,$i.XMLSubtitlein4Parser,$i.Textin4Parser,$i.ISOFile,$i.createFile;class Wi{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],Vi(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}}function ji(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const qi=16,Yi=[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],Ki=[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 Xi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ji(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}function Qi(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("")}function es(e,t){const r=31&t;return e<>>32-r}function ts(e){return(255&Yi[e>>>24&255])<<24|(255&Yi[e>>>16&255])<<16|(255&Yi[e>>>8&255])<<8|255&Yi[255&e]}function rs(e){return e^es(e,2)^es(e,10)^es(e,18)^es(e,24)}function is(e){return e^es(e,13)^es(e,23)}function ss(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]^=rs(ts(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=rs(ts(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=rs(ts(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=rs(ts(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 ns(e,t,r){const i=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[0+4*t],s[1]=255&e[1+4*t],s[2]=255&e[2+4*t],s[3]=255&e[3+4*t],i[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Ki[r+0],t[r+0]=i[0]^=is(ts(e)),e=i[2]^i[3]^i[0]^Ki[r+1],t[r+1]=i[1]^=is(ts(e)),e=i[3]^i[0]^i[1]^Ki[r+2],t[r+2]=i[2]^=is(ts(e)),e=i[0]^i[1]^i[2]^Ki[r+3],t[r+3]=i[3]^=is(ts(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function as(e,t,r){let{padding:i="pkcs#7",mode:s,iv:n=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===s&&("string"==typeof n&&(n=Xi(n)),16!==n.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Xi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ji(e):Xi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=qi-e.length%qi;for(let r=0;r=qi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===s)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=new Uint8Array(e.slice(0,5)),a=5;for(;as){const t=new Uint8Array(n.length+e.length-a);t.set(n,0),t.set(e.slice(a),n.length),n=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=as(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const s=new Uint8Array(u);s.set(e.slice(a+4,a+4+u),0);const o=ir(ji(s,new Uint8Array(r))),l=new Uint8Array(n.length+o.length);l.set(n,0),l.set(o,n.length),n=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(n.length+4+t.length);r.set(n,0),r.set(o,n.length),r.set(t,n.length+4),n=r}a=a+4+d}return n}const ls={init:0,findFirstStartCode:1,findSecondStartCode:2};class cs extends class{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(){i.off(e,s);for(var n=arguments.length,a=new Array(n),o=0;o1?r-1:0),s=1;s{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=ls.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ls.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=ls.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ls.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=ls.findFirstStartCode}}}}function us(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+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=us(e.slice(n+4,n+4+a),t,r);e.set(i,n+4)}n=n+4+a}return e}function ps(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let s=0;return t.forEach((e=>{i.set(e,s),s+=e.byteLength})),i}class ms{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const s=()=>{ur(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(s),s}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class _s{static init(){_s.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 _s.types)_s.types.hasOwnProperty(e)&&(_s.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=_s.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 _s.box(_s.types.trak,_s.tkhd(e),_s.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,s=e.presentHeight;return _s.box(_s.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 _s.box(_s.types.mdia,_s.mdhd(e),_s.hdlr(e),_s.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return _s.box(_s.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?_s.constants.HDLR_AUDIO:_s.constants.HDLR_VIDEO,_s.box(_s.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?_s.box(_s.types.smhd,_s.constants.SMHD):_s.box(_s.types.vmhd,_s.constants.VMHD),_s.box(_s.types.minf,t,_s.dinf(),_s.stbl(e))}static dinf(){return _s.box(_s.types.dinf,_s.box(_s.types.dref,_s.constants.DREF))}static stbl(e){return _s.box(_s.types.stbl,_s.stsd(e),_s.box(_s.types.stts,_s.constants.STTS),_s.box(_s.types.stsc,_s.constants.STSC),_s.box(_s.types.stsz,_s.constants.STSZ),_s.box(_s.types.stco,_s.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.mp3(e)):_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.mp4a(e)):"avc"===e.videoType?_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.avc1(e)):_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.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 _s.box(_s.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 _s.box(_s.types.mp4a,i,_s.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 _s.box(_s.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 _s.box(_s.types.avc1,s,_s.box(_s.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 _s.box(_s.types.hvc1,s,_s.box(_s.types.hvcC,t))}static mvex(e){return _s.box(_s.types.mvex,_s.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 _s.box(_s.types.trex,r)}static moof(e,t){return _s.box(_s.types.moof,_s.mfhd(e.sequenceNumber),_s.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 _s.box(_s.types.mfhd,t)}static traf(e,t){let r=e.id,i=_s.box(_s.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),s=_s.box(_s.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),n=_s.sdtp(e),a=_s.trun(e,n.byteLength+16+16+8+16+8+8);return _s.box(_s.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,_s.box(_s.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),_s.box(_s.types.trun,r)}static mdat(e){return _s.box(_s.types.mdat,e)}}_s.init();var gs,ys=$t((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(gs=ys)&&gs.__esModule&&Object.prototype.hasOwnProperty.call(gs,"default")&&gs.default;const vs=[44100,48e3,32e3,0],bs=[22050,24e3,16e3,0],ws=[11025,12e3,8e3,0],Ss=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Es=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],As=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function Bs(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,s=(6&t[1])>>1,n=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=ws[a];break;case 2:d=bs[a];break;case 3:d=vs[a]}switch(s){case 1:n=e[s]&&t=6?(i=5,t=new Array(4),a=s-3):(i=2,t=new Array(2),a=s):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=s):(i=5,a=s,t=new Array(4),s>=6?a=s-3:1===n&&(i=2,t=new Array(2),a=s)),t[0]=i<<3,t[0]|=(15&s)>>>1,t[1]=(15&s)<<7,t[1]|=(15&n)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Os[s],this.sampling_index=s,this.channel_count=n,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Hs{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,n=8-i;if(n>=e)return r&&(this.index+=e),s>>n-e;{r&&(this.index+=n);const i=e-n;return s<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Vs(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Ws=new Array(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),js=new Array(2746333894,1453994832,1736282519,2993693404),qs=new Array(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 Ys(e,t,r,i,s){var n=s;n=t+s>e.length&&i+s<=r.length?e.length-t:i+s>r.length&&t+s<=e.length?r.length-i:t+s<=e.length&&i+s<=r.length?s:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Xs(e,t){return t+3>>19)^(i<<23|i>>>9)}function Qs(e,t){var r=new Array(36);r[0]=Xs(t,0),r[1]=Xs(t,4),r[2]=Xs(t,8),r[3]=Xs(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^en(r[i+1]^r[i+2]^r[i+3]^e[i]);var s=new Array(4);for(i=35;i>=32;i--)s[35-i]=r[i];var n=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function tn(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Zs(e),s=Math.ceil(r.length/16),n=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let a=5;for(;an)break;let d=e[a+4],l=!1,c=2;if(i?(s&&(c=3),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=tn(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-1-2024" '+(br(false)?"and is Trial Version[试用版本]":"")),n({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][worker]:",e)}}).then((e=>{!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=[],n=[],a=null,o=null,d=null,l=null,c=null,u=null,h=!1,w=null,S=null,U=!1,we=!1,Se=!!vr(r),je=0,Je=0,Qe=!1,tt=null,it=null,ut=null,At=[],Bt=null,kt=null,Ot=0,Gt=0,$t=null,Ht=null,Vt=0,Wt=0,Xt=!1,er=!1,or=!1,Er=null,Ar=null,Br=!1,Ur=!0,Cr=0,Hr=0,Vr=()=>{const e=gr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(a={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){a.decoder=new VideoDecoder({output:function(e){if(ur(e.createImageBitmap))e.createImageBitmap().then((t=>{a.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:r,delay:ci.delay,ts:0},[r]),pr(e)}));else{a.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:t,delay:ci.delay,ts:0},[t]),pr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){a.reset(),a.decoder&&"closed"!==a.decoder.state&&(a.decoder.close(),a.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(a.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?pt:mt});a.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:P,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,s=null;const n=e.slice(5);t===Pe?(s=Dr(n),i={codec:s.codec,description:n}):t===Me&&(s=qr(n),i={codec:s.codec,description:n}),s&&s.codecWidth&&s.codecHeight&&(i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth),a.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),a.isEmitInfo=!0,a.offscreenCanvas=new OffscreenCanvas(s.codecWidth,s.codecHeight),a.offscreenCanvasCtx=a.offscreenCanvas.getContext("2d"));try{a.decoder.configure(i),a.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){a.hasInit=!1,a.isEmitInfo=!1,a.offscreenCanvas=null,a.offscreenCanvasCtx=null}});let Yr=function(){if(Br=!0,o)try{o.abort(),o=null,ci.debugLog("worker","abort success")}catch(e){o=null,ci.debugLog("worker","abort catch",e)}},ni={init(){ni.lastBuf=null,ni.vps=null,ni.sps=null,ni.pps=null,ni.streamType=null,ni.localDts=0,ni.pendingUnits={},ni.isSendSeqHeader=!1},destroy(){ni.lastBuf=null,ni.vps=null,ni.sps=null,ni.pps=null,ni.streamType=null,ni.localDts=0,ni.pendingUnits={},ni.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=ni.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");ni.handleVideoFrames(e)}else ni.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=ni.localDts;return ni.localDts=ni.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return ni.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{const t=Mr(e);t===We||t===Ve?ni.handleVideoH264Nalu(e):zr(t)&&i.push(e)})),1===i.length)ni.handleVideoH264Nalu(i[0]);else if(Or(i)){const e=Mr(i[0]),t=Nr(e);ni.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{ni.handleVideoH264Nalu(e)}))}else if(ni.streamType===Ne)if(ci._opt.nakedFlowH265DemuxUseNew){const t=ni.handleAddNaluStartCode(e),r=ni.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Jr(e);t===lt||t===ot||t===nt?ni.handleVideoH265Nalu(e):ei(t)&&i.push(e)})),1===i.length)ni.handleVideoH265Nalu(i[0]);else if(ri(i)){const e=Jr(i[0]),t=ti(e);ni.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{ni.handleVideoH265Nalu(e)}))}else Jr(e)===lt?ni.extractH265PPS(e):ni.handleVideoH265Nalu(e)},extractH264PPS(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{Rr(Mr(e))?ni.extractH264SEI(e):ni.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{Qr(Jr(e))?ni.extractH265SEI(e):ni.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{ni.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{ni.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=Mr(e);switch(t){case Ve:ni.sps=e;break;case We:ni.pps=e}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps){const e=Lr({sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(zr(t)){const r=Nr(t),i=ni.getNaluDts(),s=Ir(e,r);ni.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Lr({sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}},handleVideoH264NaluList(e,t,r){if(ni.isSendSeqHeader){const i=ni.getNaluDts(),s=Pr(e.reduce(((e,t)=>{const r=ir(e),i=ir(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);ni.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Jr(e);switch(t){case nt:ni.vps=e;break;case ot:ni.sps=e;break;case lt:ni.pps=e}if(ni.isSendSeqHeader){if(ni.vps&&ni.sps&&ni.pps){const e=Kr({vps:ni.vps,sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.vps=null,ni.sps=null,ni.pps=null}if(ei(t)){const r=ti(t),i=ni.getNaluDts(),s=Xr(e,r);ni.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(ni.vps&&ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Kr({vps:ni.vps,sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.vps=null,ni.sps=null,ni.pps=null}},handleVideoH265NaluList(e,t,r){if(ni.isSendSeqHeader){const i=ni.getNaluDts(),s=Zr(e.reduce(((e,t)=>{const r=ir(e),i=ir(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);ni.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!ni.streamVideoType)for(let t of e)if(ni.streamVideoType=hr(t),ni.streamVideoType)break;ni.streamVideoType?ni.streamVideoType===ze?ni.handleVideoH264Frames(e):ni.streamVideoType===Ne&&ni.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,s=!1;ni.pendingUnits.units&&(t=ni.pendingUnits.units,s=ni.pendingUnits.vcl,i=ni.pendingUnits.iFrame,ni.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Mr(a);let o=!1,d=e===Ye;e!==qe&&e!==Ye||(n=ni.parseVideo264Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(ni.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,s=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case We:ni.pps=e;break;case Ve:ni.sps=e;break;case Ke:s=e}if(zr(t)){const t=ir(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!ni.isSendSeqHeader&&ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Fr({sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps){const e=Fr({sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(i){const e=ni.getNaluDts(),t=Pr(i,r);if(ci._opt.isEmitSEI&&s){const t=rr(s,!1);postMessage({cmd:X,buffer:t.payload,ts:e},[t.payload.buffer])}ni.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,s=!1;ni.pendingUnits.units&&(t=ni.pendingUnits.units,s=ni.pendingUnits.vcl,i=ni.pendingUnits.iFrame,ni.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Jr(a);let o=!1,d=ti(e);ei(e)&&(n=ni.parseVideo265Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(ni.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,s=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case lt:ni.pps=e;break;case ot:ni.sps=e;break;case nt:ni.vps=e;break;case ft:case ht:s=e}if(ei(t)){const t=ir(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!ni.isSendSeqHeader&&ni.sps&&ni.pps&&ni.vps){ni.isSendSeqHeader=!0;const e=Kr({sps:ni.sps,pps:ni.pps,vps:ni.vps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null,ni.vps=null}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps&&ni.vps){const e=Kr({sps:ni.sps,pps:ni.pps,vps:ni.vps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null,ni.vps=null}if(i){const e=ni.getNaluDts(),t=Zr(i,r);if(ci._opt.isEmitSEI&&s){const t=rr(s,!0);postMessage({cmd:X,buffer:t.payload,ts:e},[t.payload.buffer])}ni.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{ni.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Hs(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Hs(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},ai={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){ai.mp4Box=$i.createFile(),ai.mp4Box.onReady=ai.onReady,ai.mp4Box.onError=ai.onError,ai.mp4Box.onSamples=ai.onSamples},initTransportDescarmber(){ai.transportDescarmber=new Wi},_getSeqHeader(e){const t=ai.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 r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(ai.isHevc=!0,ci.isHevc=!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){ci.debugLog(ai.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){ai.videoTrackId=t.id;const e=ai._getSeqHeader(t);e&&(ci.debugLog(ai.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),ai.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){ai.audioTrackId=r.id;const e=r.audio||{},t=jt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");ai.mp4Box.setExtractionOptions(r.id);const s=qt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(ai.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(s,0)}ai.mp4Box.start()},onError(e){ci.debugError(ai.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===ai.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&&ci.calcIframeIntervalTimestamp(i);let s=null;s=ai.isHevc?Zr(t,r):Pr(t,r),ci.decode(s,{type:ae,ts:i,isIFrame:r,cts:0})}ai.mp4Box.removeUsedSamples(e)}else if(e===ai.audioTrackId){if(ci._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),ci.decode(i,{type:ne,ts:r,isIFrame:!1,cts:0})}ai.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(ai.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);ai.transportDescarmber&&(t=ai.transportDescarmber.transport(t)),t.buffer.fileStart=ai.offset,ai.offset+=t.byteLength,ai.mp4Box.appendBuffer(t.buffer)},destroy(){ai.mp4Box&&(ai.mp4Box.stop(),ai.mp4Box.flush(),ai.mp4Box.destroy(),ai.mp4Box=null),ai.transportDescarmber&&(ai.transportDescarmber.destroy(),ai.transportDescarmber=null),ai.offset=0,ai.videoTrackId=null,ai.audioTrackId=null,ai.isHevc=!1}},oi={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);oi.extractNALu(t)},destroy(){oi.lastBuffer=new Uint8Array(0),oi.parsedOffset=0,oi.firstStartCodeOffset=0,oi.secondStartCodeOffset=0,oi.state="init",oi.hasInitVideoCodec=!1,oi.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(oi.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(oi.lastBuffer.length+e.length);for(t.set(oi.lastBuffer,0),t.set(new Uint8Array(e),oi.lastBuffer.length),oi.lastBuffer=t;;){if("init"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findFirstStartCode",oi.firstStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findSecondStartCode",oi.secondStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===oi.state){if(!(oi.lastBuffer.length-oi.parsedOffset>0))break;{let e,t,r=192&oi.lastBuffer[oi.parsedOffset];e=0==r?oi.secondStartCodeOffset-14:oi.secondStartCodeOffset;let i=0==(192&oi.lastBuffer[oi.firstStartCodeOffset+4]);if(i){if(oi.firstStartCodeOffset-14<0)return void ci.debugWarn(oi.LOG_NAME,"firstStartCodeOffset -14 is",oi.firstStartCodeOffset-14);oi.hasInitVideoCodec||(oi.hasInitVideoCodec=!0,ci.debugLog(oi.LOG_NAME,"setCodec"),hi.setCodec(Re,"")),t=oi.lastBuffer.subarray(oi.firstStartCodeOffset-14,e)}else t=oi.lastBuffer.subarray(oi.firstStartCodeOffset,e);let s=oi.getNaluDts();oi.hasInitVideoCodec?(postMessage({cmd:O,type:Ue,value:t.byteLength}),postMessage({cmd:O,type:xe,value:s}),je=s,hi.decode(t,i?1:0,s)):ci.debugWarn(oi.LOG_NAME,"has not init video codec"),oi.lastBuffer=oi.lastBuffer.subarray(e),oi.firstStartCodeOffset=0==r?14:0,oi.parsedOffset=oi.firstStartCodeOffset+4,oi.state="findFirstStartCode"}}}},getNaluDts(){let e=oi.localDts;return oi.localDts=oi.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Gs,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let s=0;s=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=ps(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let n=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==n),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==a||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===n||n===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[n]===Is){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:n,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[n]){let r=188-c,i=di.pmt_.pid_stream_type[n];n!==di.pmt_.common_pids.h264&&n!==di.pmt_.common_pids.h265&&n!==di.pmt_.common_pids.adts_aac&&n!==di.pmt_.common_pids.loas_aac&&n!==di.pmt_.common_pids.ac3&&n!==di.pmt_.common_pids.eac3&&n!==di.pmt_.common_pids.opus&&n!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[n]&&!0!==di.pmt_.timed_id3_pids[n]&&!0!==di.pmt_.synchronous_klv_pids[n]&&!0!==di.pmt_.asynchronous_klv_pids[n]||di.handlePESSlice(e,t+c,r,{pid:n,stream_type:i,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=s[0];if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t+1,Math.min(r,a));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?di.emitSectionSlices(n,i):di.clearSlices(n,i)}for(let o=1+a;o=n.expected_length&&di.clearSlices(n,i),o+=d.byteLength}}else if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t,Math.min(r,n.expected_length-n.total_length));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?di.emitSectionSlices(n,i):n.total_length>=n.expected_length&&di.clearSlices(n,i)}},handlePESSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=s[0]<<16|s[1]<<8|s[2];s[3];let a=s[4]<<8|s[5];if(i.payload_unit_start_indicator){if(1!==n)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${n}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new Rs,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let o=di.pes_slice_queues_[i.pid];o.slices.push(s),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=s.byteLength,o.expected_length>0&&o.expected_length===o.total_length?di.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,n=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==s){if(s<3+o)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=s-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Us:case xs:di.parseMP3Payload(c,r);break;case ks:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,n,e.pid,i):di.parsePESPrivateDataPayload(c,r,n,e.pid,i));break;case Ts:di.parseADTSAACPayload(c,r);break;case Cs:di.parseLOASAACPayload(c,r);break;case Ds:case Ls:break;case Fs:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,n,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,n,e.pid,i);break;case Ps:di.parseH264Payload(c,r,n,e.random_access_indicator);break;case Ms:di.parseH265Payload(c,r,n,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===ks){let r,n=6;r=0!==s?s:t.byteLength-n;let a=t.subarray(n,n+r);di.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,s=1&e[5],n=e[6];e[7];let a=null;if(1===s&&0===n)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=di.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===s&&0===n&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),di.pat_=a,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],s=e[3]<<8|e[4],n=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=di._initPmt(),r.program_number=s,r.version_number=n,di.program_pmt_map_[s]=r;else if(r=di.program_pmt_map_[s],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Kr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Fr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let s=di.media_info_;s.hasVideo=!0,s.width=t.codecWidth,s.height=t.codecHeight,s.fps=t.frameRate.fps,s.profile=t.profile,s.level=t.level,s.refFrames=e.ref_frames,s.chromaFormat=e.chroma_format_string,s.sarNum=t.sarRatio.width,s.sarDen=t.sarRatio.height,s.videoCodec=t.codec,s.hasAudio&&s.audioCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Jt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};di.audio_track_.samples.push(n),di.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(di.aac_last_incomplete_data_=n.getIncompleteData()),s&&(di.audio_last_sample_pts_=s)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Qt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame(lr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};di.audio_track_.samples.push(n),di.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(di.aac_last_incomplete_data_=n.getIncompleteData()),s&&(di.audio_last_sample_pts_=s)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],s=[11025,12e3,8e3,0],n=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(n){case 0:l=s[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ne};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new $s(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const s=qt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(s,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,s){let n=new Ns;if(n.pid=i,n.stream_id=s,n.len=e.byteLength,n.data=e,null!=t){let e=Math.floor(t/di.timescale_);n.pts=e}else n.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);n.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?di._doDecodeVideo({...e,payload:t}):e.type===ne&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Zr(t,e.isIFrame):Pr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;vr(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ne,ts:e.dts,isIFrame:!1,cts:0})}},li=null;wr()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new ms,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!br(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===vt,isStateClosed:()=>li.getState()===bt,isStateEnded:()=>li.getState()===yt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,St,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,wt,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(br(li.hasInit))if(r&&e[1]===xt){const i=15&e[0];if(i===Me&&br(ci._opt.supportMSEDecodeHevc))return void li.emitError(Fe.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:P,code:i});const s=new Uint8Array(e);postMessage({cmd:M,buffer:s,codecId:i},[s.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Pe?r=Dr(e.slice(5)):t===Me&&(r=jr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Fe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(yr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eE,_decodeConfigurationRecord(e,t,r,i){let s=e.slice(5),n={};if(i===Pe?n=Dr(s):i===Me&&(n=qr(s)),li.videoInfo.width=n.codecWidth,li.videoInfo.height=n.codecHeight,0===n.codecWidth&&0===n.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(n)),li.emitError(Fe.mediaSourceDecoderConfigurationError,`width is ${0===n.codecWidth} and height is ${n.codecHeight}`),!1;const a={id:Ft,type:"video",timescale:1e3,duration:0,avcc:s,codecWidth:n.codecWidth,codecHeight:n.codecHeight,videoType:n.videoType},o=_s.generateInitSegment(a);li.isAvc=i===Pe;let d=n.codec;return li.videoMimeType=d?`video/mp4; codecs="${n.codec}"`:li.isAvc?_t:gt,postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),li._initSourceBuffer(),li.appendBuffer(o.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,s=r===He,n=r===Oe;if(br(n||s))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Fe.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Yt(e)){if(o=Zt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!s)return!1;if(o=Bs(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;s&&br(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=_s.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),br(li.isAudioInitInfo)&&(Ar=r===Oe?i?16:8:0===i?8:16,postMessage({cmd:L,code:r}),postMessage({cmd:D,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:Ar}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=n,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Fe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,s){let n=e.slice(5),a=n.byteLength;if(0===a)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=o,d=!0);const l=o-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(_s.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=_s.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),li.appendBuffer(s.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Ft,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=a,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=n,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),s=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(_s.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=_s.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),li.appendAudioBuffer(s.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=It,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=s,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),br(li.getSourceBufferUpdating())&&li.isStateOpen()&&br(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),br(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&br(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Fe.mediaSourceAudioInitTimeout)}),1e3)));if(br(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(br(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:s,end:t})}}else n=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:s,end:t})}}else nli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&br(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&br(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&br(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&br(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(br(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Ct,_opt:Vr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Qe,wasmDecodeDelay:je-Je});postMessage({cmd:O,type:Te,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ne)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Qe=!1,ci.delay=t-r):(Qe=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ne)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===ae&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ne?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===ae&&a.decode?a.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===s.length)return;const t=e.ts,i=s[0],n=e.type===ae&&yr(e.payload);if(br(r))n&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${n}`),s.shift(),ci.doDecode(i));else{const r=i.ts-t,a=i.type===ne&&e.type===ae;(r<=20||a||n)&&(ci.debugLog("worker",`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 ${a} and isVideoSqeHeader is ${n}`),s.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===y,t=ci._opt.playType===v;if(ni.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),a&&ci._opt.useWCS&&ci.useOffscreen()&&a.init(),br(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(s.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${s.length}`);if(ci.dropping){for(r=s.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${s.length}`);!r.isIFrame&&s.length;)r=s.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;s.length;)r=s.shift(),ci.doDecode(r);else if(r=s[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),s.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:$})):(s.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;s.length;){if(r=s[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${s.length}`);break}s.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();tt||(tt=e);const r=e-tt;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),tt=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(br(ci._opt.checkFirstIFrame)&&(Se=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:re,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;s.length&&(e=s.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Yr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Br=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&br(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,tt=null,Qe=!1,je=0,Je=0,a&&(a.destroy&&a.destroy(),a=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Vr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),s=[],n=[],u&&(u.close(),u=null),w=null,S=null,U=!1,we=!1,Se=!1,Xt=!1,er=!1,or=!1,Er=null,At=[],Ot=0,Gt=0,it=null,ut=null,$t=null,Ht=null,Ar=null,Vt=0,Wt=0,Bt=null,kt=null,ci.fetchStatus=Ct,Ur=!0,ni.destroy(),ai.destroy(),oi.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===ne&&Yt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&yr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:ee,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===b)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:R,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ne&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Kt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===ae){if(Vt>0){const e=t.ts-Ht,r=Vt+Vt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Vt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Wt}`),Ht-t.ts>E&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Vt=0),ci._opt.isDropSameTimestampGop&&br(t.isIFrame)&&Se)){const e=ci.hasIframeInBufferList(),t=br(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),vr(ci._opt.checkFirstIFrame)&&vr(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:te}))))}Ht>0&&(Vt=t.ts-Ht),Wt=e.byteLength,Ht=t.ts}if(Se){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${s.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;s.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${s.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return s.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>s.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return s.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return s.forEach((t=>{t.type===ne&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?ni.lastBuf&&(e=ni.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&ai.mp4Box&&(e=ai.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=dr((e=>{postMessage({cmd:O,type:Ae,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(ai.listenMp4Box(),ci._opt.isFmp4Private&&ai.initTransportDescarmber()),t.protocol===m){t.isFlv&&(u=new xr(ci.demuxFlv())),o=new AbortController;const r=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(vr(Br))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Ct,void e.body.cancel();if(!_r(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Yr(),void postMessage({cmd:O,type:Fe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:ke}),fr())ci.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):vr(Br)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Lt,void Yr()):void("string"!=typeof e?(ci.fetchStatus=Dt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Lt,Yr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:_,msg:"fetch done"})):postMessage({cmd:O,type:Ce})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Ut?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:s}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Lt,Yr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:_,msg:"fetch done"})):postMessage({cmd:O,type:Ce}))):o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):vr(Br)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Lt,void Yr()):void("string"!=typeof s?(ci.fetchStatus=Dt,l(s.byteLength),t.isFlv?u.write(s):t.isFmp4?ci.demuxFmp4(s):t.isMpeg4?ci.demuxMpeg4(s):t.isTs?ci.demuxTs(s):t.isNakedFlow&&ci.demuxNakedFlow(s),i()):ci.debugWarn("worker",`fetchNext().then() and value "${s}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Ut?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Ut?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===p&&(t.isFlv&&(u=new xr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:ke}),postMessage({cmd:O,type:Le})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),vr(Br)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:g,msg:e.code})):postMessage({cmd:O,type:Ce}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):vr(Br)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Fe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 oe:if(a.byteLength>0){let e=a;vr(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(a)),ci.decode(e,{type:ne,ts:n})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case de:if(a.byteLength>=6){const e=a[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(a,n);else{const e=15&a[0];let t=a[0]>>4===Tt;const i=e===Me;if(br(t)&&vr(Sr(a,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&yr(a)&&null===ci.isHevc){const e=15&a[0];ci.isHevc=e===Me,Er=sr(a,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Er}`)}t&&ci.calcIframeIntervalTimestamp(n),ci.isPlayer&&ci.calcNetworkDelay(n),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let s=r[0],o=ci.cryptoPayload(a,t);ci.decode(o,{type:ae,ts:n,isIFrame:t,cts:s})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case le:postMessage({cmd:Z,buffer:a},[a.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ne?ci._opt.hasAudio&&(postMessage({cmd:O,type:Be,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&ci._opt.hasVideo&&(postMessage({cmd:O,type:Ue,value:e.byteLength}),postMessage({cmd:O,type:xe,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Oi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?rn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):ds(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=fs(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Oe&&(t=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,s=e[0]>>1&1;if(Ar=r===Oe?s?16:8:0===s?8:16,ui&&ui.setCodec||!br(i))if(Yt(e)||r===Ge||r===$e||r===He){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const s=r===Oe?e.slice(2):new Uint8Array(0);if(i){if(r===He)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,s);r===Oe&&postMessage({cmd:I,buffer:s},[s.buffer]),we=!0,r!==Oe&&(r===He?(ci.mp3Demuxer||(ci.mp3Demuxer=new cs(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:H})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(vr(r)&&vr(ci._opt.mseDecodeAudio))postMessage({cmd:N,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(we){if(Yt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===He?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Oe?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!br(i))if(yr(e))if(r===Pe||r===Me){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Pe&&ci._opt.useSIMD){const e=Dr(t);if(e.codecWidth>A||e.codecHeight>A)return postMessage({cmd:q,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const s=new Uint8Array(e);U=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:P,code:r}),postMessage({cmd:M,buffer:s,codecId:r},[s.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,s){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,s,n);else if(vr(r))postMessage({cmd:z,payload:e,isIFrame:s,ts:t,cts:n,delay:ci.delay},[e.buffer]);else if(U)if(!Se&&s&&(Se=!0),Se){if(s&&yr(e)){const t=15&e[0];let r={};t===Pe?r=Dr(e.slice(5)):t===Me&&(r=jr(e)),r.codecWidth&&r.codecHeight&&w&&S&&(r.codecWidth!==w||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${w}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),er=!0,postMessage({cmd:W,value:`width: ${w}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(er)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(or)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(yr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${s.length}, need clear is ${e}`),e&&(s=[]),ci.isPlayer&&(ci.resetAllDelay(),vr(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:$}))),vr(ci._opt.checkFirstIFrame)&&br(r)&&(Se=!1)},dropBuffer$2:function(){if(s.length>0){let e=s.findIndex((e=>vr(e.isIFrame)&&e.type===ae));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:$});const t=s.length;s=s.slice(e);const r=s.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${s.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===s.length&&(ci.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 ne:ci.decode(new Uint8Array(e,5),{type:ne,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),s=i[0];if(ci._isEnhancedH265Header(s))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),yr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Me}ci.isPlayer&&ci.calcNetworkDelay(r),n[0]=i[4],n[1]=i[3],n[2]=i[2],n[3]=0;let s=n[0],a=ci.cryptoPayload(i,e);ci.decode(a,{type:ae,ts:r,isIFrame:e,cts:s})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){ni.dispatch(e)},demuxFmp4:function(e){ai.dispatch(e)},demuxMpeg4:function(e){oi.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=br(d),s===Mt){if(i===Nt){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),Er=sr(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Er}`),ci.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(s===Rt){let r=e,s=0;const n=i===Nt;n&&ci.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0],r=Zr(e.slice(8),n),r=ci.cryptoPayload(r,n),ci.decode(r,{type:ae,ts:t,isIFrame:n,cts:s}))}else if(s===zt){const r=i===Nt;r&&ci.calcIframeIntervalTimestamp(t);let s=Zr(e.slice(5),r);s=ci.cryptoPayload(s,r),ci.decode(s,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Pt)===Pt},findSei:function(e,t){let r=4;cr(Er)&&(r=Er),tr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===ft||r===ht),s=br(ci.isHevc)&&r===Ke;if(i||s){const r=rr(e,ci.isHevc);postMessage({cmd:X,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Se&&e>0))return;null===it?(it=e,ut=nr()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===y&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${it} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:De,value:i}))},calcIframeIntervalTimestamp:function(e){null===$t?$t=e:$t=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&vr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){br(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Xt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),Xt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:P,code:e}),postMessage({cmd:k,w:t,h:r}),w=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:D,sampleRate:t,channels:r,depth:Ar}),Gt=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=w*S*3/2;let s=e.HEAPU8.subarray(t,t+i),n=new Uint8Array(s);if(Bt=null,Je=r,ci.useOffscreen())try{if(Xt)return;ci.webglObj.renderYUV(w,S,n);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:T,output:n,delay:ci.delay,ts:r},[n.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ci._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(Ot){if(!(s>=(r=d-Ot)))return Ot+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==Gt&&(n[1]=Float32Array.of(...n[1],...a[1])));At[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==Gt&&(At[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer))),o=r,s-=r}for(Ot=s;Ot>=d;Ot-=d)At[0]=a[0].slice(o,o+=d),2==Gt&&(At[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer)));Ot&&(n[0]=a[0].slice(o),2==Gt&&(n[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===Bt&&(Bt=nr());const t=nr(),r=ar(kt>0?2*kt:5e3,1e3,5e3),i=t-Bt;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${kt} and diff is ${i} and maxDiff is ${r}\n and replay`),or=!0,postMessage({cmd:j}))},sendWebsocketMessage:function(e){d?d.readyState===Ie?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:H})},postStreamToMain(e,t){postMessage({cmd:K,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),vr(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,w=e,S=t,postMessage({cmd:k,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Gt=e,postMessage({cmd:D,sampleRate:t,channels:e,depth:Ar})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ci._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(Ot){if(!(s>=(r=d-Ot)))return Ot+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==Gt&&(n[1]=Float32Array.of(...n[1],...a[1])));At[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==Gt&&(At[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer))),o=r,s-=r}for(Ot=s;Ot>=d;Ot-=d)At[0]=a[0].slice(o,o+=d),2==Gt&&(At[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer)));Ot&&(n[0]=a[0].slice(o),2==Gt&&(n[1]=a[1].slice(o))),a=[]},draw:function(t,r,i,s){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const n=e.HEAPU8.subarray(r,r+Cr),a=e.HEAPU8.subarray(i,i+Hr),o=e.HEAPU8.subarray(s,s+Hr),d=new Uint8Array(Cr+Hr+Hr);if(d.set(n),d.set(a,Cr),d.set(o,Cr+Hr),Bt=null,Je=t,ci.useOffscreen())try{if(Xt)return;ci.webglObj.renderYUV(w,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:T,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:x}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ce:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case ue:ci.pushBuffer(t.buffer,t.options);break;case he:ci.decodeAudio(t.buffer,t.ts);break;case fe:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:ci.clearBuffer(t.needClear);break;case ge:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case pe:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&br(t.options.isVideoInited)&&(Ur=t.options.isVideoInited),ci.close();break;case me:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case ye:ci.sendWebsocketMessage(t.message);break;case ve:li.$video.currentTime=Number(t.message);break;case be:ci.updatePlaybackIsPause(t.isPause)}}}(e,e)}))})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,s=t(e),n=(r="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,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,s;(s=e).ready=new Promise(((e,r)=>{t=e,i=r})),(s=void 0!==s?s:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,a,o,d=Object.assign({},s),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return s.locateFile?s.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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-audio.js",document.baseURI).href)),n=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,s)=>{e?r(e):t(i?s.buffer:s)}))},!s.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),s.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=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,v,b=s.print||console.log.bind(console),w=s.printErr||console.error.bind(console);Object.assign(s,d),d=null,s.arguments&&s.arguments,s.thisProgram&&(l=s.thisProgram),s.quit&&s.quit,s.wasmBinary&&(y=s.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,B,U,x,k,T,C=!1;function D(e,t){e||j(t)}function L(){var e=v.buffer;s.HEAP8=S=new Int8Array(e),s.HEAP16=A=new Int16Array(e),s.HEAPU8=E=new Uint8Array(e),s.HEAPU16=B=new Uint16Array(e),s.HEAP32=U=new Int32Array(e),s.HEAPU32=x=new Uint32Array(e),s.HEAPF32=k=new Float32Array(e),s.HEAPF64=T=new Float64Array(e)}var F=[],I=[],P=[];function M(){if(s.preRun)for("function"==typeof s.preRun&&(s.preRun=[s.preRun]);s.preRun.length;)N(s.preRun.shift());se(F)}function R(){s.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,se(I)}function z(){if(s.postRun)for("function"==typeof s.postRun&&(s.postRun=[s.postRun]);s.postRun.length;)G(s.postRun.shift());se(P)}function N(e){F.unshift(e)}function O(e){I.unshift(e)}function G(e){P.unshift(e)}var $=0,H=null;function V(e){$++,s.monitorRunDependencies&&s.monitorRunDependencies($)}function W(e){if($--,s.monitorRunDependencies&&s.monitorRunDependencies($),0==$&&H){var t=H;H=null,t()}}function j(e){s.onAbort&&s.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:si};function t(e,t){return ni=e.exports,v=ni.E,L(),Ft=ni.H,O(ni.F),W(),ni}if(V(),s.instantiateWasm)try{return s.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}s.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var se=e=>{for(;e.length>0;)e.shift()(s)};function ne(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,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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(ci(this.get_type()))return x[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}s.noExitRuntime;var ae=(e,t,r)=>{throw new ne(e).init(t,r),e},oe=e=>(U[oi()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;o{for(var i=t+r,s=t;e[s]&&!(s>=i);)++s;if(s-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,s=new Array(i),n=_e(e,s,0,s.length);return t&&(s.length=n),s}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,s){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var n=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var s=Te.createNode(e,t,r,i);return Te.isDir(s.mode)?(s.node_ops=we.ops_table.dir.node,s.stream_ops=we.ops_table.dir.stream,s.contents={}):Te.isFile(s.mode)?(s.node_ops=we.ops_table.file.node,s.stream_ops=we.ops_table.file.stream,s.usedBytes=0,s.contents=null):Te.isLink(s.mode)?(s.node_ops=we.ops_table.link.node,s.stream_ops=we.ops_table.link.stream):Te.isChrdev(s.mode)&&(s.node_ops=we.ops_table.chrdev.node,s.stream_ops=we.ops_table.chrdev.stream),s.timestamp=Date.now(),e&&(e.contents[t]=s,e.timestamp=s.timestamp),s},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=Te.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,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var s in i.contents)throw new Te.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var s=i?"":`al ${e}`;a(e,(r=>{D(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),s&&W()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),s&&V()},Ee=(e,t,r,i,s,n)=>{Te.createDataFile(e,t,r,i,s,n)},Ae=s.preloadPlugins||[],Be=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var s=!1;return Ae.forEach((n=>{s||n.canHandle(t)&&(n.handle(e,t,r,i),s=!0)})),s},Ue=(e,t,r,i,s,n,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,s,d),n&&n(),W()}Be(r,c,u,(()=>{a&&a(),W()}))||u(r)}V(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},xe=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,s="/",n=0;n40)throw new Te.ErrnoError(32)}}return{path:s,node:i}},getPath(e){for(var t;;){if(Te.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)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),s=Te.nameTable[i];s;s=s.name_next){var n=s.name;if(s.parent.id===e.id&&n===t)return s}return Te.lookup(e,t)},createNode(e,t,r,i){var s=new Te.FSNode(e,t,r,i);return Te.hashAddNode(s),s},destroyNode(e){Te.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.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=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return Te.lookupNode(e,t),20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var s=Te.nodePermissions(e,"wx");if(s)return s;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.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),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function s(e){return Te.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&&Te.root)throw new Te.ErrnoError(10);if(!s&&!n){var a=Te.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,s?Te.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,s=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;s.includes(t.mount)&&Te.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=Te.lookupPath(e,{parent:!0}).node,s=de.basename(e);if(!s||"."===s||".."===s)throw new Te.ErrnoError(28);var n=Te.mayCreate(i,s);if(n)throw new Te.ErrnoError(n);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,s,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.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,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),s=Te.mayCreate(r,i);if(s)throw new Te.ErrnoError(s);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,s=de.dirname(e),n=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,a),c=ue.relative(e,n);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,s)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,o)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,a,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,o,u):Te.mayCreate(i,o))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!0);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!1);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?Te.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var s;if(!(s="string"==typeof e?Te.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);s.node_ops.setattr(s,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;if(!(r="string"==typeof e?Te.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?xe(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var n=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),n=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!n){var a=Te.mayOpen(i,t);if(a)throw new Te.ErrnoError(a)}512&t&&!n&&Te.truncate(i,0),t&=-131713;var o=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!s.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),o},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var n=void 0!==s;if(n){if(!e.seekable)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var a=void 0!==s;if(a){if(!e.seekable)throw new Te.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(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,s){if(0!=(2&i)&&0==(2&s)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,s)},msync:(e,t,r,i,s)=>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 Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Te.open(e,t.flags),s=Te.stat(e).size,n=new Uint8Array(s);return Te.read(i,n,0,s,0),"utf8"===t.encoding?r=fe(n,0):"binary"===t.encoding&&(r=n),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var s=new Uint8Array(me(t)+1),n=_e(t,s,0,s.length);Te.write(i,s,0,n,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,s)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),s={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return s.parent=s,s}},t}},{},"/proc/self/fd")},createStandardStreams(){s.stdin?Te.createDevice("/dev","stdin",s.stdin):Te.symlink("/dev/tty","/dev/stdin"),s.stdout?Te.createDevice("/dev","stdout",null,s.stdout):Te.symlink("/dev/tty","/dev/stdout"),s.stderr?Te.createDevice("/dev","stderr",null,s.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),s.stdin=e||s.stdin,s.stdout=t||s.stdout,s.stderr=r||s.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=Te.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 c(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 Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,s)=>(Te.forceLoadFile(d),c(e,t,r,i,s)),l.mmap=(e,t,r,i,s)=>{Te.forceLoadFile(d);var n=be();if(!n)throw new Te.ErrnoError(48);return c(e,S,n,t,r),{ptr:n,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;if(i=-100===e?Te.cwd():De.getStreamFromFD(e).path,0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}U[r>>2]=i.dev,U[r+4>>2]=i.mode,x[r+8>>2]=i.nlink,U[r+12>>2]=i.uid,U[r+16>>2]=i.gid,U[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+24>>2]=K[0],U[r+28>>2]=K[1],U[r+32>>2]=4096,U[r+36>>2]=i.blocks;var s=i.atime.getTime(),n=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+40>>2]=K[0],U[r+44>>2]=K[1],x[r+48>>2]=s%1e3*1e3,K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+56>>2]=K[0],U[r+60>>2]=K[1],x[r+64>>2]=n%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+72>>2]=K[0],U[r+76>>2]=K[1],x[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+88>>2]=K[0],U[r+92>>2]=K[1],0},doMsync(e,t,r,i,s){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var n=E.slice(e,e+r);Te.msync(t,n,s,r,i)},varargs:void 0,get(){var e=U[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Le(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((s=De.get())<0)return-28;for(;Te.streams[s];)s++;return Te.createStream(i,s).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var s=De.get();return i.flags|=s,0;case 5:return s=De.getp(),A[s+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var s=i?De.get():0;return Te.open(t,r,s).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Ie,Pe,Me,Re=(e,t,r,i,s)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ie=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Ie[E[r++]];return t},Oe={},Ge={},$e={},He=e=>{throw new Pe(e)},Ve=e=>{throw new Me(e)},We=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ve("Mismatched type converter count");for(var s=0;s{Ge.hasOwnProperty(e)?s[t]=Ge[e]:(n.push(e),Oe.hasOwnProperty(e)||(Oe[e]=[]),Oe[e].push((()=>{s[t]=Ge[e],++a===n.length&&i(s)})))})),0===n.length&&i(s)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Ge.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Ge[e]=t,delete $e[e],Oe.hasOwnProperty(e)){var s=Oe[e];delete Oe[e],s.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},st={},nt=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{s.getInheritedInstanceCount=nt,s.getLiveInheritedInstances=at,s.flushPendingDeletes=dt,s.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||Ve("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ve("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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 s(){return this.isSmartPointer?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var n,a=this.registeredClass.getActualType(t),o=st[a];if(!o)return s.call(this);n=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,n.registeredClass);return null===d?s.call(this):this.isSmartPointer?pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d,smartPtrType:this,smartPtr:e}):pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var 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},clone(){if(this.$$.ptr||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{s.hasOwnProperty(e)?((void 0===r||void 0!==s[e].overloadTable&&void 0!==s[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(s,e,e),s.hasOwnProperty(r)&&He(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),s[e].overloadTable[r]=t):(s[e]=t,void 0!==r&&(s[e].numArguments=r))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Bt(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=[]}var Ut=(e,t,r)=>{for(;t!==r;)t.upcast||He(`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&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=Ut(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,nr.toHandle((()=>s.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(x[e>>2])}var Dt=()=>{Object.assign(Lt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Lt(e,t,r,i,s,n,a,o,d,l,c){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=c,s||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=xt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,It,Pt=(e,t,r)=>{s.hasOwnProperty(e)||Ve("Replacing nonexistant public symbol"),void 0!==s[e].overloadTable&&void 0!==r?s[e].overloadTable[r]=t:(s[e]=t,s[e].argCount=r)},Mt=(e,t,r)=>{var i=s["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),Ot=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Gt=(e,t)=>{var r=(e=Ne(e)).includes("j")?Ot(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},$t=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=Ne(t);return ai(t),r},Vt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Ge[t]||($e[t]?$e[t].forEach(e):(r.push(t),i[t]=!0))})),new It(`${e}: `+r.map(Ht).join([", "]))},Wt=(e,t,r,i,s,n,a,o,d,l,c,u,h)=>{c=Ne(c),n=Gt(s,n),o&&(o=Gt(a,o)),l&&(l=Gt(d,l)),h=Gt(u,h);var f=At(c);wt(f,(function(){Vt(`Cannot construct ${c} due to unbound types`,[i])})),We([e,t,r],i?[i]:[],(function(t){var r,s;t=t[0],s=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Pe("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Pe(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Pe(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(s,{constructor:{value:a}});a.prototype=d;var u=new Bt(c,a,d,h,r,n,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Lt(c,u,!0,!1,!1),m=new Lt(c+"*",u,!1,!1,!1),_=new Lt(c+" const*",u,!1,!0,!1);return st[e]={pointerType:m,constPointerType:_},Pt(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,s=e.apply(i,t);return s instanceof Object?s:i}function Kt(e,t,r,i,s,n){var a=t.length;a<2&&He("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+=(c||n?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);s=Gt(i,s),We([],[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 Pe(`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]=()=>{Vt(`Cannot construct ${e.name} due to unbound types`,a)},We([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,s,n),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,s,n,a,o,d)=>{var l=jt(r,i);t=Ne(t),t=Zt(t),n=Gt(s,n),We([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function s(){Vt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=s):(bt(c,t,i),c[t].overloadTable[r-2]=s),We([],l,(function(s){var o=Kt(i,s,e,n,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,s.count_emval_handles=ir},nr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function ar(e){return this.fromWireType(U[e>>2])}var or=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=nr.toValue(e);return rr(e),t},toWireType:(e,t)=>nr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>B[e>>1];case 4:return r?e=>U[e>>2]:e=>x[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,s)=>{t=Ne(t);var n=e=>e;if(0===i){var a=32-8*r;n=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:n,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function s(e){var t=x[e>>2],r=x[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:s,argPackAdvance:Ke,readValueFromPointer:s},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=x[e>>2],s=e+4;if(r)for(var n=s,a=0;a<=i;++a){var o=s+a;if(a==i||0==E[o]){var d=Ce(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)pr(t,a,i+1);else if(s)for(var o=0;o255&&(ai(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,s=i+t/2;!(i>=s)&&B[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var s=U[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},wr=(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)),U[t>>2]=a,(t+=4)+4>s)break}return U[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,s,n,a,o;r=Ne(r),2===t?(i=gr,s=yr,a=vr,n=()=>B,o=1):4===t&&(i=br,s=wr,a=Sr,n=()=>x,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,s=x[e>>2],a=n(),d=e+4,l=0;l<=s;++l){var c=e+4+l*t;if(l==s||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ai(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var n=a(i),d=li(4+n+t);return x[d>>2]=n>>o,s(i,d+4,n+t),null!==e&&e.push(ai,d),d},argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction(e){ai(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Br={},Ur=e=>{var t=Br[e];return void 0===t?Ne(e):t},xr=[],kr=(e,t,r,i,s)=>(e=xr[e])(t=nr.toValue(t),t[r=Ur(r)],i,s),Tr=e=>{var t=xr.length;return xr.push(e),t},Cr=(e,t)=>{var r=Ge[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Lr=(e,t,r)=>{var i=[],s=e.toWireType(i,r);return i.length&&(x[t>>2]=nr.toHandle(i)),s},Fr=(e,t,r)=>{var i=Dr(e,t),s=i.shift();e--;var n="return function (obj, func, destructorsRef, args) {\n",a=0,o=[];0===r&&o.push("obj");for(var d=["retType"],l=[s],c=0;ce.name)).join(", ")}) => ${s.name}>`;return Tr(vt(h,u))},Ir=e=>{var t=nr.toValue(e);qt(t),rr(e)},Pr=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),Nr=e=>{j("OOM")},Or=e=>{E.length,Nr()},Gr={},$r=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:$r()};for(var t in Gr)void 0===Gr[t]?delete e[t]:e[t]=Gr[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Vr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Wr=(e,t)=>{var r=0;return Hr().forEach(((i,s)=>{var n=t+r;x[e+4*s>>2]=n,Vr(i,n),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();x[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),x[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+8>>2]=K[0],U[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+16>>2]=K[0],U[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.read(e,S,a,o,i);if(d<0)return-1;if(s+=d,d>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,s){var n=Pr(t,r);try{if(isNaN(n))return 61;var a=De.getStreamFromFD(e);return Te.llseek(a,n,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[s>>2]=K[0],U[s+4>>2]=K[1],a.getdents&&0===n&&0===i&&(a.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.write(e,S,a,o,i);if(d<0)return-1;s+=d,void 0!==i&&(i+=d)}return s};function Qr(e,t,r,i){try{var s=De.getStreamFromFD(e),n=Jr(s,t,r);return x[i>>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=ei,Te.createPreloadedFile=Ue,Te.staticInit(),ze(),Pe=s.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=s.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),It=s.UnboundTypeError=$t(Error,"UnboundTypeError"),Qt(),sr();var ii,si={o:ae,A:Le,s:Fe,q:Re,C:Xe,D:Wt,y:Xt,h:Jt,B:or,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:kr,g:rr,e:Fr,d:Ir,a:Mr,i:Rr,w:zr,r:Or,u:Wr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},ni=ie(),ai=e=>(ai=ni.G)(e),oi=()=>(oi=ni.I)(),di=e=>(di=ni.J)(e),li=e=>(li=ni.K)(e),ci=e=>(ci=ni.M)(e);function ui(){function e(){ii||(ii=!0,s.calledRun=!0,C||(R(),t(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),z()))}$>0||(M(),$>0||(s.setStatus?(s.setStatus("Running..."),setTimeout((function(){setTimeout((function(){s.setStatus("")}),1),e()}),1)):e()))}if(s.dynCall_viiijj=(e,t,r,i,n,a,o,d)=>(s.dynCall_viiijj=ni.N)(e,t,r,i,n,a,o,d),s.dynCall_jij=(e,t,r,i)=>(s.dynCall_jij=ni.O)(e,t,r,i),s.dynCall_jii=(e,t,r)=>(s.dynCall_jii=ni.P)(e,t,r),s.dynCall_jiji=(e,t,r,i,n)=>(s.dynCall_jiji=ni.Q)(e,t,r,i,n),H=function e(){ii||ui(),ii||(H=e)},s.preInit)for("function"==typeof s.preInit&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return ui(),e.ready}),a=1e-6,o="undefined"!=typeof Float32Array?Float32Array:Array;function d(){var e=new o(16);return o!=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 l(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 c,u=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 h(e,t,r){var i=new o(3);return i[0]=e,i[1]=t,i[2]=r,i}c=new o(3),o!=Float32Array&&(c[0]=0,c[1]=0,c[2]=0);var f=(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 i={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")}},s=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}}(),n=p(),o=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,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 n=d();u(n,-1,1,-1,1,.1,100);const p=d();l(p);const m=d();!function(e,t,r,i){var s,n,o,d,c,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Vt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Wt=Vt,jt=Vt;function qt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Yt(e){return Kt(e)&&e[1]===xt}function Kt(e){return e[0]>>4===Oe}const Xt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Zt(e){let t=new Uint8Array(e),r=null,i=0,s=0,n=0,a=null;if(i=s=t[0]>>>3,n=(7&t[0])<<1|t[1]>>>7,n<0||n>=Xt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Xt[n],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Ot.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?n>=6?(i=5,r=new Array(4),a=n-3):(i=2,r=new Array(2),a=n):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=n):(i=5,a=n,r=new Array(4),n>=6?a=n-3:1===d&&(i=2,r=new Array(2),a=n)),r[0]=i<<3,r[0]|=(15&n)>>>1,r[1]=(15&n)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+s}}class Jt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,s=(6&e[r+1])>>>1,n=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===n?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==s)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=Wt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(31&t[i+1])<<8|t[i+2];if(i+3+s>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let n=new Ht(t.subarray(i+3,i+3+s)),a=null;if(n.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+s),n.destroy();continue}a=e}else{let e=n.readBool();if(e&&n.readBool()){console.error("audioMuxVersionA is Not Supported"),n.destroy();break}if(e&&this.getLATMValue(n),!n.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),n.destroy();break}if(0!==n.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),n.destroy();break}if(0!==n.readBits(4)){console.error("more than 2 numProgram Not Supported"),n.destroy();break}if(0!==n.readBits(3)){console.error("more than 2 numLayer Not Supported"),n.destroy();break}let t=e?this.getLATMValue(n):0,r=n.readBits(5);t-=5;let i=n.readBits(4);t-=4;let s=n.readBits(4);t-=4,n.readBits(3),t-=3,t>0&&n.readBits(t);let o=n.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),n.destroy();break}n.readByte();let d=n.readBool();if(d)if(e)this.getLATMValue(n);else{let e=0;for(;;){e<<=8;let t=n.readBool();if(e+=n.readByte(),!t)break}console.log(e)}n.readBool()&&n.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=Wt[a.sampling_freq_index],a.channel_config=s,a.other_data_present=d}let o=0;for(;;){let e=n.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function tr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 rr(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++;return{payload:e.subarray(i),type:s,size:n,uuid:a}}function ir(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 sr(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 nr(){return(new Date).getTime()}function ar(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function or(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function dr(e){let t=0,r=or();return i=>{if(s=i,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=i;const n=or(),a=n-r;a>=1e3&&(e(t/a*1e3),r=n,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){}})();function lr(e){return null==e}function cr(e){return!lr(e)}function ur(e){return"function"==typeof e}function hr(e){let t=null,r=31&e[0];return r!==Ve&&r!==We||(t=ze),t||(r=(126&e[0])>>1,r!==nt&&r!==ot&&r!==lt||(t=Ne)),t}function fr(){return"undefined"!=typeof WritableStream}function pr(e){e.close()}function mr(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 _r(e){return e.ok&&e.status>=200&&e.status<=299}function gr(){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}(U)}function yr(e){return e[0]>>4===kt&&e[1]===xt}function vr(e){return!0===e||"true"===e}function br(e){return!0!==e&&"true"!==e}function wr(){return!!(Ot.Worker&&Ot.MediaSource&&"canConstructInDedicatedWorker"in Ot.MediaSource&&!0===Ot.MediaSource.canConstructInDedicatedWorker)}function Sr(e,t){const r=tr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Qe||r===tt||r===it)||br(t)&&r===je)&&(i=!0)})),i}var Er=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 Ar=Symbol(32),Br=Symbol(16),Ur=Symbol(8);class xr{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 Er(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(Ar)}readU16(){return this.read(Br)}readU8(){return this.read(Ur)}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===Ar){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Br){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Ur){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}}xr.U32=Ar,xr.U16=Br,xr.U8=Ur;class kr{constructor(e){this.log=function(t){if(e._opt.debugLevel==w){const n=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;s1?r-1:0),s=1;s1?i-1:0),n=1;n=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=Tr._ebsp2rbsp(e),r=new Ht(t);r.readByte();let i=r.readByte();r.readByte();let s=r.readByte();r.readUEG();let n=Tr.getProfileString(i),a=Tr.getLevelString(s),o=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,B=2*e,S=A/B}}let U=1;1===b&&1===w||(U=b/w);let x=0,k=0;if(0===o)x=1,k=2-m;else{x=3===o?1:2,k=(1===o?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*x,C-=(y+v)*k;let D=Math.ceil(T*U);return r.destroy(),r=null,{profile_string:n,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Tr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:B,fps_num:A},sar_ratio:{width:b,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=Tr._ebsp2rbsp(e),s=new Ht(i);s.readByte();let n=s.readByte();s.readByte();let a=s.readByte();s.readUEG();let o=Tr.getProfileString(n),d=Tr.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=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&&(c=u[l]),h=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=t[e-1],A=r[e-1]):255===e&&(E=s.readByte()<<8|s.readByte(),A=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);U=s.readBool(),x=t,k=2*e,B=x/k}}let T=1;1===E&&1===A||(T=E/A);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 L=16*(_+1),F=16*(g+1)*(2-y);L-=(v+b)*C,F-=(w+S)*D;let I=Math.ceil(L*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:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Tr.getChromaFormatString(c),frame_rate:{fixed:U,fps:B,fps_den:k,fps_num:x},sar_ratio:{width:E,height:A},codec_size:{width:L,height:F},present_size:{width:I,height:F}}}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 Lr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Fr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,s=!1;const n=Tr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(s=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,s&&(a[d]=252|n.chroma_format_idc,a[d+1]=248|n.bit_depth_luma-8,a[d+2]=248|n.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Ir(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}function Pr(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 Mr(e){return 31&e[0]}function Rr(e){return e===Ke}function zr(e){return!function(e){return e===Ve||e===We}(e)&&!Rr(e)}function Nr(e){return e===je}function Or(e){if(0===e.length)return!1;const t=Mr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,i>=Je||0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class $r{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Hr=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)},Vr=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"}};class Wr{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 parseVPS(e){let t=Wr._ebsp2rbsp(e),r=new Ht(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()}}static parseSPS(e){let t=Wr._ebsp2rbsp(e),r=new Ht(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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=t[e-1],P=i[e-1]):255===e&&(I=r.readBits(16),P=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(),L=r.readBool(),L&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&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();M=s;let n=!0,a=1;s||(n=r.readBool());let o=!1;if(n?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Hr(e),r=new Ht(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()}})(t),a=(e=>{let t=Hr(e),r=new Ht(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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=t[e-1],P=i[e-1]):255===e&&(I=r.readBits(16),P=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),L=r.readBool(),L&&(i+=r.readUEG(),s+=r.readUEG(),n+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(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();M=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=Hr(e),r=new Ht(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}})(r);s=Object.assign(s,n,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&s.general_profile_space)<<6|(s.general_tier_flag?1:0)<<5|31&s.general_profile_idc,l[2]=s.general_profile_compatibility_flags_1||0,l[3]=s.general_profile_compatibility_flags_2||0,l[4]=s.general_profile_compatibility_flags_3||0,l[5]=s.general_profile_compatibility_flags_4||0,l[6]=s.general_constraint_indicator_flags_1||0,l[7]=s.general_constraint_indicator_flags_2||0,l[8]=s.general_constraint_indicator_flags_3||0,l[9]=s.general_constraint_indicator_flags_4||0,l[10]=s.general_constraint_indicator_flags_5||0,l[11]=s.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&s.min_spatial_segmentation_idc)>>8,l[14]=255&s.min_spatial_segmentation_idc,l[15]=252|3&s.parallelismType,l[16]=252|3&s.chroma_format_idc,l[17]=248|7&s.bit_depth_luma_minus8,l[18]=248|7&s.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&s.constant_frame_rate)<<6|(7&s.num_temporal_layers)<<3|(s.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|nt,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|ot,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|lt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Xr(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}function Zr(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 Jr(e){return(126&e[0])>>1}function Qr(e){return e===ut}function ei(e){return!function(e){return e>=32&&e<=40}(e)}function ti(e){return e>=16&&e<=21}function ri(e){if(0===e.length)return!1;const t=Jr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class si{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ni(e){return parseInt(e)===e}function ai(e){if(!ni(e.length))return!1;for(var t=0;t255)return!1;return!0}function oi(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(!ai(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ni(e.length)&&ai(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function di(e){return new Uint8Array(e)}function li(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 ci,ui={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("")}},hi=(ci="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ci[15&i])}return t.join("")}}),fi={16:10,24:12,32:14},pi=[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],mi=[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],_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ei=[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],Ai=[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],Bi=[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],Ui=[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],xi=[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],ki=[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 Ti(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^mi[a>>8&255]<<16^mi[255&a]<<8^mi[a>>24&255]^pi[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^mi[a>>16&255]<<16^mi[a>>24&255]<<24;for(t=s/2+1;t>2,c=d%4,this._Ke[l][c]=n[t],this._Kd[e-l][c]=n[t++],d++}for(var l=1;l>24&255]^Ui[a>>16&255]^xi[a>>8&255]^ki[255&a]},Ci.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=Ti(e),s=0;s<4;s++)i[s]^=this._Ke[0][s];for(var n=1;n>24&255]^yi[i[(s+1)%4]>>16&255]^vi[i[(s+2)%4]>>8&255]^bi[255&i[(s+3)%4]]^this._Ke[n][s];i=r.slice()}var a,o=di(16);for(s=0;s<4;s++)a=this._Ke[t][s],o[4*s]=255&(mi[i[s]>>24&255]^a>>24),o[4*s+1]=255&(mi[i[(s+1)%4]>>16&255]^a>>16),o[4*s+2]=255&(mi[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(mi[255&i[(s+3)%4]]^a);return o},Ci.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=Ti(e),s=0;s<4;s++)i[s]^=this._Kd[0][s];for(var n=1;n>24&255]^Si[i[(s+3)%4]>>16&255]^Ei[i[(s+2)%4]>>8&255]^Ai[255&i[(s+1)%4]]^this._Kd[n][s];i=r.slice()}var a,o=di(16);for(s=0;s<4;s++)a=this._Kd[t][s],o[4*s]=255&(_i[i[s]>>24&255]^a>>24),o[4*s+1]=255&(_i[i[(s+3)%4]>>16&255]^a>>16),o[4*s+2]=255&(_i[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(_i[255&i[(s+1)%4]]^a);return o};var Di=function(e){if(!(this instanceof Di))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ci(e)};Di.prototype.encrypt=function(e){if((e=oi(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=di(e.length),r=di(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)},Pi.prototype.setBytes=function(e){if(16!=(e=oi(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Pi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Mi=function(e,t){if(!(this instanceof Mi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Pi||(t=new Pi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ci(e)};Mi.prototype.encrypt=function(e){for(var t=oi(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-n%4*8&255;t[i+n>>>2]|=a<<24-(i+n)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-s%4*8&255;i.push((n>>>4).toString(16)),i.push((15&n).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>24-s%4*8&255;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,s=i.words,n=i.sigBytes,a=this.blockSize,o=n/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,n);if(d){for(var u=0;u>>2]|=e[s]<<24-s%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.WordArray,i=e.enc;function s(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=e.charCodeAt(s)<<16-s%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=s(e.charCodeAt(n)<<16-n%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var s=[],n=0,a=0;a>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var s=[],n=0;n>>2]>>>24-n%4*8&255)<<16|(t[n+1>>>2]>>>24-(n+1)%4*8&255)<<8|t[n+2>>>2]>>>24-(n+2)%4*8&255,o=0;o<4&&n+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;s.length%4;)s.push(d);return s.join("")},parse:function(e){var t=e.length,r=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var n=0;n>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,s=t?this._safe_map:this._map;e.clamp();for(var n=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=s.charAt(64);if(l)for(;n.length%4;)n.push(l);return n.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,s=t?this._safe_map:this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(s<<24|s>>>8)}var n=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],B=e[t+14],U=e[t+15],x=n[0],k=n[1],T=n[2],C=n[3];x=l(x,k,T,C,a,7,o[0]),C=l(C,x,k,T,d,12,o[1]),T=l(T,C,x,k,f,17,o[2]),k=l(k,T,C,x,p,22,o[3]),x=l(x,k,T,C,m,7,o[4]),C=l(C,x,k,T,_,12,o[5]),T=l(T,C,x,k,g,17,o[6]),k=l(k,T,C,x,y,22,o[7]),x=l(x,k,T,C,v,7,o[8]),C=l(C,x,k,T,b,12,o[9]),T=l(T,C,x,k,w,17,o[10]),k=l(k,T,C,x,S,22,o[11]),x=l(x,k,T,C,E,7,o[12]),C=l(C,x,k,T,A,12,o[13]),T=l(T,C,x,k,B,17,o[14]),x=c(x,k=l(k,T,C,x,U,22,o[15]),T,C,d,5,o[16]),C=c(C,x,k,T,g,9,o[17]),T=c(T,C,x,k,S,14,o[18]),k=c(k,T,C,x,a,20,o[19]),x=c(x,k,T,C,_,5,o[20]),C=c(C,x,k,T,w,9,o[21]),T=c(T,C,x,k,U,14,o[22]),k=c(k,T,C,x,m,20,o[23]),x=c(x,k,T,C,b,5,o[24]),C=c(C,x,k,T,B,9,o[25]),T=c(T,C,x,k,p,14,o[26]),k=c(k,T,C,x,v,20,o[27]),x=c(x,k,T,C,A,5,o[28]),C=c(C,x,k,T,f,9,o[29]),T=c(T,C,x,k,y,14,o[30]),x=u(x,k=c(k,T,C,x,E,20,o[31]),T,C,_,4,o[32]),C=u(C,x,k,T,v,11,o[33]),T=u(T,C,x,k,S,16,o[34]),k=u(k,T,C,x,B,23,o[35]),x=u(x,k,T,C,d,4,o[36]),C=u(C,x,k,T,m,11,o[37]),T=u(T,C,x,k,y,16,o[38]),k=u(k,T,C,x,w,23,o[39]),x=u(x,k,T,C,A,4,o[40]),C=u(C,x,k,T,a,11,o[41]),T=u(T,C,x,k,p,16,o[42]),k=u(k,T,C,x,g,23,o[43]),x=u(x,k,T,C,b,4,o[44]),C=u(C,x,k,T,E,11,o[45]),T=u(T,C,x,k,U,16,o[46]),x=h(x,k=u(k,T,C,x,f,23,o[47]),T,C,a,6,o[48]),C=h(C,x,k,T,y,10,o[49]),T=h(T,C,x,k,B,15,o[50]),k=h(k,T,C,x,_,21,o[51]),x=h(x,k,T,C,E,6,o[52]),C=h(C,x,k,T,p,10,o[53]),T=h(T,C,x,k,w,15,o[54]),k=h(k,T,C,x,d,21,o[55]),x=h(x,k,T,C,v,6,o[56]),C=h(C,x,k,T,U,10,o[57]),T=h(T,C,x,k,g,15,o[58]),k=h(k,T,C,x,A,21,o[59]),x=h(x,k,T,C,m,6,o[60]),C=h(C,x,k,T,S,10,o[61]),T=h(T,C,x,k,f,15,o[62]),k=h(k,T,C,x,b,21,o[63]),n[0]=n[0]+x|0,n[1]=n[1]+k|0,n[2]=n[2]+T|0,n[3]=n[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;r[s>>>5]|=128<<24-s%32;var n=e.floor(i/4294967296),a=i;r[15+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),r[14+(s+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,s,n,a){var o=e+(t&r|~t&i)+s+a;return(o<>>32-n)+t}function c(e,t,r,i,s,n,a){var o=e+(t&i|r&~i)+s+a;return(o<>>32-n)+t}function u(e,t,r,i,s,n,a){var o=e+(t^r^i)+s+a;return(o<>>32-n)+t}function h(e,t,r,i,s,n,a){var o=e+(r^(t|~i))+s+a;return(o<>>32-n)+t}t.MD5=n._createHelper(d),t.HmacMD5=n._createHmacHelper(d)}(Math),r.MD5)})),$t((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=zi).lib,s=i.WordArray,n=i.Hasher,a=r.algo,o=[],d=a.SHA1=n.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(s&n|~s&a):l<40?1859775393+(s^n^a):l<60?(s&n|s&a|n&a)-1894007588:(s^n^a)-899497514,d=a,a=n,n=s<<30|s>>>2,s=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=n._createHelper(d),r.HmacSHA1=n._createHmacHelper(d),l.SHA1)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,s=0;s<64;)t(i)&&(s<8&&(o[s]=r(e.pow(i,.5))),d[s]=r(e.pow(i,1/3)),s++),i++}();var l=[],c=a.SHA256=n.extend({_doReset:function(){this._hash=new s.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&s^i&n^s&n,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=n,n=s,s=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;return r[s>>>5]|=128<<24-s%32,r[14+(s+64>>>9<<4)]=e.floor(i/4294967296),r[15+(s+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=n._createHelper(c),t.HmacSHA256=n._createHmacHelper(c)}(Math),r.SHA256)})),$t((function(e,t){var r,i,s,n,a,o;e.exports=(i=(r=o=zi).lib.WordArray,s=r.algo,n=s.SHA256,a=s.SHA224=n.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=n._createHelper(a),r.HmacSHA224=n._createHmacHelper(a),o.SHA224)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.Hasher,i=e.x64,s=i.Word,n=i.WordArray,a=e.algo;function o(){return s.create.apply(s,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new n.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=s.high,_=s.low,g=n.high,y=n.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,B=u.high,U=u.low,x=h.high,k=h.low,T=f,C=p,D=m,L=_,F=g,I=y,P=v,M=b,R=w,z=S,N=E,O=A,G=B,$=U,H=x,V=k,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,se=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),ne=l[W-7],ae=ne.high,oe=ne.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=se)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&G,fe=z&O^~z&$,pe=T&D^T&F^D&F,me=C&L^C&I^L&I,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=G,V=$,G=N,$=O,N=R,O=z,R=P+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,P=F,M=I,F=D,I=L,D=T,L=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=s.low=_+L,s.high=m+D+(_>>>0>>0?1:0),y=n.low=y+I,n.high=g+F+(y>>>0>>0?1:0),b=a.low=b+M,a.high=v+P+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+N+(A>>>0>>0?1:0),U=u.low=U+$,u.high=B+G+(U>>>0<$>>>0?1:0),k=h.low=k+V,h.high=x+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),$t((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=zi).x64,s=i.Word,n=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new n.init([new s.init(3418070365,3238371032),new s.init(1654270250,914150663),new s.init(2438529370,812702999),new s.init(355462360,4144912697),new s.init(1731405415,4290775857),new s.init(2394180231,1750603025),new s.init(3675008525,1694076839),new s.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var s=1,n=0;n<24;n++){for(var o=0,u=0,h=0;h<7;h++){if(1&s){var f=(1<>>24)|4278255360&(n<<24|n>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(k=r[s]).high^=a,k.low^=n}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(k=r[h+5*m]).high,p^=k.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[h+5*m]).high^=f,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var B=u[l[w]];B.high=f,B.low=p}var U=u[0],x=r[0];for(U.high=x.high,U.low=x.low,h=0;h<5;h++)for(m=0;m<5;m++){var k=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var L=c[o];k.high^=L.high,k.low^=L.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,n=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/n)*n>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new s.init(l,o)},clone:function(){for(var e=n.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=n._createHelper(h),t.HmacSHA3=n._createHmacHelper(h)}(Math),r.SHA3)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=s.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=s.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=s.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=s.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=s.create([0,1518500249,1859775393,2400959708,2840853838]),h=s.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=n.extend({_doReset:function(){this._hash=s.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,s=e[i];e[i]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}var n,a,f,b,w,S,E,A,B,U,x,k=this._hash.words,T=u.words,C=h.words,D=o.words,L=d.words,F=l.words,I=c.words;for(S=n=k[0],E=a=k[1],A=f=k[2],B=b=k[3],U=w=k[4],r=0;r<80;r+=1)x=n+e[t+D[r]]|0,x+=r<16?p(a,f,b)+T[0]:r<32?m(a,f,b)+T[1]:r<48?_(a,f,b)+T[2]:r<64?g(a,f,b)+T[3]:y(a,f,b)+T[4],x=(x=v(x|=0,F[r]))+w|0,n=w,w=b,b=v(f,10),f=a,a=x,x=S+e[t+L[r]]|0,x+=r<16?y(E,A,B)+C[0]:r<32?g(E,A,B)+C[1]:r<48?_(E,A,B)+C[2]:r<64?m(E,A,B)+C[3]:p(E,A,B)+C[4],x=(x=v(x|=0,I[r]))+U|0,S=U,U=B,B=v(A,10),A=E,E=x;x=k[1]+f+B|0,k[1]=k[2]+b+U|0,k[2]=k[3]+w+S|0,k[3]=k[4]+n+E|0,k[4]=k[0]+a+A|0,k[0]=x},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var s=this._hash,n=s.words,a=0;a<5;a++){var o=n[a];n[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return s},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=n._createHelper(f),t.HmacRIPEMD160=n._createHmacHelper(f)}(),r.RIPEMD160)})),$t((function(e,t){var r,i,s;e.exports=(i=(r=zi).lib.Base,s=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var n=this._oKey=t.clone(),a=this._iKey=t.clone(),o=n.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?n.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=n.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=s.extend({cfg:s.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var s=e.createEncryptor(r,i),n=s.finalize(t),a=s.cfg;return m.create({ciphertext:n,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,s){if(i||(i=n.random(8)),s)a=l.create({keySize:t+r,hasher:s}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=n.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var s=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=s.iv;var n=g.encrypt.call(this,e,t,s.key,i);return n.mixIn(s),n},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var s=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=s.iv,g.decrypt.call(this,e,t,s.key,i)}})}())})),$t((function(e,t){var r;e.exports=((r=zi).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var s,n=this._iv;n?(s=n.slice(0),this._iv=void 0):s=this._prevBlock,i.encryptBlock(s,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var s=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,s=r.blockSize,n=this._iv,a=this._counter;n&&(a=this._counter=n.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=s<<24-n%4*8,e.sigBytes+=s},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),$t((function(e,t){var r;e.exports=((r=zi).pad.Iso10126={pad:function(e,t){var i=4*t,s=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(s-1)).concat(r.lib.WordArray.create([s<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),$t((function(e,t){var r;e.exports=((r=zi).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),$t((function(e,t){var r;e.exports=((r=zi).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),$t((function(e,t){var r;e.exports=((r=zi).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib.CipherParams,s=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(s)},parse:function(e){var t=s.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,s=[],n=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,s[r]=p,n[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),n=this._keySchedule=[],a=0;a6&&a%r==4&&(l=s[l>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l]):(l=s[(l=l<<8|l>>>24)>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l],l^=p[a/r|0]<<24),n[a]=n[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[s[l>>>16&255]]^h[s[l>>>8&255]]^f[s[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,s)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,n),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,s,n,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^s[c>>>16&255]^n[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^s[u>>>16&255]^n[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^s[h>>>16&255]^n[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^s[l>>>16&255]^n[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib,i=t.WordArray,s=t.BlockCipher,n=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=n.DES=s.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var s=this._subKeys=[],n=0;n<16;n++){var l=s[n]=[],c=d[n];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=s[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var s=r[i],n=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^s[d])&c[d])>>>0];this._lBlock=a,this._rBlock=n^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),s=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(s))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=s._createHelper(p)}(),r.TripleDES)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],s=0;s<256;s++)i[s]=s;s=0;for(var n=0;s<256;s++){var a=s%r,o=t[a>>>2]>>>24-a%4*8&255;n=(n+i[s]+o)%256;var d=i[s];i[s]=i[n],i[n]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=n.call(this)},keySize:8,ivSize:0});function n(){for(var e=this._S,t=this._i,r=this._j,i=0,s=0;s<4;s++){r=(r+e[t=(t+1)%256])%256;var n=e[t];e[t]=e[r],e[r]=n,i|=e[(e[t]+e[r])%256]<<24-8*s}return this._i=t,this._j=r,i}e.RC4=t._createHelper(s);var a=i.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)n.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(s[0]^=l,s[1]^=u,s[2]^=c,s[3]^=h,s[4]^=l,s[5]^=u,s[6]^=c,s[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var s=0;s<4;s++)d.call(this);for(s=0;s<8;s++)i[s]^=r[s+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,s=0;s<4;s++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const s=16,n=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,s=t>>8&255,n=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][s],a+=e.sbox[3][n],a}function l(e,t,r){let i,n=t,a=r;for(let t=0;t1;--t)n^=e.pbox[t],a=d(e,n)^a,i=n,n=a,a=i;return i=n,n=a,a=i,a^=e.pbox[1],n^=e.pbox[0],{left:n,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+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=e.slice(n+4+2,n+4+a);let s=new Ri.ModeOfOperation.ctr(t,new Ri.Counter(r));const o=s.decrypt(i);s=null,e.set(o,n+4+2)}n=n+4+a}return e}function Gi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let s=new Ri.ModeOfOperation.ctr(t,new Ri.Counter(r));const n=s.decrypt(i);return s=null,e.set(n,32),e}$t((function(e,t){e.exports=zi}));var $i=$t((function(e,t){var r,s,n,a=(r=new Date,s=4,n={setLogLevel:function(e){s=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>=s&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=s&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=s&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=s&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},n);a.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+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;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),s=new Uint8Array(this._buffer);new Uint8Array(i,0,s.length).set(s),this.buffer=i,this._byteLength=t}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,s){var n=new Uint8Array(e,t,s),a=new Uint8Array(r,i,s);n.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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 r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.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)),a.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,n)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,s,n,o=[],d="";for(i=0,s=0,t=0;t0&&(d+=n.end-1+"]");var l=e?a.info:a.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,s=null,n=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+n),n):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[n]?i=new h.UUIDBoxes[n](l):(a.warn("BoxParser","Unknown uuid type: '"+n+"'"),(i=new h.Box(c,l)).uuid=n,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' 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?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(i.start+i.size)):s>0&&(a.error("BoxParser","Parsing of box '"+u+"' 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)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 r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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),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()))})),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:a.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(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()})),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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)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=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){a.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){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.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),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(),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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>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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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))},g.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&&(a.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),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.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)&&(a.debug("ISOFile","Sending samples on track #"+n.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(n.id,n.user,n.samples),n.samples=[],n!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,s=this.getTrackById(e);s.lastValidSample||(s.lastValidSample=0);for(var n=s.lastValidSample;ne*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 n=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+n),{offset:n,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,s,n=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;sthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){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 u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),n.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),n.addBox(f)}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 d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=n.sample_counts[b]),t>0?(e.samples[t-1].duration=n.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),U.cts=e.samples[t].dts+a.sample_offsets[S]):U.cts=U.dts,o?(t==o.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[A].sample_delta+B==t+1&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta,A++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+B==t&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,s,n,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var n=(r=this.stream.buffers[s]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=n)return a.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+")"),d.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===n)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+n+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,n),i.alreadyRead+=n,r.usedBytes+=n,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[n]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+s.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,o),s.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Hi(e){return e.reduce(((e,t)=>256*e+t))}function Vi(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]))}$i.Log,$i.MP4BoxStream,$i.DataStream,$i.MultiBufferStream,$i.MPEG4DescriptorParser,$i.BoxParser,$i.XMLSubtitlein4Parser,$i.Textin4Parser,$i.ISOFile,$i.createFile;class Wi{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],Vi(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}}function ji(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const qi=16,Yi=[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],Ki=[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 Xi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ji(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}function Qi(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("")}function es(e,t){const r=31&t;return e<>>32-r}function ts(e){return(255&Yi[e>>>24&255])<<24|(255&Yi[e>>>16&255])<<16|(255&Yi[e>>>8&255])<<8|255&Yi[255&e]}function rs(e){return e^es(e,2)^es(e,10)^es(e,18)^es(e,24)}function is(e){return e^es(e,13)^es(e,23)}function ss(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]^=rs(ts(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=rs(ts(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=rs(ts(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=rs(ts(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 ns(e,t,r){const i=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[0+4*t],s[1]=255&e[1+4*t],s[2]=255&e[2+4*t],s[3]=255&e[3+4*t],i[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Ki[r+0],t[r+0]=i[0]^=is(ts(e)),e=i[2]^i[3]^i[0]^Ki[r+1],t[r+1]=i[1]^=is(ts(e)),e=i[3]^i[0]^i[1]^Ki[r+2],t[r+2]=i[2]^=is(ts(e)),e=i[0]^i[1]^i[2]^Ki[r+3],t[r+3]=i[3]^=is(ts(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function as(e,t,r){let{padding:i="pkcs#7",mode:s,iv:n=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===s&&("string"==typeof n&&(n=Xi(n)),16!==n.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Xi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ji(e):Xi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=qi-e.length%qi;for(let r=0;r=qi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===s)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=new Uint8Array(e.slice(0,5)),a=5;for(;as){const t=new Uint8Array(n.length+e.length-a);t.set(n,0),t.set(e.slice(a),n.length),n=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=as(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const s=new Uint8Array(u);s.set(e.slice(a+4,a+4+u),0);const o=ir(ji(s,new Uint8Array(r))),l=new Uint8Array(n.length+o.length);l.set(n,0),l.set(o,n.length),n=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(n.length+4+t.length);r.set(n,0),r.set(o,n.length),r.set(t,n.length+4),n=r}a=a+4+d}return n}const ls={init:0,findFirstStartCode:1,findSecondStartCode:2};class cs extends class{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(){i.off(e,s);for(var n=arguments.length,a=new Array(n),o=0;o1?r-1:0),s=1;s{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=ls.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ls.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=ls.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ls.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=ls.findFirstStartCode}}}}function us(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+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=us(e.slice(n+4,n+4+a),t,r);e.set(i,n+4)}n=n+4+a}return e}function ps(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let s=0;return t.forEach((e=>{i.set(e,s),s+=e.byteLength})),i}class ms{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const s=()=>{ur(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(s),s}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class _s{static init(){_s.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 _s.types)_s.types.hasOwnProperty(e)&&(_s.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=_s.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 _s.box(_s.types.trak,_s.tkhd(e),_s.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,s=e.presentHeight;return _s.box(_s.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 _s.box(_s.types.mdia,_s.mdhd(e),_s.hdlr(e),_s.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return _s.box(_s.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?_s.constants.HDLR_AUDIO:_s.constants.HDLR_VIDEO,_s.box(_s.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?_s.box(_s.types.smhd,_s.constants.SMHD):_s.box(_s.types.vmhd,_s.constants.VMHD),_s.box(_s.types.minf,t,_s.dinf(),_s.stbl(e))}static dinf(){return _s.box(_s.types.dinf,_s.box(_s.types.dref,_s.constants.DREF))}static stbl(e){return _s.box(_s.types.stbl,_s.stsd(e),_s.box(_s.types.stts,_s.constants.STTS),_s.box(_s.types.stsc,_s.constants.STSC),_s.box(_s.types.stsz,_s.constants.STSZ),_s.box(_s.types.stco,_s.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.mp3(e)):_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.mp4a(e)):"avc"===e.videoType?_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.avc1(e)):_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.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 _s.box(_s.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 _s.box(_s.types.mp4a,i,_s.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 _s.box(_s.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 _s.box(_s.types.avc1,s,_s.box(_s.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 _s.box(_s.types.hvc1,s,_s.box(_s.types.hvcC,t))}static mvex(e){return _s.box(_s.types.mvex,_s.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 _s.box(_s.types.trex,r)}static moof(e,t){return _s.box(_s.types.moof,_s.mfhd(e.sequenceNumber),_s.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 _s.box(_s.types.mfhd,t)}static traf(e,t){let r=e.id,i=_s.box(_s.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),s=_s.box(_s.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),n=_s.sdtp(e),a=_s.trun(e,n.byteLength+16+16+8+16+8+8);return _s.box(_s.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,_s.box(_s.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),_s.box(_s.types.trun,r)}static mdat(e){return _s.box(_s.types.mdat,e)}}_s.init();var gs,ys=$t((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(gs=ys)&&gs.__esModule&&Object.prototype.hasOwnProperty.call(gs,"default")&&gs.default;const vs=[44100,48e3,32e3,0],bs=[22050,24e3,16e3,0],ws=[11025,12e3,8e3,0],Ss=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Es=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],As=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function Bs(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,s=(6&t[1])>>1,n=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=ws[a];break;case 2:d=bs[a];break;case 3:d=vs[a]}switch(s){case 1:n=e[s]&&t=6?(i=5,t=new Array(4),a=s-3):(i=2,t=new Array(2),a=s):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=s):(i=5,a=s,t=new Array(4),s>=6?a=s-3:1===n&&(i=2,t=new Array(2),a=s)),t[0]=i<<3,t[0]|=(15&s)>>>1,t[1]=(15&s)<<7,t[1]|=(15&n)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Os[s],this.sampling_index=s,this.channel_count=n,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Hs{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,n=8-i;if(n>=e)return r&&(this.index+=e),s>>n-e;{r&&(this.index+=n);const i=e-n;return s<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Vs(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Ws=new Array(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),js=new Array(2746333894,1453994832,1736282519,2993693404),qs=new Array(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 Ys(e,t,r,i,s){var n=s;n=t+s>e.length&&i+s<=r.length?e.length-t:i+s>r.length&&t+s<=e.length?r.length-i:t+s<=e.length&&i+s<=r.length?s:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Xs(e,t){return t+3>>19)^(i<<23|i>>>9)}function Qs(e,t){var r=new Array(36);r[0]=Xs(t,0),r[1]=Xs(t,4),r[2]=Xs(t,8),r[3]=Xs(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^en(r[i+1]^r[i+2]^r[i+3]^e[i]);var s=new Array(4);for(i=35;i>=32;i--)s[35-i]=r[i];var n=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function tn(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Zs(e),s=Math.ceil(r.length/16),n=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let a=5;for(;an)break;let d=e[a+4],l=!1,c=2;if(i?(s&&(c=3),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=tn(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-2-2024" '+(br(false)?"and is Trial Version[试用版本]":"")),n({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][audio wasm]:",e)}}).then((e=>{!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=[],n=[],a=null,o=null,d=null,l=null,c=null,u=null,h=!1,w=null,S=null,U=!1,we=!1,Se=!!vr(r),je=0,Je=0,Qe=!1,tt=null,it=null,ut=null,At=[],Bt=null,kt=null,Ot=0,Gt=0,$t=null,Ht=null,Vt=0,Wt=0,Xt=!1,er=!1,or=!1,Er=null,Ar=null,Br=!1,Ur=!0,Cr=0,Hr=0,Vr=()=>{const e=gr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(a={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){a.decoder=new VideoDecoder({output:function(e){if(ur(e.createImageBitmap))e.createImageBitmap().then((t=>{a.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:r,delay:ci.delay,ts:0},[r]),pr(e)}));else{a.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:t,delay:ci.delay,ts:0},[t]),pr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){a.reset(),a.decoder&&"closed"!==a.decoder.state&&(a.decoder.close(),a.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(a.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?pt:mt});a.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:P,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,s=null;const n=e.slice(5);t===Pe?(s=Dr(n),i={codec:s.codec,description:n}):t===Me&&(s=qr(n),i={codec:s.codec,description:n}),s&&s.codecWidth&&s.codecHeight&&(i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth),a.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),a.isEmitInfo=!0,a.offscreenCanvas=new OffscreenCanvas(s.codecWidth,s.codecHeight),a.offscreenCanvasCtx=a.offscreenCanvas.getContext("2d"));try{a.decoder.configure(i),a.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){a.hasInit=!1,a.isEmitInfo=!1,a.offscreenCanvas=null,a.offscreenCanvasCtx=null}});let Yr=function(){if(Br=!0,o)try{o.abort(),o=null,ci.debugLog("worker","abort success")}catch(e){o=null,ci.debugLog("worker","abort catch",e)}},ni={init(){ni.lastBuf=null,ni.vps=null,ni.sps=null,ni.pps=null,ni.streamType=null,ni.localDts=0,ni.pendingUnits={},ni.isSendSeqHeader=!1},destroy(){ni.lastBuf=null,ni.vps=null,ni.sps=null,ni.pps=null,ni.streamType=null,ni.localDts=0,ni.pendingUnits={},ni.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=ni.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");ni.handleVideoFrames(e)}else ni.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=ni.localDts;return ni.localDts=ni.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return ni.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{const t=Mr(e);t===We||t===Ve?ni.handleVideoH264Nalu(e):zr(t)&&i.push(e)})),1===i.length)ni.handleVideoH264Nalu(i[0]);else if(Or(i)){const e=Mr(i[0]),t=Nr(e);ni.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{ni.handleVideoH264Nalu(e)}))}else if(ni.streamType===Ne)if(ci._opt.nakedFlowH265DemuxUseNew){const t=ni.handleAddNaluStartCode(e),r=ni.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Jr(e);t===lt||t===ot||t===nt?ni.handleVideoH265Nalu(e):ei(t)&&i.push(e)})),1===i.length)ni.handleVideoH265Nalu(i[0]);else if(ri(i)){const e=Jr(i[0]),t=ti(e);ni.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{ni.handleVideoH265Nalu(e)}))}else Jr(e)===lt?ni.extractH265PPS(e):ni.handleVideoH265Nalu(e)},extractH264PPS(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{Rr(Mr(e))?ni.extractH264SEI(e):ni.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{Qr(Jr(e))?ni.extractH265SEI(e):ni.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{ni.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{ni.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=Mr(e);switch(t){case Ve:ni.sps=e;break;case We:ni.pps=e}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps){const e=Lr({sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(zr(t)){const r=Nr(t),i=ni.getNaluDts(),s=Ir(e,r);ni.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Lr({sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}},handleVideoH264NaluList(e,t,r){if(ni.isSendSeqHeader){const i=ni.getNaluDts(),s=Pr(e.reduce(((e,t)=>{const r=ir(e),i=ir(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);ni.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Jr(e);switch(t){case nt:ni.vps=e;break;case ot:ni.sps=e;break;case lt:ni.pps=e}if(ni.isSendSeqHeader){if(ni.vps&&ni.sps&&ni.pps){const e=Kr({vps:ni.vps,sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.vps=null,ni.sps=null,ni.pps=null}if(ei(t)){const r=ti(t),i=ni.getNaluDts(),s=Xr(e,r);ni.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(ni.vps&&ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Kr({vps:ni.vps,sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.vps=null,ni.sps=null,ni.pps=null}},handleVideoH265NaluList(e,t,r){if(ni.isSendSeqHeader){const i=ni.getNaluDts(),s=Zr(e.reduce(((e,t)=>{const r=ir(e),i=ir(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);ni.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!ni.streamVideoType)for(let t of e)if(ni.streamVideoType=hr(t),ni.streamVideoType)break;ni.streamVideoType?ni.streamVideoType===ze?ni.handleVideoH264Frames(e):ni.streamVideoType===Ne&&ni.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,s=!1;ni.pendingUnits.units&&(t=ni.pendingUnits.units,s=ni.pendingUnits.vcl,i=ni.pendingUnits.iFrame,ni.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Mr(a);let o=!1,d=e===Ye;e!==qe&&e!==Ye||(n=ni.parseVideo264Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(ni.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,s=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case We:ni.pps=e;break;case Ve:ni.sps=e;break;case Ke:s=e}if(zr(t)){const t=ir(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!ni.isSendSeqHeader&&ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Fr({sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps){const e=Fr({sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(i){const e=ni.getNaluDts(),t=Pr(i,r);if(ci._opt.isEmitSEI&&s){const t=rr(s,!1);postMessage({cmd:X,buffer:t.payload,ts:e},[t.payload.buffer])}ni.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,s=!1;ni.pendingUnits.units&&(t=ni.pendingUnits.units,s=ni.pendingUnits.vcl,i=ni.pendingUnits.iFrame,ni.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Jr(a);let o=!1,d=ti(e);ei(e)&&(n=ni.parseVideo265Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(ni.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,s=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case lt:ni.pps=e;break;case ot:ni.sps=e;break;case nt:ni.vps=e;break;case ft:case ht:s=e}if(ei(t)){const t=ir(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!ni.isSendSeqHeader&&ni.sps&&ni.pps&&ni.vps){ni.isSendSeqHeader=!0;const e=Kr({sps:ni.sps,pps:ni.pps,vps:ni.vps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null,ni.vps=null}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps&&ni.vps){const e=Kr({sps:ni.sps,pps:ni.pps,vps:ni.vps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null,ni.vps=null}if(i){const e=ni.getNaluDts(),t=Zr(i,r);if(ci._opt.isEmitSEI&&s){const t=rr(s,!0);postMessage({cmd:X,buffer:t.payload,ts:e},[t.payload.buffer])}ni.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{ni.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Hs(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Hs(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},ai={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){ai.mp4Box=$i.createFile(),ai.mp4Box.onReady=ai.onReady,ai.mp4Box.onError=ai.onError,ai.mp4Box.onSamples=ai.onSamples},initTransportDescarmber(){ai.transportDescarmber=new Wi},_getSeqHeader(e){const t=ai.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 r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(ai.isHevc=!0,ci.isHevc=!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){ci.debugLog(ai.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){ai.videoTrackId=t.id;const e=ai._getSeqHeader(t);e&&(ci.debugLog(ai.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),ai.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){ai.audioTrackId=r.id;const e=r.audio||{},t=jt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");ai.mp4Box.setExtractionOptions(r.id);const s=qt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(ai.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(s,0)}ai.mp4Box.start()},onError(e){ci.debugError(ai.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===ai.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&&ci.calcIframeIntervalTimestamp(i);let s=null;s=ai.isHevc?Zr(t,r):Pr(t,r),ci.decode(s,{type:ae,ts:i,isIFrame:r,cts:0})}ai.mp4Box.removeUsedSamples(e)}else if(e===ai.audioTrackId){if(ci._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),ci.decode(i,{type:ne,ts:r,isIFrame:!1,cts:0})}ai.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(ai.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);ai.transportDescarmber&&(t=ai.transportDescarmber.transport(t)),t.buffer.fileStart=ai.offset,ai.offset+=t.byteLength,ai.mp4Box.appendBuffer(t.buffer)},destroy(){ai.mp4Box&&(ai.mp4Box.stop(),ai.mp4Box.flush(),ai.mp4Box.destroy(),ai.mp4Box=null),ai.transportDescarmber&&(ai.transportDescarmber.destroy(),ai.transportDescarmber=null),ai.offset=0,ai.videoTrackId=null,ai.audioTrackId=null,ai.isHevc=!1}},oi={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);oi.extractNALu(t)},destroy(){oi.lastBuffer=new Uint8Array(0),oi.parsedOffset=0,oi.firstStartCodeOffset=0,oi.secondStartCodeOffset=0,oi.state="init",oi.hasInitVideoCodec=!1,oi.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(oi.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(oi.lastBuffer.length+e.length);for(t.set(oi.lastBuffer,0),t.set(new Uint8Array(e),oi.lastBuffer.length),oi.lastBuffer=t;;){if("init"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findFirstStartCode",oi.firstStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findSecondStartCode",oi.secondStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===oi.state){if(!(oi.lastBuffer.length-oi.parsedOffset>0))break;{let e,t,r=192&oi.lastBuffer[oi.parsedOffset];e=0==r?oi.secondStartCodeOffset-14:oi.secondStartCodeOffset;let i=0==(192&oi.lastBuffer[oi.firstStartCodeOffset+4]);if(i){if(oi.firstStartCodeOffset-14<0)return void ci.debugWarn(oi.LOG_NAME,"firstStartCodeOffset -14 is",oi.firstStartCodeOffset-14);oi.hasInitVideoCodec||(oi.hasInitVideoCodec=!0,ci.debugLog(oi.LOG_NAME,"setCodec"),hi.setCodec(Re,"")),t=oi.lastBuffer.subarray(oi.firstStartCodeOffset-14,e)}else t=oi.lastBuffer.subarray(oi.firstStartCodeOffset,e);let s=oi.getNaluDts();oi.hasInitVideoCodec?(postMessage({cmd:O,type:Ue,value:t.byteLength}),postMessage({cmd:O,type:xe,value:s}),je=s,hi.decode(t,i?1:0,s)):ci.debugWarn(oi.LOG_NAME,"has not init video codec"),oi.lastBuffer=oi.lastBuffer.subarray(e),oi.firstStartCodeOffset=0==r?14:0,oi.parsedOffset=oi.firstStartCodeOffset+4,oi.state="findFirstStartCode"}}}},getNaluDts(){let e=oi.localDts;return oi.localDts=oi.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Gs,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let s=0;s=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=ps(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let n=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==n),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==a||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===n||n===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[n]===Is){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:n,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[n]){let r=188-c,i=di.pmt_.pid_stream_type[n];n!==di.pmt_.common_pids.h264&&n!==di.pmt_.common_pids.h265&&n!==di.pmt_.common_pids.adts_aac&&n!==di.pmt_.common_pids.loas_aac&&n!==di.pmt_.common_pids.ac3&&n!==di.pmt_.common_pids.eac3&&n!==di.pmt_.common_pids.opus&&n!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[n]&&!0!==di.pmt_.timed_id3_pids[n]&&!0!==di.pmt_.synchronous_klv_pids[n]&&!0!==di.pmt_.asynchronous_klv_pids[n]||di.handlePESSlice(e,t+c,r,{pid:n,stream_type:i,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=s[0];if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t+1,Math.min(r,a));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?di.emitSectionSlices(n,i):di.clearSlices(n,i)}for(let o=1+a;o=n.expected_length&&di.clearSlices(n,i),o+=d.byteLength}}else if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t,Math.min(r,n.expected_length-n.total_length));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?di.emitSectionSlices(n,i):n.total_length>=n.expected_length&&di.clearSlices(n,i)}},handlePESSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=s[0]<<16|s[1]<<8|s[2];s[3];let a=s[4]<<8|s[5];if(i.payload_unit_start_indicator){if(1!==n)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${n}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new Rs,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let o=di.pes_slice_queues_[i.pid];o.slices.push(s),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=s.byteLength,o.expected_length>0&&o.expected_length===o.total_length?di.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,n=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==s){if(s<3+o)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=s-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Us:case xs:di.parseMP3Payload(c,r);break;case ks:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,n,e.pid,i):di.parsePESPrivateDataPayload(c,r,n,e.pid,i));break;case Ts:di.parseADTSAACPayload(c,r);break;case Cs:di.parseLOASAACPayload(c,r);break;case Ds:case Ls:break;case Fs:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,n,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,n,e.pid,i);break;case Ps:di.parseH264Payload(c,r,n,e.random_access_indicator);break;case Ms:di.parseH265Payload(c,r,n,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===ks){let r,n=6;r=0!==s?s:t.byteLength-n;let a=t.subarray(n,n+r);di.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,s=1&e[5],n=e[6];e[7];let a=null;if(1===s&&0===n)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=di.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===s&&0===n&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),di.pat_=a,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],s=e[3]<<8|e[4],n=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=di._initPmt(),r.program_number=s,r.version_number=n,di.program_pmt_map_[s]=r;else if(r=di.program_pmt_map_[s],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Kr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Fr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let s=di.media_info_;s.hasVideo=!0,s.width=t.codecWidth,s.height=t.codecHeight,s.fps=t.frameRate.fps,s.profile=t.profile,s.level=t.level,s.refFrames=e.ref_frames,s.chromaFormat=e.chroma_format_string,s.sarNum=t.sarRatio.width,s.sarDen=t.sarRatio.height,s.videoCodec=t.codec,s.hasAudio&&s.audioCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Jt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};di.audio_track_.samples.push(n),di.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(di.aac_last_incomplete_data_=n.getIncompleteData()),s&&(di.audio_last_sample_pts_=s)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Qt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame(lr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};di.audio_track_.samples.push(n),di.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(di.aac_last_incomplete_data_=n.getIncompleteData()),s&&(di.audio_last_sample_pts_=s)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],s=[11025,12e3,8e3,0],n=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(n){case 0:l=s[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ne};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new $s(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const s=qt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(s,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,s){let n=new Ns;if(n.pid=i,n.stream_id=s,n.len=e.byteLength,n.data=e,null!=t){let e=Math.floor(t/di.timescale_);n.pts=e}else n.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);n.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?di._doDecodeVideo({...e,payload:t}):e.type===ne&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Zr(t,e.isIFrame):Pr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;vr(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ne,ts:e.dts,isIFrame:!1,cts:0})}},li=null;wr()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new ms,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!br(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===vt,isStateClosed:()=>li.getState()===bt,isStateEnded:()=>li.getState()===yt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,St,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,wt,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(br(li.hasInit))if(r&&e[1]===xt){const i=15&e[0];if(i===Me&&br(ci._opt.supportMSEDecodeHevc))return void li.emitError(Fe.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:P,code:i});const s=new Uint8Array(e);postMessage({cmd:M,buffer:s,codecId:i},[s.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Pe?r=Dr(e.slice(5)):t===Me&&(r=jr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Fe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(yr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eE,_decodeConfigurationRecord(e,t,r,i){let s=e.slice(5),n={};if(i===Pe?n=Dr(s):i===Me&&(n=qr(s)),li.videoInfo.width=n.codecWidth,li.videoInfo.height=n.codecHeight,0===n.codecWidth&&0===n.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(n)),li.emitError(Fe.mediaSourceDecoderConfigurationError,`width is ${0===n.codecWidth} and height is ${n.codecHeight}`),!1;const a={id:Ft,type:"video",timescale:1e3,duration:0,avcc:s,codecWidth:n.codecWidth,codecHeight:n.codecHeight,videoType:n.videoType},o=_s.generateInitSegment(a);li.isAvc=i===Pe;let d=n.codec;return li.videoMimeType=d?`video/mp4; codecs="${n.codec}"`:li.isAvc?_t:gt,postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),li._initSourceBuffer(),li.appendBuffer(o.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,s=r===He,n=r===Oe;if(br(n||s))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Fe.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Yt(e)){if(o=Zt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!s)return!1;if(o=Bs(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;s&&br(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=_s.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),br(li.isAudioInitInfo)&&(Ar=r===Oe?i?16:8:0===i?8:16,postMessage({cmd:L,code:r}),postMessage({cmd:D,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:Ar}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=n,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Fe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,s){let n=e.slice(5),a=n.byteLength;if(0===a)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=o,d=!0);const l=o-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(_s.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=_s.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),li.appendBuffer(s.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Ft,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=a,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=n,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),s=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(_s.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=_s.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),li.appendAudioBuffer(s.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=It,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=s,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),br(li.getSourceBufferUpdating())&&li.isStateOpen()&&br(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),br(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&br(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Fe.mediaSourceAudioInitTimeout)}),1e3)));if(br(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(br(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:s,end:t})}}else n=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:s,end:t})}}else nli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&br(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&br(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&br(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&br(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(br(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Ct,_opt:Vr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Qe,wasmDecodeDelay:je-Je});postMessage({cmd:O,type:Te,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ne)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Qe=!1,ci.delay=t-r):(Qe=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ne)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===ae&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ne?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===ae&&a.decode?a.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===s.length)return;const t=e.ts,i=s[0],n=e.type===ae&&yr(e.payload);if(br(r))n&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${n}`),s.shift(),ci.doDecode(i));else{const r=i.ts-t,a=i.type===ne&&e.type===ae;(r<=20||a||n)&&(ci.debugLog("worker",`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 ${a} and isVideoSqeHeader is ${n}`),s.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===y,t=ci._opt.playType===v;if(ni.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),a&&ci._opt.useWCS&&ci.useOffscreen()&&a.init(),br(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(s.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${s.length}`);if(ci.dropping){for(r=s.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${s.length}`);!r.isIFrame&&s.length;)r=s.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;s.length;)r=s.shift(),ci.doDecode(r);else if(r=s[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),s.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:$})):(s.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;s.length;){if(r=s[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${s.length}`);break}s.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();tt||(tt=e);const r=e-tt;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),tt=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(br(ci._opt.checkFirstIFrame)&&(Se=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:re,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;s.length&&(e=s.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Yr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Br=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&br(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,tt=null,Qe=!1,je=0,Je=0,a&&(a.destroy&&a.destroy(),a=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Vr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),s=[],n=[],u&&(u.close(),u=null),w=null,S=null,U=!1,we=!1,Se=!1,Xt=!1,er=!1,or=!1,Er=null,At=[],Ot=0,Gt=0,it=null,ut=null,$t=null,Ht=null,Ar=null,Vt=0,Wt=0,Bt=null,kt=null,ci.fetchStatus=Ct,Ur=!0,ni.destroy(),ai.destroy(),oi.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===ne&&Yt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&yr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:ee,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===b)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:R,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ne&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Kt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===ae){if(Vt>0){const e=t.ts-Ht,r=Vt+Vt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Vt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Wt}`),Ht-t.ts>E&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Vt=0),ci._opt.isDropSameTimestampGop&&br(t.isIFrame)&&Se)){const e=ci.hasIframeInBufferList(),t=br(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),vr(ci._opt.checkFirstIFrame)&&vr(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:te}))))}Ht>0&&(Vt=t.ts-Ht),Wt=e.byteLength,Ht=t.ts}if(Se){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${s.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;s.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${s.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return s.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>s.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return s.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return s.forEach((t=>{t.type===ne&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?ni.lastBuf&&(e=ni.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&ai.mp4Box&&(e=ai.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=dr((e=>{postMessage({cmd:O,type:Ae,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(ai.listenMp4Box(),ci._opt.isFmp4Private&&ai.initTransportDescarmber()),t.protocol===m){t.isFlv&&(u=new xr(ci.demuxFlv())),o=new AbortController;const r=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(vr(Br))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Ct,void e.body.cancel();if(!_r(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Yr(),void postMessage({cmd:O,type:Fe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:ke}),fr())ci.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):vr(Br)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Lt,void Yr()):void("string"!=typeof e?(ci.fetchStatus=Dt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Lt,Yr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:_,msg:"fetch done"})):postMessage({cmd:O,type:Ce})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Ut?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:s}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Lt,Yr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:_,msg:"fetch done"})):postMessage({cmd:O,type:Ce}))):o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):vr(Br)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Lt,void Yr()):void("string"!=typeof s?(ci.fetchStatus=Dt,l(s.byteLength),t.isFlv?u.write(s):t.isFmp4?ci.demuxFmp4(s):t.isMpeg4?ci.demuxMpeg4(s):t.isTs?ci.demuxTs(s):t.isNakedFlow&&ci.demuxNakedFlow(s),i()):ci.debugWarn("worker",`fetchNext().then() and value "${s}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Ut?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Ut?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===p&&(t.isFlv&&(u=new xr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:ke}),postMessage({cmd:O,type:Le})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),vr(Br)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:g,msg:e.code})):postMessage({cmd:O,type:Ce}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):vr(Br)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Fe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 oe:if(a.byteLength>0){let e=a;vr(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(a)),ci.decode(e,{type:ne,ts:n})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case de:if(a.byteLength>=6){const e=a[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(a,n);else{const e=15&a[0];let t=a[0]>>4===Tt;const i=e===Me;if(br(t)&&vr(Sr(a,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&yr(a)&&null===ci.isHevc){const e=15&a[0];ci.isHevc=e===Me,Er=sr(a,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Er}`)}t&&ci.calcIframeIntervalTimestamp(n),ci.isPlayer&&ci.calcNetworkDelay(n),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let s=r[0],o=ci.cryptoPayload(a,t);ci.decode(o,{type:ae,ts:n,isIFrame:t,cts:s})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case le:postMessage({cmd:Z,buffer:a},[a.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ne?ci._opt.hasAudio&&(postMessage({cmd:O,type:Be,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&ci._opt.hasVideo&&(postMessage({cmd:O,type:Ue,value:e.byteLength}),postMessage({cmd:O,type:xe,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Oi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?rn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):ds(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=fs(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Oe&&(t=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,s=e[0]>>1&1;if(Ar=r===Oe?s?16:8:0===s?8:16,ui&&ui.setCodec||!br(i))if(Yt(e)||r===Ge||r===$e||r===He){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const s=r===Oe?e.slice(2):new Uint8Array(0);if(i){if(r===He)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,s);r===Oe&&postMessage({cmd:I,buffer:s},[s.buffer]),we=!0,r!==Oe&&(r===He?(ci.mp3Demuxer||(ci.mp3Demuxer=new cs(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:H})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(vr(r)&&vr(ci._opt.mseDecodeAudio))postMessage({cmd:N,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(we){if(Yt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===He?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Oe?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!br(i))if(yr(e))if(r===Pe||r===Me){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Pe&&ci._opt.useSIMD){const e=Dr(t);if(e.codecWidth>A||e.codecHeight>A)return postMessage({cmd:q,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const s=new Uint8Array(e);U=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:P,code:r}),postMessage({cmd:M,buffer:s,codecId:r},[s.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,s){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,s,n);else if(vr(r))postMessage({cmd:z,payload:e,isIFrame:s,ts:t,cts:n,delay:ci.delay},[e.buffer]);else if(U)if(!Se&&s&&(Se=!0),Se){if(s&&yr(e)){const t=15&e[0];let r={};t===Pe?r=Dr(e.slice(5)):t===Me&&(r=jr(e)),r.codecWidth&&r.codecHeight&&w&&S&&(r.codecWidth!==w||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${w}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),er=!0,postMessage({cmd:W,value:`width: ${w}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(er)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(or)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(yr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${s.length}, need clear is ${e}`),e&&(s=[]),ci.isPlayer&&(ci.resetAllDelay(),vr(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:$}))),vr(ci._opt.checkFirstIFrame)&&br(r)&&(Se=!1)},dropBuffer$2:function(){if(s.length>0){let e=s.findIndex((e=>vr(e.isIFrame)&&e.type===ae));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:$});const t=s.length;s=s.slice(e);const r=s.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${s.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===s.length&&(ci.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 ne:ci.decode(new Uint8Array(e,5),{type:ne,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),s=i[0];if(ci._isEnhancedH265Header(s))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),yr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Me}ci.isPlayer&&ci.calcNetworkDelay(r),n[0]=i[4],n[1]=i[3],n[2]=i[2],n[3]=0;let s=n[0],a=ci.cryptoPayload(i,e);ci.decode(a,{type:ae,ts:r,isIFrame:e,cts:s})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){ni.dispatch(e)},demuxFmp4:function(e){ai.dispatch(e)},demuxMpeg4:function(e){oi.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=br(d),s===Mt){if(i===Nt){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),Er=sr(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Er}`),ci.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(s===Rt){let r=e,s=0;const n=i===Nt;n&&ci.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0],r=Zr(e.slice(8),n),r=ci.cryptoPayload(r,n),ci.decode(r,{type:ae,ts:t,isIFrame:n,cts:s}))}else if(s===zt){const r=i===Nt;r&&ci.calcIframeIntervalTimestamp(t);let s=Zr(e.slice(5),r);s=ci.cryptoPayload(s,r),ci.decode(s,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Pt)===Pt},findSei:function(e,t){let r=4;cr(Er)&&(r=Er),tr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===ft||r===ht),s=br(ci.isHevc)&&r===Ke;if(i||s){const r=rr(e,ci.isHevc);postMessage({cmd:X,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Se&&e>0))return;null===it?(it=e,ut=nr()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===y&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${it} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:De,value:i}))},calcIframeIntervalTimestamp:function(e){null===$t?$t=e:$t=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&vr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){br(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Xt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),Xt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:P,code:e}),postMessage({cmd:k,w:t,h:r}),w=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:D,sampleRate:t,channels:r,depth:Ar}),Gt=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=w*S*3/2;let s=e.HEAPU8.subarray(t,t+i),n=new Uint8Array(s);if(Bt=null,Je=r,ci.useOffscreen())try{if(Xt)return;ci.webglObj.renderYUV(w,S,n);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:T,output:n,delay:ci.delay,ts:r},[n.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ci._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(Ot){if(!(s>=(r=d-Ot)))return Ot+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==Gt&&(n[1]=Float32Array.of(...n[1],...a[1])));At[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==Gt&&(At[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer))),o=r,s-=r}for(Ot=s;Ot>=d;Ot-=d)At[0]=a[0].slice(o,o+=d),2==Gt&&(At[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer)));Ot&&(n[0]=a[0].slice(o),2==Gt&&(n[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===Bt&&(Bt=nr());const t=nr(),r=ar(kt>0?2*kt:5e3,1e3,5e3),i=t-Bt;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${kt} and diff is ${i} and maxDiff is ${r}\n and replay`),or=!0,postMessage({cmd:j}))},sendWebsocketMessage:function(e){d?d.readyState===Ie?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:H})},postStreamToMain(e,t){postMessage({cmd:K,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),vr(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,w=e,S=t,postMessage({cmd:k,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Gt=e,postMessage({cmd:D,sampleRate:t,channels:e,depth:Ar})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ci._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(Ot){if(!(s>=(r=d-Ot)))return Ot+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==Gt&&(n[1]=Float32Array.of(...n[1],...a[1])));At[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==Gt&&(At[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer))),o=r,s-=r}for(Ot=s;Ot>=d;Ot-=d)At[0]=a[0].slice(o,o+=d),2==Gt&&(At[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer)));Ot&&(n[0]=a[0].slice(o),2==Gt&&(n[1]=a[1].slice(o))),a=[]},draw:function(t,r,i,s){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const n=e.HEAPU8.subarray(r,r+Cr),a=e.HEAPU8.subarray(i,i+Hr),o=e.HEAPU8.subarray(s,s+Hr),d=new Uint8Array(Cr+Hr+Hr);if(d.set(n),d.set(a,Cr),d.set(o,Cr+Hr),Bt=null,Je=t,ci.useOffscreen())try{if(Xt)return;ci.webglObj.renderYUV(w,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:T,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:x}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ce:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case ue:ci.pushBuffer(t.buffer,t.options);break;case he:ci.decodeAudio(t.buffer,t.ts);break;case fe:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:ci.clearBuffer(t.needClear);break;case ge:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case pe:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&br(t.options.isVideoInited)&&(Ur=t.options.isVideoInited),ci.close();break;case me:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case ye:ci.sendWebsocketMessage(t.message);break;case ve:li.$video.currentTime=Number(t.message);break;case be:ci.updatePlaybackIsPause(t.isPause)}}}(e,e)}))})); diff --git a/demo/public/pro/js/decoder-pro-hard-not-wasm.js b/demo/public/pro/js/decoder-pro-hard-not-wasm.js index 3d1ab05f..5dd58459 100644 --- a/demo/public/pro/js/decoder-pro-hard-not-wasm.js +++ b/demo/public/pro/js/decoder-pro-hard-not-wasm.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(e),s=1e-6,a="undefined"!=typeof Float32Array?Float32Array:Array;function n(){var e=new a(16);return a!=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 d,l=function(e,t,i,r,s,a,n){var o=1/(t-i),d=1/(r-s),l=1/(a-n);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]=(n+a)*l,e[15]=1,e};function c(e,t,i){var r=new a(3);return r[0]=e,r[1]=t,r[2]=i,r}d=new a(3),a!=Float32Array&&(d[0]=0,d[1]=0,d[2]=0);var u=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const i=function(){const t=_(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 "),i=_(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 "),r=e.createProgram();if(e.attachShader(r,t),e.attachShader(r,i),e.linkProgram(r),!e.getProgramParameter(r,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(r)),null;return r}();let r={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")}},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 i=[];i=i.concat([0,1],[1,1],[1,0],[0,0]);const r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(i),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:r,indices:s}}(),d=p(),u=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 _(t,i){const r=e.createShader(t);return e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(r)),e.deleteShader(r),null)}function m(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 d=n();l(d,-1,1,-1,1,.1,100);const p=n();o(p);const _=n();!function(e,t,i,r){var a,n,d,l,c,u,h,f,p,_,m=t[0],g=t[1],y=t[2],b=r[0],v=r[1],S=r[2],w=i[0],A=i[1],B=i[2];Math.abs(m-w)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)}}const Ht=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Vt=Ht,$t=Ht;function Wt(e){let{profile:t,sampleRate:i,channel:r}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|r<<3])}function Yt(e){return qt(e)&&e[1]===Ut}function qt(e){return e[0]>>4===Re}const jt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Kt(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>=jt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=jt[a],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===r&&(n=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Rt.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?a>=6?(r=5,i=new Array(4),n=a-3):(r=2,i=new Array(2),n=a):-1!==l.indexOf("android")?(r=2,i=new Array(2),n=a):(r=5,n=a,i=new Array(4),a>=6?n=a-3:1===d&&(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&d)<<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:d,objectType:r,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+s}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+7>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,r=(8&e[i+1])>>>3,s=(6&e[i+1])>>>1,a=1&e[i+1],n=(192&e[i+2])>>>6,o=(60&e[i+2])>>>2,d=(1&e[i+2])<<2|(192&e[i+3])>>>6,l=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===a?7:9,u=l-c;i+=c;let h=this.findNextSyncwordOffset(i+u);if(this.current_syncword_offset_=h,0!==r&&1!==r||0!==s)continue;let f=e.subarray(i,i+u);t={},t.audio_object_type=n+1,t.sampling_freq_index=o,t.sampling_frequency=Vt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Zt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let r=0;r<=t;r++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let r=this.current_syncword_offset_,s=(31&t[r+1])<<8|t[r+2];if(r+3+s>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let a=new Ot(t.subarray(r+3,r+3+s)),n=null;if(a.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(r+3+s),a.destroy();continue}n=e}else{let e=a.readBool();if(e&&a.readBool()){console.error("audioMuxVersionA is Not Supported"),a.destroy();break}if(e&&this.getLATMValue(a),!a.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),a.destroy();break}if(0!==a.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),a.destroy();break}if(0!==a.readBits(4)){console.error("more than 2 numProgram Not Supported"),a.destroy();break}if(0!==a.readBits(3)){console.error("more than 2 numLayer Not Supported"),a.destroy();break}let t=e?this.getLATMValue(a):0,i=a.readBits(5);t-=5;let r=a.readBits(4);t-=4;let s=a.readBits(4);t-=4,a.readBits(3),t-=3,t>0&&a.readBits(t);let o=a.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),a.destroy();break}a.readByte();let d=a.readBool();if(d)if(e)this.getLATMValue(a);else{let e=0;for(;;){e<<=8;let t=a.readBool();if(e+=a.readByte(),!t)break}console.log(e)}a.readBool()&&a.readByte(),n={},n.audio_object_type=i,n.sampling_freq_index=r,n.sampling_frequency=Vt[n.sampling_freq_index],n.channel_config=s,n.other_data_present=d}let o=0;for(;;){let e=a.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 ei(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++;return{payload:e.subarray(r),type:s,size:a,uuid:n}}function ti(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 ii(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 ri(){return(new Date).getTime()}function si(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function ai(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function ni(e){let t=0,i=ai();return r=>{if(s=r,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=r;const a=ai(),n=a-i;n>=1e3&&(e(t/n*1e3),i=a,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){}})();function oi(e){return null==e}function di(e){return!oi(e)}function li(e){return"function"==typeof e}function ci(e){let t=null,i=31&e[0];return i!==He&&i!==Ve||(t=Me),t||(i=(126&e[0])>>1,i!==rt&&i!==at&&i!==ot||(t=ze)),t}function ui(){return"undefined"!=typeof WritableStream}function hi(e){e.close()}function fi(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 pi(e){return e.ok&&e.status>=200&&e.status<=299}function _i(){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}(B)}function mi(e){return e[0]>>4===Et&&e[1]===Ut}function gi(e){return!0===e||"true"===e}function yi(e){return!0!==e&&"true"!==e}function bi(){return!!(Rt.Worker&&Rt.MediaSource&&"canConstructInDedicatedWorker"in Rt.MediaSource&&!0===Rt.MediaSource.canConstructInDedicatedWorker)}function vi(e,t){const i=Qt(e.slice(5));let r=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===Ze||i===Qe||i===tt)||yi(t)&&i===$e)&&(r=!0)})),r}var Si=function(e,t,i,r){return new(i||(i=Promise))((function(s,a){function n(e){try{d(r.next(e))}catch(e){a(e)}}function o(e){try{d(r.throw(e))}catch(e){a(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(n,o)}d((r=r.apply(e,t||[])).next())}))};const wi=Symbol(32),Ai=Symbol(16),Bi=Symbol(8);class Ui{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 Si(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(wi)}readU16(){return this.read(Ai)}readU8(){return this.read(Bi)}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===wi){if(r(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Ai){if(r(2))return;e=t[0]<<8|t[1]}else if(this.need===Bi){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}}Ui.U32=wi,Ui.U16=Ai,Ui.U8=Bi;class Ei{constructor(e){this.log=function(t){if(e._opt.debugLevel==b){const a=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var i=arguments.length,r=new Array(i>1?i-1:0),s=1;s1?i-1:0),s=1;s1?r-1:0),a=1;a=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=xi._ebsp2rbsp(e),i=new Ot(t);i.readByte();let r=i.readByte();i.readByte();let s=i.readByte();i.readUEG();let a=xi.getProfileString(r),n=xi.getLevelString(s),o=1,d=420,l=[0,420,422,444],c=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]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(v=t[e-1],S=r[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),S=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);A=i.readBool(),B=t,U=2*e,w=B/U}}let E=1;1===v&&1===S||(E=v/S);let x=0,T=0;if(0===o)x=1,T=2-_;else{x=3===o?1:2,T=(1===o?2:1)*(2-_)}let k=16*(f+1),C=16*(p+1)*(2-_);k-=(m+g)*x,C-=(y+b)*T;let L=Math.ceil(k*E);return i.destroy(),i=null,{profile_string:a,level_string:n,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:xi.getChromaFormatString(d),frame_rate:{fixed:A,fps:w,fps_den:U,fps_num:B},sar_ratio:{width:v,height:S},codec_size:{width:k,height:C},present_size:{width:L,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=xi._ebsp2rbsp(e),s=new Ot(r);s.readByte();let a=s.readByte();s.readByte();let n=s.readByte();s.readUEG();let o=xi.getProfileString(a),d=xi.getLevelString(n),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===a||110===a||122===a||244===a||44===a||83===a||86===a||118===a||128===a||138===a||144===a)&&(l=s.readUEG(),3===l&&s.readBits(1),l<=3&&(c=u[l]),h=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?(A=t[e-1],B=i[e-1]):255===e&&(A=s.readByte()<<8|s.readByte(),B=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);E=s.readBool(),x=t,T=2*e,U=x/T}}let k=1;1===A&&1===B||(k=A/B);let C=0,L=0;if(0===l)C=1,L=2-y;else{C=3===l?1:2,L=(1===l?2:1)*(2-y)}let D=16*(m+1),I=16*(g+1)*(2-y);D-=(b+v)*C,I-=(S+w)*L;let F=Math.ceil(D*k);return s.destroy(),s=null,{codec_mimetype:i,profile_idc:a,level_idc:n,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:_,chroma_format:c,chroma_format_string:xi.getChromaFormatString(c),frame_rate:{fixed:E,fps:U,fps_den:T,fps_num:x},sar_ratio:{width:A,height:B},codec_size:{width:D,height:I},present_size:{width:F,height:I}}}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 Ci(e){let{sps:t,pps:i}=e;const r=[23,0,0,0,0,1,66,0,30,255];r[0]=23,r[6]=t[1],r[7]=t[2],r[8]=t[3],r[10]=225,r[11]=t.byteLength>>8&255,r[12]=255&t.byteLength,r.push(...t,1,i.byteLength>>8&255,255&i.byteLength,...i);return new Uint8Array(r)}function Li(e){let{sps:t,pps:i}=e,r=8+t.byteLength+1+2+i.byteLength,s=!1;const a=xi.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(s=!0,r+=4);let n=new Uint8Array(r);n[0]=1,n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=255,n[5]=225;let o=t.byteLength;n[6]=o>>>8,n[7]=255&o;let d=8;n.set(t,8),d+=o,n[d]=1;let l=i.byteLength;n[d+1]=l>>>8,n[d+2]=255&l,n.set(i,d+3),d+=3+l,s&&(n[d]=252|a.chroma_format_idc,n[d+1]=248|a.bit_depth_luma-8,n[d+2]=248|a.bit_depth_chroma-8,n[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+n.byteLength);return u.set(c,0),u.set(n,c.length),u}function Di(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}function Ii(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 Fi(e){return 31&e[0]}function Pi(e){return e===qe}function Mi(e){return!function(e){return e===He||e===Ve}(e)&&!Pi(e)}function zi(e){return e===$e}function Ri(e){if(0===e.length)return!1;const t=Fi(e[0]);for(let i=1;i=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===r)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let r=31&e[i],s=(128&e[i])>>>7,a=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=a,r>=Xe||0===s&&(t={type:r,data:e.subarray(i,a)})}return t}}class Gi{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Oi=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)},Hi=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"}};class Vi{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=Vi._ebsp2rbsp(e),i=new Ot(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=Vi._ebsp2rbsp(e),i=new Ot(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 d=i.readBits(2),l=i.readBool(),c=i.readBits(5),u=i.readByte(),h=i.readByte(),f=i.readByte(),p=i.readByte(),_=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),b=i.readByte(),v=i.readByte(),S=i.readByte(),w=[],A=[];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?(F=t[e-1],P=r[e-1]):255===e&&(F=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(),D=i.readBool(),D&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()){if(z=i.readBits(32),R=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();M=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=Oi(e),i=new Ot(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()}})(t),n=(e=>{let t=Oi(e),i=new Ot(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 d=i.readBits(2),l=i.readBool(),c=i.readBits(5),u=i.readByte(),h=i.readByte(),f=i.readByte(),p=i.readByte(),_=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),b=i.readByte(),v=i.readByte(),S=i.readByte(),w=[],A=[];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?(F=t[e-1],P=r[e-1]):255===e&&(F=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())),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),D=i.readBool(),D&&(r+=i.readUEG(),s+=i.readUEG(),a+=i.readUEG(),n+=i.readUEG()),i.readBool()&&(z=i.readBits(32),R=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();M=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=Oi(e),i=new Ot(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}})(i);s=Object.assign(s,a,n,o);let d=23+(5+t.byteLength)+(5+r.byteLength)+(5+i.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&s.general_profile_space)<<6|(s.general_tier_flag?1:0)<<5|31&s.general_profile_idc,l[2]=s.general_profile_compatibility_flags_1||0,l[3]=s.general_profile_compatibility_flags_2||0,l[4]=s.general_profile_compatibility_flags_3||0,l[5]=s.general_profile_compatibility_flags_4||0,l[6]=s.general_constraint_indicator_flags_1||0,l[7]=s.general_constraint_indicator_flags_2||0,l[8]=s.general_constraint_indicator_flags_3||0,l[9]=s.general_constraint_indicator_flags_4||0,l[10]=s.general_constraint_indicator_flags_5||0,l[11]=s.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&s.min_spatial_segmentation_idc)>>8,l[14]=255&s.min_spatial_segmentation_idc,l[15]=252|3&s.parallelismType,l[16]=252|3&s.chroma_format_idc,l[17]=248|7&s.bit_depth_luma_minus8,l[18]=248|7&s.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&s.constant_frame_rate)<<6|(7&s.num_temporal_layers)<<3|(s.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|rt,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|at,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+r.byteLength)+0]=128|ot,l[23+(5+t.byteLength+5+r.byteLength)+1]=0,l[23+(5+t.byteLength+5+r.byteLength)+2]=1,l[23+(5+t.byteLength+5+r.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength+5+r.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength+5+r.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function ji(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}function Ki(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 Xi(e){return(126&e[0])>>1}function Zi(e){return e===lt}function Ji(e){return!function(e){return e>=32&&e<=40}(e)}function Qi(e){return e>=16&&e<=21}function er(e){if(0===e.length)return!1;const t=Xi(e[0]);for(let i=1;i=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===r)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let r=e[i]>>1&63,s=(128&e[i])>>>7,a=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=a,0===s&&(t={type:r,data:e.subarray(i,a)})}return t}}class ir{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function rr(e){return parseInt(e)===e}function sr(e){if(!rr(e.length))return!1;for(var t=0;t255)return!1;return!0}function ar(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(!sr(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(rr(e.length)&&sr(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function nr(e){return new Uint8Array(e)}function or(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 dr,lr={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("")}},cr=(dr="0123456789abcdef",{toBytes:function(e){for(var t=[],i=0;i>4]+dr[15&r])}return t.join("")}}),ur={16:10,24:12,32:14},hr=[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],fr=[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],pr=[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],_r=[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],mr=[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],gr=[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],yr=[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],br=[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],vr=[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],Sr=[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],wr=[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],Br=[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],Ur=[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],Er=[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 xr(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,d=s;d>16&255]<<24^fr[n>>8&255]<<16^fr[255&n]<<8^fr[n>>24&255]^hr[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^fr[n>>16&255]<<16^fr[n>>24&255]<<24;for(t=s/2+1;t>2,c=d%4,this._Ke[l][c]=a[t],this._Kd[e-l][c]=a[t++],d++}for(var l=1;l>24&255]^Br[n>>16&255]^Ur[n>>8&255]^Er[255&n]},Tr.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=xr(e),s=0;s<4;s++)r[s]^=this._Ke[0][s];for(var a=1;a>24&255]^mr[r[(s+1)%4]>>16&255]^gr[r[(s+2)%4]>>8&255]^yr[255&r[(s+3)%4]]^this._Ke[a][s];r=i.slice()}var n,o=nr(16);for(s=0;s<4;s++)n=this._Ke[t][s],o[4*s]=255&(fr[r[s]>>24&255]^n>>24),o[4*s+1]=255&(fr[r[(s+1)%4]>>16&255]^n>>16),o[4*s+2]=255&(fr[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(fr[255&r[(s+3)%4]]^n);return o},Tr.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=xr(e),s=0;s<4;s++)r[s]^=this._Kd[0][s];for(var a=1;a>24&255]^vr[r[(s+3)%4]>>16&255]^Sr[r[(s+2)%4]>>8&255]^wr[255&r[(s+1)%4]]^this._Kd[a][s];r=i.slice()}var n,o=nr(16);for(s=0;s<4;s++)n=this._Kd[t][s],o[4*s]=255&(pr[r[s]>>24&255]^n>>24),o[4*s+1]=255&(pr[r[(s+3)%4]>>16&255]^n>>16),o[4*s+2]=255&(pr[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(pr[255&r[(s+1)%4]]^n);return o};var kr=function(e){if(!(this instanceof kr))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Tr(e)};kr.prototype.encrypt=function(e){if((e=ar(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=nr(e.length),i=nr(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)},Ir.prototype.setBytes=function(e){if(16!=(e=ar(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ir.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Fr=function(e,t){if(!(this instanceof Fr))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ir||(t=new Ir(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Tr(e)};Fr.prototype.encrypt=function(e){for(var t=ar(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,r=0;r>>2]>>>24-a%4*8&255;t[r+a>>>2]|=n<<24-(r+a)%4*8}else for(var o=0;o>>2]=i[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,i=this.sigBytes;t[i>>>2]&=4294967295<<32-i%4*8,t.length=e.ceil(i/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],i=0;i>>2]>>>24-s%4*8&255;r.push((a>>>4).toString(16)),r.push((15&a).toString(16))}return r.join("")},parse:function(e){for(var t=e.length,i=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new l.init(i,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],s=0;s>>2]>>>24-s%4*8&255;r.push(String.fromCharCode(a))}return r.join("")},parse:function(e){for(var t=e.length,i=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new l.init(i,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var i,r=this._data,s=r.words,a=r.sigBytes,n=this.blockSize,o=a/(4*n),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*n,c=e.min(4*d,a);if(d){for(var u=0;u>>2]|=e[s]<<24-s%4*8;t.call(this,r,i)}else t.apply(this,arguments)};r.prototype=e}}(),i.lib.WordArray)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.WordArray,r=e.enc;function s(e){return e<<8&4278255360|e>>>8&16711935}r.Utf16=r.Utf16BE={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],s=0;s>>2]>>>16-s%4*8&65535;r.push(String.fromCharCode(a))}return r.join("")},parse:function(e){for(var i=e.length,r=[],s=0;s>>1]|=e.charCodeAt(s)<<16-s%2*16;return t.create(r,2*i)}},r.Utf16LE={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],a=0;a>>2]>>>16-a%4*8&65535);r.push(String.fromCharCode(n))}return r.join("")},parse:function(e){for(var i=e.length,r=[],a=0;a>>1]|=s(e.charCodeAt(a)<<16-a%2*16);return t.create(r,2*i)}}}(),i.enc.Utf16)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.WordArray;function r(e,i,r){for(var s=[],a=0,n=0;n>>6-n%4*2;s[a>>>2]|=o<<24-a%4*8,a++}return t.create(s,a)}e.enc.Base64={stringify:function(e){var t=e.words,i=e.sigBytes,r=this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255,o=0;o<4&&a+.75*o>>6*(3-o)&63));var d=r.charAt(64);if(d)for(;s.length%4;)s.push(d);return s.join("")},parse:function(e){var t=e.length,i=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>6-n%4*2;s[a>>>2]|=o<<24-a%4*8,a++}return t.create(s,a)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var i=e.words,r=e.sigBytes,s=t?this._safe_map:this._map;e.clamp();for(var a=[],n=0;n>>2]>>>24-n%4*8&255)<<16|(i[n+1>>>2]>>>24-(n+1)%4*8&255)<<8|i[n+2>>>2]>>>24-(n+2)%4*8&255,d=0;d<4&&n+.75*d>>6*(3-d)&63));var l=s.charAt(64);if(l)for(;a.length%4;)a.push(l);return a.join("")},parse:function(e,t){void 0===t&&(t=!0);var i=e.length,s=t?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var n=0;n>>24)|4278255360&(s<<24|s>>>8)}var a=this._hash.words,n=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],_=e[t+4],m=e[t+5],g=e[t+6],y=e[t+7],b=e[t+8],v=e[t+9],S=e[t+10],w=e[t+11],A=e[t+12],B=e[t+13],U=e[t+14],E=e[t+15],x=a[0],T=a[1],k=a[2],C=a[3];x=l(x,T,k,C,n,7,o[0]),C=l(C,x,T,k,d,12,o[1]),k=l(k,C,x,T,f,17,o[2]),T=l(T,k,C,x,p,22,o[3]),x=l(x,T,k,C,_,7,o[4]),C=l(C,x,T,k,m,12,o[5]),k=l(k,C,x,T,g,17,o[6]),T=l(T,k,C,x,y,22,o[7]),x=l(x,T,k,C,b,7,o[8]),C=l(C,x,T,k,v,12,o[9]),k=l(k,C,x,T,S,17,o[10]),T=l(T,k,C,x,w,22,o[11]),x=l(x,T,k,C,A,7,o[12]),C=l(C,x,T,k,B,12,o[13]),k=l(k,C,x,T,U,17,o[14]),x=c(x,T=l(T,k,C,x,E,22,o[15]),k,C,d,5,o[16]),C=c(C,x,T,k,g,9,o[17]),k=c(k,C,x,T,w,14,o[18]),T=c(T,k,C,x,n,20,o[19]),x=c(x,T,k,C,m,5,o[20]),C=c(C,x,T,k,S,9,o[21]),k=c(k,C,x,T,E,14,o[22]),T=c(T,k,C,x,_,20,o[23]),x=c(x,T,k,C,v,5,o[24]),C=c(C,x,T,k,U,9,o[25]),k=c(k,C,x,T,p,14,o[26]),T=c(T,k,C,x,b,20,o[27]),x=c(x,T,k,C,B,5,o[28]),C=c(C,x,T,k,f,9,o[29]),k=c(k,C,x,T,y,14,o[30]),x=u(x,T=c(T,k,C,x,A,20,o[31]),k,C,m,4,o[32]),C=u(C,x,T,k,b,11,o[33]),k=u(k,C,x,T,w,16,o[34]),T=u(T,k,C,x,U,23,o[35]),x=u(x,T,k,C,d,4,o[36]),C=u(C,x,T,k,_,11,o[37]),k=u(k,C,x,T,y,16,o[38]),T=u(T,k,C,x,S,23,o[39]),x=u(x,T,k,C,B,4,o[40]),C=u(C,x,T,k,n,11,o[41]),k=u(k,C,x,T,p,16,o[42]),T=u(T,k,C,x,g,23,o[43]),x=u(x,T,k,C,v,4,o[44]),C=u(C,x,T,k,A,11,o[45]),k=u(k,C,x,T,E,16,o[46]),x=h(x,T=u(T,k,C,x,f,23,o[47]),k,C,n,6,o[48]),C=h(C,x,T,k,y,10,o[49]),k=h(k,C,x,T,U,15,o[50]),T=h(T,k,C,x,m,21,o[51]),x=h(x,T,k,C,A,6,o[52]),C=h(C,x,T,k,p,10,o[53]),k=h(k,C,x,T,S,15,o[54]),T=h(T,k,C,x,d,21,o[55]),x=h(x,T,k,C,b,6,o[56]),C=h(C,x,T,k,E,10,o[57]),k=h(k,C,x,T,g,15,o[58]),T=h(T,k,C,x,B,21,o[59]),x=h(x,T,k,C,_,6,o[60]),C=h(C,x,T,k,w,10,o[61]),k=h(k,C,x,T,f,15,o[62]),T=h(T,k,C,x,v,21,o[63]),a[0]=a[0]+x|0,a[1]=a[1]+T|0,a[2]=a[2]+k|0,a[3]=a[3]+C|0},_doFinalize:function(){var t=this._data,i=t.words,r=8*this._nDataBytes,s=8*t.sigBytes;i[s>>>5]|=128<<24-s%32;var a=e.floor(r/4294967296),n=r;i[15+(s+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),i[14+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),t.sigBytes=4*(i.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,i,r,s,a,n){var o=e+(t&i|~t&r)+s+n;return(o<>>32-a)+t}function c(e,t,i,r,s,a,n){var o=e+(t&r|i&~r)+s+n;return(o<>>32-a)+t}function u(e,t,i,r,s,a,n){var o=e+(t^i^r)+s+n;return(o<>>32-a)+t}function h(e,t,i,r,s,a,n){var o=e+(i^(t|~r))+s+n;return(o<>>32-a)+t}t.MD5=a._createHelper(d),t.HmacMD5=a._createHmacHelper(d)}(Math),i.MD5)})),Gt((function(e,t){var i,r,s,a,n,o,d,l;e.exports=(r=(i=l=Mr).lib,s=r.WordArray,a=r.Hasher,n=i.algo,o=[],d=n.SHA1=a.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],d=i[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(r<<5|r>>>27)+d+o[l];u+=l<20?1518500249+(s&a|~s&n):l<40?1859775393+(s^a^n):l<60?(s&a|s&n|a&n)-1894007588:(s^a^n)-899497514,d=n,n=a,a=s<<30|s>>>2,s=r,r=u}i[0]=i[0]+r|0,i[1]=i[1]+s|0,i[2]=i[2]+a|0,i[3]=i[3]+n|0,i[4]=i[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=Math.floor(i/4294967296),t[15+(r+64>>>9<<4)]=i,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=a._createHelper(d),i.HmacSHA1=a._createHmacHelper(d),l.SHA1)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.algo,o=[],d=[];!function(){function t(t){for(var i=e.sqrt(t),r=2;r<=i;r++)if(!(t%r))return!1;return!0}function i(e){return 4294967296*(e-(0|e))|0}for(var r=2,s=0;s<64;)t(r)&&(s<8&&(o[s]=i(e.pow(r,.5))),d[s]=i(e.pow(r,1/3)),s++),r++}();var l=[],c=n.SHA256=a.extend({_doReset:function(){this._hash=new s.init(o.slice(0))},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],o=i[4],c=i[5],u=i[6],h=i[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,m=l[f-2],g=(m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10;l[f]=_+l[f-7]+g+l[f-16]}var y=r&s^r&a^s&a,b=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),v=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=n+v|0,n=a,a=s,s=r,r=v+(b+y)|0}i[0]=i[0]+r|0,i[1]=i[1]+s|0,i[2]=i[2]+a|0,i[3]=i[3]+n|0,i[4]=i[4]+o|0,i[5]=i[5]+c|0,i[6]=i[6]+u|0,i[7]=i[7]+h|0},_doFinalize:function(){var t=this._data,i=t.words,r=8*this._nDataBytes,s=8*t.sigBytes;return i[s>>>5]|=128<<24-s%32,i[14+(s+64>>>9<<4)]=e.floor(r/4294967296),i[15+(s+64>>>9<<4)]=r,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=a._createHelper(c),t.HmacSHA256=a._createHmacHelper(c)}(Math),i.SHA256)})),Gt((function(e,t){var i,r,s,a,n,o;e.exports=(r=(i=o=Mr).lib.WordArray,s=i.algo,a=s.SHA256,n=s.SHA224=a.extend({_doReset:function(){this._hash=new r.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=a._createHelper(n),i.HmacSHA224=a._createHmacHelper(n),o.SHA224)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.Hasher,r=e.x64,s=r.Word,a=r.WordArray,n=e.algo;function o(){return s.create.apply(s,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=n.SHA512=t.extend({_doReset:function(){this._hash=new a.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],o=i[4],c=i[5],u=i[6],h=i[7],f=r.high,p=r.low,_=s.high,m=s.low,g=a.high,y=a.low,b=n.high,v=n.low,S=o.high,w=o.low,A=c.high,B=c.low,U=u.high,E=u.low,x=h.high,T=h.low,k=f,C=p,L=_,D=m,I=g,F=y,P=b,M=v,z=S,R=w,N=A,G=B,O=U,H=E,V=x,$=T,W=0;W<80;W++){var Y,q,j=l[W];if(W<16)q=j.high=0|e[t+2*W],Y=j.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,ie=ee.low,re=(te>>>19|ie<<13)^(te<<3|ie>>>29)^te>>>6,se=(ie>>>19|te<<13)^(ie<<3|te>>>29)^(ie>>>6|te<<26),ae=l[W-7],ne=ae.high,oe=ae.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ne+((Y=Q+oe)>>>0>>0?1:0))+re+((Y+=se)>>>0>>0?1:0))+le+((Y+=ce)>>>0>>0?1:0),j.high=q,j.low=Y}var ue,he=z&N^~z&O,fe=R&G^~R&H,pe=k&L^k&I^L&I,_e=C&D^C&F^D&F,me=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=d[W],Se=ve.high,we=ve.low,Ae=V+ye+((ue=$+be)>>>0<$>>>0?1:0),Be=ge+_e;V=O,$=H,O=N,H=G,N=z,G=R,z=P+(Ae=(Ae=(Ae=Ae+he+((ue+=fe)>>>0>>0?1:0))+Se+((ue+=we)>>>0>>0?1:0))+q+((ue+=Y)>>>0>>0?1:0))+((R=M+ue|0)>>>0>>0?1:0)|0,P=I,M=F,I=L,F=D,L=k,D=C,k=Ae+(me+pe+(Be>>>0>>0?1:0))+((C=ue+Be|0)>>>0>>0?1:0)|0}p=r.low=p+C,r.high=f+k+(p>>>0>>0?1:0),m=s.low=m+D,s.high=_+L+(m>>>0>>0?1:0),y=a.low=y+F,a.high=g+I+(y>>>0>>0?1:0),v=n.low=v+M,n.high=b+P+(v>>>0>>0?1:0),w=o.low=w+R,o.high=S+z+(w>>>0>>0?1:0),B=c.low=B+G,c.high=A+N+(B>>>0>>0?1:0),E=u.low=E+H,u.high=U+O+(E>>>0>>0?1:0),T=h.low=T+$,h.high=x+V+(T>>>0<$>>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[30+(r+128>>>10<<5)]=Math.floor(i/4294967296),t[31+(r+128>>>10<<5)]=i,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),i.SHA512)})),Gt((function(e,t){var i,r,s,a,n,o,d,l;e.exports=(r=(i=l=Mr).x64,s=r.Word,a=r.WordArray,n=i.algo,o=n.SHA512,d=n.SHA384=o.extend({_doReset:function(){this._hash=new a.init([new s.init(3418070365,3238371032),new s.init(1654270250,914150663),new s.init(2438529370,812702999),new s.init(355462360,4144912697),new s.init(1731405415,4290775857),new s.init(2394180231,1750603025),new s.init(3675008525,1694076839),new s.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=o._createHelper(d),i.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,i=0;i<24;i++){d[e+5*t]=(i+1)*(i+2)/2%64;var r=(2*e+3*t)%5;e=t%5,t=r}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var s=1,a=0;a<24;a++){for(var o=0,u=0,h=0;h<7;h++){if(1&s){var f=(1<>>24)|4278255360&(a<<24|a>>>8),n=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),(T=i[s]).high^=n,T.low^=a}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,_=0;_<5;_++)f^=(T=i[h+5*_]).high,p^=T.low;var m=u[h];m.high=f,m.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],b=y.high,v=y.low;for(f=g.high^(b<<1|v>>>31),p=g.low^(v<<1|b>>>31),_=0;_<5;_++)(T=i[h+5*_]).high^=f,T.low^=p}for(var S=1;S<25;S++){var w=(T=i[S]).high,A=T.low,B=d[S];B<32?(f=w<>>32-B,p=A<>>32-B):(f=A<>>64-B,p=w<>>64-B);var U=u[l[S]];U.high=f,U.low=p}var E=u[0],x=i[0];for(E.high=x.high,E.low=x.low,h=0;h<5;h++)for(_=0;_<5;_++){var T=i[S=h+5*_],k=u[S],C=u[(h+1)%5+5*_],L=u[(h+2)%5+5*_];T.high=k.high^~C.high&L.high,T.low=k.low^~C.low&L.low}T=i[0];var D=c[o];T.high^=D.high,T.low^=D.low}},_doFinalize:function(){var t=this._data,i=t.words;this._nDataBytes;var r=8*t.sigBytes,a=32*this.blockSize;i[r>>>5]|=1<<24-r%32,i[(e.ceil((r+1)/a)*a>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var n=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new s.init(l,o)},clone:function(){for(var e=a.clone.call(this),t=e._state=this._state.slice(0),i=0;i<25;i++)t[i]=t[i].clone();return e}});t.SHA3=a._createHelper(h),t.HmacSHA3=a._createHmacHelper(h)}(Math),i.SHA3)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.algo,o=s.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=s.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=s.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=s.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=s.create([0,1518500249,1859775393,2400959708,2840853838]),h=s.create([1352829926,1548603684,1836072691,2053994217,0]),f=n.RIPEMD160=a.extend({_doReset:function(){this._hash=s.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=0;i<16;i++){var r=t+i,s=e[r];e[r]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}var a,n,f,v,S,w,A,B,U,E,x,T=this._hash.words,k=u.words,C=h.words,L=o.words,D=d.words,I=l.words,F=c.words;for(w=a=T[0],A=n=T[1],B=f=T[2],U=v=T[3],E=S=T[4],i=0;i<80;i+=1)x=a+e[t+L[i]]|0,x+=i<16?p(n,f,v)+k[0]:i<32?_(n,f,v)+k[1]:i<48?m(n,f,v)+k[2]:i<64?g(n,f,v)+k[3]:y(n,f,v)+k[4],x=(x=b(x|=0,I[i]))+S|0,a=S,S=v,v=b(f,10),f=n,n=x,x=w+e[t+D[i]]|0,x+=i<16?y(A,B,U)+C[0]:i<32?g(A,B,U)+C[1]:i<48?m(A,B,U)+C[2]:i<64?_(A,B,U)+C[3]:p(A,B,U)+C[4],x=(x=b(x|=0,F[i]))+E|0,w=E,E=U,U=b(B,10),B=A,A=x;x=T[1]+f+U|0,T[1]=T[2]+v+E|0,T[2]=T[3]+S+w|0,T[3]=T[4]+a+A|0,T[4]=T[0]+n+B|0,T[0]=x},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e.sigBytes=4*(t.length+1),this._process();for(var s=this._hash,a=s.words,n=0;n<5;n++){var o=a[n];a[n]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return s},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,i){return e^t^i}function _(e,t,i){return e&t|~e&i}function m(e,t,i){return(e|~t)^i}function g(e,t,i){return e&i|t&~i}function y(e,t,i){return e^(t|~i)}function b(e,t){return e<>>32-t}t.RIPEMD160=a._createHelper(f),t.HmacRIPEMD160=a._createHmacHelper(f)}(),i.RIPEMD160)})),Gt((function(e,t){var i,r,s;e.exports=(r=(i=Mr).lib.Base,s=i.enc.Utf8,void(i.algo.HMAC=r.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var i=e.blockSize,r=4*i;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),n=this._iKey=t.clone(),o=a.words,d=n.words,l=0;l>>2];e.sigBytes-=t}};r.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,i=t.iv,r=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=r.createEncryptor:(e=r.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,i&&i.words):(this._mode=e.call(r,this,i&&i.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var _=r.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),m=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,i=e.salt;return(i?a.create([1398893684,1701076831]).concat(i).concat(t):t).toString(d)},parse:function(e){var t,i=d.parse(e),r=i.words;return 1398893684==r[0]&&1701076831==r[1]&&(t=a.create(r.slice(2,4)),r.splice(0,4),i.sigBytes-=16),_.create({ciphertext:i,salt:t})}},g=r.SerializableCipher=s.extend({cfg:s.extend({format:m}),encrypt:function(e,t,i,r){r=this.cfg.extend(r);var s=e.createEncryptor(i,r),a=s.finalize(t),n=s.cfg;return _.create({ciphertext:a,key:i,iv:n.iv,algorithm:e,mode:n.mode,padding:n.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,i,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(i,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,i,r,s){if(r||(r=a.random(8)),s)n=l.create({keySize:t+i,hasher:s}).compute(e,r);else var n=l.create({keySize:t+i}).compute(e,r);var o=a.create(n.words.slice(t),4*i);return n.sigBytes=4*t,_.create({key:n,iv:o,salt:r})}},b=r.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,i,r){var s=(r=this.cfg.extend(r)).kdf.execute(i,e.keySize,e.ivSize,r.salt,r.hasher);r.iv=s.iv;var a=g.encrypt.call(this,e,t,s.key,r);return a.mixIn(s),a},decrypt:function(e,t,i,r){r=this.cfg.extend(r),t=this._parse(t,r.format);var s=r.kdf.execute(i,e.keySize,e.ivSize,t.salt,r.hasher);return r.iv=s.iv,g.decrypt.call(this,e,t,s.key,r)}})}())})),Gt((function(e,t){var i;e.exports=((i=Mr).mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,i,r){var s,a=this._iv;a?(s=a.slice(0),this._iv=void 0):s=this._prevBlock,r.encryptBlock(s,0);for(var n=0;n>24&255)){var t=e>>16&255,i=e>>8&255,r=255&e;255===t?(t=0,255===i?(i=0,255===r?r=0:++r):++i):++t,e=0,e+=t<<16,e+=i<<8,e+=r}else e+=1<<24;return e}function r(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var s=e.Encryptor=e.extend({processBlock:function(e,t){var i=this._cipher,s=i.blockSize,a=this._iv,n=this._counter;a&&(n=this._counter=a.slice(0),this._iv=void 0),r(n);var o=n.slice(0);i.encryptBlock(o,0);for(var d=0;d>>2]|=s<<24-a%4*8,e.sigBytes+=s},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)})),Gt((function(e,t){var i;e.exports=((i=Mr).pad.Iso10126={pad:function(e,t){var r=4*t,s=r-e.sigBytes%r;e.concat(i.lib.WordArray.random(s-1)).concat(i.lib.WordArray.create([s<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)})),Gt((function(e,t){var i;e.exports=((i=Mr).pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)})),Gt((function(e,t){var i;e.exports=((i=Mr).pad.ZeroPadding={pad:function(e,t){var i=4*t;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){var t=e.words,i=e.sigBytes-1;for(i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},i.pad.ZeroPadding)})),Gt((function(e,t){var i;e.exports=((i=Mr).pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(e){var t=i,r=t.lib.CipherParams,s=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(s)},parse:function(e){var t=s.parse(e);return r.create({ciphertext:t})}}}(),i.format.Hex)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.BlockCipher,r=e.algo,s=[],a=[],n=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var i=0,r=0;for(t=0;t<256;t++){var p=r^r<<1^r<<2^r<<3^r<<4;p=p>>>8^255&p^99,s[i]=p,a[p]=i;var _=e[i],m=e[_],g=e[m],y=257*e[p]^16843008*p;n[i]=y<<24|y>>>8,o[i]=y<<16|y>>>16,d[i]=y<<8|y>>>24,l[i]=y,y=16843009*g^65537*m^257*_^16843008*i,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,i?(i=_^e[e[e[g^_]]],r^=e[e[r]]):i=r=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=r.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,i=e.sigBytes/4,r=4*((this._nRounds=i+6)+1),a=this._keySchedule=[],n=0;n6&&n%i==4&&(l=s[l>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l]):(l=s[(l=l<<8|l>>>24)>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l],l^=p[n/i|0]<<24),a[n]=a[n-i]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[s[l>>>16&255]]^h[s[l>>>8&255]]^f[s[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,n,o,d,l,s)},decryptBlock:function(e,t){var i=e[t+1];e[t+1]=e[t+3],e[t+3]=i,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,a),i=e[t+1],e[t+1]=e[t+3],e[t+3]=i},_doCryptBlock:function(e,t,i,r,s,a,n,o){for(var d=this._nRounds,l=e[t]^i[0],c=e[t+1]^i[1],u=e[t+2]^i[2],h=e[t+3]^i[3],f=4,p=1;p>>24]^s[c>>>16&255]^a[u>>>8&255]^n[255&h]^i[f++],m=r[c>>>24]^s[u>>>16&255]^a[h>>>8&255]^n[255&l]^i[f++],g=r[u>>>24]^s[h>>>16&255]^a[l>>>8&255]^n[255&c]^i[f++],y=r[h>>>24]^s[l>>>16&255]^a[c>>>8&255]^n[255&u]^i[f++];l=_,c=m,u=g,h=y}_=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^i[f++],m=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^i[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^i[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^i[f++],e[t]=_,e[t+1]=m,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(_)}(),i.AES)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib,r=t.WordArray,s=t.BlockCipher,a=e.algo,n=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=a.DES=s.extend({_doReset:function(){for(var e=this._key.words,t=[],i=0;i<56;i++){var r=n[i]-1;t[i]=e[r>>>5]>>>31-r%32&1}for(var s=this._subKeys=[],a=0;a<16;a++){var l=s[a]=[],c=d[a];for(i=0;i<24;i++)l[i/6|0]|=t[(o[i]-1+c)%28]<<31-i%6,l[4+(i/6|0)]|=t[28+(o[i+24]-1+c)%28]<<31-i%6;for(l[0]=l[0]<<1|l[0]>>>31,i=1;i<7;i++)l[i]=l[i]>>>4*(i-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(i=0;i<16;i++)u[i]=s[15-i]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,i){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var r=0;r<16;r++){for(var s=i[r],a=this._lBlock,n=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((n^s[d])&c[d])>>>0];this._lBlock=n,this._rBlock=a^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var i=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=i,this._lBlock^=i<>>e^this._lBlock)&t;this._lBlock^=i,this._rBlock^=i<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),s=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(r.create(t)),this._des2=u.createEncryptor(r.create(i)),this._des3=u.createEncryptor(r.create(s))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=s._createHelper(p)}(),i.TripleDES)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=r.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,i=e.sigBytes,r=this._S=[],s=0;s<256;s++)r[s]=s;s=0;for(var a=0;s<256;s++){var n=s%i,o=t[n>>>2]>>>24-n%4*8&255;a=(a+r[s]+o)%256;var d=r[s];r[s]=r[a],r[a]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=a.call(this)},keySize:8,ivSize:0});function a(){for(var e=this._S,t=this._i,i=this._j,r=0,s=0;s<4;s++){i=(i+e[t=(t+1)%256])%256;var a=e[t];e[t]=e[i],e[i]=a,r|=e[(e[t]+e[i])%256]<<24-8*s}return this._i=t,this._j=i,r}e.RC4=t._createHelper(s);var n=r.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)a.call(this)}});e.RC4Drop=t._createHelper(n)}(),i.RC4)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=[],a=[],n=[],o=r.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,i=0;i<4;i++)e[i]=16711935&(e[i]<<8|e[i]>>>24)|4278255360&(e[i]<<24|e[i]>>>8);var r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,i=0;i<4;i++)d.call(this);for(i=0;i<8;i++)s[i]^=r[i+4&7];if(t){var a=t.words,n=a[0],o=a[1],l=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(s[0]^=l,s[1]^=u,s[2]^=c,s[3]^=h,s[4]^=l,s[5]^=u,s[6]^=c,s[7]^=h,i=0;i<4;i++)d.call(this)}},_doProcessBlock:function(e,t){var i=this._X;d.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var r=0;r<4;r++)s[r]=16711935&(s[r]<<8|s[r]>>>24)|4278255360&(s[r]<<24|s[r]>>>8),e[t+r]^=s[r]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,i=0;i<8;i++)a[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var r=e[i]+t[i],s=65535&r,o=r>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&r)*r|0)+((65535&r)*r|0);n[i]=d^l}e[0]=n[0]+(n[7]<<16|n[7]>>>16)+(n[6]<<16|n[6]>>>16)|0,e[1]=n[1]+(n[0]<<8|n[0]>>>24)+n[7]|0,e[2]=n[2]+(n[1]<<16|n[1]>>>16)+(n[0]<<16|n[0]>>>16)|0,e[3]=n[3]+(n[2]<<8|n[2]>>>24)+n[1]|0,e[4]=n[4]+(n[3]<<16|n[3]>>>16)+(n[2]<<16|n[2]>>>16)|0,e[5]=n[5]+(n[4]<<8|n[4]>>>24)+n[3]|0,e[6]=n[6]+(n[5]<<16|n[5]>>>16)+(n[4]<<16|n[4]>>>16)|0,e[7]=n[7]+(n[6]<<8|n[6]>>>24)+n[5]|0}e.Rabbit=t._createHelper(o)}(),i.Rabbit)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=[],a=[],n=[],o=r.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var s=0;s<4;s++)d.call(this);for(s=0;s<8;s++)r[s]^=i[s+4&7];if(t){var a=t.words,n=a[0],o=a[1],l=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(r[0]^=l,r[1]^=u,r[2]^=c,r[3]^=h,r[4]^=l,r[5]^=u,r[6]^=c,r[7]^=h,s=0;s<4;s++)d.call(this)}},_doProcessBlock:function(e,t){var i=this._X;d.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var r=0;r<4;r++)s[r]=16711935&(s[r]<<8|s[r]>>>24)|4278255360&(s[r]<<24|s[r]>>>8),e[t+r]^=s[r]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,i=0;i<8;i++)a[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var r=e[i]+t[i],s=65535&r,o=r>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&r)*r|0)+((65535&r)*r|0);n[i]=d^l}e[0]=n[0]+(n[7]<<16|n[7]>>>16)+(n[6]<<16|n[6]>>>16)|0,e[1]=n[1]+(n[0]<<8|n[0]>>>24)+n[7]|0,e[2]=n[2]+(n[1]<<16|n[1]>>>16)+(n[0]<<16|n[0]>>>16)|0,e[3]=n[3]+(n[2]<<8|n[2]>>>24)+n[1]|0,e[4]=n[4]+(n[3]<<16|n[3]>>>16)+(n[2]<<16|n[2]>>>16)|0,e[5]=n[5]+(n[4]<<8|n[4]>>>24)+n[3]|0,e[6]=n[6]+(n[5]<<16|n[5]>>>16)+(n[4]<<16|n[4]>>>16)|0,e[7]=n[7]+(n[6]<<8|n[6]>>>24)+n[5]|0}e.RabbitLegacy=t._createHelper(o)}(),i.RabbitLegacy)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.BlockCipher,r=e.algo;const s=16,a=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],n=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let i=t>>24&255,r=t>>16&255,s=t>>8&255,a=255&t,n=e.sbox[0][i]+e.sbox[1][r];return n^=e.sbox[2][s],n+=e.sbox[3][a],n}function l(e,t,i){let r,a=t,n=i;for(let t=0;t1;--t)a^=e.pbox[t],n=d(e,a)^n,r=a,a=n,n=r;return r=a,a=n,n=r,n^=e.pbox[1],a^=e.pbox[0],{left:a,right:n}}function u(e,t,i){for(let t=0;t<4;t++){e.sbox[t]=[];for(let i=0;i<256;i++)e.sbox[t][i]=n[t][i]}let r=0;for(let n=0;n=i&&(r=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),i=new Uint8Array(i);const s=e.byteLength;let a=5;for(;as)break;let o=e[a+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=e.slice(a+4+2,a+4+n);let s=new Pr.ModeOfOperation.ctr(t,new Pr.Counter(i));const o=s.decrypt(r);s=null,e.set(o,a+4+2)}a=a+4+n}return e}function Nr(e,t,i){if(e.byteLength<=30)return e;const r=e.slice(32);let s=new Pr.ModeOfOperation.ctr(t,new Pr.Counter(i));const a=s.decrypt(r);return s=null,e.set(a,32),e}Gt((function(e,t){e.exports=Mr}));var Gr=Gt((function(e,t){var r,s,a,n=(r=new Date,s=4,a={setLogLevel:function(e){s=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>=s&&console.debug("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=s&&console.info("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=s&&console.warn("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=s&&console.error("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},a);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 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 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"},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="",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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,i,r,s){var a=new Uint8Array(e,t,s),n=new Uint8Array(i,r,s);a.set(n)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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},c.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},c.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))},c.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.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},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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=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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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,i){this.type=e,this.size=t,this.uuid=i},FullBox:function(e,t,i){h.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){h.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,r){h.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=r},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,i=0;ii?(n.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+i),{code:h.ERR_NOT_ENOUGH_DATA,type:c,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 '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?r=new h[c+"Box"](l):"uuid"!==c?(n.warn("BoxParser","Unknown box type: '"+c+"'"),(r=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[a]?r=new h.UUIDBoxes[a](l):(n.warn("BoxParser","Unknown uuid type: '"+a+"'"),(r=new h.Box(c,l)).uuid=a,r.has_unparsed_data=!0),r.hdr_size=d,r.start=o,r.write===h.Box.prototype.write&&"mdat"!==r.type&&(n.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?(n.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&&(n.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:h.OK,box:r,size:r.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,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)},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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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 i=0;i<3;i++)this.layer_size[i]=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 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")})),h.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))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.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))})),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,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})),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 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())}})),h.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(", ")+")"})),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[i]=e.readString(4),t-=4,i++})),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,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})),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,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}}})),h.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")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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 i=0;i0){var t=e.readUint32();this.kid=[];for(var i=0;i0&&(this.data=e.readUint8Array(r))})),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 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})),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(),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})),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(),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}})),h.SingleItemTypeReferenceBox=function(e,t,i,r){h.Box.call(this,e,t),this.hdr_size=i,this.start=r},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 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=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 i=e.readUint32(),r=0;r>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,i,r){h.Box.call(this,e,t),this.hdr_size=i,this.start=r},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,i;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 i=0;i>7&1,this.block_pad_lsb=i>>6&1,this.block_little_endian=i>>5&1,this.block_reversed=i>>4&1,this.pad_unknown=i>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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,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<1){for(r.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,i=this.num_sublayers-2;i>=0;--i){var n=r.extract_bits(1);this.ptl_sublayer_present_mask|=n<1;++i)r.extract_bits(1);for(this.sublayer_level_idc=[],i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=h.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="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+a,s=!0);t+=a}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 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,d=0;for(e=0;e<=r;++e)for(o=o<<8|s[e],d+=8;d>=5;){i+=n[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(i+=n[31&(o<<=5-d)])}}t+=i}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(),i=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(i?"."+i:"")}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 i=this.vpcC.bitDepth;return 8==i&&(i="08"),e+".0"+this.vpcC.profile+"."+t+"."+i},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.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},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(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>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)},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[i]instanceof h.Box||t[i]instanceof h.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||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},g.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 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)}},g.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))},g.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},g.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)&&(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}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var i=[];return g._sweep.call(this,e,i,t),i},g._sweep=function(e,t,i){for(var r in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;g._sweep.call(this.boxes[r],e,t,i)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},g.prototype.releaseUsedSamples=function(e,t,i){var r=0,s=this.getTrackById(e);s.lastValidSample||(s.lastValidSample=0);for(var a=s.lastValidSample;ae*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}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.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;sthis.getTrackDuration(i)||((r=this.seekTrack(e,t,i)).offset-1){n=d;break}switch(n){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 h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),a.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),a.addBox(f)}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 h["url Box"]).set("flags",1));var p=s.add("stbl");return p.add("stsd").addEntry(a),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(i),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new h.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",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),r.add("tfdt").set("baseMediaDecodeTime",e.dts-(s.first_dts||0)),r.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]),i},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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&&(d=s[n].grouping_type+"/0",(o=new l(s[n].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(n=0;n=2&&(d=r[n].grouping_type+"/0",o=new l(r[n].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.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])}},g.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))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=a.sample_counts[v]),t>0?(e.samples[t-1].duration=a.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,E.dts=e.samples[t-1].dts+e.samples[t-1].duration):E.dts=0,n?(t>=S&&(w++,S<0&&(S=0),S+=n.sample_counts[w]),E.cts=e.samples[t].dts+n.sample_offsets[w]):E.cts=E.dts,o?(t==o.sample_numbers[A]-1?(E.is_sync=!0,A++):(E.is_sync=!1,E.degradation_priority=0),l&&l.entries[B].sample_delta+U==t+1&&(E.subsamples=l.entries[B].subsamples,U+=l.entries[B].sample_delta,B++)):E.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,E,E.number),E.degradation_priority=h?h.priority[t]:0,l&&l.entries[B].sample_delta+U==t&&(E.subsamples=l.entries[B].subsamples,U+=l.entries[B].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,E,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)}},g.prototype.updateSampleLists=function(){var e,t,i,r,s,a,n,o,d,l,c,u,f,p,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,m.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+m.sample_composition_time_offset[i]),_=n,m.flags&h.TRUN_FLAGS_FLAGS?_=m.sample_flags[i]:0===i&&m.flags&h.TRUN_FLAGS_FIRST_FLAG&&(_=m.first_sample_flags),p.is_sync=!(_>>16&1),p.is_leading=_>>26&3,p.depends_on=_>>24&3,p.is_depended_on=_>>22&3,p.has_redundancy=_>>20&3,p.degradation_priority=65535&_;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(m.flags&h.TRUN_FLAGS_DATA_OFFSET),S=0;S=y?c.tfhd.base_data_offset:b||0===t?l.start:o,p.offset=0===t&&0===i?v?S+m.data_offset:S:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var w=c.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+")"),d.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+")"),d.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,a),r.alreadyRead+=a,i.usedBytes+=a,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.description=null,delete i.degradation_priority,delete i.depends_on,delete i.description_index,delete i.has_redundancy,delete i.is_depended_on,delete i.is_leading,delete i.is_sync,delete i.moof_number,delete i.number_in_traf,delete i.timescale,delete i.cts,delete i.dts,delete i.offset,delete i.size,delete i.track_id,delete i.duration,i.alreadyRead=0,i.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=a.ipro.protections[a.iinf.item_infos[e].protection_index-1]),a.iinf.item_infos[e].item_type?i.type=a.iinf.item_infos[e].item_type:i.type="mime",i.content_type=a.iinf.item_infos[e].content_type,i.content_encoding=a.iinf.item_infos[e].content_encoding;if(a.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[a]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=o))return n.debug("ISOFile","Getting item #"+e+" extent #"+r+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+s.length+" full item size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,o),s.alreadyRead+=o,i.alreadyRead+=o,t.usedBytes+=o,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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var i=void 0===e||e,r=new g(t);return r.discardMdatData=!i,r}};t.createFile=y.createFile}));function Or(e){return e.reduce(((e,t)=>256*e+t))}function Hr(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]))}Gr.Log,Gr.MP4BoxStream,Gr.DataStream,Gr.MultiBufferStream,Gr.MPEG4DescriptorParser,Gr.BoxParser,Gr.XMLSubtitlein4Parser,Gr.Textin4Parser,Gr.ISOFile,Gr.createFile;class Vr{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],Hr(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}}function $r(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=new r((0|e.byteLength)+(0|t.byteLength));return i.set(e,0),i.set(t,0|e.byteLength),i}),new r)}const Wr=16,Yr=[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],qr=[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 jr(e){const t=[];for(let i=0,r=e.length;i1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Xr(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}function Zr(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("")}function Jr(e,t){const i=31&t;return e<>>32-i}function Qr(e){return(255&Yr[e>>>24&255])<<24|(255&Yr[e>>>16&255])<<16|(255&Yr[e>>>8&255])<<8|255&Yr[255&e]}function es(e){return e^Jr(e,2)^Jr(e,10)^Jr(e,18)^Jr(e,24)}function ts(e){return e^Jr(e,13)^Jr(e,23)}function is(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]^=es(Qr(e)),e=r[2]^r[3]^r[0]^i[t+1],r[1]^=es(Qr(e)),e=r[3]^r[0]^r[1]^i[t+2],r[2]^=es(Qr(e)),e=r[0]^r[1]^r[2]^i[t+3],r[3]^=es(Qr(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 rs(e,t,i){const r=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[0+4*t],s[1]=255&e[1+4*t],s[2]=255&e[2+4*t],s[3]=255&e[3+4*t],r[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];r[0]^=2746333894,r[1]^=1453994832,r[2]^=1736282519,r[3]^=2993693404;for(let e,i=0;i<32;i+=4)e=r[1]^r[2]^r[3]^qr[i+0],t[i+0]=r[0]^=ts(Qr(e)),e=r[2]^r[3]^r[0]^qr[i+1],t[i+1]=r[1]^=ts(Qr(e)),e=r[3]^r[0]^r[1]^qr[i+2],t[i+2]=r[2]^=ts(Qr(e)),e=r[0]^r[1]^r[2]^qr[i+3],t[i+3]=r[3]^=ts(Qr(e));if(0===i)for(let e,i=0;i<16;i++)e=t[i],t[i]=t[31-i],t[31-i]=e}function ss(e,t,i){let{padding:r="pkcs#7",mode:s,iv:a=[],output:n="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===s&&("string"==typeof a&&(a=jr(a)),16!==a.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=jr(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==i?Xr(e):jr(e):[...e],("pkcs#5"===r||"pkcs#7"===r)&&0!==i){const t=Wr-e.length%Wr;for(let i=0;i=Wr;){const t=e.slice(u,u+16),r=new Array(16);if("cbc"===s)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let a=new Uint8Array(e.slice(0,5)),n=5;for(;ns){const t=new Uint8Array(a.length+e.length-n);t.set(a,0),t.set(e.slice(n),a.length),a=t;break}let l=e[n+4],c=!1,u=2;if(i?(r&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const i=ss(e.slice(n+4+u,n+4+d),t,0,{padding:"none",output:"array"});let r=i[i.length-1];if(r>0&&r<16){let e=!0;for(let t=1;t<=r;t++)if(i[i.length-t]!==r){e=!1;break}e&&i.splice(i.length-r,r)}const s=new Uint8Array(u);s.set(e.slice(n+4,n+4+u),0);const o=ti($r(s,new Uint8Array(i))),l=new Uint8Array(a.length+o.length);l.set(a,0),l.set(o,a.length),a=l}else{const t=e.slice(n+4,n+4+d),i=new Uint8Array(a.length+4+t.length);i.set(a,0),i.set(o,a.length),i.set(t,a.length+4),a=i}n=n+4+d}return a}const os={init:0,findFirstStartCode:1,findSecondStartCode:2};class ds extends class{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(){r.off(e,s);for(var a=arguments.length,n=new Array(a),o=0;o1?i-1:0),s=1;s{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=os.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==os.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=os.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==os.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=os.findFirstStartCode}}}}function ls(e,t,i){for(let r=2;r3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let a=5;for(;as)break;let o=e[a+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=ls(e.slice(a+4,a+4+n),t,i);e.set(r,a+4)}a=a+4+n}return e}function hs(){for(var e=arguments.length,t=new Array(e),i=0;ie+t.byteLength),0));let s=0;return t.forEach((e=>{r.set(e,s),s+=e.byteLength})),r}class fs{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,r)));e.addEventListener(t,i,r);const s=()=>{li(e.removeEventListener)&&e.removeEventListener(t,i,r)};return this.destroys.push(s),s}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class ps{static init(){ps.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 ps.types)ps.types.hasOwnProperty(e)&&(ps.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=ps.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 ps.box(ps.types.trak,ps.tkhd(e),ps.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,s=e.presentHeight;return ps.box(ps.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 ps.box(ps.types.mdia,ps.mdhd(e),ps.hdlr(e),ps.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return ps.box(ps.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?ps.constants.HDLR_AUDIO:ps.constants.HDLR_VIDEO,ps.box(ps.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?ps.box(ps.types.smhd,ps.constants.SMHD):ps.box(ps.types.vmhd,ps.constants.VMHD),ps.box(ps.types.minf,t,ps.dinf(),ps.stbl(e))}static dinf(){return ps.box(ps.types.dinf,ps.box(ps.types.dref,ps.constants.DREF))}static stbl(e){return ps.box(ps.types.stbl,ps.stsd(e),ps.box(ps.types.stts,ps.constants.STTS),ps.box(ps.types.stsc,ps.constants.STSC),ps.box(ps.types.stsz,ps.constants.STSZ),ps.box(ps.types.stco,ps.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?ps.box(ps.types.stsd,ps.constants.STSD_PREFIX,ps.mp3(e)):ps.box(ps.types.stsd,ps.constants.STSD_PREFIX,ps.mp4a(e)):"avc"===e.videoType?ps.box(ps.types.stsd,ps.constants.STSD_PREFIX,ps.avc1(e)):ps.box(ps.types.stsd,ps.constants.STSD_PREFIX,ps.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 ps.box(ps.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 ps.box(ps.types.mp4a,r,ps.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 ps.box(ps.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 ps.box(ps.types.avc1,s,ps.box(ps.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 ps.box(ps.types.hvc1,s,ps.box(ps.types.hvcC,t))}static mvex(e){return ps.box(ps.types.mvex,ps.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 ps.box(ps.types.trex,i)}static moof(e,t){return ps.box(ps.types.moof,ps.mfhd(e.sequenceNumber),ps.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 ps.box(ps.types.mfhd,t)}static traf(e,t){let i=e.id,r=ps.box(ps.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=ps.box(ps.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),a=ps.sdtp(e),n=ps.trun(e,a.byteLength+16+16+8+16+8+8);return ps.box(ps.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,ps.box(ps.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),ps.box(ps.types.trun,i)}static mdat(e){return ps.box(ps.types.mdat,e)}}ps.init();var _s,ms=Gt((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(_s=ms)&&_s.__esModule&&Object.prototype.hasOwnProperty.call(_s,"default")&&_s.default;const gs=[44100,48e3,32e3,0],ys=[22050,24e3,16e3,0],bs=[11025,12e3,8e3,0],vs=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Ss=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],ws=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function As(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,d=0,l=0;switch(r){case 0:d=bs[n];break;case 2:d=ys[n];break;case 3:d=gs[n]}switch(s){case 1:a=e[s]&&t=6?(r=5,t=new Array(4),n=s-3):(r=2,t=new Array(2),n=s):-1!==o.indexOf("android")?(r=2,t=new Array(2),n=s):(r=5,n=s,t=new Array(4),s>=6?n=s-3:1===a&&(r=2,t=new Array(2),n=s)),t[0]=r<<3,t[0]|=(15&s)>>>1,t[1]=(15&s)<<7,t[1]|=(15&a)<<3,5===r&&(t[1]|=(15&n)>>>1,t[2]=(1&n)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Rs[s],this.sampling_index=s,this.channel_count=a,this.object_type=r,this.original_object_type=i,this.codec_mimetype="mp4a.40."+r,this.original_codec_mimetype="mp4a.40."+i}}class Os{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>r,a=8-r;if(a>=e)return i&&(this.index+=e),s>>a-e;{i&&(this.index+=a);const r=e-a;return s<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Hs(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Vs=new Array(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),$s=new Array(2746333894,1453994832,1736282519,2993693404),Ws=new Array(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 Ys(e,t,i,r,s){var a=s;a=t+s>e.length&&r+s<=i.length?e.length-t:r+s>i.length&&t+s<=e.length?i.length-r:t+s<=e.length&&r+s<=i.length?s:i.length>24&255,e>>16&255,e>>8&255,255&e)}function js(e,t){return t+3>>19)^(r<<23|r>>>9)}function Zs(e,t){var i=new Array(36);i[0]=js(t,0),i[1]=js(t,4),i[2]=js(t,8),i[3]=js(t,12);for(var r=0;r<32;r++)i[r+4]=i[r]^Js(i[r+1]^i[r+2]^i[r+3]^e[r]);var s=new Array(4);for(r=35;r>=32;r--)s[35-r]=i[r];var a=function(e){for(var t=new Array(4*e.length),i=0;i>>30)^(r<<10|r>>>22)^(r<<18|r>>>14)^(r<<24|r>>>8)}function Qs(e,t,i){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==i||null==i||i.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var r=Ks(e),s=Math.ceil(i.length/16),a=new Array(i.length),n=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),i=new Uint8Array(i);const a=e.byteLength;let n=5;for(;na)break;let d=e[n+4],l=!1,c=2;if(r?(s&&(c=3),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=Qs(t,i,e.slice(n+4+c,n+4+o));e.set(r,n+4+c)}n=n+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-1-2024" '+(yi(false)?"and is Trial Version[试用版本]":"")),function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=[],a=[],n=null,o=null,d=null,l=null,c=null,b=null,v=!1,B=null,be=null,ve=!1,$e=!1,Xe=!!gi(i),Ze=0,Qe=0,tt=!1,lt=null,wt=null,At=null,Et=[],Rt=null,Nt=null,Gt=0,Ot=0,Ht=null,Vt=null,jt=0,Jt=0,ai=!1,Si=!1,wi=!1,Ai=null,Bi=null,Ti=!1,Oi=!0,Hi=0,Yi=0,rr=()=>{const e=_i();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(n={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){n.decoder=new VideoDecoder({output:function(e){if(li(e.createImageBitmap))e.createImageBitmap().then((t=>{n.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let i=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:x,buffer:i,delay:cr.delay,ts:0},[i]),hi(e)}));else{n.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:x,buffer:t,delay:cr.delay,ts:0},[t]),hi(e)}},error:function(e){cr.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){n.reset(),n.decoder&&"closed"!==n.decoder.state&&(n.decoder.close(),n.decoder=null)},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?ht:ft});n.decoder.decode(i)}else if(r&&0===e[1]){const t=15&e[0];postMessage({cmd:I,code:t});const i=new Uint8Array(e);postMessage({cmd:F,buffer:i,codecId:t},[i.buffer]);let r=null,s=null;const a=e.slice(5);t===Ie?(s=ki(a),r={codec:s.codec,description:a}):t===Fe&&(s=Wi(a),r={codec:s.codec,description:a}),s&&s.codecWidth&&s.codecHeight&&(r.codedHeight=s.codecHeight,r.codedWidth=s.codecWidth),n.isEmitInfo||(cr.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:E,w:s.codecWidth,h:s.codecHeight}),n.isEmitInfo=!0,n.offscreenCanvas=new OffscreenCanvas(s.codecWidth,s.codecHeight),n.offscreenCanvasCtx=n.offscreenCanvas.getContext("2d"));try{n.decoder.configure(r),n.hasInit=!0}catch(e){cr.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else cr.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`)},reset(){n.hasInit=!1,n.isEmitInfo=!1,n.offscreenCanvas=null,n.offscreenCanvasCtx=null}});let sr=function(){if(Ti=!0,o)try{o.abort(),o=null,cr.debugLog("worker","abort success")}catch(e){o=null,cr.debugLog("worker","abort catch",e)}},ar={init(){ar.lastBuf=null,ar.vps=null,ar.sps=null,ar.pps=null,ar.streamType=null,ar.localDts=0,ar.pendingUnits={},ar.isSendSeqHeader=!1},destroy(){ar.lastBuf=null,ar.vps=null,ar.sps=null,ar.pps=null,ar.streamType=null,ar.localDts=0,ar.pendingUnits={},ar.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(cr._opt.nakedFlowDemuxUseNew){const e=ar.extractNALu$3(t);if(0===e.length)return void cr.debugLog("worker","dispatch naluArray length is 0");ar.handleVideoFrames(e)}else ar.extractNALu$2(t)},getNaluDts(){const e=cr._opt.nakedFlowFps;let t=ar.localDts;return ar.localDts=ar.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=cr._opt.sampleRate,t=cr._opt.audioBufferSize;return ar.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{const t=Fi(e);t===Ve||t===He?ar.handleVideoH264Nalu(e):Mi(t)&&r.push(e)})),1===r.length)ar.handleVideoH264Nalu(r[0]);else{if(Ri(r)){const e=Fi(r[0]),t=zi(e);ar.handleVideoH264NaluList(r,t,e)}else r.forEach((e=>{ar.handleVideoH264Nalu(e)}))}}else if(ar.streamType===ze)if(cr._opt.nakedFlowH265DemuxUseNew){const t=ar.handleAddNaluStartCode(e),i=ar.extractNALu(t);if(0===i.length)return void cr.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const r=[];if(i.forEach((e=>{const t=Xi(e);t===ot||t===at||t===rt?ar.handleVideoH265Nalu(e):Ji(t)&&r.push(e)})),1===r.length)ar.handleVideoH265Nalu(r[0]);else{if(er(r)){const e=Xi(r[0]),t=Qi(e);ar.handleVideoH265NaluList(r,t,e)}else r.forEach((e=>{ar.handleVideoH265Nalu(e)}))}}else{Xi(e)===ot?ar.extractH265PPS(e):ar.handleVideoH265Nalu(e)}},extractH264PPS(e){const t=ar.handleAddNaluStartCode(e);ar.extractNALu(t).forEach((e=>{Pi(Fi(e))?ar.extractH264SEI(e):ar.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=ar.handleAddNaluStartCode(e);ar.extractNALu(t).forEach((e=>{Zi(Xi(e))?ar.extractH265SEI(e):ar.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=ar.handleAddNaluStartCode(e);ar.extractNALu(t).forEach((e=>{ar.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=ar.handleAddNaluStartCode(e);ar.extractNALu(t).forEach((e=>{ar.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=Fi(e);switch(t){case He:ar.sps=e;break;case Ve:ar.pps=e}if(ar.isSendSeqHeader){if(ar.sps&&ar.pps){const e=Ci({sps:ar.sps,pps:ar.pps}),t=ar.localDts;cr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null}if(Mi(t)){const i=zi(t),r=ar.getNaluDts(),s=Di(e,i);ar.doDecode(s,{type:se,ts:r,isIFrame:i,cts:0})}}else if(ar.sps&&ar.pps){ar.isSendSeqHeader=!0;const e=Ci({sps:ar.sps,pps:ar.pps});cr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null}},handleVideoH264NaluList(e,t,i){if(ar.isSendSeqHeader){const r=ar.getNaluDts(),s=Ii(e.reduce(((e,t)=>{const i=ti(e),r=ti(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);ar.doDecode(s,{type:se,ts:r,isIFrame:t,cts:0}),cr.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${i}, dts is ${r}`)}},handleVideoH265Nalu(e){const t=Xi(e);switch(t){case rt:ar.vps=e;break;case at:ar.sps=e;break;case ot:ar.pps=e}if(ar.isSendSeqHeader){if(ar.vps&&ar.sps&&ar.pps){const e=qi({vps:ar.vps,sps:ar.sps,pps:ar.pps}),t=ar.localDts;cr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),ar.vps=null,ar.sps=null,ar.pps=null}if(Ji(t)){const i=Qi(t),r=ar.getNaluDts(),s=ji(e,i);ar.doDecode(s,{type:se,ts:r,isIFrame:i,cts:0})}}else if(ar.vps&&ar.sps&&ar.pps){ar.isSendSeqHeader=!0;const e=qi({vps:ar.vps,sps:ar.sps,pps:ar.pps});cr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),ar.vps=null,ar.sps=null,ar.pps=null}},handleVideoH265NaluList(e,t,i){if(ar.isSendSeqHeader){const r=ar.getNaluDts(),s=Ki(e.reduce(((e,t)=>{const i=ti(e),r=ti(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);ar.doDecode(s,{type:se,ts:r,isIFrame:t,cts:0}),cr.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${i}, dts is ${r}`)}},doDecode(e,t){cr.calcNetworkDelay(t.ts),t.isIFrame&&cr.calcIframeIntervalTimestamp(t.ts),cr.decode(e,t)},handleVideoFrames(e){if(!ar.streamVideoType)for(let t of e)if(ar.streamVideoType=ci(t),ar.streamVideoType)break;ar.streamVideoType?ar.streamVideoType===Me?ar.handleVideoH264Frames(e):ar.streamVideoType===ze&&ar.handleVideoH265Frames(e):cr.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],i=[],r=!1,s=!1;ar.pendingUnits.units&&(t=ar.pendingUnits.units,s=ar.pendingUnits.vcl,r=ar.pendingUnits.iFrame,ar.pendingUnits={});let a={};for(let n of e){if(n.byteLength<4)continue;const e=Fi(n);let o=!1,d=e===Ye;e!==We&&e!==Ye||(a=ar.parseVideo264Header(n),o=!0),t.length&&s&&(a.isfms||!o)&&(i.push({units:t,isIFrame:r}),t=[],r=!1,s=!1),t.push(n),r=r||d,s=s||o}t.length&&(ar.pendingUnits={units:t,vcl:s,iFrame:r}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let r=null,s=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Ve:ar.pps=e;break;case He:ar.sps=e;break;case qe:s=e}if(Mi(t)){const t=ti(e);if(r){const e=new Uint8Array(r.byteLength+t.byteLength);e.set(r,0),e.set(t,r.byteLength),r=e}else r=t}})),!ar.isSendSeqHeader&&ar.sps&&ar.pps){ar.isSendSeqHeader=!0;const e=Li({sps:ar.sps,pps:ar.pps});cr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null}if(ar.isSendSeqHeader){if(ar.sps&&ar.pps){const e=Li({sps:ar.sps,pps:ar.pps}),t=ar.localDts;cr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null}if(r){const e=ar.getNaluDts(),t=Ii(r,i);if(cr._opt.isEmitSEI&&s){const t=ei(s,!1);postMessage({cmd:j,buffer:t.payload,ts:e},[t.payload.buffer])}ar.doDecode(t,{type:se,ts:e,isIFrame:i,cts:0})}}}))},handleVideoH265Frames(e){let t=[],i=[],r=!1,s=!1;ar.pendingUnits.units&&(t=ar.pendingUnits.units,s=ar.pendingUnits.vcl,r=ar.pendingUnits.iFrame,ar.pendingUnits={});let a={};for(let n of e){if(n.byteLength<4)continue;const e=Xi(n);let o=!1,d=Qi(e);Ji(e)&&(a=ar.parseVideo265Header(n),o=!0),t.length&&s&&(a.isfms||!o)&&(i.push({units:t,isIFrame:r}),t=[],r=!1,s=!1),t.push(n),r=r||d,s=s||o}t.length&&(ar.pendingUnits={units:t,vcl:s,iFrame:r}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let r=null,s=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ot:ar.pps=e;break;case at:ar.sps=e;break;case rt:ar.vps=e;break;case ut:case ct:s=e}if(Ji(t)){const t=ti(e);if(r){const e=new Uint8Array(r.byteLength+t.byteLength);e.set(r,0),e.set(t,r.byteLength),r=e}else r=t}})),!ar.isSendSeqHeader&&ar.sps&&ar.pps&&ar.vps){ar.isSendSeqHeader=!0;const e=qi({sps:ar.sps,pps:ar.pps,vps:ar.vps});cr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null,ar.vps=null}if(ar.isSendSeqHeader){if(ar.sps&&ar.pps&&ar.vps){const e=qi({sps:ar.sps,pps:ar.pps,vps:ar.vps}),t=ar.localDts;cr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null,ar.vps=null}if(r){const e=ar.getNaluDts(),t=Ki(r,i);if(cr._opt.isEmitSEI&&s){const t=ei(s,!0);postMessage({cmd:j,buffer:t.payload,ts:e},[t.payload.buffer])}ar.doDecode(t,{type:se,ts:e,isIFrame:i,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{ar.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Os(e);t.readUByte();return{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Os(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},nr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){nr.mp4Box=Gr.createFile(),nr.mp4Box.onReady=nr.onReady,nr.mp4Box.onError=nr.onError,nr.mp4Box.onSamples=nr.onSamples},initTransportDescarmber(){nr.transportDescarmber=new Vr},_getSeqHeader(e){const t=nr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Gr.DataStream(void 0,0,Gr.DataStream.BIG_ENDIAN);let i=[];e.avcC?(e.avcC.write(t),i=[23,0,0,0,0]):(nr.isHevc=!0,cr.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},onReady(e){cr.debugLog(nr.LOG_NAME,"onReady()");const t=e.videoTracks[0],i=e.audioTracks[0];if(t){nr.videoTrackId=t.id;const e=nr._getSeqHeader(t);e&&(cr.debugLog(nr.LOG_NAME,"seqHeader"),cr.decodeVideo(e,0,!0,0)),nr.mp4Box.setExtractionOptions(t.id)}if(i&&cr._opt.hasAudio){nr.audioTrackId=i.id;const e=i.audio||{},t=$t.indexOf(e.sample_rate),r=i.codec.replace("mp4a.40.","");nr.mp4Box.setExtractionOptions(i.id);const s=Wt({profile:parseInt(r,10),sampleRate:t,channel:e.channel_count});cr.debugLog(nr.LOG_NAME,"aacADTSHeader"),cr.decodeAudio(s,0)}nr.mp4Box.start()},onError(e){cr.debugError(nr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,i){if(e===nr.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&&cr.calcIframeIntervalTimestamp(r);let s=null;s=nr.isHevc?Ki(t,i):Ii(t,i),cr.decode(s,{type:se,ts:r,isIFrame:i,cts:0})}nr.mp4Box.removeUsedSamples(e)}else if(e===nr.audioTrackId){if(cr._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),cr.decode(r,{type:re,ts:i,isIFrame:!1,cts:0})}nr.mp4Box.removeUsedSamples(e)}}else cr.debugWarn(nr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);nr.transportDescarmber&&(t=nr.transportDescarmber.transport(t)),t.buffer.fileStart=nr.offset,nr.offset+=t.byteLength,nr.mp4Box.appendBuffer(t.buffer)},destroy(){nr.mp4Box&&(nr.mp4Box.stop(),nr.mp4Box.flush(),nr.mp4Box.destroy(),nr.mp4Box=null),nr.transportDescarmber&&(nr.transportDescarmber.destroy(),nr.transportDescarmber=null),nr.offset=0,nr.videoTrackId=null,nr.audioTrackId=null,nr.isHevc=!1}},or={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);or.extractNALu(t)},destroy(){or.lastBuffer=new Uint8Array(0),or.parsedOffset=0,or.firstStartCodeOffset=0,or.secondStartCodeOffset=0,or.state="init",or.hasInitVideoCodec=!1,or.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void cr.debugWarn(or.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(or.lastBuffer.length+e.length);for(t.set(or.lastBuffer,0),t.set(new Uint8Array(e),or.lastBuffer.length),or.lastBuffer=t;;){if("init"===or.state){let e=!1;for(;or.lastBuffer.length-or.parsedOffset>=4;)if(0===or.lastBuffer[or.parsedOffset])if(0===or.lastBuffer[or.parsedOffset+1])if(1===or.lastBuffer[or.parsedOffset+2]){if(182===or.lastBuffer[or.parsedOffset+3]){or.state="findFirstStartCode",or.firstStartCodeOffset=or.parsedOffset,or.parsedOffset+=4,e=!0;break}or.parsedOffset++}else or.parsedOffset++;else or.parsedOffset++;else or.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===or.state){let e=!1;for(;or.lastBuffer.length-or.parsedOffset>=4;)if(0===or.lastBuffer[or.parsedOffset])if(0===or.lastBuffer[or.parsedOffset+1])if(1===or.lastBuffer[or.parsedOffset+2]){if(182===or.lastBuffer[or.parsedOffset+3]){or.state="findSecondStartCode",or.secondStartCodeOffset=or.parsedOffset,or.parsedOffset+=4,e=!0;break}or.parsedOffset++}else or.parsedOffset++;else or.parsedOffset++;else or.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===or.state){if(!(or.lastBuffer.length-or.parsedOffset>0))break;{let e,t,i=192&or.lastBuffer[or.parsedOffset];e=0==i?or.secondStartCodeOffset-14:or.secondStartCodeOffset;let r=0==(192&or.lastBuffer[or.firstStartCodeOffset+4]);if(r){if(or.firstStartCodeOffset-14<0)return void cr.debugWarn(or.LOG_NAME,"firstStartCodeOffset -14 is",or.firstStartCodeOffset-14);or.hasInitVideoCodec||(or.hasInitVideoCodec=!0,cr.debugLog(or.LOG_NAME,"setCodec"),hr.setCodec(Pe,"")),t=or.lastBuffer.subarray(or.firstStartCodeOffset-14,e)}else t=or.lastBuffer.subarray(or.firstStartCodeOffset,e);let s=or.getNaluDts();or.hasInitVideoCodec?(postMessage({cmd:R,type:Be,value:t.byteLength}),postMessage({cmd:R,type:Ue,value:s}),Ze=s,hr.decode(t,r?1:0,s)):cr.debugWarn(or.LOG_NAME,"has not init video codec"),or.lastBuffer=or.lastBuffer.subarray(e),or.firstStartCodeOffset=0==i?14:0,or.parsedOffset=or.firstStartCodeOffset+4,or.state="findFirstStartCode"}}}},getNaluDts(){let e=or.localDts;return or.localDts=or.localDts+40,e}},dr={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Ns,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){dr.media_info_=null,dr.pes_slice_queues_=null,dr.section_slice_queues_=null,dr.video_metadata_=null,dr.audio_metadata_=null,dr.aac_last_incomplete_data_=null,dr.video_track_=null,dr.audio_track_=null,dr._remainingPacketData=null},probe(e){let t=new Uint8Array(e),i=-1,r=188;if(t.byteLength<=3*r)return{needMoreData:!0};for(;-1===i;){let e=Math.min(1e3,t.byteLength-3*r);for(let s=0;s=4&&(i-=4),{match:!0,consumed:0,ts_packet_size:r,sync_offset:i})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){dr._remainingPacketData&&(e=hs(dr._remainingPacketData,e),dr._remainingPacketData=null);let t=e.buffer;const i=dr.parseChunks(t);i?dr._remainingPacketData=e.subarray(i):e.length>>6;i[1];let a=(31&i[1])<<8|i[2],n=(48&i[3])>>>4,o=15&i[3],d=!(!dr.pmt_||dr.pmt_.pcr_pid!==a),l={},c=4;if(2==n||3==n){let e=i[4];if(e>0&&(d||3==n)){if(l.discontinuity_indicator=(128&i[5])>>>7,l.random_access_indicator=(64&i[5])>>>6,l.elementary_stream_priority_indicator=(32&i[5])>>>5,(16&i[5])>>>4){let e=300*(i[6]<<25|i[7]<<17|i[8]<<9|i[9]<<1|i[10]>>>7)+((1&i[10])<<8|i[11]);dr.last_pcr_=e}}if(2==n||5+e===188){t+=188,204===dr.tsPacketSize&&(t+=16);continue}c=5+e}if(1==n||3==n)if(0===a||a===dr.current_pmt_pid_||null!=dr.pmt_&&dr.pmt_.pid_stream_type[a]===Ds){let i=188-c;dr.handleSectionSlice(e,t+c,i,{pid:a,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=dr.pmt_&&null!=dr.pmt_.pid_stream_type[a]){let i=188-c,r=dr.pmt_.pid_stream_type[a];a!==dr.pmt_.common_pids.h264&&a!==dr.pmt_.common_pids.h265&&a!==dr.pmt_.common_pids.adts_aac&&a!==dr.pmt_.common_pids.loas_aac&&a!==dr.pmt_.common_pids.ac3&&a!==dr.pmt_.common_pids.eac3&&a!==dr.pmt_.common_pids.opus&&a!==dr.pmt_.common_pids.mp3&&!0!==dr.pmt_.pes_private_data_pids[a]&&!0!==dr.pmt_.timed_id3_pids[a]&&!0!==dr.pmt_.synchronous_klv_pids[a]&&!0!==dr.pmt_.asynchronous_klv_pids[a]||dr.handlePESSlice(e,t+c,i,{pid:a,stream_type:r,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===dr.tsPacketSize&&(t+=16)}return dr.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,i,r){let s=new Uint8Array(e,t,i),a=dr.section_slice_queues_[r.pid];if(r.payload_unit_start_indicator){let n=s[0];if(null!=a&&0!==a.total_length){let s=new Uint8Array(e,t+1,Math.min(i,n));a.slices.push(s),a.total_length+=s.byteLength,a.total_length===a.expected_length?dr.emitSectionSlices(a,r):dr.clearSlices(a,r)}for(let o=1+n;o=a.expected_length&&dr.clearSlices(a,r),o+=d.byteLength}}else if(null!=a&&0!==a.total_length){let s=new Uint8Array(e,t,Math.min(i,a.expected_length-a.total_length));a.slices.push(s),a.total_length+=s.byteLength,a.total_length===a.expected_length?dr.emitSectionSlices(a,r):a.total_length>=a.expected_length&&dr.clearSlices(a,r)}},handlePESSlice(e,t,i,r){let s=new Uint8Array(e,t,i),a=s[0]<<16|s[1]<<8|s[2];s[3];let n=s[4]<<8|s[5];if(r.payload_unit_start_indicator){if(1!==a)return void cr.debugWarn(dr.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${a}`);let e=dr.pes_slice_queues_[r.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?dr.emitPESSlices(e,r):dr.clearSlices(e,r)),dr.pes_slice_queues_[r.pid]=new Ps,dr.pes_slice_queues_[r.pid].random_access_indicator=r.random_access_indicator}if(null==dr.pes_slice_queues_[r.pid])return;let o=dr.pes_slice_queues_[r.pid];o.slices.push(s),r.payload_unit_start_indicator&&(o.expected_length=0===n?0:n+6),o.total_length+=s.byteLength,o.expected_length>0&&o.expected_length===o.total_length?dr.emitPESSlices(o,r):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==n&&3!==n||(i=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,a=3===n?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:i);let d,l=9+o;if(0!==s){if(s<3+o)return void cr.debugWarn(dr.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=s-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Bs:case Us:dr.parseMP3Payload(c,i);break;case Es:dr.pmt_.common_pids.opus===e.pid||dr.pmt_.common_pids.ac3===e.pid||dr.pmt_.common_pids.eac3===e.pid||(dr.pmt_.asynchronous_klv_pids[e.pid]?dr.parseAsynchronousKLVMetadataPayload(c,e.pid,r):dr.pmt_.smpte2038_pids[e.pid]?dr.parseSMPTE2038MetadataPayload(c,i,a,e.pid,r):dr.parsePESPrivateDataPayload(c,i,a,e.pid,r));break;case xs:dr.parseADTSAACPayload(c,i);break;case Ts:dr.parseLOASAACPayload(c,i);break;case ks:case Cs:break;case Ls:dr.pmt_.timed_id3_pids[e.pid]?dr.parseTimedID3MetadataPayload(c,i,a,e.pid,r):dr.pmt_.synchronous_klv_pids[e.pid]&&dr.parseSynchronousKLVMetadataPayload(c,i,a,e.pid,r);break;case Is:dr.parseH264Payload(c,i,a,e.random_access_indicator);break;case Fs:dr.parseH265Payload(c,i,a,e.random_access_indicator)}}else if((188===r||191===r||240===r||241===r||255===r||242===r||248===r)&&e.stream_type===Es){let i,a=6;i=0!==s?s:t.byteLength-a;let n=t.subarray(a,a+i);dr.parsePESPrivateDataPayload(n,void 0,void 0,e.pid,r)}}else cr.debugError(dr.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${i}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(dr.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let i=(15&e[1])<<8|e[2];e[3],e[4];let r=(62&e[5])>>>1,s=1&e[5],a=e[6];e[7];let n=null;if(1===s&&0===a)n={version_number:0,network_pid:0,program_pmt_pid:{}},n.version_number=r;else if(n=dr.pat_,null==n)return;let o=i-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let i=e[t]<<8|e[t+1],r=(31&e[t+2])<<8|e[t+3];0===i?n.network_pid=r:(n.program_pmt_pid[i]=r,-1===d&&(d=i),-1===l&&(l=r))}1===s&&0===a&&(null==dr.pat_&&cr.debugLog(dr.TAG_NAME,`Parsed first PAT: ${JSON.stringify(n)}`),dr.pat_=n,dr.current_program_=d,dr.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void cr.debugError(dr.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let i,r=(15&e[1])<<8|e[2],s=e[3]<<8|e[4],a=(62&e[5])>>>1,n=1&e[5],o=e[6];if(e[7],1===n&&0===o)i=dr._initPmt(),i.program_number=s,i.version_number=a,dr.program_pmt_map_[s]=i;else if(i=dr.program_pmt_map_[s],null==i)return;i.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=r-9-d-4;for(let t=l;t0){for(let r=t+5;r0)for(let r=t+5;rdr.has_video_&&dr.has_audio_?dr.video_init_segment_dispatched_&&dr.audio_init_segment_dispatched_:dr.has_video_&&!dr.has_audio_?dr.video_init_segment_dispatched_:!(dr.has_video_||!dr.has_audio_)&&dr.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=dr.video_metadata_.details,t={type:"video"};t.id=dr.video_track_.id,t.timescale=1e3,t.duration=dr.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let i=t.frameRate.fps_den,r=t.frameRate.fps_num;if(t.refSampleDuration=i/r*1e3,t.codec=e.codec_mimetype,dr.video_metadata_.vps){cr.isHevc=!0;let e=dr.video_metadata_.vps.data.subarray(4),i=dr.video_metadata_.sps.data.subarray(4),r=dr.video_metadata_.pps.data.subarray(4);t.hvcc=qi({vps:e,sps:i,pps:r}),0==dr.video_init_segment_dispatched_&&cr.debugLog(dr.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&cr.decodeVideo(t.hvcc,0,!0,0)}else{let e=dr.video_metadata_.sps.data.subarray(4),i=dr.video_metadata_.pps.data.subarray(4);t.avcc=Li({sps:e,pps:i}),0==dr.video_init_segment_dispatched_&&cr.debugLog(dr.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&cr.decodeVideo(t.avcc,0,!0,0)}dr.video_init_segment_dispatched_=!0,dr.video_metadata_changed_=!1;let s=dr.media_info_;s.hasVideo=!0,s.width=t.codecWidth,s.height=t.codecHeight,s.fps=t.frameRate.fps,s.profile=t.profile,s.level=t.level,s.refFrames=e.ref_frames,s.chromaFormat=e.chroma_format_string,s.sarNum=t.sarRatio.width,s.sarDen=t.sarRatio.height,s.videoCodec=t.codec,s.hasAudio&&s.audioCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.videoCodec}"`},dispatchVideoMediaSegment(){dr.isInitSegmentDispatched()&&dr.video_track_.length&&dr._preDoDecode()},dispatchAudioMediaSegment(){dr.isInitSegmentDispatched()&&dr.audio_track_.length&&dr._preDoDecode()},dispatchAudioVideoMediaSegment(){dr.isInitSegmentDispatched()&&(dr.audio_track_.length||dr.video_track_.length)&&dr._preDoDecode()},parseADTSAACPayload(e,t){if(dr.has_video_&&!dr.video_init_segment_dispatched_)return;if(dr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+dr.aac_last_incomplete_data_.byteLength);t.set(dr.aac_last_incomplete_data_,0),t.set(e,dr.aac_last_incomplete_data_.byteLength),e=t}let i,r;if(null!=t&&(r=t/dr.timescale_),"aac"===dr.audio_metadata_.codec){if(null==t&&null!=dr.audio_last_sample_pts_)i=1024/dr.audio_metadata_.sampling_frequency*1e3,r=dr.audio_last_sample_pts_+i;else if(null==t)return void cr.debugWarn(dr.TAG_NAME,"AAC: Unknown pts");if(dr.aac_last_incomplete_data_&&dr.audio_last_sample_pts_){i=1024/dr.audio_metadata_.sampling_frequency*1e3;let e=dr.audio_last_sample_pts_+i;Math.abs(e-r)>1&&(cr.debugWarn(dr.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${r}ms`),r=e)}}let s,a=new Xt(e),n=null,o=r;for(;null!=(n=a.readNextAACFrame());){i=1024/n.sampling_frequency*1e3;const e={codec:"aac",data:n};0==dr.audio_init_segment_dispatched_?(dr.audio_metadata_={codec:"aac",audio_object_type:n.audio_object_type,sampling_freq_index:n.sampling_freq_index,sampling_frequency:n.sampling_frequency,channel_config:n.channel_config},dr.dispatchAudioInitSegment(e)):dr.detectAudioMetadataChange(e)&&(dr.dispatchAudioMediaSegment(),dr.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const r=new Uint8Array(n.data.length+2);r.set([175,1],0),r.set(n.data,2);let a={payload:r,length:r.byteLength,pts:t,dts:t,type:re};dr.audio_track_.samples.push(a),dr.audio_track_.length+=r.byteLength,o+=i}a.hasIncompleteData()&&(dr.aac_last_incomplete_data_=a.getIncompleteData()),s&&(dr.audio_last_sample_pts_=s)},parseLOASAACPayload(e,t){if(dr.has_video_&&!dr.video_init_segment_dispatched_)return;if(dr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+dr.aac_last_incomplete_data_.byteLength);t.set(dr.aac_last_incomplete_data_,0),t.set(e,dr.aac_last_incomplete_data_.byteLength),e=t}let i,r;if(null!=t&&(r=t/dr.timescale_),"aac"===dr.audio_metadata_.codec){if(null==t&&null!=dr.audio_last_sample_pts_)i=1024/dr.audio_metadata_.sampling_frequency*1e3,r=dr.audio_last_sample_pts_+i;else if(null==t)return void cr.debugWarn(dr.TAG_NAME,"AAC: Unknown pts");if(dr.aac_last_incomplete_data_&&dr.audio_last_sample_pts_){i=1024/dr.audio_metadata_.sampling_frequency*1e3;let e=dr.audio_last_sample_pts_+i;Math.abs(e-r)>1&&(cr.debugWarn(dr.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${r}ms`),r=e)}}let s,a=new Zt(e),n=null,o=r;for(;null!=(n=a.readNextAACFrame(oi(dr.loas_previous_frame)?void 0:dr.loas_previous_frame));){dr.loas_previous_frame=n,i=1024/n.sampling_frequency*1e3;const e={codec:"aac",data:n};0==dr.audio_init_segment_dispatched_?(dr.audio_metadata_={codec:"aac",audio_object_type:n.audio_object_type,sampling_freq_index:n.sampling_freq_index,sampling_frequency:n.sampling_frequency,channel_config:n.channel_config},dr.dispatchAudioInitSegment(e)):dr.detectAudioMetadataChange(e)&&(dr.dispatchAudioMediaSegment(),dr.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const r=new Uint8Array(n.data.length+2);r.set([175,1],0),r.set(n.data,2);let a={payload:r,length:r.byteLength,pts:t,dts:t,type:re};dr.audio_track_.samples.push(a),dr.audio_track_.length+=r.byteLength,o+=i}a.hasIncompleteData()&&(dr.aac_last_incomplete_data_=a.getIncompleteData()),s&&(dr.audio_last_sample_pts_=s)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(dr.has_video_&&!dr.video_init_segment_dispatched_)return;let i=[44100,48e3,32e3,0],r=[22050,24e3,16e3,0],s=[11025,12e3,8e3,0],a=e[1]>>>3&3,n=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!==(e[3]>>>6&3)?2:1,l=0,c=34;switch(a){case 0:l=s[o];break;case 2:l=r[o];break;case 3:l=i[o]}switch(n){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==dr.audio_init_segment_dispatched_?(dr.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},dr.dispatchAudioInitSegment(h)):dr.detectAudioMetadataChange(h)&&(dr.dispatchAudioMediaSegment(),dr.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/dr.timescale_,dts:t/dr.timescale_,type:re};dr.audio_track_.samples.push(f),dr.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==dr.audio_metadata_.codec)return cr.debugLog(dr.TAG_NAME,`Audio: Audio Codecs changed from ${dr.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===dr.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==dr.audio_metadata_.audio_object_type)return cr.debugLog(dr.TAG_NAME,`AAC: AudioObjectType changed from ${dr.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==dr.audio_metadata_.sampling_freq_index)return cr.debugLog(dr.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${dr.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==dr.audio_metadata_.channel_config)return cr.debugLog(dr.TAG_NAME,`AAC: Channel configuration changed from ${dr.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===dr.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==dr.audio_metadata_.sampling_frequency)return cr.debugLog(dr.TAG_NAME,`AC3: Sampling Frequency changed from ${dr.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==dr.audio_metadata_.bit_stream_identification)return cr.debugLog(dr.TAG_NAME,`AC3: Bit Stream Identification changed from ${dr.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==dr.audio_metadata_.bit_stream_mode)return cr.debugLog(dr.TAG_NAME,`AC3: BitStream Mode changed from ${dr.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==dr.audio_metadata_.channel_mode)return cr.debugLog(dr.TAG_NAME,`AC3: Channel Mode changed from ${dr.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==dr.audio_metadata_.low_frequency_effects_channel_on)return cr.debugLog(dr.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${dr.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===dr.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==dr.audio_metadata_.sample_rate)return cr.debugLog(dr.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${dr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==dr.audio_metadata_.channel_count)return cr.debugLog(dr.TAG_NAME,`Opus: Channel count changed from ${dr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===dr.audio_metadata_.codec){const t=e.data;if(t.object_type!==dr.audio_metadata_.object_type)return cr.debugLog(dr.TAG_NAME,`MP3: AudioObjectType changed from ${dr.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==dr.audio_metadata_.sample_rate)return cr.debugLog(dr.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${dr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==dr.audio_metadata_.channel_count)return cr.debugLog(dr.TAG_NAME,`MP3: Channel count changed from ${dr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=dr.audio_track_.id,t.timescale=1e3,t.duration=dr.duration_,"aac"===dr.audio_metadata_.codec){let i="aac"===e.codec?e.data:null,r=new Gs(i);t.audioSampleRate=r.sampling_rate,t.audioSampleRateIndex=r.sampling_index,t.channelCount=r.channel_count,t.codec=r.codec_mimetype,t.originalCodec=r.original_codec_mimetype,t.config=r.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const s=Wt({profile:cr._opt.mseDecodeAudio?r.object_type:r.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});cr.decodeAudio(s,0)}else"ac-3"===dr.audio_metadata_.codec||"ec-3"===dr.audio_metadata_.codec||"opus"===dr.audio_metadata_.codec||"mp3"===dr.audio_metadata_.codec&&(t.audioSampleRate=dr.audio_metadata_.sample_rate,t.channelCount=dr.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==dr.audio_init_segment_dispatched_&&cr.debugLog(dr.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),dr.audio_init_segment_dispatched_=!0,dr.video_metadata_changed_=!1;let i=dr.media_info_;i.hasAudio=!0,i.audioCodec=t.originalCodec,i.audioSampleRate=t.audioSampleRate,i.audioChannelCount=t.channelCount,i.hasVideo&&i.videoCodec?i.mimeType=`video/mp2t; codecs="${i.videoCodec},${i.audioCodec}"`:i.mimeType=`video/mp2t; codecs="${i.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,i){},parsePESPrivateDataPayload(e,t,i,r,s){let a=new zs;if(a.pid=r,a.stream_id=s,a.len=e.byteLength,a.data=e,null!=t){let e=Math.floor(t/dr.timescale_);a.pts=e}else a.nearest_pts=dr.getNearestTimestampMilliseconds();if(null!=i){let e=Math.floor(i/dr.timescale_);a.dts=e}},parseTimedID3MetadataPayload(e,t,i,r,s){cr.debugLog(dr.TAG_NAME,`Timed ID3 Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},parseSynchronousKLVMetadataPayload(e,t,i,r,s){cr.debugLog(dr.TAG_NAME,`Synchronous KLV Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},parseAsynchronousKLVMetadataPayload(e,t,i){cr.debugLog(dr.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${i}`)},parseSMPTE2038MetadataPayload(e,t,i,r,s){cr.debugLog(dr.TAG_NAME,`SMPTE 2038 Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},getNearestTimestampMilliseconds(){if(null!=dr.audio_last_sample_pts_)return Math.floor(dr.audio_last_sample_pts_);if(null!=dr.last_pcr_){return Math.floor(dr.last_pcr_/300/dr.timescale_)}},_preDoDecode(){const e=dr.video_track_,t=dr.audio_track_;let i=e.samples;t.samples.length>0&&(i=e.samples.concat(t.samples),i=i.sort(((e,t)=>e.dts-t.dts))),i.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===se?dr._doDecodeVideo({...e,payload:t}):e.type===re&&dr._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Ki(t,e.isIFrame):Ii(t,e.isIFrame),e.isIFrame&&cr.calcIframeIntervalTimestamp(e.dts);let r=cr.cryptoPayload(i,e.isIFrame);cr.decode(r,{type:se,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let i=t;gi(cr._opt.m7sCryptoAudio)&&(i=cr.cryptoPayloadAudio(t)),cr.decode(i,{type:re,ts:e.dts,isIFrame:!1,cts:0})}},lr=null;bi()&&(lr={TAG_NAME:"worker MediaSource",_resetInIt(){lr.isAvc=null,lr.isAAC=null,lr.videoInfo={},lr.videoMeta={},lr.audioMeta={},lr.sourceBuffer=null,lr.audioSourceBuffer=null,lr.hasInit=!1,lr.hasAudioInit=!1,lr.isAudioInitInfo=!1,lr.videoMimeType="",lr.audioMimeType="",lr.cacheTrack={},lr.cacheAudioTrack={},lr.timeInit=!1,lr.sequenceNumber=0,lr.audioSequenceNumber=0,lr.firstRenderTime=null,lr.firstAudioTime=null,lr.mediaSourceAppendBufferFull=!1,lr.mediaSourceAppendBufferError=!1,lr.mediaSourceAddSourceBufferError=!1,lr.mediaSourceBufferError=!1,lr.mediaSourceError=!1,lr.prevTimestamp=null,lr.decodeDiffTimestamp=null,lr.prevDts=null,lr.prevAudioDts=null,lr.prevPayloadBufferSize=0,lr.isWidthOrHeightChanged=!1,lr.prevTs=null,lr.prevAudioTs=null,lr.eventListenList=[],lr.pendingRemoveRanges=[],lr.pendingSegments=[],lr.pendingAudioRemoveRanges=[],lr.pendingAudioSegments=[],lr.supportVideoFrameCallbackHandle=null,lr.audioSourceBufferCheckTimeout=null,lr.audioSourceNoDataCheckTimeout=null,lr.hasPendingEos=!1,lr.$video={currentTime:0,readyState:0}},init(){lr.events=new fs,lr._resetInIt(),lr.mediaSource=new self.MediaSource,lr.isDecodeFirstIIframe=!!yi(cr._opt.checkFirstIFrame),lr._bindMediaSourceEvents()},destroy(){lr.stop(),lr._clearAudioSourceBufferCheckTimeout(),lr.eventListenList&&lr.eventListenList.length&&(lr.eventListenList.forEach((e=>e())),lr.eventListenList=[]),lr._resetInIt(),lr.mediaSource=null},getState:()=>lr.mediaSource&&lr.mediaSource.readyState,isStateOpen:()=>lr.getState()===gt,isStateClosed:()=>lr.getState()===yt,isStateEnded:()=>lr.getState()===mt,_bindMediaSourceEvents(){const{proxy:e}=lr.events,t=e(lr.mediaSource,vt,(()=>{cr.debugLog(lr.TAG_NAME,"sourceOpen"),lr._onMediaSourceSourceOpen()})),i=e(lr.mediaSource,bt,(()=>{cr.debugLog(lr.TAG_NAME,"sourceClose")})),r=e(lr.mediaSource,St,(()=>{cr.debugLog(lr.TAG_NAME,"sourceended")}));lr.eventListenList.push(t,i,r)},_onMediaSourceSourceOpen(){lr.sourceBuffer||(cr.debugLog(lr.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),lr._initSourceBuffer()),lr.audioSourceBuffer||(cr.debugLog(lr.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),lr._initAudioSourceBuffer()),lr._hasPendingSegments()&&lr._doAppendSegments()},decodeVideo(e,t,i,r){if(cr.isDestroyed)cr.debugWarn(lr.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(yi(lr.hasInit))if(i&&e[1]===Ut){const r=15&e[0];if(r===Fe&&yi(cr._opt.supportMSEDecodeHevc))return void lr.emitError(Le.mediaSourceH265NotSupport);lr.videoInfo.codec=r,postMessage({cmd:I,code:r});const s=new Uint8Array(e);postMessage({cmd:F,buffer:s,codecId:r},[s.buffer]),lr.hasInit=lr._decodeConfigurationRecord(e,t,i,r)}else cr.debugWarn(lr.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`);else if(!lr.isDecodeFirstIIframe&&i&&(lr.isDecodeFirstIIframe=!0),lr.isDecodeFirstIIframe){if(i&&0===e[1]){const t=15&e[0];let i={};if(t===Ie){i=ki(e.slice(5))}else t===Fe&&(i=$i(e));const r=lr.videoInfo;r&&r.codecWidth&&r.codecWidth&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==r.codecWidth||i.codecHeight!==r.codecWidth)&&(cr.debugWarn(lr.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${r.codecWidth}, old height is ${r.codecHeight},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),lr.isWidthOrHeightChanged=!0,lr.emitError(Le.mseWidthOrHeightChange,`width: ${r.codecWidth}->${i.codecWidth}, height: ${r.codecWidth}->${i.codecHeight}`))}if(lr.isWidthOrHeightChanged)return void cr.debugWarn(lr.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(mi(e))return void cr.debugLog(lr.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthlr.prevTs>0&&eS,_decodeConfigurationRecord(e,t,i,r){let s=e.slice(5),a={};if(r===Ie?a=ki(s):r===Fe&&(a=Wi(s)),lr.videoInfo.width=a.codecWidth,lr.videoInfo.height=a.codecHeight,0===a.codecWidth&&0===a.codecHeight)return cr.debugWarn(lr.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(a)),lr.emitError(Le.mediaSourceDecoderConfigurationError,`width is ${0===a.codecWidth} and height is ${a.codecHeight}`),!1;const n={id:Lt,type:"video",timescale:1e3,duration:0,avcc:s,codecWidth:a.codecWidth,codecHeight:a.codecHeight,videoType:a.videoType},o=ps.generateInitSegment(n);lr.isAvc=r===Ie;let d=a.codec;return lr.videoMimeType=d?`video/mp4; codecs="${a.codec}"`:lr.isAvc?pt:_t,postMessage({cmd:E,w:a.codecWidth,h:a.codecHeight}),lr._initSourceBuffer(),lr.appendBuffer(o.buffer),lr.sequenceNumber=0,lr.cacheTrack={},lr.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const i=e[0]>>4,r=e[0]>>1&1,s=i===Oe,a=i===Re;if(yi(a||s))return cr.debugWarn(lr.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),lr.emitError(Le.mediaSourceAudioG711NotSupport),!1;const n={id:Dt,type:"audio",timescale:1e3};let o={};if(Yt(e)){if(o=Kt(e.slice(2)),!o)return!1;n.audioSampleRate=o.sampleRate,n.channelCount=o.channelCount,n.config=o.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale}else{if(!s)return!1;if(o=As(e),!o)return!1;n.audioSampleRate=o.samplingRate,n.channelCount=o.channelCount,n.refSampleDuration=1152/n.audioSampleRate*n.timescale}n.codec=o.codec,n.duration=0;let d="mp4",l=o.codec,c=null;s&&yi(cr._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=ps.generateInitSegment(n);let u=`${n.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),yi(lr.isAudioInitInfo)&&(Bi=i===Re?r?16:8:0===r?8:16,postMessage({cmd:C,code:i}),postMessage({cmd:k,sampleRate:n.audioSampleRate,channels:n.channelCount,depth:Bi}),lr.isAudioInitInfo=!0),lr.audioMimeType=u,lr.isAAC=a,lr._initAudioSourceBuffer(),lr.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=lr.events;if(null===lr.sourceBuffer&&null!==lr.mediaSource&&lr.isStateOpen()&&lr.videoMimeType){try{cr.debugLog(lr.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",lr.videoMimeType),lr.sourceBuffer=lr.mediaSource.addSourceBuffer(lr.videoMimeType)}catch(e){return cr.debugError(lr.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),lr.emitError(Le.mseWorkerAddSourceBufferError,e.code),void(lr.mediaSourceAddSourceBufferError=!0)}if(lr.sourceBuffer){const t=e(lr.sourceBuffer,"error",(e=>{lr.mediaSourceBufferError=!0,cr.debugError(lr.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),lr.emitError(Le.mseSourceBufferError,e.code)})),i=e(lr.sourceBuffer,"updateend",(()=>{lr._hasPendingRemoveRanges()?lr._doRemoveRanges():lr._hasPendingSegments()?lr._doAppendSegments():lr.hasPendingEos&&(cr.debugLog(lr.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),lr.endOfStream())}));lr.eventListenList.push(t,i)}}else cr.debugLog(lr.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${lr.isStateOpen()} and mseDecoder.isAvc === null is ${null===lr.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=lr.events;if(null===lr.audioSourceBuffer&&null!==lr.mediaSource&&lr.isStateOpen()&&lr.audioMimeType){try{cr.debugLog(lr.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",lr.audioMimeType),lr._clearAudioSourceBufferCheckTimeout(),lr.audioSourceBuffer=lr.mediaSource.addSourceBuffer(lr.audioMimeType)}catch(e){return cr.debugError(lr.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),lr.emitError(Le.mseWorkerAddSourceBufferError,e.code),void(lr.mediaSourceAddSourceBufferError=!0)}if(lr.audioSourceBuffer){const t=e(lr.audioSourceBuffer,"error",(e=>{lr.mediaSourceBufferError=!0,cr.debugError(lr.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),lr.emitError(Le.mseSourceBufferError,e.code)})),i=e(lr.audioSourceBuffer,"updateend",(()=>{lr._hasPendingRemoveRanges()?lr._doRemoveRanges():lr._hasPendingSegments()?lr._doAppendSegments():lr.hasPendingEos&&(cr.debugLog(lr.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),lr.endOfStream())}));lr.eventListenList.push(t,i),null===lr.audioSourceNoDataCheckTimeout&&(lr.audioSourceNoDataCheckTimeout=setTimeout((()=>{lr._clearAudioNoDataCheckTimeout(),lr.emitError(Le.mediaSourceAudioNoDataTimeout)}),1e3))}}else cr.debugLog(lr.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${lr.isStateOpen()} and mseDecoder.audioMimeType is ${lr.audioMimeType}`)},_decodeVideo(e,t,i,r,s){let a=e.slice(5),n=a.byteLength;if(0===n)return void cr.debugWarn(lr.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;lr.prevTimestamp||(lr.prevTimestamp=o,d=!0);const l=o-lr.prevTimestamp;if(lr.decodeDiffTimestamp=l,l>1e3&&!d&&cr.isPlayer&&cr.debugLog(lr.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${lr.prevTimestamp}, diff time is ${l} ms`),lr.cacheTrack.id&&t>=lr.cacheTrack.dts){let e=8+lr.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(ps.types.mdat,4),i.set(lr.cacheTrack.data,8),lr.cacheTrack.duration=t-lr.cacheTrack.dts;let r=ps.moof(lr.cacheTrack,lr.cacheTrack.dts);lr.cacheTrack={};let s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),lr.appendBuffer(s.buffer)}else cr.debugLog(lr.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${lr.cacheTrack&&lr.cacheTrack.dts}`),lr.timeInit=!1,lr.cacheTrack={};lr.cacheTrack||(lr.cacheTrack={}),lr.cacheTrack.id=Lt,lr.cacheTrack.sequenceNumber=++lr.sequenceNumber,lr.cacheTrack.size=n,lr.cacheTrack.dts=t,lr.cacheTrack.cts=r,lr.cacheTrack.isKeyframe=i,lr.cacheTrack.data=a,lr.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},lr.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,i){let r=lr.isAAC?e.slice(2):e.slice(1),s=r.byteLength;if(lr.cacheAudioTrack.id&&t>=lr.cacheAudioTrack.dts){let e=8+lr.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(ps.types.mdat,4),i.set(lr.cacheAudioTrack.data,8),lr.cacheAudioTrack.duration=t-lr.cacheAudioTrack.dts;let r=ps.moof(lr.cacheAudioTrack,lr.cacheAudioTrack.dts);lr.cacheAudioTrack={};let s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),lr.appendAudioBuffer(s.buffer)}else lr.cacheAudioTrack={};lr.cacheAudioTrack||(lr.cacheAudioTrack={}),lr.cacheAudioTrack.id=Dt,lr.cacheAudioTrack.sequenceNumber=++lr.audioSequenceNumber,lr.cacheAudioTrack.size=s,lr.cacheAudioTrack.dts=t,lr.cacheAudioTrack.cts=0,lr.cacheAudioTrack.data=r,lr.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){cr.isDestroyed?cr.debugWarn(lr.TAG_NAME,"appendBuffer() player is destroyed"):lr.mediaSourceAddSourceBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):lr.mediaSourceAppendBufferFull?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):lr.mediaSourceAppendBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):lr.mediaSourceBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(lr.pendingSegments.push(e),lr.sourceBuffer&&(cr._opt.mseAutoCleanupSourceBuffer&&lr._needCleanupSourceBuffer()&&lr._doCleanUpSourceBuffer(),yi(lr.getSourceBufferUpdating())&&lr.isStateOpen()&&yi(lr._hasPendingRemoveRanges()))?lr._doAppendSegments():lr.isStateClosed()?(lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):lr.isStateEnded()&&(lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){cr.isDestroyed?cr.debugWarn(lr.TAG_NAME,"appendAudioBuffer() player is destroyed"):lr.mediaSourceAddSourceBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):lr.mediaSourceAppendBufferFull?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):lr.mediaSourceAppendBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):lr.mediaSourceBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(lr.pendingAudioSegments.push(e),lr.audioSourceBuffer&&(cr._opt.mseAutoCleanupSourceBuffer&&lr._needCleanupSourceBuffer()&&lr._doCleanUpSourceBuffer(),yi(lr.getAudioSourceBufferUpdating())&&lr.isStateOpen()&&yi(lr._hasPendingRemoveRanges()))?lr._doAppendSegments():lr.isStateClosed()?(lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):lr.isStateEnded()&&(lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>lr.sourceBuffer&&lr.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>lr.audioSourceBuffer&&lr.audioSourceBuffer.updating,stop(){lr.abortSourceBuffer(),lr.removeSourceBuffer(),lr.endOfStream()},clearUpAllSourceBuffer(){if(lr.sourceBuffer){const e=lr.sourceBuffer.buffered;for(let t=0;tlr.pendingSegments.length>0||lr.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>lr.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(lr.isStateClosed()||lr.isStateEnded())cr.debugLog(lr.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==lr.sourceBuffer){if(lr.needInitAudio()&&null===lr.audioSourceBuffer)return cr.debugLog(lr.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===lr.audioSourceBufferCheckTimeout&&(lr.audioSourceBufferCheckTimeout=setTimeout((()=>{lr._clearAudioSourceBufferCheckTimeout(),lr.emitError(Le.mediaSourceAudioInitTimeout)}),1e3)));if(yi(lr.getSourceBufferUpdating())&&lr.pendingSegments.length>0){const e=lr.pendingSegments.shift();try{lr.sourceBuffer.appendBuffer(e)}catch(e){cr.debugError(lr.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(lr.stop(),lr.mediaSourceAppendBufferFull=!0,lr.emitError(Le.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(lr.stop(),lr.mediaSourceAppendBufferError=!0,lr.emitError(Le.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(lr.stop(),lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(yi(lr.getAudioSourceBufferUpdating())&&lr.pendingAudioSegments.length>0){const e=lr.pendingAudioSegments.shift();try{lr.audioSourceBuffer.appendBuffer(e)}catch(e){cr.debugError(lr.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(lr.stop(),lr.mediaSourceAppendBufferFull=!0,lr.emitError(Le.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(lr.stop(),lr.mediaSourceAppendBufferError=!0,lr.emitError(Le.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(lr.stop(),lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else cr.debugLog(lr.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=lr.$video.currentTime;if(lr.sourceBuffer){const t=lr.sourceBuffer.buffered;let i=!1;for(let r=0;r=cr._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-cr._opt.mseAutoCleanupMinBackwardDuration;lr.pendingRemoveRanges.push({start:s,end:t})}}else a=cr._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-cr._opt.mseAutoCleanupMinBackwardDuration;lr.pendingAudioRemoveRanges.push({start:s,end:t})}}else alr.pendingRemoveRanges.length>0||lr.pendingAudioRemoveRanges.length>0,needInitAudio:()=>cr._opt.hasAudio&&cr._opt.mseDecodeAudio,_doRemoveRanges(){if(lr.sourceBuffer&&yi(lr.getSourceBufferUpdating())){let e=lr.pendingRemoveRanges;for(;e.length&&yi(lr.getSourceBufferUpdating());){let t=e.shift();try{lr.sourceBuffer.remove(t.start,t.end)}catch(e){cr.debugWarn(lr.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(lr.audioSourceBuffer&&yi(lr.getAudioSourceBufferUpdating())){let e=lr.pendingAudioRemoveRanges;for(;e.length&&yi(lr.getAudioSourceBufferUpdating());){let t=e.shift();try{lr.audioSourceBuffer.remove(t.start,t.end)}catch(e){cr.debugWarn(lr.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(yi(cr._opt.mseAutoCleanupSourceBuffer))return!1;const e=lr.$video.currentTime;if(lr.sourceBuffer){let t=lr.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=cr._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(lr.audioSourceBuffer){let t=lr.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=cr._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){lr.audioSourceBufferCheckTimeout&&(clearTimeout(lr.audioSourceBufferCheckTimeout),lr.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){lr.audioSourceNoDataCheckTimeout&&(clearTimeout(lr.audioSourceNoDataCheckTimeout),lr.audioSourceNoDataCheckTimeout=null)},getHandle:()=>lr.mediaSource.handle,emitError(e){postMessage({cmd:ie,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let cr={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Tt,_opt:rr(),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(){cr.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:cr.getVideoBufferLength(),audioDemuxBufferDelay:cr.getAudioBufferLength(),streamBufferByteLength:cr.getStreamBufferLength(),netBuf:cr.networkDelay||0,pushLatestDelay:cr.pushLatestDelay||0,latestDelay:cr.delay,isStreamTsMoreThanLocal:tt,wasmDecodeDelay:Ze-Qe});postMessage({cmd:R,type:xe,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return cr._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||cr._opt.hasVideo&&!Xe)return-1;if(t===re)return cr.delay;if(cr.preDelayTimestamp&&cr.preDelayTimestamp>e)return cr.preDelayTimestamp-e>1e3&&cr.debugWarn("worker",`getDelay() and preDelayTimestamp is ${cr.preDelayTimestamp} > timestamp is ${e} more than ${cr.preDelayTimestamp-e}ms and return ${cr.delay}`),cr.preDelayTimestamp=e,cr.delay;if(cr.firstTimestamp){if(e){const t=Date.now()-cr.startTimestamp,i=e-cr.firstTimestamp;t>=i?(tt=!1,cr.delay=t-i):(tt=!0,cr.delay=i-t)}}else cr.firstTimestamp=e,cr.startTimestamp=Date.now(),cr.delay=-1;return cr.preDelayTimestamp=e,cr.delay},getDelayNotUpdateDelay:function(e,t){if(!e||cr._opt.hasVideo&&!Xe)return-1;if(t===re)return cr.pushLatestDelay;if(cr.preDelayTimestamp&&cr.preDelayTimestamp-e>1e3)return cr.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${cr.preDelayTimestamp} > timestamp is ${e} more than ${cr.preDelayTimestamp-e}ms and return -1`),-1;if(cr.firstTimestamp){let t=-1;if(e){const i=Date.now()-cr.startTimestamp,r=e-cr.firstTimestamp;i>=r?(tt=!1,t=i-r):(tt=!0,t=r-i)}return t}return-1},resetDelay:function(){cr.firstTimestamp=null,cr.startTimestamp=null,cr.delay=-1,cr.dropping=!1},resetAllDelay:function(){cr.resetDelay(),cr.preDelayTimestamp=null},doDecode:function(e){cr._opt.isEmitSEI&&e.type===se&&cr.isWorkerFetch&&cr.findSei(e.payload,e.ts),cr.isPlayUseMSEAndDecoderInWorker()?e.type===re?cr._opt.mseDecodeAudio?lr.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===se&&lr.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):cr._opt.useWCS&&cr.useOffscreen()&&e.type===se&&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===s.length)return;const t=e.ts,r=s[0],a=e.type===se&&mi(e.payload);if(yi(i))a&&(cr.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${r.type} ts is ${r.ts}\n isVideoSqeHeader is ${a}`),s.shift(),cr.doDecode(r));else{const i=r.ts-t,n=r.type===re&&e.type===se;(i<=20||n||a)&&(cr.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${r.type} ts is ${r.ts}\n diff is ${i} and isVideoAndNextAudio is ${n} and isVideoSqeHeader is ${a}`),s.shift(),cr.doDecode(r))}},init:function(){cr.debugLog("worker",`init and forHardDecode is ${i} and forOldVersion is ${r} and opt is`,JSON.stringify(cr._opt));const e=cr._opt.playType===m,t=cr._opt.playType===g;if(ar.init(),cr.isPlayer=e,cr.isPlayback=t,cr.isPlayUseMSEAndDecoderInWorker()&&lr&&lr.init(),n&&cr._opt.useWCS&&cr.useOffscreen()&&n.init(),yi(cr.isPlaybackCacheBeforeDecodeForFpsRender())){cr.debugLog("worker","setInterval()");const t=()=>{const t=cr._opt.videoBuffer+cr._opt.videoBufferDelay;let i=null;if(s.length){if(cr.isPushDropping)return void cr.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${s.length}`);if(cr.dropping){for(i=s.shift(),cr.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${i.isIFrame} and delay is ${cr.delay} and bufferlist is ${s.length}`);!i.isIFrame&&s.length;)i=s.shift();const e=cr.getDelayNotUpdateDelay(i.ts,i.type);i.isIFrame&&e<=cr.getNotDroppingDelayTs()&&(cr.debugLog("worker","loop() is dropping = false, is iFrame"),cr.dropping=!1,cr.doDecode(i),cr.decodeNext(i))}else if(cr.isPlayback||cr.isPlayUseMSE()||0===cr._opt.videoBuffer)for(;s.length;)i=s.shift(),cr.doDecode(i);else if(i=s[0],-1===cr.getDelay(i.ts,i.type))cr.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",i.ts),s.shift(),cr.doDecode(i),cr.decodeNext(i);else if(cr.delay>t&&e)cr.hasIframeInBufferList()?(cr.debugLog("worker",`delay is ${cr.delay} > maxDelay ${t}, set dropping is true`),cr.resetAllDelay(),cr.dropping=!0,postMessage({cmd:G})):(s.shift(),cr.doDecode(i),cr.decodeNext(i));else for(;s.length;){if(i=s[0],!(cr.getDelay(i.ts,i.type)>cr._opt.videoBuffer)){cr.delay<0&&cr.debugWarn("worker",`loop() do not decode and delay is ${cr.delay}, bufferList is ${s.length}`);break}s.shift(),cr.doDecode(i)}}else-1!==cr.delay&&cr.debugLog("worker","loop() bufferList is empty and reset delay"),cr.resetAllDelay()};cr.stopId=setInterval((()=>{let e=(new Date).getTime();lt||(lt=e);const i=e-lt;i>100&&cr.debugWarn("worker",`loop demux diff time is ${i}`),t(),lt=(new Date).getTime()}),20)}else cr.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(yi(cr._opt.checkFirstIFrame)&&(Xe=!0),cr.isPlayUseMSEAndDecoderInWorker()&&lr){const e=lr.getHandle();e&&postMessage({cmd:ee,mseHandle:e},[e])}},playbackCacheLoop:function(){cr.clearPlaybackCacheLoop();const e=()=>{let e=null;s.length&&(e=s.shift(),cr.doDecode(e))};e();const t=Math.ceil(1e3/(cr.streamFps*cr._opt.playbackRate));cr.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${cr.streamFps}, streamAudioFps is ${cr.streamAudioFps} ,streamVideoFps is ${cr.streamVideoFps} playbackRate is ${cr._opt.playbackRate}`),cr.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){cr.stopId&&(clearInterval(cr.stopId),cr.stopId=null)},startPlaybackCacheLoop:function(){cr.playbackCacheLoop()},close:function(){if(cr.debugLog("worker","close"),cr.isDestroyed=!0,sr(),!d||1!==d.readyState&&2!==d.readyState?d&&cr.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Ti=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,cr.stopStreamRateAndStatsInterval(),cr.stopId&&(clearInterval(cr.stopId),cr.stopId=null),cr.mp3Demuxer&&(cr.mp3Demuxer.destroy(),cr.mp3Demuxer=null),cr.writableStream&&yi(cr.writableStream.locked)&&cr.writableStream.close().catch((e=>{cr.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),cr.writableStream=null,ur)try{ur.clear&&ur.clear(),ur=null}catch(e){cr.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hr)try{hr.clear&&hr.clear(),hr=null}catch(e){cr.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,lt=null,tt=!1,Ze=0,Qe=0,n&&(n.destroy&&n.destroy(),n=null),lr&&(lr.destroy(),lr=null),cr.firstTimestamp=null,cr.startTimestamp=null,cr.networkDelay=0,cr.streamFps=null,cr.streamAudioFps=null,cr.streamVideoFps=null,cr.delay=-1,cr.pushLatestDelay=-1,cr.preDelayTimestamp=null,cr.dropping=!1,cr.isPushDropping=!1,cr.isPlayer=!0,cr.isPlayback=!1,cr.isWorkerFetch=!1,cr.isHevc=null,cr._opt=rr(),cr.webglObj&&(cr.webglObj.destroy(),cr.offscreenCanvas.removeEventListener("webglcontextlost",cr.onOffscreenCanvasWebglContextLost),cr.offscreenCanvas.removeEventListener("webglcontextrestored",cr.onOffscreenCanvasWebglContextRestored),cr.offscreenCanvas=null,cr.offscreenCanvasGL=null,cr.offscreenCanvasCtx=null),s=[],a=[],b&&(b.close(),b=null),B=null,be=null,ve=!1,$e=!1,Xe=!1,ai=!1,Si=!1,wi=!1,Ai=null,Et=[],Gt=0,Ot=0,wt=null,At=null,Ht=null,Vt=null,Bi=null,jt=0,Jt=0,Rt=null,Nt=null,cr.fetchStatus=Tt,Oi=!0,ar.destroy(),nr.destroy(),or.destroy(),dr.destroy(),cr.debug=null,cr._opt={},postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===re&&Yt(e)){if(cr.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),cr._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:X,buffer:t},[t.buffer])}cr.decodeAudio(e,t.ts)}else if(t.type===se&&t.isIFrame&&mi(e)){if(cr.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),cr._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Z,buffer:t},[t.buffer])}cr.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(cr._opt.isRecording)if(cr._opt.isRecordTypeFlv){const i=new Uint8Array(e);postMessage({cmd:J,type:t.type,buffer:i,ts:t.ts},[i.buffer])}else if(cr._opt.recordType===y)if(t.type===se){const i=new Uint8Array(e).slice(5);postMessage({cmd:P,buffer:i,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[i.buffer])}else if(t.type===re&&cr._opt.isWasmMp4){const i=new Uint8Array(e),r=qt(i)?i.slice(2):i.slice(1);postMessage({cmd:L,buffer:r,ts:t.ts},[r.buffer])}if(cr.isPlayer){if(t.type===se){if(jt>0){const e=t.ts-Vt,i=jt+jt/2;e>i&&cr.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Vt},\n diff is ${e} and preTsDuration is ${jt} and maxDiff is ${i}\n maybe trigger black screen or flower screen\n `)}if(null!==Vt&&Vt>=t.ts&&(cr.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Vt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Jt}`),Vt-t.ts>S&&(cr.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Vt}, options.ts is ${t.ts},\n diff is ${Vt-t.ts} more than 3600000,\n and resetAllDelay`),cr.resetAllDelay(),Vt=null,jt=0),cr._opt.isDropSameTimestampGop&&yi(t.isIFrame)&&Xe)){const e=cr.hasIframeInBufferList(),t=yi(cr.isPushDropping);return cr.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?cr.dropBuffer$2():(cr.clearBuffer(!0),gi(cr._opt.checkFirstIFrame)&&gi(i)&&(cr.isPlayUseMSEAndDecoderInWorker()?lr.isDecodeFirstIIframe=!1:postMessage({cmd:Q}))))}Vt>0&&(jt=t.ts-Vt),Jt=e.byteLength,Vt=t.ts}if(Xe){const e=cr._opt.videoBuffer+cr._opt.videoBufferDelay,i=cr.getDelayNotUpdateDelay(t.ts,t.type);cr.pushLatestDelay=i,cr.delay>0&&i>e&&cr.delay({type:e.type,ts:e.ts})));cr.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${s.length}, and ts list is ${JSON.stringify(i)}`)}const i=cr.getAudioBufferLength()>0,r=i?60:40;s.length>=r&&(cr.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${s.length} more than ${r}, and hasAudio is ${i} an set streamFps is 25`),cr.streamVideoFps=25,postMessage({cmd:H,value:cr.streamVideoFps}),i?(cr.streamAudioFps=25,cr.streamFps=cr.streamVideoFps+cr.streamAudioFps):cr.streamFps=cr.streamVideoFps,cr.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return s.forEach((t=>{t.type===se&&(e+=1)})),e},hasIframeInBufferList:()=>s.some((e=>e.type===se&&e.isIFrame)),isAllIframeInBufferList(){const e=cr.getVideoBufferLength();let t=0;return s.forEach((e=>{e.type===se&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>cr._opt.videoBuffer+cr._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return s.forEach((t=>{t.type===re&&(e+=1)})),e},getStreamBufferLength(){let e=0;return b&&b.buffer&&(e=b.buffer.byteLength),cr._opt.isNakedFlow?ar.lastBuf&&(e=ar.lastBuf.byteLength):cr._opt.isTs?dr._remainingPacketData&&(e=dr._remainingPacketData.byteLength):cr._opt.isFmp4&&nr.mp4Box&&(e=nr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(cr.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),cr.isWorkerFetch=!0,t.isFlv?cr._opt.isFlv=!0:t.isFmp4?cr._opt.isFmp4=!0:t.isMpeg4?cr._opt.isMpeg4=!0:t.isNakedFlow?cr._opt.isNakedFlow=!0:t.isTs&&(cr._opt.isTs=!0),l=ni((e=>{postMessage({cmd:R,type:we,value:e})})),cr.startStreamRateAndStatsInterval(),t.isFmp4&&(nr.listenMp4Box(),cr._opt.isFmp4Private&&nr.initTransportDescarmber()),t.protocol===f){t.isFlv&&(b=new Ui(cr.demuxFlv())),o=new AbortController;const i=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,i).then((e=>{if(gi(Ti))return cr.debugLog("worker","request abort and run res.body.cancel()"),cr.fetchStatus=Tt,void e.body.cancel();if(!pi(e))return cr.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),sr(),void postMessage({cmd:R,type:Le.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:R,type:Ee}),ui())cr.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(cr.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(cr.fetchStatus=Ct)):gi(Ti)?(cr.debugLog("worker","writableStream write() and requestAbort is true so return"),cr.fetchStatus=Ct,void sr()):void("string"!=typeof e?(cr.fetchStatus=kt,l(e.byteLength),t.isFlv?b.write(e):t.isFmp4?cr.demuxFmp4(e):t.isMpeg4?cr.demuxMpeg4(e):t.isTs?cr.demuxTs(e):t.isNakedFlow&&cr.demuxNakedFlow(e)):cr.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{cr.debugLog("worker","writableStream close()"),cr.fetchStatus=Ct,sr(),cr._opt.checkStreamEnd?(b&&(b.close(),b=null),postMessage({cmd:R,type:Se,value:p,msg:"fetch done"})):postMessage({cmd:R,type:Te})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return cr.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(cr.fetchStatus=Ct);b&&(b.close(),b=null),e.name!==Bt?(cr.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),sr(),postMessage({cmd:R,type:Le.fetchError,value:e.toString()})):cr.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(cr.writableStream).catch((e=>{"AbortError"!==e.name&&cr.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const i=e.body.getReader(),r=()=>{i.read().then((e=>{let{done:i,value:s}=e;return i?(cr.debugLog("worker","fetchNext().then() and done is true"),cr.fetchStatus=Ct,sr(),void(cr._opt.checkStreamEnd?(b&&(b.close(),b=null),postMessage({cmd:R,type:Se,value:p,msg:"fetch done"})):postMessage({cmd:R,type:Te}))):o&&o.signal&&o.signal.aborted?(cr.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(cr.fetchStatus=Ct)):gi(Ti)?(cr.debugLog("worker","fetchNext().then() and requestAbort is true so return"),cr.fetchStatus=Ct,void sr()):void("string"!=typeof s?(cr.fetchStatus=kt,l(s.byteLength),t.isFlv?b.write(s):t.isFmp4?cr.demuxFmp4(s):t.isMpeg4?cr.demuxMpeg4(s):t.isTs?cr.demuxTs(s):t.isNakedFlow&&cr.demuxNakedFlow(s),r()):cr.debugWarn("worker",`fetchNext().then() and value "${s}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return cr.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(cr.fetchStatus=Ct);b&&(b.close(),b=null),e.name!==Bt?(cr.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),sr(),postMessage({cmd:R,type:Le.fetchError,value:e.toString()})):cr.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};r()}})).catch((e=>{o&&o.signal&&o.signal.aborted?cr.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Bt?(cr.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),sr(),postMessage({cmd:R,type:Le.fetchError,value:e.toString()}),b&&(b.close(),b=null)):cr.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===h&&(t.isFlv&&(b=new Ui(cr.demuxFlv())),d=new WebSocket(e,i),d.binaryType="arraybuffer",d.onopen=()=>{cr.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:R,type:Ee}),postMessage({cmd:R,type:Ce})},d.onclose=e=>{cr.isDestroyed?cr.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):v?cr.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(cr.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&cr.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),gi(Ti)?cr.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):cr._opt.checkStreamEnd?(b&&(b.close(),b=null),postMessage({cmd:R,type:Se,value:_,msg:e.code})):postMessage({cmd:R,type:Te}))},d.onerror=e=>{cr.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),v=!0,b&&(b.close(),b=null),cr.isDestroyed?cr.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):gi(Ti)?cr.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:R,type:Le.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?b.write(e.data):t.isFmp4?cr.demuxFmp4(e.data):t.isMpeg4?cr.demuxMpeg4(e.data):cr._opt.isNakedFlow?cr.demuxNakedFlow(e.data):cr.demuxM7s(e.data)):cr.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 a=i[0];const n=(yield s).slice();switch(r){case ae:if(n.byteLength>0){let e=n;gi(cr._opt.m7sCryptoAudio)&&(e=cr.cryptoPayloadAudio(n)),cr.decode(e,{type:re,ts:a})}else cr.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${n.byteLength} and return`);break;case ne:if(n.byteLength>=6){const e=n[0];if(cr._isEnhancedH265Header(e))cr._decodeEnhancedH265Video(n,a);else{const e=15&n[0];let t=n[0]>>4===xt;const r=e===Fe;if(yi(t)&&gi(vi(n,r))&&(cr.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&mi(n)&&null===cr.isHevc){const e=15&n[0];cr.isHevc=e===Fe,Ai=ii(n,cr.isHevc),cr.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${cr.isHevc} and nalUnitSize is ${Ai}`)}t&&cr.calcIframeIntervalTimestamp(a),cr.isPlayer&&cr.calcNetworkDelay(a),i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let s=i[0],o=cr.cryptoPayload(n,t);cr.decode(o,{type:se,ts:a,isIFrame:t,cts:s})}}else cr.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${n.byteLength} and return`);break;case oe:postMessage({cmd:K,buffer:n},[n.buffer]);break;default:cr.debugLog("worker",`demuxFlv() type is ${r}`)}}},decode:function(e,t){t.type===re?cr._opt.hasAudio&&(postMessage({cmd:R,type:Ae,value:e.byteLength}),cr.isPlayer?cr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):cr.isPlayback&&(cr.isPlaybackOnlyDecodeIFrame()||(cr.isPlaybackCacheBeforeDecodeForFpsRender(),cr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===se&&cr._opt.hasVideo&&(postMessage({cmd:R,type:Be,value:e.byteLength}),postMessage({cmd:R,type:Ue,value:t.ts}),cr.isPlayer?cr.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):cr.isPlayback&&(cr.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&cr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(cr.isPlaybackCacheBeforeDecodeForFpsRender(),cr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let i=e;return cr._opt.isM7sCrypto?cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength>0&&cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength>0?i=Rr(e,cr._opt.cryptoKey,cr._opt.cryptoIV,cr.isHevc):cr.debugError("worker",`isM7sCrypto cryptoKey.length is ${cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength} or cryptoIV.length is ${cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength} null`):cr._opt.isSm4Crypto?cr._opt.sm4CryptoKey?i=cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength>0&&cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength>0?ea(e,cr._opt.cryptoKey,cr._opt.cryptoIV,cr.isHevc,cr._opt.isSm4CryptoH265V2):ns(e,cr._opt.sm4CryptoKey,cr.isHevc,cr._opt.isSm4CryptoH265V2):cr._opt.sm4CryptoKey||cr.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):cr._opt.isXorCrypto&&(cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength>0&&cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength>0?i=us(e,cr._opt.cryptoKey,cr._opt.cryptoIV,cr.isHevc):cr.debugError("worker",`isXorCrypto cryptoKey.length is ${cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength} or cryptoIV.length is ${cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength} null`)),i},cryptoPayloadAudio:function(e){let t=e;if(cr._opt.isM7sCrypto)if(cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength>0&&cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength>0){e[0]>>4===Re&&(t=Nr(e,cr._opt.cryptoKey,cr._opt.cryptoIV))}else cr.debugError("worker",`isM7sCrypto cryptoKey.length is ${cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength} or cryptoIV.length is ${cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength} null`);return t},setCodecAudio:function(e,t){const i=e[0]>>4,s=e[0]>>1&1;if(Bi=i===Re?s?16:8:0===s?8:16,ur&&ur.setCodec||!yi(r))if(Yt(e)||i===Ne||i===Ge||i===Oe){cr.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${i} _opt.sampleRate is ${cr._opt.sampleRate}`);const s=i===Re?e.slice(2):new Uint8Array(0);if(r){if(i===Oe)return void cr.debugError("worker","setCodecAudio: mp3 is not support for old version");ur.sample_rate=cr._opt.sampleRate,ur.decode(e,t)}else ur.setCodec(i,cr._opt.sampleRate,s);i===Re&&postMessage({cmd:D,buffer:s},[s.buffer]),$e=!0,i!==Re&&(i===Oe?(cr.mp3Demuxer||(cr.mp3Demuxer=new ds(cr),cr.mp3Demuxer.on("data",((e,t)=>{ur.decode(e,t)}))),cr.mp3Demuxer.dispatch(e.slice(1),t)):ur.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{cr.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),cr.close(),postMessage({cmd:O})}),60*e*60*1e3)}}else cr.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",i);else cr.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(cr.isDestroyed)cr.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(cr.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())lr.decodeAudio(e,t);else if(gi(i)&&gi(cr._opt.mseDecodeAudio))postMessage({cmd:z,payload:e,ts:t,cts:t},[e.buffer]);else{const i=e[0]>>4;if($e){if(Yt(e))return void cr.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r?ur.decode(e,t):i===Oe?cr.mp3Demuxer.dispatch(e.slice(1),t):ur.decode(i===Re?e.slice(2):e.slice(1),t)}else cr.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const i=15&e[0];if(hr&&hr.setCodec||!yi(r))if(mi(e))if(i===Ie||i===Fe){cr.debugLog("worker",`setCodecVideo: init video codec , codecId is ${i}`);const t=e.slice(5);if(i===Ie&&cr._opt.useSIMD){const e=ki(t);if(e.codecWidth>w||e.codecHeight>w)return postMessage({cmd:W,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void cr.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const s=new Uint8Array(e);ve=!0,r?hr.decode(e,0):hr.setCodec(i,t),postMessage({cmd:I,code:i}),postMessage({cmd:F,buffer:s,codecId:i},[s.buffer])}else cr.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${i} is not H264 or H265`);else cr.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${i} and isIFrame is ${t} and packetType is ${e[1]}`);else cr.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,s){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(cr.isDestroyed)cr.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(cr.isPlayUseMSEAndDecoderInWorker())lr.decodeVideo(e,t,s,a);else if(gi(i))postMessage({cmd:M,payload:e,isIFrame:s,ts:t,cts:a,delay:cr.delay},[e.buffer]);else if(ve)if(!Xe&&s&&(Xe=!0),Xe){if(s&&mi(e)){const t=15&e[0];let i={};if(t===Ie){i=ki(e.slice(5))}else t===Fe&&(i=$i(e));i.codecWidth&&i.codecHeight&&B&&be&&(i.codecWidth!==B||i.codecHeight!==be)&&(cr.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${B}, old height is ${be},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),Si=!0,postMessage({cmd:V,value:`width: ${B}->${i.codecWidth}, height: ${be}->${i.codecHeight}`}))}if(Si)return void cr.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(wi)return void cr.debugWarn("worker","decodeVideo: simd decode error, and return");if(mi(e))return void cr.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];cr.debugLog("worker",`clearBuffer,bufferList length is ${s.length}, need clear is ${e}`),e&&(s=[]),cr.isPlayer&&(cr.resetAllDelay(),gi(cr._opt.checkFirstIFrame)&&(cr.dropping=!0,postMessage({cmd:G}))),gi(cr._opt.checkFirstIFrame)&&yi(i)&&(Xe=!1)},dropBuffer$2:function(){if(s.length>0){let e=s.findIndex((e=>gi(e.isIFrame)&&e.type===se));if(cr.isAllIframeInBufferList())for(let t=0;t=cr.getNotDroppingDelayTs()){cr.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${r} and notDroppingDelayTs is ${cr.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){cr.isPushDropping=!0,postMessage({cmd:G});const t=s.length;s=s.slice(e);const i=s.shift();cr.resetAllDelay(),cr.getDelay(i.ts,i.type),cr.doDecode(i),cr.isPushDropping=!1,cr.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${s.length} and new delay is ${cr.delay} `)}else cr.isPushDropping=!1}0===s.length&&(cr.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),i=t.getUint32(1,!1),r=t.getUint8(0),s=new ArrayBuffer(4),a=new Uint32Array(s);switch(r){case re:cr.decode(new Uint8Array(e,5),{type:re,ts:i});break;case se:if(t.byteLength>=11){const r=new Uint8Array(e,5),s=r[0];if(cr._isEnhancedH265Header(s))cr._decodeEnhancedH265Video(r,i);else{const e=t.getUint8(5)>>4==1;if(e&&(cr.calcIframeIntervalTimestamp(i),mi(r)&&null===cr.isHevc)){const e=15&r[0];cr.isHevc=e===Fe}cr.isPlayer&&cr.calcNetworkDelay(i),a[0]=r[4],a[1]=r[3],a[2]=r[2],a[3]=0;let s=a[0],n=cr.cryptoPayload(r,e);cr.decode(n,{type:se,ts:i,isIFrame:e,cts:s})}}else cr.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){ar.dispatch(e)},demuxFmp4:function(e){nr.dispatch(e)},demuxMpeg4:function(e){or.dispatch(e)},demuxTs:function(e){dr.dispatch(e)},_decodeEnhancedH265Video:function(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),d="a"==String.fromCharCode(a[0]);if(cr.isHevc=yi(d),s===Ft){if(r===zt){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),Ai=ii(e,cr.isHevc),cr.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${cr.isHevc} and nalUnitSize is ${Ai}`),cr.decode(r,{type:se,ts:t,isIFrame:!0,cts:0})}}}else if(s===Pt){let i=e,s=0;const a=r===zt;if(a&&cr.calcIframeIntervalTimestamp(t),d);else{o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0];i=Ki(e.slice(8),a),i=cr.cryptoPayload(i,a),cr.decode(i,{type:se,ts:t,isIFrame:a,cts:s})}}else if(s===Mt){const i=r===zt;i&&cr.calcIframeIntervalTimestamp(t);let s=Ki(e.slice(5),i);s=cr.cryptoPayload(s,i),cr.decode(s,{type:se,ts:t,isIFrame:i,cts:0})}},_isEnhancedH265Header:function(e){return(e&It)===It},findSei:function(e,t){let i=4;di(Ai)&&(i=Ai);Qt(e.slice(5),i).forEach((e=>{const i=cr.isHevc?e[0]>>>1&63:31&e[0],r=cr.isHevc&&(i===ut||i===ct),s=yi(cr.isHevc)&&i===qe;if(r||s){const i=ei(e,cr.isHevc);postMessage({cmd:j,buffer:i.payload,ts:t},[i.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Xe&&e>0))return;null===wt?(wt=e,At=ri()):et?i-t:0;cr.networkDelay=r,r>cr._opt.networkDelay&&cr._opt.playType===m&&(cr.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${wt} vs start is ${t},local diff is ${i} ,delay is ${r}`),postMessage({cmd:R,type:ke,value:r}))},calcIframeIntervalTimestamp:function(e){null===Ht?Ht=e:Ht=cr._opt.playbackForwardMaxRateDecodeIFrame&&!(cr._opt.useMSE&&cr._opt.mseDecodeAudio)},isPlayUseMSE:function(){return cr.isPlayer&&cr._opt.useMSE&&gi(i)},isPlayUseMSEAndDecoderInWorker:function(){return cr.isPlayUseMSE()&&cr._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return cr.isPlayUseMSEAndDecoderInWorker()&&cr._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){yi(cr.isPlaybackCacheBeforeDecodeForFpsRender())&&cr.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){cr.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),ai=!0,cr.webglObj.destroy(),cr.webglObj=null,cr.offscreenCanvasGL=null,setTimeout((()=>{cr.offscreenCanvasGL=cr.offscreenCanvas.getContext("webgl"),cr.offscreenCanvasGL&&cr.offscreenCanvasGL.getContextAttributes().stencil?(cr.webglObj=u(cr.offscreenCanvasGL,cr._opt.openWebglAlignment),ai=!1):cr.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){cr.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,i){postMessage({cmd:I,code:e}),postMessage({cmd:E,w:t,h:i}),B=t,be=i,cr.useOffscreen()&&(cr.offscreenCanvas=new OffscreenCanvas(t,i),cr.offscreenCanvasGL=cr.offscreenCanvas.getContext("webgl"),cr.webglObj=u(cr.offscreenCanvasGL,cr._opt.openWebglAlignment),cr.offscreenCanvas.addEventListener("webglcontextlost",cr.onOffscreenCanvasWebglContextLost,!1),cr.offscreenCanvas.addEventListener("webglcontextrestored",cr.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,i){postMessage({cmd:C,code:e}),postMessage({cmd:k,sampleRate:t,channels:i,depth:Bi}),Ot=i},yuvData:function(t,i){if(cr.isDestroyed)return void cr.debugLog("worker","yuvData, decoder is destroyed and return");const r=B*be*3/2;let s=e.HEAPU8.subarray(t,t+r),a=new Uint8Array(s);if(Rt=null,Qe=i,cr.useOffscreen())try{if(ai)return;cr.webglObj.renderYUV(B,be,a);let e=cr.offscreenCanvas.transferToImageBitmap();postMessage({cmd:x,buffer:e,delay:cr.delay,ts:i},[e])}catch(e){cr.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:x,output:a,delay:cr.delay,ts:i},[a.buffer])},pcmData:function(e,i,r){if(cr.isDestroyed)return void cr.debugLog("worker","pcmData, decoder is destroyed and return");let s=i,n=[],o=0,d=cr._opt.audioBufferSize;for(let i=0;i<2;i++){let r=t.HEAPU32[(e>>2)+i]>>2;n[i]=t.HEAPF32.subarray(r,r+s)}if(Gt){if(!(s>=(i=d-Gt)))return Gt+=s,a[0]=Float32Array.of(...a[0],...n[0]),void(2==Ot&&(a[1]=Float32Array.of(...a[1],...n[1])));Et[0]=Float32Array.of(...a[0],...n[0].subarray(0,i)),2==Ot&&(Et[1]=Float32Array.of(...a[1],...n[1].subarray(0,i))),postMessage({cmd:T,buffer:Et,ts:r},Et.map((e=>e.buffer))),o=i,s-=i}for(Gt=s;Gt>=d;Gt-=d)Et[0]=n[0].slice(o,o+=d),2==Ot&&(Et[1]=n[1].slice(o-d,o)),postMessage({cmd:T,buffer:Et,ts:r},Et.map((e=>e.buffer)));Gt&&(a[0]=n[0].slice(o),2==Ot&&(a[1]=n[1].slice(o))),n=[]},errorInfo:function(e){null===Rt&&(Rt=ri());const t=ri(),i=si(Nt>0?2*Nt:5e3,1e3,5e3),r=t-Rt;r>i&&(cr.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Nt} and diff is ${r} and maxDiff is ${i}\n and replay`),wi=!0,postMessage({cmd:$}))},sendWebsocketMessage:function(e){d?d.readyState===De?d.send(e):cr.debugError("worker","socket is not open"):cr.debugError("worker","socket is null")},timeEnd:function(){cr.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),cr.close(),postMessage({cmd:O})},postStreamToMain(e,t){postMessage({cmd:q,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){cr.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),gi(e)?cr.clearPlaybackCacheLoop():cr.startPlaybackCacheLoop()},debugLog(e){if(cr._opt.debug&&cr.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r>2,B=e,be=t,postMessage({cmd:E,w:e,h:t}),cr.useOffscreen()&&(cr.offscreenCanvas=new OffscreenCanvas(e,t),cr.offscreenCanvasGL=cr.offscreenCanvas.getContext("webgl"),cr.webglObj=u(cr.offscreenCanvasGL,cr._opt.openWebglAlignment),cr.offscreenCanvas.addEventListener("webglcontextlost",cr.onOffscreenCanvasWebglContextLost,!1),cr.offscreenCanvas.addEventListener("webglcontextrestored",cr.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Ot=e,postMessage({cmd:k,sampleRate:t,channels:e,depth:Bi})},playAudioPlanar:function(e,i,r){if(cr.isDestroyed)return void cr.debugLog("worker","pcmData, decoder is destroyed and return");let s=i,n=[],o=0,d=cr._opt.audioBufferSize;for(let i=0;i<2;i++){let r=t.HEAPU32[(e>>2)+i]>>2;n[i]=t.HEAPF32.subarray(r,r+s)}if(Gt){if(!(s>=(i=d-Gt)))return Gt+=s,a[0]=Float32Array.of(...a[0],...n[0]),void(2==Ot&&(a[1]=Float32Array.of(...a[1],...n[1])));Et[0]=Float32Array.of(...a[0],...n[0].subarray(0,i)),2==Ot&&(Et[1]=Float32Array.of(...a[1],...n[1].subarray(0,i))),postMessage({cmd:T,buffer:Et,ts:r},Et.map((e=>e.buffer))),o=i,s-=i}for(Gt=s;Gt>=d;Gt-=d)Et[0]=n[0].slice(o,o+=d),2==Ot&&(Et[1]=n[1].slice(o-d,o)),postMessage({cmd:T,buffer:Et,ts:r},Et.map((e=>e.buffer)));Gt&&(a[0]=n[0].slice(o),2==Ot&&(a[1]=n[1].slice(o))),n=[]},draw:function(t,i,r,s){if(cr.isDestroyed)return void cr.debugLog("worker","draw, decoder is destroyed and return");const a=e.HEAPU8.subarray(i,i+Hi),n=e.HEAPU8.subarray(r,r+Yi),o=e.HEAPU8.subarray(s,s+Yi),d=new Uint8Array(Hi+Yi+Yi);if(d.set(a),d.set(n,Hi),d.set(o,Hi+Yi),Rt=null,Qe=t,cr.useOffscreen())try{if(ai)return;cr.webglObj.renderYUV(B,be,d);let e=cr.offscreenCanvas.transferToImageBitmap();postMessage({cmd:x,buffer:e,delay:cr.delay,ts:t},[e])}catch(e){cr.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:x,output:d,delay:cr.delay,ts:t},[d.buffer])}}));let ur=null;t.AudioDecoder&&(ur=new t.AudioDecoder(cr));let hr=null;e.VideoDecoder&&(hr=new e.VideoDecoder(cr)),postMessage({cmd:U}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case de:try{cr._opt=Object.assign(cr._opt,JSON.parse(t.opt))}catch(e){}cr.init();break;case le:cr.pushBuffer(t.buffer,t.options);break;case ce:cr.decodeAudio(t.buffer,t.ts);break;case ue:cr.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case pe:cr.clearBuffer(t.needClear);break;case _e:cr.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case he:cr.debugLog("worker","close",JSON.stringify(t.options)),t.options&&yi(t.options.isVideoInited)&&(Oi=t.options.isVideoInited),cr.close();break;case fe:cr.debugLog("worker","updateConfig",t.key,t.value),cr._opt[t.key]=t.value,"playbackRate"===t.key&&(cr.playbackUpdatePlaybackRate(),cr.isPlaybackCacheBeforeDecodeForFpsRender()&&cr.playbackCacheLoop());break;case me:cr.sendWebsocketMessage(t.message);break;case ge:lr.$video.currentTime=Number(t.message);break;case ye:cr.updatePlaybackIsPause(t.isPause)}}}({},{},!0)})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(e),s=1e-6,a="undefined"!=typeof Float32Array?Float32Array:Array;function n(){var e=new a(16);return a!=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 d,l=function(e,t,i,r,s,a,n){var o=1/(t-i),d=1/(r-s),l=1/(a-n);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]=(n+a)*l,e[15]=1,e};function c(e,t,i){var r=new a(3);return r[0]=e,r[1]=t,r[2]=i,r}d=new a(3),a!=Float32Array&&(d[0]=0,d[1]=0,d[2]=0);var u=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const i=function(){const t=_(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 "),i=_(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 "),r=e.createProgram();if(e.attachShader(r,t),e.attachShader(r,i),e.linkProgram(r),!e.getProgramParameter(r,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(r)),null;return r}();let r={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")}},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 i=[];i=i.concat([0,1],[1,1],[1,0],[0,0]);const r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(i),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:r,indices:s}}(),d=p(),u=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 _(t,i){const r=e.createShader(t);return e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(r)),e.deleteShader(r),null)}function m(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 d=n();l(d,-1,1,-1,1,.1,100);const p=n();o(p);const _=n();!function(e,t,i,r){var a,n,d,l,c,u,h,f,p,_,m=t[0],g=t[1],y=t[2],b=r[0],v=r[1],S=r[2],w=i[0],A=i[1],B=i[2];Math.abs(m-w)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)}}const Ht=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Vt=Ht,$t=Ht;function Wt(e){let{profile:t,sampleRate:i,channel:r}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|r<<3])}function Yt(e){return qt(e)&&e[1]===Ut}function qt(e){return e[0]>>4===Re}const jt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Kt(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>=jt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=jt[a],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===r&&(n=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Rt.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?a>=6?(r=5,i=new Array(4),n=a-3):(r=2,i=new Array(2),n=a):-1!==l.indexOf("android")?(r=2,i=new Array(2),n=a):(r=5,n=a,i=new Array(4),a>=6?n=a-3:1===d&&(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&d)<<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:d,objectType:r,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+s}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+7>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,r=(8&e[i+1])>>>3,s=(6&e[i+1])>>>1,a=1&e[i+1],n=(192&e[i+2])>>>6,o=(60&e[i+2])>>>2,d=(1&e[i+2])<<2|(192&e[i+3])>>>6,l=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===a?7:9,u=l-c;i+=c;let h=this.findNextSyncwordOffset(i+u);if(this.current_syncword_offset_=h,0!==r&&1!==r||0!==s)continue;let f=e.subarray(i,i+u);t={},t.audio_object_type=n+1,t.sampling_freq_index=o,t.sampling_frequency=Vt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Zt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let r=0;r<=t;r++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let r=this.current_syncword_offset_,s=(31&t[r+1])<<8|t[r+2];if(r+3+s>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let a=new Ot(t.subarray(r+3,r+3+s)),n=null;if(a.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(r+3+s),a.destroy();continue}n=e}else{let e=a.readBool();if(e&&a.readBool()){console.error("audioMuxVersionA is Not Supported"),a.destroy();break}if(e&&this.getLATMValue(a),!a.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),a.destroy();break}if(0!==a.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),a.destroy();break}if(0!==a.readBits(4)){console.error("more than 2 numProgram Not Supported"),a.destroy();break}if(0!==a.readBits(3)){console.error("more than 2 numLayer Not Supported"),a.destroy();break}let t=e?this.getLATMValue(a):0,i=a.readBits(5);t-=5;let r=a.readBits(4);t-=4;let s=a.readBits(4);t-=4,a.readBits(3),t-=3,t>0&&a.readBits(t);let o=a.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),a.destroy();break}a.readByte();let d=a.readBool();if(d)if(e)this.getLATMValue(a);else{let e=0;for(;;){e<<=8;let t=a.readBool();if(e+=a.readByte(),!t)break}console.log(e)}a.readBool()&&a.readByte(),n={},n.audio_object_type=i,n.sampling_freq_index=r,n.sampling_frequency=Vt[n.sampling_freq_index],n.channel_config=s,n.other_data_present=d}let o=0;for(;;){let e=a.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 ei(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++;return{payload:e.subarray(r),type:s,size:a,uuid:n}}function ti(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 ii(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 ri(){return(new Date).getTime()}function si(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function ai(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function ni(e){let t=0,i=ai();return r=>{if(s=r,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=r;const a=ai(),n=a-i;n>=1e3&&(e(t/n*1e3),i=a,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){}})();function oi(e){return null==e}function di(e){return!oi(e)}function li(e){return"function"==typeof e}function ci(e){let t=null,i=31&e[0];return i!==He&&i!==Ve||(t=Me),t||(i=(126&e[0])>>1,i!==rt&&i!==at&&i!==ot||(t=ze)),t}function ui(){return"undefined"!=typeof WritableStream}function hi(e){e.close()}function fi(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 pi(e){return e.ok&&e.status>=200&&e.status<=299}function _i(){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}(B)}function mi(e){return e[0]>>4===Et&&e[1]===Ut}function gi(e){return!0===e||"true"===e}function yi(e){return!0!==e&&"true"!==e}function bi(){return!!(Rt.Worker&&Rt.MediaSource&&"canConstructInDedicatedWorker"in Rt.MediaSource&&!0===Rt.MediaSource.canConstructInDedicatedWorker)}function vi(e,t){const i=Qt(e.slice(5));let r=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===Ze||i===Qe||i===tt)||yi(t)&&i===$e)&&(r=!0)})),r}var Si=function(e,t,i,r){return new(i||(i=Promise))((function(s,a){function n(e){try{d(r.next(e))}catch(e){a(e)}}function o(e){try{d(r.throw(e))}catch(e){a(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(n,o)}d((r=r.apply(e,t||[])).next())}))};const wi=Symbol(32),Ai=Symbol(16),Bi=Symbol(8);class Ui{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 Si(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(wi)}readU16(){return this.read(Ai)}readU8(){return this.read(Bi)}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===wi){if(r(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Ai){if(r(2))return;e=t[0]<<8|t[1]}else if(this.need===Bi){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}}Ui.U32=wi,Ui.U16=Ai,Ui.U8=Bi;class Ei{constructor(e){this.log=function(t){if(e._opt.debugLevel==b){const a=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var i=arguments.length,r=new Array(i>1?i-1:0),s=1;s1?i-1:0),s=1;s1?r-1:0),a=1;a=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=xi._ebsp2rbsp(e),i=new Ot(t);i.readByte();let r=i.readByte();i.readByte();let s=i.readByte();i.readUEG();let a=xi.getProfileString(r),n=xi.getLevelString(s),o=1,d=420,l=[0,420,422,444],c=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]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(v=t[e-1],S=r[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),S=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);A=i.readBool(),B=t,U=2*e,w=B/U}}let E=1;1===v&&1===S||(E=v/S);let x=0,T=0;if(0===o)x=1,T=2-_;else{x=3===o?1:2,T=(1===o?2:1)*(2-_)}let k=16*(f+1),C=16*(p+1)*(2-_);k-=(m+g)*x,C-=(y+b)*T;let L=Math.ceil(k*E);return i.destroy(),i=null,{profile_string:a,level_string:n,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:xi.getChromaFormatString(d),frame_rate:{fixed:A,fps:w,fps_den:U,fps_num:B},sar_ratio:{width:v,height:S},codec_size:{width:k,height:C},present_size:{width:L,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=xi._ebsp2rbsp(e),s=new Ot(r);s.readByte();let a=s.readByte();s.readByte();let n=s.readByte();s.readUEG();let o=xi.getProfileString(a),d=xi.getLevelString(n),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===a||110===a||122===a||244===a||44===a||83===a||86===a||118===a||128===a||138===a||144===a)&&(l=s.readUEG(),3===l&&s.readBits(1),l<=3&&(c=u[l]),h=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?(A=t[e-1],B=i[e-1]):255===e&&(A=s.readByte()<<8|s.readByte(),B=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);E=s.readBool(),x=t,T=2*e,U=x/T}}let k=1;1===A&&1===B||(k=A/B);let C=0,L=0;if(0===l)C=1,L=2-y;else{C=3===l?1:2,L=(1===l?2:1)*(2-y)}let D=16*(m+1),I=16*(g+1)*(2-y);D-=(b+v)*C,I-=(S+w)*L;let F=Math.ceil(D*k);return s.destroy(),s=null,{codec_mimetype:i,profile_idc:a,level_idc:n,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:_,chroma_format:c,chroma_format_string:xi.getChromaFormatString(c),frame_rate:{fixed:E,fps:U,fps_den:T,fps_num:x},sar_ratio:{width:A,height:B},codec_size:{width:D,height:I},present_size:{width:F,height:I}}}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 Ci(e){let{sps:t,pps:i}=e;const r=[23,0,0,0,0,1,66,0,30,255];r[0]=23,r[6]=t[1],r[7]=t[2],r[8]=t[3],r[10]=225,r[11]=t.byteLength>>8&255,r[12]=255&t.byteLength,r.push(...t,1,i.byteLength>>8&255,255&i.byteLength,...i);return new Uint8Array(r)}function Li(e){let{sps:t,pps:i}=e,r=8+t.byteLength+1+2+i.byteLength,s=!1;const a=xi.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(s=!0,r+=4);let n=new Uint8Array(r);n[0]=1,n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=255,n[5]=225;let o=t.byteLength;n[6]=o>>>8,n[7]=255&o;let d=8;n.set(t,8),d+=o,n[d]=1;let l=i.byteLength;n[d+1]=l>>>8,n[d+2]=255&l,n.set(i,d+3),d+=3+l,s&&(n[d]=252|a.chroma_format_idc,n[d+1]=248|a.bit_depth_luma-8,n[d+2]=248|a.bit_depth_chroma-8,n[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+n.byteLength);return u.set(c,0),u.set(n,c.length),u}function Di(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}function Ii(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 Fi(e){return 31&e[0]}function Pi(e){return e===qe}function Mi(e){return!function(e){return e===He||e===Ve}(e)&&!Pi(e)}function zi(e){return e===$e}function Ri(e){if(0===e.length)return!1;const t=Fi(e[0]);for(let i=1;i=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===r)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let r=31&e[i],s=(128&e[i])>>>7,a=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=a,r>=Xe||0===s&&(t={type:r,data:e.subarray(i,a)})}return t}}class Gi{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Oi=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)},Hi=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"}};class Vi{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=Vi._ebsp2rbsp(e),i=new Ot(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=Vi._ebsp2rbsp(e),i=new Ot(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 d=i.readBits(2),l=i.readBool(),c=i.readBits(5),u=i.readByte(),h=i.readByte(),f=i.readByte(),p=i.readByte(),_=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),b=i.readByte(),v=i.readByte(),S=i.readByte(),w=[],A=[];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?(F=t[e-1],P=r[e-1]):255===e&&(F=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(),D=i.readBool(),D&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()){if(z=i.readBits(32),R=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();M=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=Oi(e),i=new Ot(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()}})(t),n=(e=>{let t=Oi(e),i=new Ot(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 d=i.readBits(2),l=i.readBool(),c=i.readBits(5),u=i.readByte(),h=i.readByte(),f=i.readByte(),p=i.readByte(),_=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),b=i.readByte(),v=i.readByte(),S=i.readByte(),w=[],A=[];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?(F=t[e-1],P=r[e-1]):255===e&&(F=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())),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),D=i.readBool(),D&&(r+=i.readUEG(),s+=i.readUEG(),a+=i.readUEG(),n+=i.readUEG()),i.readBool()&&(z=i.readBits(32),R=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();M=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=Oi(e),i=new Ot(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}})(i);s=Object.assign(s,a,n,o);let d=23+(5+t.byteLength)+(5+r.byteLength)+(5+i.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&s.general_profile_space)<<6|(s.general_tier_flag?1:0)<<5|31&s.general_profile_idc,l[2]=s.general_profile_compatibility_flags_1||0,l[3]=s.general_profile_compatibility_flags_2||0,l[4]=s.general_profile_compatibility_flags_3||0,l[5]=s.general_profile_compatibility_flags_4||0,l[6]=s.general_constraint_indicator_flags_1||0,l[7]=s.general_constraint_indicator_flags_2||0,l[8]=s.general_constraint_indicator_flags_3||0,l[9]=s.general_constraint_indicator_flags_4||0,l[10]=s.general_constraint_indicator_flags_5||0,l[11]=s.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&s.min_spatial_segmentation_idc)>>8,l[14]=255&s.min_spatial_segmentation_idc,l[15]=252|3&s.parallelismType,l[16]=252|3&s.chroma_format_idc,l[17]=248|7&s.bit_depth_luma_minus8,l[18]=248|7&s.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&s.constant_frame_rate)<<6|(7&s.num_temporal_layers)<<3|(s.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|rt,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|at,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+r.byteLength)+0]=128|ot,l[23+(5+t.byteLength+5+r.byteLength)+1]=0,l[23+(5+t.byteLength+5+r.byteLength)+2]=1,l[23+(5+t.byteLength+5+r.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength+5+r.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength+5+r.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function ji(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}function Ki(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 Xi(e){return(126&e[0])>>1}function Zi(e){return e===lt}function Ji(e){return!function(e){return e>=32&&e<=40}(e)}function Qi(e){return e>=16&&e<=21}function er(e){if(0===e.length)return!1;const t=Xi(e[0]);for(let i=1;i=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===r)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let r=e[i]>>1&63,s=(128&e[i])>>>7,a=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=a,0===s&&(t={type:r,data:e.subarray(i,a)})}return t}}class ir{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function rr(e){return parseInt(e)===e}function sr(e){if(!rr(e.length))return!1;for(var t=0;t255)return!1;return!0}function ar(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(!sr(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(rr(e.length)&&sr(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function nr(e){return new Uint8Array(e)}function or(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 dr,lr={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("")}},cr=(dr="0123456789abcdef",{toBytes:function(e){for(var t=[],i=0;i>4]+dr[15&r])}return t.join("")}}),ur={16:10,24:12,32:14},hr=[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],fr=[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],pr=[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],_r=[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],mr=[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],gr=[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],yr=[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],br=[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],vr=[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],Sr=[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],wr=[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],Br=[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],Ur=[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],Er=[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 xr(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,d=s;d>16&255]<<24^fr[n>>8&255]<<16^fr[255&n]<<8^fr[n>>24&255]^hr[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^fr[n>>16&255]<<16^fr[n>>24&255]<<24;for(t=s/2+1;t>2,c=d%4,this._Ke[l][c]=a[t],this._Kd[e-l][c]=a[t++],d++}for(var l=1;l>24&255]^Br[n>>16&255]^Ur[n>>8&255]^Er[255&n]},Tr.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=xr(e),s=0;s<4;s++)r[s]^=this._Ke[0][s];for(var a=1;a>24&255]^mr[r[(s+1)%4]>>16&255]^gr[r[(s+2)%4]>>8&255]^yr[255&r[(s+3)%4]]^this._Ke[a][s];r=i.slice()}var n,o=nr(16);for(s=0;s<4;s++)n=this._Ke[t][s],o[4*s]=255&(fr[r[s]>>24&255]^n>>24),o[4*s+1]=255&(fr[r[(s+1)%4]>>16&255]^n>>16),o[4*s+2]=255&(fr[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(fr[255&r[(s+3)%4]]^n);return o},Tr.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=xr(e),s=0;s<4;s++)r[s]^=this._Kd[0][s];for(var a=1;a>24&255]^vr[r[(s+3)%4]>>16&255]^Sr[r[(s+2)%4]>>8&255]^wr[255&r[(s+1)%4]]^this._Kd[a][s];r=i.slice()}var n,o=nr(16);for(s=0;s<4;s++)n=this._Kd[t][s],o[4*s]=255&(pr[r[s]>>24&255]^n>>24),o[4*s+1]=255&(pr[r[(s+3)%4]>>16&255]^n>>16),o[4*s+2]=255&(pr[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(pr[255&r[(s+1)%4]]^n);return o};var kr=function(e){if(!(this instanceof kr))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Tr(e)};kr.prototype.encrypt=function(e){if((e=ar(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=nr(e.length),i=nr(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)},Ir.prototype.setBytes=function(e){if(16!=(e=ar(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ir.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Fr=function(e,t){if(!(this instanceof Fr))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ir||(t=new Ir(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Tr(e)};Fr.prototype.encrypt=function(e){for(var t=ar(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,r=0;r>>2]>>>24-a%4*8&255;t[r+a>>>2]|=n<<24-(r+a)%4*8}else for(var o=0;o>>2]=i[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,i=this.sigBytes;t[i>>>2]&=4294967295<<32-i%4*8,t.length=e.ceil(i/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],i=0;i>>2]>>>24-s%4*8&255;r.push((a>>>4).toString(16)),r.push((15&a).toString(16))}return r.join("")},parse:function(e){for(var t=e.length,i=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new l.init(i,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],s=0;s>>2]>>>24-s%4*8&255;r.push(String.fromCharCode(a))}return r.join("")},parse:function(e){for(var t=e.length,i=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new l.init(i,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var i,r=this._data,s=r.words,a=r.sigBytes,n=this.blockSize,o=a/(4*n),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*n,c=e.min(4*d,a);if(d){for(var u=0;u>>2]|=e[s]<<24-s%4*8;t.call(this,r,i)}else t.apply(this,arguments)};r.prototype=e}}(),i.lib.WordArray)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.WordArray,r=e.enc;function s(e){return e<<8&4278255360|e>>>8&16711935}r.Utf16=r.Utf16BE={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],s=0;s>>2]>>>16-s%4*8&65535;r.push(String.fromCharCode(a))}return r.join("")},parse:function(e){for(var i=e.length,r=[],s=0;s>>1]|=e.charCodeAt(s)<<16-s%2*16;return t.create(r,2*i)}},r.Utf16LE={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],a=0;a>>2]>>>16-a%4*8&65535);r.push(String.fromCharCode(n))}return r.join("")},parse:function(e){for(var i=e.length,r=[],a=0;a>>1]|=s(e.charCodeAt(a)<<16-a%2*16);return t.create(r,2*i)}}}(),i.enc.Utf16)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.WordArray;function r(e,i,r){for(var s=[],a=0,n=0;n>>6-n%4*2;s[a>>>2]|=o<<24-a%4*8,a++}return t.create(s,a)}e.enc.Base64={stringify:function(e){var t=e.words,i=e.sigBytes,r=this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255,o=0;o<4&&a+.75*o>>6*(3-o)&63));var d=r.charAt(64);if(d)for(;s.length%4;)s.push(d);return s.join("")},parse:function(e){var t=e.length,i=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>6-n%4*2;s[a>>>2]|=o<<24-a%4*8,a++}return t.create(s,a)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var i=e.words,r=e.sigBytes,s=t?this._safe_map:this._map;e.clamp();for(var a=[],n=0;n>>2]>>>24-n%4*8&255)<<16|(i[n+1>>>2]>>>24-(n+1)%4*8&255)<<8|i[n+2>>>2]>>>24-(n+2)%4*8&255,d=0;d<4&&n+.75*d>>6*(3-d)&63));var l=s.charAt(64);if(l)for(;a.length%4;)a.push(l);return a.join("")},parse:function(e,t){void 0===t&&(t=!0);var i=e.length,s=t?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var n=0;n>>24)|4278255360&(s<<24|s>>>8)}var a=this._hash.words,n=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],_=e[t+4],m=e[t+5],g=e[t+6],y=e[t+7],b=e[t+8],v=e[t+9],S=e[t+10],w=e[t+11],A=e[t+12],B=e[t+13],U=e[t+14],E=e[t+15],x=a[0],T=a[1],k=a[2],C=a[3];x=l(x,T,k,C,n,7,o[0]),C=l(C,x,T,k,d,12,o[1]),k=l(k,C,x,T,f,17,o[2]),T=l(T,k,C,x,p,22,o[3]),x=l(x,T,k,C,_,7,o[4]),C=l(C,x,T,k,m,12,o[5]),k=l(k,C,x,T,g,17,o[6]),T=l(T,k,C,x,y,22,o[7]),x=l(x,T,k,C,b,7,o[8]),C=l(C,x,T,k,v,12,o[9]),k=l(k,C,x,T,S,17,o[10]),T=l(T,k,C,x,w,22,o[11]),x=l(x,T,k,C,A,7,o[12]),C=l(C,x,T,k,B,12,o[13]),k=l(k,C,x,T,U,17,o[14]),x=c(x,T=l(T,k,C,x,E,22,o[15]),k,C,d,5,o[16]),C=c(C,x,T,k,g,9,o[17]),k=c(k,C,x,T,w,14,o[18]),T=c(T,k,C,x,n,20,o[19]),x=c(x,T,k,C,m,5,o[20]),C=c(C,x,T,k,S,9,o[21]),k=c(k,C,x,T,E,14,o[22]),T=c(T,k,C,x,_,20,o[23]),x=c(x,T,k,C,v,5,o[24]),C=c(C,x,T,k,U,9,o[25]),k=c(k,C,x,T,p,14,o[26]),T=c(T,k,C,x,b,20,o[27]),x=c(x,T,k,C,B,5,o[28]),C=c(C,x,T,k,f,9,o[29]),k=c(k,C,x,T,y,14,o[30]),x=u(x,T=c(T,k,C,x,A,20,o[31]),k,C,m,4,o[32]),C=u(C,x,T,k,b,11,o[33]),k=u(k,C,x,T,w,16,o[34]),T=u(T,k,C,x,U,23,o[35]),x=u(x,T,k,C,d,4,o[36]),C=u(C,x,T,k,_,11,o[37]),k=u(k,C,x,T,y,16,o[38]),T=u(T,k,C,x,S,23,o[39]),x=u(x,T,k,C,B,4,o[40]),C=u(C,x,T,k,n,11,o[41]),k=u(k,C,x,T,p,16,o[42]),T=u(T,k,C,x,g,23,o[43]),x=u(x,T,k,C,v,4,o[44]),C=u(C,x,T,k,A,11,o[45]),k=u(k,C,x,T,E,16,o[46]),x=h(x,T=u(T,k,C,x,f,23,o[47]),k,C,n,6,o[48]),C=h(C,x,T,k,y,10,o[49]),k=h(k,C,x,T,U,15,o[50]),T=h(T,k,C,x,m,21,o[51]),x=h(x,T,k,C,A,6,o[52]),C=h(C,x,T,k,p,10,o[53]),k=h(k,C,x,T,S,15,o[54]),T=h(T,k,C,x,d,21,o[55]),x=h(x,T,k,C,b,6,o[56]),C=h(C,x,T,k,E,10,o[57]),k=h(k,C,x,T,g,15,o[58]),T=h(T,k,C,x,B,21,o[59]),x=h(x,T,k,C,_,6,o[60]),C=h(C,x,T,k,w,10,o[61]),k=h(k,C,x,T,f,15,o[62]),T=h(T,k,C,x,v,21,o[63]),a[0]=a[0]+x|0,a[1]=a[1]+T|0,a[2]=a[2]+k|0,a[3]=a[3]+C|0},_doFinalize:function(){var t=this._data,i=t.words,r=8*this._nDataBytes,s=8*t.sigBytes;i[s>>>5]|=128<<24-s%32;var a=e.floor(r/4294967296),n=r;i[15+(s+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),i[14+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),t.sigBytes=4*(i.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,i,r,s,a,n){var o=e+(t&i|~t&r)+s+n;return(o<>>32-a)+t}function c(e,t,i,r,s,a,n){var o=e+(t&r|i&~r)+s+n;return(o<>>32-a)+t}function u(e,t,i,r,s,a,n){var o=e+(t^i^r)+s+n;return(o<>>32-a)+t}function h(e,t,i,r,s,a,n){var o=e+(i^(t|~r))+s+n;return(o<>>32-a)+t}t.MD5=a._createHelper(d),t.HmacMD5=a._createHmacHelper(d)}(Math),i.MD5)})),Gt((function(e,t){var i,r,s,a,n,o,d,l;e.exports=(r=(i=l=Mr).lib,s=r.WordArray,a=r.Hasher,n=i.algo,o=[],d=n.SHA1=a.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],d=i[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(r<<5|r>>>27)+d+o[l];u+=l<20?1518500249+(s&a|~s&n):l<40?1859775393+(s^a^n):l<60?(s&a|s&n|a&n)-1894007588:(s^a^n)-899497514,d=n,n=a,a=s<<30|s>>>2,s=r,r=u}i[0]=i[0]+r|0,i[1]=i[1]+s|0,i[2]=i[2]+a|0,i[3]=i[3]+n|0,i[4]=i[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=Math.floor(i/4294967296),t[15+(r+64>>>9<<4)]=i,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=a._createHelper(d),i.HmacSHA1=a._createHmacHelper(d),l.SHA1)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.algo,o=[],d=[];!function(){function t(t){for(var i=e.sqrt(t),r=2;r<=i;r++)if(!(t%r))return!1;return!0}function i(e){return 4294967296*(e-(0|e))|0}for(var r=2,s=0;s<64;)t(r)&&(s<8&&(o[s]=i(e.pow(r,.5))),d[s]=i(e.pow(r,1/3)),s++),r++}();var l=[],c=n.SHA256=a.extend({_doReset:function(){this._hash=new s.init(o.slice(0))},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],o=i[4],c=i[5],u=i[6],h=i[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,m=l[f-2],g=(m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10;l[f]=_+l[f-7]+g+l[f-16]}var y=r&s^r&a^s&a,b=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),v=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=n+v|0,n=a,a=s,s=r,r=v+(b+y)|0}i[0]=i[0]+r|0,i[1]=i[1]+s|0,i[2]=i[2]+a|0,i[3]=i[3]+n|0,i[4]=i[4]+o|0,i[5]=i[5]+c|0,i[6]=i[6]+u|0,i[7]=i[7]+h|0},_doFinalize:function(){var t=this._data,i=t.words,r=8*this._nDataBytes,s=8*t.sigBytes;return i[s>>>5]|=128<<24-s%32,i[14+(s+64>>>9<<4)]=e.floor(r/4294967296),i[15+(s+64>>>9<<4)]=r,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=a._createHelper(c),t.HmacSHA256=a._createHmacHelper(c)}(Math),i.SHA256)})),Gt((function(e,t){var i,r,s,a,n,o;e.exports=(r=(i=o=Mr).lib.WordArray,s=i.algo,a=s.SHA256,n=s.SHA224=a.extend({_doReset:function(){this._hash=new r.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=a._createHelper(n),i.HmacSHA224=a._createHmacHelper(n),o.SHA224)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.Hasher,r=e.x64,s=r.Word,a=r.WordArray,n=e.algo;function o(){return s.create.apply(s,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=n.SHA512=t.extend({_doReset:function(){this._hash=new a.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],o=i[4],c=i[5],u=i[6],h=i[7],f=r.high,p=r.low,_=s.high,m=s.low,g=a.high,y=a.low,b=n.high,v=n.low,S=o.high,w=o.low,A=c.high,B=c.low,U=u.high,E=u.low,x=h.high,T=h.low,k=f,C=p,L=_,D=m,I=g,F=y,P=b,M=v,z=S,R=w,N=A,G=B,O=U,H=E,V=x,$=T,W=0;W<80;W++){var Y,q,j=l[W];if(W<16)q=j.high=0|e[t+2*W],Y=j.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,ie=ee.low,re=(te>>>19|ie<<13)^(te<<3|ie>>>29)^te>>>6,se=(ie>>>19|te<<13)^(ie<<3|te>>>29)^(ie>>>6|te<<26),ae=l[W-7],ne=ae.high,oe=ae.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ne+((Y=Q+oe)>>>0>>0?1:0))+re+((Y+=se)>>>0>>0?1:0))+le+((Y+=ce)>>>0>>0?1:0),j.high=q,j.low=Y}var ue,he=z&N^~z&O,fe=R&G^~R&H,pe=k&L^k&I^L&I,_e=C&D^C&F^D&F,me=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=d[W],Se=ve.high,we=ve.low,Ae=V+ye+((ue=$+be)>>>0<$>>>0?1:0),Be=ge+_e;V=O,$=H,O=N,H=G,N=z,G=R,z=P+(Ae=(Ae=(Ae=Ae+he+((ue+=fe)>>>0>>0?1:0))+Se+((ue+=we)>>>0>>0?1:0))+q+((ue+=Y)>>>0>>0?1:0))+((R=M+ue|0)>>>0>>0?1:0)|0,P=I,M=F,I=L,F=D,L=k,D=C,k=Ae+(me+pe+(Be>>>0>>0?1:0))+((C=ue+Be|0)>>>0>>0?1:0)|0}p=r.low=p+C,r.high=f+k+(p>>>0>>0?1:0),m=s.low=m+D,s.high=_+L+(m>>>0>>0?1:0),y=a.low=y+F,a.high=g+I+(y>>>0>>0?1:0),v=n.low=v+M,n.high=b+P+(v>>>0>>0?1:0),w=o.low=w+R,o.high=S+z+(w>>>0>>0?1:0),B=c.low=B+G,c.high=A+N+(B>>>0>>0?1:0),E=u.low=E+H,u.high=U+O+(E>>>0>>0?1:0),T=h.low=T+$,h.high=x+V+(T>>>0<$>>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[30+(r+128>>>10<<5)]=Math.floor(i/4294967296),t[31+(r+128>>>10<<5)]=i,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),i.SHA512)})),Gt((function(e,t){var i,r,s,a,n,o,d,l;e.exports=(r=(i=l=Mr).x64,s=r.Word,a=r.WordArray,n=i.algo,o=n.SHA512,d=n.SHA384=o.extend({_doReset:function(){this._hash=new a.init([new s.init(3418070365,3238371032),new s.init(1654270250,914150663),new s.init(2438529370,812702999),new s.init(355462360,4144912697),new s.init(1731405415,4290775857),new s.init(2394180231,1750603025),new s.init(3675008525,1694076839),new s.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=o._createHelper(d),i.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,i=0;i<24;i++){d[e+5*t]=(i+1)*(i+2)/2%64;var r=(2*e+3*t)%5;e=t%5,t=r}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var s=1,a=0;a<24;a++){for(var o=0,u=0,h=0;h<7;h++){if(1&s){var f=(1<>>24)|4278255360&(a<<24|a>>>8),n=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),(T=i[s]).high^=n,T.low^=a}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,_=0;_<5;_++)f^=(T=i[h+5*_]).high,p^=T.low;var m=u[h];m.high=f,m.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],b=y.high,v=y.low;for(f=g.high^(b<<1|v>>>31),p=g.low^(v<<1|b>>>31),_=0;_<5;_++)(T=i[h+5*_]).high^=f,T.low^=p}for(var S=1;S<25;S++){var w=(T=i[S]).high,A=T.low,B=d[S];B<32?(f=w<>>32-B,p=A<>>32-B):(f=A<>>64-B,p=w<>>64-B);var U=u[l[S]];U.high=f,U.low=p}var E=u[0],x=i[0];for(E.high=x.high,E.low=x.low,h=0;h<5;h++)for(_=0;_<5;_++){var T=i[S=h+5*_],k=u[S],C=u[(h+1)%5+5*_],L=u[(h+2)%5+5*_];T.high=k.high^~C.high&L.high,T.low=k.low^~C.low&L.low}T=i[0];var D=c[o];T.high^=D.high,T.low^=D.low}},_doFinalize:function(){var t=this._data,i=t.words;this._nDataBytes;var r=8*t.sigBytes,a=32*this.blockSize;i[r>>>5]|=1<<24-r%32,i[(e.ceil((r+1)/a)*a>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var n=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new s.init(l,o)},clone:function(){for(var e=a.clone.call(this),t=e._state=this._state.slice(0),i=0;i<25;i++)t[i]=t[i].clone();return e}});t.SHA3=a._createHelper(h),t.HmacSHA3=a._createHmacHelper(h)}(Math),i.SHA3)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.algo,o=s.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=s.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=s.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=s.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=s.create([0,1518500249,1859775393,2400959708,2840853838]),h=s.create([1352829926,1548603684,1836072691,2053994217,0]),f=n.RIPEMD160=a.extend({_doReset:function(){this._hash=s.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=0;i<16;i++){var r=t+i,s=e[r];e[r]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}var a,n,f,v,S,w,A,B,U,E,x,T=this._hash.words,k=u.words,C=h.words,L=o.words,D=d.words,I=l.words,F=c.words;for(w=a=T[0],A=n=T[1],B=f=T[2],U=v=T[3],E=S=T[4],i=0;i<80;i+=1)x=a+e[t+L[i]]|0,x+=i<16?p(n,f,v)+k[0]:i<32?_(n,f,v)+k[1]:i<48?m(n,f,v)+k[2]:i<64?g(n,f,v)+k[3]:y(n,f,v)+k[4],x=(x=b(x|=0,I[i]))+S|0,a=S,S=v,v=b(f,10),f=n,n=x,x=w+e[t+D[i]]|0,x+=i<16?y(A,B,U)+C[0]:i<32?g(A,B,U)+C[1]:i<48?m(A,B,U)+C[2]:i<64?_(A,B,U)+C[3]:p(A,B,U)+C[4],x=(x=b(x|=0,F[i]))+E|0,w=E,E=U,U=b(B,10),B=A,A=x;x=T[1]+f+U|0,T[1]=T[2]+v+E|0,T[2]=T[3]+S+w|0,T[3]=T[4]+a+A|0,T[4]=T[0]+n+B|0,T[0]=x},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e.sigBytes=4*(t.length+1),this._process();for(var s=this._hash,a=s.words,n=0;n<5;n++){var o=a[n];a[n]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return s},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,i){return e^t^i}function _(e,t,i){return e&t|~e&i}function m(e,t,i){return(e|~t)^i}function g(e,t,i){return e&i|t&~i}function y(e,t,i){return e^(t|~i)}function b(e,t){return e<>>32-t}t.RIPEMD160=a._createHelper(f),t.HmacRIPEMD160=a._createHmacHelper(f)}(),i.RIPEMD160)})),Gt((function(e,t){var i,r,s;e.exports=(r=(i=Mr).lib.Base,s=i.enc.Utf8,void(i.algo.HMAC=r.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var i=e.blockSize,r=4*i;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),n=this._iKey=t.clone(),o=a.words,d=n.words,l=0;l>>2];e.sigBytes-=t}};r.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,i=t.iv,r=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=r.createEncryptor:(e=r.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,i&&i.words):(this._mode=e.call(r,this,i&&i.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var _=r.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),m=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,i=e.salt;return(i?a.create([1398893684,1701076831]).concat(i).concat(t):t).toString(d)},parse:function(e){var t,i=d.parse(e),r=i.words;return 1398893684==r[0]&&1701076831==r[1]&&(t=a.create(r.slice(2,4)),r.splice(0,4),i.sigBytes-=16),_.create({ciphertext:i,salt:t})}},g=r.SerializableCipher=s.extend({cfg:s.extend({format:m}),encrypt:function(e,t,i,r){r=this.cfg.extend(r);var s=e.createEncryptor(i,r),a=s.finalize(t),n=s.cfg;return _.create({ciphertext:a,key:i,iv:n.iv,algorithm:e,mode:n.mode,padding:n.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,i,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(i,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,i,r,s){if(r||(r=a.random(8)),s)n=l.create({keySize:t+i,hasher:s}).compute(e,r);else var n=l.create({keySize:t+i}).compute(e,r);var o=a.create(n.words.slice(t),4*i);return n.sigBytes=4*t,_.create({key:n,iv:o,salt:r})}},b=r.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,i,r){var s=(r=this.cfg.extend(r)).kdf.execute(i,e.keySize,e.ivSize,r.salt,r.hasher);r.iv=s.iv;var a=g.encrypt.call(this,e,t,s.key,r);return a.mixIn(s),a},decrypt:function(e,t,i,r){r=this.cfg.extend(r),t=this._parse(t,r.format);var s=r.kdf.execute(i,e.keySize,e.ivSize,t.salt,r.hasher);return r.iv=s.iv,g.decrypt.call(this,e,t,s.key,r)}})}())})),Gt((function(e,t){var i;e.exports=((i=Mr).mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,i,r){var s,a=this._iv;a?(s=a.slice(0),this._iv=void 0):s=this._prevBlock,r.encryptBlock(s,0);for(var n=0;n>24&255)){var t=e>>16&255,i=e>>8&255,r=255&e;255===t?(t=0,255===i?(i=0,255===r?r=0:++r):++i):++t,e=0,e+=t<<16,e+=i<<8,e+=r}else e+=1<<24;return e}function r(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var s=e.Encryptor=e.extend({processBlock:function(e,t){var i=this._cipher,s=i.blockSize,a=this._iv,n=this._counter;a&&(n=this._counter=a.slice(0),this._iv=void 0),r(n);var o=n.slice(0);i.encryptBlock(o,0);for(var d=0;d>>2]|=s<<24-a%4*8,e.sigBytes+=s},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)})),Gt((function(e,t){var i;e.exports=((i=Mr).pad.Iso10126={pad:function(e,t){var r=4*t,s=r-e.sigBytes%r;e.concat(i.lib.WordArray.random(s-1)).concat(i.lib.WordArray.create([s<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)})),Gt((function(e,t){var i;e.exports=((i=Mr).pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)})),Gt((function(e,t){var i;e.exports=((i=Mr).pad.ZeroPadding={pad:function(e,t){var i=4*t;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){var t=e.words,i=e.sigBytes-1;for(i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},i.pad.ZeroPadding)})),Gt((function(e,t){var i;e.exports=((i=Mr).pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(e){var t=i,r=t.lib.CipherParams,s=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(s)},parse:function(e){var t=s.parse(e);return r.create({ciphertext:t})}}}(),i.format.Hex)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.BlockCipher,r=e.algo,s=[],a=[],n=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var i=0,r=0;for(t=0;t<256;t++){var p=r^r<<1^r<<2^r<<3^r<<4;p=p>>>8^255&p^99,s[i]=p,a[p]=i;var _=e[i],m=e[_],g=e[m],y=257*e[p]^16843008*p;n[i]=y<<24|y>>>8,o[i]=y<<16|y>>>16,d[i]=y<<8|y>>>24,l[i]=y,y=16843009*g^65537*m^257*_^16843008*i,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,i?(i=_^e[e[e[g^_]]],r^=e[e[r]]):i=r=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=r.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,i=e.sigBytes/4,r=4*((this._nRounds=i+6)+1),a=this._keySchedule=[],n=0;n6&&n%i==4&&(l=s[l>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l]):(l=s[(l=l<<8|l>>>24)>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l],l^=p[n/i|0]<<24),a[n]=a[n-i]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[s[l>>>16&255]]^h[s[l>>>8&255]]^f[s[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,n,o,d,l,s)},decryptBlock:function(e,t){var i=e[t+1];e[t+1]=e[t+3],e[t+3]=i,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,a),i=e[t+1],e[t+1]=e[t+3],e[t+3]=i},_doCryptBlock:function(e,t,i,r,s,a,n,o){for(var d=this._nRounds,l=e[t]^i[0],c=e[t+1]^i[1],u=e[t+2]^i[2],h=e[t+3]^i[3],f=4,p=1;p>>24]^s[c>>>16&255]^a[u>>>8&255]^n[255&h]^i[f++],m=r[c>>>24]^s[u>>>16&255]^a[h>>>8&255]^n[255&l]^i[f++],g=r[u>>>24]^s[h>>>16&255]^a[l>>>8&255]^n[255&c]^i[f++],y=r[h>>>24]^s[l>>>16&255]^a[c>>>8&255]^n[255&u]^i[f++];l=_,c=m,u=g,h=y}_=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^i[f++],m=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^i[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^i[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^i[f++],e[t]=_,e[t+1]=m,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(_)}(),i.AES)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib,r=t.WordArray,s=t.BlockCipher,a=e.algo,n=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=a.DES=s.extend({_doReset:function(){for(var e=this._key.words,t=[],i=0;i<56;i++){var r=n[i]-1;t[i]=e[r>>>5]>>>31-r%32&1}for(var s=this._subKeys=[],a=0;a<16;a++){var l=s[a]=[],c=d[a];for(i=0;i<24;i++)l[i/6|0]|=t[(o[i]-1+c)%28]<<31-i%6,l[4+(i/6|0)]|=t[28+(o[i+24]-1+c)%28]<<31-i%6;for(l[0]=l[0]<<1|l[0]>>>31,i=1;i<7;i++)l[i]=l[i]>>>4*(i-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(i=0;i<16;i++)u[i]=s[15-i]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,i){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var r=0;r<16;r++){for(var s=i[r],a=this._lBlock,n=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((n^s[d])&c[d])>>>0];this._lBlock=n,this._rBlock=a^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var i=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=i,this._lBlock^=i<>>e^this._lBlock)&t;this._lBlock^=i,this._rBlock^=i<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),s=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(r.create(t)),this._des2=u.createEncryptor(r.create(i)),this._des3=u.createEncryptor(r.create(s))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=s._createHelper(p)}(),i.TripleDES)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=r.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,i=e.sigBytes,r=this._S=[],s=0;s<256;s++)r[s]=s;s=0;for(var a=0;s<256;s++){var n=s%i,o=t[n>>>2]>>>24-n%4*8&255;a=(a+r[s]+o)%256;var d=r[s];r[s]=r[a],r[a]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=a.call(this)},keySize:8,ivSize:0});function a(){for(var e=this._S,t=this._i,i=this._j,r=0,s=0;s<4;s++){i=(i+e[t=(t+1)%256])%256;var a=e[t];e[t]=e[i],e[i]=a,r|=e[(e[t]+e[i])%256]<<24-8*s}return this._i=t,this._j=i,r}e.RC4=t._createHelper(s);var n=r.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)a.call(this)}});e.RC4Drop=t._createHelper(n)}(),i.RC4)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=[],a=[],n=[],o=r.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,i=0;i<4;i++)e[i]=16711935&(e[i]<<8|e[i]>>>24)|4278255360&(e[i]<<24|e[i]>>>8);var r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,i=0;i<4;i++)d.call(this);for(i=0;i<8;i++)s[i]^=r[i+4&7];if(t){var a=t.words,n=a[0],o=a[1],l=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(s[0]^=l,s[1]^=u,s[2]^=c,s[3]^=h,s[4]^=l,s[5]^=u,s[6]^=c,s[7]^=h,i=0;i<4;i++)d.call(this)}},_doProcessBlock:function(e,t){var i=this._X;d.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var r=0;r<4;r++)s[r]=16711935&(s[r]<<8|s[r]>>>24)|4278255360&(s[r]<<24|s[r]>>>8),e[t+r]^=s[r]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,i=0;i<8;i++)a[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var r=e[i]+t[i],s=65535&r,o=r>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&r)*r|0)+((65535&r)*r|0);n[i]=d^l}e[0]=n[0]+(n[7]<<16|n[7]>>>16)+(n[6]<<16|n[6]>>>16)|0,e[1]=n[1]+(n[0]<<8|n[0]>>>24)+n[7]|0,e[2]=n[2]+(n[1]<<16|n[1]>>>16)+(n[0]<<16|n[0]>>>16)|0,e[3]=n[3]+(n[2]<<8|n[2]>>>24)+n[1]|0,e[4]=n[4]+(n[3]<<16|n[3]>>>16)+(n[2]<<16|n[2]>>>16)|0,e[5]=n[5]+(n[4]<<8|n[4]>>>24)+n[3]|0,e[6]=n[6]+(n[5]<<16|n[5]>>>16)+(n[4]<<16|n[4]>>>16)|0,e[7]=n[7]+(n[6]<<8|n[6]>>>24)+n[5]|0}e.Rabbit=t._createHelper(o)}(),i.Rabbit)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=[],a=[],n=[],o=r.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var s=0;s<4;s++)d.call(this);for(s=0;s<8;s++)r[s]^=i[s+4&7];if(t){var a=t.words,n=a[0],o=a[1],l=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(r[0]^=l,r[1]^=u,r[2]^=c,r[3]^=h,r[4]^=l,r[5]^=u,r[6]^=c,r[7]^=h,s=0;s<4;s++)d.call(this)}},_doProcessBlock:function(e,t){var i=this._X;d.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var r=0;r<4;r++)s[r]=16711935&(s[r]<<8|s[r]>>>24)|4278255360&(s[r]<<24|s[r]>>>8),e[t+r]^=s[r]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,i=0;i<8;i++)a[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var r=e[i]+t[i],s=65535&r,o=r>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&r)*r|0)+((65535&r)*r|0);n[i]=d^l}e[0]=n[0]+(n[7]<<16|n[7]>>>16)+(n[6]<<16|n[6]>>>16)|0,e[1]=n[1]+(n[0]<<8|n[0]>>>24)+n[7]|0,e[2]=n[2]+(n[1]<<16|n[1]>>>16)+(n[0]<<16|n[0]>>>16)|0,e[3]=n[3]+(n[2]<<8|n[2]>>>24)+n[1]|0,e[4]=n[4]+(n[3]<<16|n[3]>>>16)+(n[2]<<16|n[2]>>>16)|0,e[5]=n[5]+(n[4]<<8|n[4]>>>24)+n[3]|0,e[6]=n[6]+(n[5]<<16|n[5]>>>16)+(n[4]<<16|n[4]>>>16)|0,e[7]=n[7]+(n[6]<<8|n[6]>>>24)+n[5]|0}e.RabbitLegacy=t._createHelper(o)}(),i.RabbitLegacy)})),Gt((function(e,t){var i;e.exports=(i=Mr,function(){var e=i,t=e.lib.BlockCipher,r=e.algo;const s=16,a=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],n=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let i=t>>24&255,r=t>>16&255,s=t>>8&255,a=255&t,n=e.sbox[0][i]+e.sbox[1][r];return n^=e.sbox[2][s],n+=e.sbox[3][a],n}function l(e,t,i){let r,a=t,n=i;for(let t=0;t1;--t)a^=e.pbox[t],n=d(e,a)^n,r=a,a=n,n=r;return r=a,a=n,n=r,n^=e.pbox[1],a^=e.pbox[0],{left:a,right:n}}function u(e,t,i){for(let t=0;t<4;t++){e.sbox[t]=[];for(let i=0;i<256;i++)e.sbox[t][i]=n[t][i]}let r=0;for(let n=0;n=i&&(r=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),i=new Uint8Array(i);const s=e.byteLength;let a=5;for(;as)break;let o=e[a+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=e.slice(a+4+2,a+4+n);let s=new Pr.ModeOfOperation.ctr(t,new Pr.Counter(i));const o=s.decrypt(r);s=null,e.set(o,a+4+2)}a=a+4+n}return e}function Nr(e,t,i){if(e.byteLength<=30)return e;const r=e.slice(32);let s=new Pr.ModeOfOperation.ctr(t,new Pr.Counter(i));const a=s.decrypt(r);return s=null,e.set(a,32),e}Gt((function(e,t){e.exports=Mr}));var Gr=Gt((function(e,t){var r,s,a,n=(r=new Date,s=4,a={setLogLevel:function(e){s=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>=s&&console.debug("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=s&&console.info("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=s&&console.warn("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=s&&console.error("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},a);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 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 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"},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="",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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,i,r,s){var a=new Uint8Array(e,t,s),n=new Uint8Array(i,r,s);a.set(n)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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},c.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},c.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))},c.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.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},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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=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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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,i){this.type=e,this.size=t,this.uuid=i},FullBox:function(e,t,i){h.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){h.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,r){h.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=r},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,i=0;ii?(n.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+i),{code:h.ERR_NOT_ENOUGH_DATA,type:c,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 '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?r=new h[c+"Box"](l):"uuid"!==c?(n.warn("BoxParser","Unknown box type: '"+c+"'"),(r=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[a]?r=new h.UUIDBoxes[a](l):(n.warn("BoxParser","Unknown uuid type: '"+a+"'"),(r=new h.Box(c,l)).uuid=a,r.has_unparsed_data=!0),r.hdr_size=d,r.start=o,r.write===h.Box.prototype.write&&"mdat"!==r.type&&(n.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?(n.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&&(n.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:h.OK,box:r,size:r.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,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)},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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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 i=0;i<3;i++)this.layer_size[i]=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 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")})),h.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))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.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))})),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,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})),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 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())}})),h.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(", ")+")"})),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[i]=e.readString(4),t-=4,i++})),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,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})),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,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}}})),h.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")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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 i=0;i0){var t=e.readUint32();this.kid=[];for(var i=0;i0&&(this.data=e.readUint8Array(r))})),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 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})),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(),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})),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(),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}})),h.SingleItemTypeReferenceBox=function(e,t,i,r){h.Box.call(this,e,t),this.hdr_size=i,this.start=r},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 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=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 i=e.readUint32(),r=0;r>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,i,r){h.Box.call(this,e,t),this.hdr_size=i,this.start=r},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,i;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 i=0;i>7&1,this.block_pad_lsb=i>>6&1,this.block_little_endian=i>>5&1,this.block_reversed=i>>4&1,this.pad_unknown=i>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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,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<1){for(r.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,i=this.num_sublayers-2;i>=0;--i){var n=r.extract_bits(1);this.ptl_sublayer_present_mask|=n<1;++i)r.extract_bits(1);for(this.sublayer_level_idc=[],i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=h.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="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+a,s=!0);t+=a}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 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,d=0;for(e=0;e<=r;++e)for(o=o<<8|s[e],d+=8;d>=5;){i+=n[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(i+=n[31&(o<<=5-d)])}}t+=i}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(),i=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(i?"."+i:"")}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 i=this.vpcC.bitDepth;return 8==i&&(i="08"),e+".0"+this.vpcC.profile+"."+t+"."+i},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.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},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(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>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)},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[i]instanceof h.Box||t[i]instanceof h.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||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},g.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 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)}},g.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))},g.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},g.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)&&(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}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var i=[];return g._sweep.call(this,e,i,t),i},g._sweep=function(e,t,i){for(var r in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;g._sweep.call(this.boxes[r],e,t,i)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},g.prototype.releaseUsedSamples=function(e,t,i){var r=0,s=this.getTrackById(e);s.lastValidSample||(s.lastValidSample=0);for(var a=s.lastValidSample;ae*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}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.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;sthis.getTrackDuration(i)||((r=this.seekTrack(e,t,i)).offset-1){n=d;break}switch(n){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 h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),a.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),a.addBox(f)}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 h["url Box"]).set("flags",1));var p=s.add("stbl");return p.add("stsd").addEntry(a),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(i),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new h.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",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),r.add("tfdt").set("baseMediaDecodeTime",e.dts-(s.first_dts||0)),r.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]),i},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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&&(d=s[n].grouping_type+"/0",(o=new l(s[n].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(n=0;n=2&&(d=r[n].grouping_type+"/0",o=new l(r[n].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.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])}},g.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))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=a.sample_counts[v]),t>0?(e.samples[t-1].duration=a.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,E.dts=e.samples[t-1].dts+e.samples[t-1].duration):E.dts=0,n?(t>=S&&(w++,S<0&&(S=0),S+=n.sample_counts[w]),E.cts=e.samples[t].dts+n.sample_offsets[w]):E.cts=E.dts,o?(t==o.sample_numbers[A]-1?(E.is_sync=!0,A++):(E.is_sync=!1,E.degradation_priority=0),l&&l.entries[B].sample_delta+U==t+1&&(E.subsamples=l.entries[B].subsamples,U+=l.entries[B].sample_delta,B++)):E.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,E,E.number),E.degradation_priority=h?h.priority[t]:0,l&&l.entries[B].sample_delta+U==t&&(E.subsamples=l.entries[B].subsamples,U+=l.entries[B].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,E,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)}},g.prototype.updateSampleLists=function(){var e,t,i,r,s,a,n,o,d,l,c,u,f,p,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,m.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+m.sample_composition_time_offset[i]),_=n,m.flags&h.TRUN_FLAGS_FLAGS?_=m.sample_flags[i]:0===i&&m.flags&h.TRUN_FLAGS_FIRST_FLAG&&(_=m.first_sample_flags),p.is_sync=!(_>>16&1),p.is_leading=_>>26&3,p.depends_on=_>>24&3,p.is_depended_on=_>>22&3,p.has_redundancy=_>>20&3,p.degradation_priority=65535&_;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(m.flags&h.TRUN_FLAGS_DATA_OFFSET),S=0;S=y?c.tfhd.base_data_offset:b||0===t?l.start:o,p.offset=0===t&&0===i?v?S+m.data_offset:S:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var w=c.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+")"),d.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+")"),d.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,a),r.alreadyRead+=a,i.usedBytes+=a,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.description=null,delete i.degradation_priority,delete i.depends_on,delete i.description_index,delete i.has_redundancy,delete i.is_depended_on,delete i.is_leading,delete i.is_sync,delete i.moof_number,delete i.number_in_traf,delete i.timescale,delete i.cts,delete i.dts,delete i.offset,delete i.size,delete i.track_id,delete i.duration,i.alreadyRead=0,i.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=a.ipro.protections[a.iinf.item_infos[e].protection_index-1]),a.iinf.item_infos[e].item_type?i.type=a.iinf.item_infos[e].item_type:i.type="mime",i.content_type=a.iinf.item_infos[e].content_type,i.content_encoding=a.iinf.item_infos[e].content_encoding;if(a.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[a]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=o))return n.debug("ISOFile","Getting item #"+e+" extent #"+r+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+s.length+" full item size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,o),s.alreadyRead+=o,i.alreadyRead+=o,t.usedBytes+=o,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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var i=void 0===e||e,r=new g(t);return r.discardMdatData=!i,r}};t.createFile=y.createFile}));function Or(e){return e.reduce(((e,t)=>256*e+t))}function Hr(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]))}Gr.Log,Gr.MP4BoxStream,Gr.DataStream,Gr.MultiBufferStream,Gr.MPEG4DescriptorParser,Gr.BoxParser,Gr.XMLSubtitlein4Parser,Gr.Textin4Parser,Gr.ISOFile,Gr.createFile;class Vr{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],Hr(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}}function $r(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=new r((0|e.byteLength)+(0|t.byteLength));return i.set(e,0),i.set(t,0|e.byteLength),i}),new r)}const Wr=16,Yr=[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],qr=[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 jr(e){const t=[];for(let i=0,r=e.length;i1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Xr(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}function Zr(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("")}function Jr(e,t){const i=31&t;return e<>>32-i}function Qr(e){return(255&Yr[e>>>24&255])<<24|(255&Yr[e>>>16&255])<<16|(255&Yr[e>>>8&255])<<8|255&Yr[255&e]}function es(e){return e^Jr(e,2)^Jr(e,10)^Jr(e,18)^Jr(e,24)}function ts(e){return e^Jr(e,13)^Jr(e,23)}function is(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]^=es(Qr(e)),e=r[2]^r[3]^r[0]^i[t+1],r[1]^=es(Qr(e)),e=r[3]^r[0]^r[1]^i[t+2],r[2]^=es(Qr(e)),e=r[0]^r[1]^r[2]^i[t+3],r[3]^=es(Qr(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 rs(e,t,i){const r=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[0+4*t],s[1]=255&e[1+4*t],s[2]=255&e[2+4*t],s[3]=255&e[3+4*t],r[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];r[0]^=2746333894,r[1]^=1453994832,r[2]^=1736282519,r[3]^=2993693404;for(let e,i=0;i<32;i+=4)e=r[1]^r[2]^r[3]^qr[i+0],t[i+0]=r[0]^=ts(Qr(e)),e=r[2]^r[3]^r[0]^qr[i+1],t[i+1]=r[1]^=ts(Qr(e)),e=r[3]^r[0]^r[1]^qr[i+2],t[i+2]=r[2]^=ts(Qr(e)),e=r[0]^r[1]^r[2]^qr[i+3],t[i+3]=r[3]^=ts(Qr(e));if(0===i)for(let e,i=0;i<16;i++)e=t[i],t[i]=t[31-i],t[31-i]=e}function ss(e,t,i){let{padding:r="pkcs#7",mode:s,iv:a=[],output:n="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===s&&("string"==typeof a&&(a=jr(a)),16!==a.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=jr(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==i?Xr(e):jr(e):[...e],("pkcs#5"===r||"pkcs#7"===r)&&0!==i){const t=Wr-e.length%Wr;for(let i=0;i=Wr;){const t=e.slice(u,u+16),r=new Array(16);if("cbc"===s)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let a=new Uint8Array(e.slice(0,5)),n=5;for(;ns){const t=new Uint8Array(a.length+e.length-n);t.set(a,0),t.set(e.slice(n),a.length),a=t;break}let l=e[n+4],c=!1,u=2;if(i?(r&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const i=ss(e.slice(n+4+u,n+4+d),t,0,{padding:"none",output:"array"});let r=i[i.length-1];if(r>0&&r<16){let e=!0;for(let t=1;t<=r;t++)if(i[i.length-t]!==r){e=!1;break}e&&i.splice(i.length-r,r)}const s=new Uint8Array(u);s.set(e.slice(n+4,n+4+u),0);const o=ti($r(s,new Uint8Array(i))),l=new Uint8Array(a.length+o.length);l.set(a,0),l.set(o,a.length),a=l}else{const t=e.slice(n+4,n+4+d),i=new Uint8Array(a.length+4+t.length);i.set(a,0),i.set(o,a.length),i.set(t,a.length+4),a=i}n=n+4+d}return a}const os={init:0,findFirstStartCode:1,findSecondStartCode:2};class ds extends class{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(){r.off(e,s);for(var a=arguments.length,n=new Array(a),o=0;o1?i-1:0),s=1;s{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=os.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==os.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=os.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==os.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=os.findFirstStartCode}}}}function ls(e,t,i){for(let r=2;r3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let a=5;for(;as)break;let o=e[a+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=ls(e.slice(a+4,a+4+n),t,i);e.set(r,a+4)}a=a+4+n}return e}function hs(){for(var e=arguments.length,t=new Array(e),i=0;ie+t.byteLength),0));let s=0;return t.forEach((e=>{r.set(e,s),s+=e.byteLength})),r}class fs{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,r)));e.addEventListener(t,i,r);const s=()=>{li(e.removeEventListener)&&e.removeEventListener(t,i,r)};return this.destroys.push(s),s}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class ps{static init(){ps.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 ps.types)ps.types.hasOwnProperty(e)&&(ps.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=ps.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 ps.box(ps.types.trak,ps.tkhd(e),ps.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,s=e.presentHeight;return ps.box(ps.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 ps.box(ps.types.mdia,ps.mdhd(e),ps.hdlr(e),ps.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return ps.box(ps.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?ps.constants.HDLR_AUDIO:ps.constants.HDLR_VIDEO,ps.box(ps.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?ps.box(ps.types.smhd,ps.constants.SMHD):ps.box(ps.types.vmhd,ps.constants.VMHD),ps.box(ps.types.minf,t,ps.dinf(),ps.stbl(e))}static dinf(){return ps.box(ps.types.dinf,ps.box(ps.types.dref,ps.constants.DREF))}static stbl(e){return ps.box(ps.types.stbl,ps.stsd(e),ps.box(ps.types.stts,ps.constants.STTS),ps.box(ps.types.stsc,ps.constants.STSC),ps.box(ps.types.stsz,ps.constants.STSZ),ps.box(ps.types.stco,ps.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?ps.box(ps.types.stsd,ps.constants.STSD_PREFIX,ps.mp3(e)):ps.box(ps.types.stsd,ps.constants.STSD_PREFIX,ps.mp4a(e)):"avc"===e.videoType?ps.box(ps.types.stsd,ps.constants.STSD_PREFIX,ps.avc1(e)):ps.box(ps.types.stsd,ps.constants.STSD_PREFIX,ps.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 ps.box(ps.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 ps.box(ps.types.mp4a,r,ps.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 ps.box(ps.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 ps.box(ps.types.avc1,s,ps.box(ps.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 ps.box(ps.types.hvc1,s,ps.box(ps.types.hvcC,t))}static mvex(e){return ps.box(ps.types.mvex,ps.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 ps.box(ps.types.trex,i)}static moof(e,t){return ps.box(ps.types.moof,ps.mfhd(e.sequenceNumber),ps.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 ps.box(ps.types.mfhd,t)}static traf(e,t){let i=e.id,r=ps.box(ps.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=ps.box(ps.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),a=ps.sdtp(e),n=ps.trun(e,a.byteLength+16+16+8+16+8+8);return ps.box(ps.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,ps.box(ps.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),ps.box(ps.types.trun,i)}static mdat(e){return ps.box(ps.types.mdat,e)}}ps.init();var _s,ms=Gt((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(_s=ms)&&_s.__esModule&&Object.prototype.hasOwnProperty.call(_s,"default")&&_s.default;const gs=[44100,48e3,32e3,0],ys=[22050,24e3,16e3,0],bs=[11025,12e3,8e3,0],vs=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Ss=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],ws=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function As(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,d=0,l=0;switch(r){case 0:d=bs[n];break;case 2:d=ys[n];break;case 3:d=gs[n]}switch(s){case 1:a=e[s]&&t=6?(r=5,t=new Array(4),n=s-3):(r=2,t=new Array(2),n=s):-1!==o.indexOf("android")?(r=2,t=new Array(2),n=s):(r=5,n=s,t=new Array(4),s>=6?n=s-3:1===a&&(r=2,t=new Array(2),n=s)),t[0]=r<<3,t[0]|=(15&s)>>>1,t[1]=(15&s)<<7,t[1]|=(15&a)<<3,5===r&&(t[1]|=(15&n)>>>1,t[2]=(1&n)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Rs[s],this.sampling_index=s,this.channel_count=a,this.object_type=r,this.original_object_type=i,this.codec_mimetype="mp4a.40."+r,this.original_codec_mimetype="mp4a.40."+i}}class Os{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>r,a=8-r;if(a>=e)return i&&(this.index+=e),s>>a-e;{i&&(this.index+=a);const r=e-a;return s<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Hs(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Vs=new Array(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),$s=new Array(2746333894,1453994832,1736282519,2993693404),Ws=new Array(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 Ys(e,t,i,r,s){var a=s;a=t+s>e.length&&r+s<=i.length?e.length-t:r+s>i.length&&t+s<=e.length?i.length-r:t+s<=e.length&&r+s<=i.length?s:i.length>24&255,e>>16&255,e>>8&255,255&e)}function js(e,t){return t+3>>19)^(r<<23|r>>>9)}function Zs(e,t){var i=new Array(36);i[0]=js(t,0),i[1]=js(t,4),i[2]=js(t,8),i[3]=js(t,12);for(var r=0;r<32;r++)i[r+4]=i[r]^Js(i[r+1]^i[r+2]^i[r+3]^e[r]);var s=new Array(4);for(r=35;r>=32;r--)s[35-r]=i[r];var a=function(e){for(var t=new Array(4*e.length),i=0;i>>30)^(r<<10|r>>>22)^(r<<18|r>>>14)^(r<<24|r>>>8)}function Qs(e,t,i){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==i||null==i||i.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var r=Ks(e),s=Math.ceil(i.length/16),a=new Array(i.length),n=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),i=new Uint8Array(i);const a=e.byteLength;let n=5;for(;na)break;let d=e[n+4],l=!1,c=2;if(r?(s&&(c=3),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=Qs(t,i,e.slice(n+4+c,n+4+o));e.set(r,n+4+c)}n=n+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-2-2024" '+(yi(false)?"and is Trial Version[试用版本]":"")),function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=[],a=[],n=null,o=null,d=null,l=null,c=null,b=null,v=!1,B=null,be=null,ve=!1,$e=!1,Xe=!!gi(i),Ze=0,Qe=0,tt=!1,lt=null,wt=null,At=null,Et=[],Rt=null,Nt=null,Gt=0,Ot=0,Ht=null,Vt=null,jt=0,Jt=0,ai=!1,Si=!1,wi=!1,Ai=null,Bi=null,Ti=!1,Oi=!0,Hi=0,Yi=0,rr=()=>{const e=_i();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(n={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){n.decoder=new VideoDecoder({output:function(e){if(li(e.createImageBitmap))e.createImageBitmap().then((t=>{n.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let i=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:x,buffer:i,delay:cr.delay,ts:0},[i]),hi(e)}));else{n.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=n.offscreenCanvas.transferToImageBitmap();postMessage({cmd:x,buffer:t,delay:cr.delay,ts:0},[t]),hi(e)}},error:function(e){cr.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){n.reset(),n.decoder&&"closed"!==n.decoder.state&&(n.decoder.close(),n.decoder=null)},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?ht:ft});n.decoder.decode(i)}else if(r&&0===e[1]){const t=15&e[0];postMessage({cmd:I,code:t});const i=new Uint8Array(e);postMessage({cmd:F,buffer:i,codecId:t},[i.buffer]);let r=null,s=null;const a=e.slice(5);t===Ie?(s=ki(a),r={codec:s.codec,description:a}):t===Fe&&(s=Wi(a),r={codec:s.codec,description:a}),s&&s.codecWidth&&s.codecHeight&&(r.codedHeight=s.codecHeight,r.codedWidth=s.codecWidth),n.isEmitInfo||(cr.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:E,w:s.codecWidth,h:s.codecHeight}),n.isEmitInfo=!0,n.offscreenCanvas=new OffscreenCanvas(s.codecWidth,s.codecHeight),n.offscreenCanvasCtx=n.offscreenCanvas.getContext("2d"));try{n.decoder.configure(r),n.hasInit=!0}catch(e){cr.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else cr.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`)},reset(){n.hasInit=!1,n.isEmitInfo=!1,n.offscreenCanvas=null,n.offscreenCanvasCtx=null}});let sr=function(){if(Ti=!0,o)try{o.abort(),o=null,cr.debugLog("worker","abort success")}catch(e){o=null,cr.debugLog("worker","abort catch",e)}},ar={init(){ar.lastBuf=null,ar.vps=null,ar.sps=null,ar.pps=null,ar.streamType=null,ar.localDts=0,ar.pendingUnits={},ar.isSendSeqHeader=!1},destroy(){ar.lastBuf=null,ar.vps=null,ar.sps=null,ar.pps=null,ar.streamType=null,ar.localDts=0,ar.pendingUnits={},ar.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(cr._opt.nakedFlowDemuxUseNew){const e=ar.extractNALu$3(t);if(0===e.length)return void cr.debugLog("worker","dispatch naluArray length is 0");ar.handleVideoFrames(e)}else ar.extractNALu$2(t)},getNaluDts(){const e=cr._opt.nakedFlowFps;let t=ar.localDts;return ar.localDts=ar.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=cr._opt.sampleRate,t=cr._opt.audioBufferSize;return ar.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{const t=Fi(e);t===Ve||t===He?ar.handleVideoH264Nalu(e):Mi(t)&&r.push(e)})),1===r.length)ar.handleVideoH264Nalu(r[0]);else{if(Ri(r)){const e=Fi(r[0]),t=zi(e);ar.handleVideoH264NaluList(r,t,e)}else r.forEach((e=>{ar.handleVideoH264Nalu(e)}))}}else if(ar.streamType===ze)if(cr._opt.nakedFlowH265DemuxUseNew){const t=ar.handleAddNaluStartCode(e),i=ar.extractNALu(t);if(0===i.length)return void cr.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const r=[];if(i.forEach((e=>{const t=Xi(e);t===ot||t===at||t===rt?ar.handleVideoH265Nalu(e):Ji(t)&&r.push(e)})),1===r.length)ar.handleVideoH265Nalu(r[0]);else{if(er(r)){const e=Xi(r[0]),t=Qi(e);ar.handleVideoH265NaluList(r,t,e)}else r.forEach((e=>{ar.handleVideoH265Nalu(e)}))}}else{Xi(e)===ot?ar.extractH265PPS(e):ar.handleVideoH265Nalu(e)}},extractH264PPS(e){const t=ar.handleAddNaluStartCode(e);ar.extractNALu(t).forEach((e=>{Pi(Fi(e))?ar.extractH264SEI(e):ar.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=ar.handleAddNaluStartCode(e);ar.extractNALu(t).forEach((e=>{Zi(Xi(e))?ar.extractH265SEI(e):ar.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=ar.handleAddNaluStartCode(e);ar.extractNALu(t).forEach((e=>{ar.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=ar.handleAddNaluStartCode(e);ar.extractNALu(t).forEach((e=>{ar.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=Fi(e);switch(t){case He:ar.sps=e;break;case Ve:ar.pps=e}if(ar.isSendSeqHeader){if(ar.sps&&ar.pps){const e=Ci({sps:ar.sps,pps:ar.pps}),t=ar.localDts;cr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null}if(Mi(t)){const i=zi(t),r=ar.getNaluDts(),s=Di(e,i);ar.doDecode(s,{type:se,ts:r,isIFrame:i,cts:0})}}else if(ar.sps&&ar.pps){ar.isSendSeqHeader=!0;const e=Ci({sps:ar.sps,pps:ar.pps});cr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null}},handleVideoH264NaluList(e,t,i){if(ar.isSendSeqHeader){const r=ar.getNaluDts(),s=Ii(e.reduce(((e,t)=>{const i=ti(e),r=ti(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);ar.doDecode(s,{type:se,ts:r,isIFrame:t,cts:0}),cr.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${i}, dts is ${r}`)}},handleVideoH265Nalu(e){const t=Xi(e);switch(t){case rt:ar.vps=e;break;case at:ar.sps=e;break;case ot:ar.pps=e}if(ar.isSendSeqHeader){if(ar.vps&&ar.sps&&ar.pps){const e=qi({vps:ar.vps,sps:ar.sps,pps:ar.pps}),t=ar.localDts;cr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),ar.vps=null,ar.sps=null,ar.pps=null}if(Ji(t)){const i=Qi(t),r=ar.getNaluDts(),s=ji(e,i);ar.doDecode(s,{type:se,ts:r,isIFrame:i,cts:0})}}else if(ar.vps&&ar.sps&&ar.pps){ar.isSendSeqHeader=!0;const e=qi({vps:ar.vps,sps:ar.sps,pps:ar.pps});cr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),ar.vps=null,ar.sps=null,ar.pps=null}},handleVideoH265NaluList(e,t,i){if(ar.isSendSeqHeader){const r=ar.getNaluDts(),s=Ki(e.reduce(((e,t)=>{const i=ti(e),r=ti(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);ar.doDecode(s,{type:se,ts:r,isIFrame:t,cts:0}),cr.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${i}, dts is ${r}`)}},doDecode(e,t){cr.calcNetworkDelay(t.ts),t.isIFrame&&cr.calcIframeIntervalTimestamp(t.ts),cr.decode(e,t)},handleVideoFrames(e){if(!ar.streamVideoType)for(let t of e)if(ar.streamVideoType=ci(t),ar.streamVideoType)break;ar.streamVideoType?ar.streamVideoType===Me?ar.handleVideoH264Frames(e):ar.streamVideoType===ze&&ar.handleVideoH265Frames(e):cr.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],i=[],r=!1,s=!1;ar.pendingUnits.units&&(t=ar.pendingUnits.units,s=ar.pendingUnits.vcl,r=ar.pendingUnits.iFrame,ar.pendingUnits={});let a={};for(let n of e){if(n.byteLength<4)continue;const e=Fi(n);let o=!1,d=e===Ye;e!==We&&e!==Ye||(a=ar.parseVideo264Header(n),o=!0),t.length&&s&&(a.isfms||!o)&&(i.push({units:t,isIFrame:r}),t=[],r=!1,s=!1),t.push(n),r=r||d,s=s||o}t.length&&(ar.pendingUnits={units:t,vcl:s,iFrame:r}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let r=null,s=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Ve:ar.pps=e;break;case He:ar.sps=e;break;case qe:s=e}if(Mi(t)){const t=ti(e);if(r){const e=new Uint8Array(r.byteLength+t.byteLength);e.set(r,0),e.set(t,r.byteLength),r=e}else r=t}})),!ar.isSendSeqHeader&&ar.sps&&ar.pps){ar.isSendSeqHeader=!0;const e=Li({sps:ar.sps,pps:ar.pps});cr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null}if(ar.isSendSeqHeader){if(ar.sps&&ar.pps){const e=Li({sps:ar.sps,pps:ar.pps}),t=ar.localDts;cr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null}if(r){const e=ar.getNaluDts(),t=Ii(r,i);if(cr._opt.isEmitSEI&&s){const t=ei(s,!1);postMessage({cmd:j,buffer:t.payload,ts:e},[t.payload.buffer])}ar.doDecode(t,{type:se,ts:e,isIFrame:i,cts:0})}}}))},handleVideoH265Frames(e){let t=[],i=[],r=!1,s=!1;ar.pendingUnits.units&&(t=ar.pendingUnits.units,s=ar.pendingUnits.vcl,r=ar.pendingUnits.iFrame,ar.pendingUnits={});let a={};for(let n of e){if(n.byteLength<4)continue;const e=Xi(n);let o=!1,d=Qi(e);Ji(e)&&(a=ar.parseVideo265Header(n),o=!0),t.length&&s&&(a.isfms||!o)&&(i.push({units:t,isIFrame:r}),t=[],r=!1,s=!1),t.push(n),r=r||d,s=s||o}t.length&&(ar.pendingUnits={units:t,vcl:s,iFrame:r}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let r=null,s=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ot:ar.pps=e;break;case at:ar.sps=e;break;case rt:ar.vps=e;break;case ut:case ct:s=e}if(Ji(t)){const t=ti(e);if(r){const e=new Uint8Array(r.byteLength+t.byteLength);e.set(r,0),e.set(t,r.byteLength),r=e}else r=t}})),!ar.isSendSeqHeader&&ar.sps&&ar.pps&&ar.vps){ar.isSendSeqHeader=!0;const e=qi({sps:ar.sps,pps:ar.pps,vps:ar.vps});cr.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null,ar.vps=null}if(ar.isSendSeqHeader){if(ar.sps&&ar.pps&&ar.vps){const e=qi({sps:ar.sps,pps:ar.pps,vps:ar.vps}),t=ar.localDts;cr.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),ar.sps=null,ar.pps=null,ar.vps=null}if(r){const e=ar.getNaluDts(),t=Ki(r,i);if(cr._opt.isEmitSEI&&s){const t=ei(s,!0);postMessage({cmd:j,buffer:t.payload,ts:e},[t.payload.buffer])}ar.doDecode(t,{type:se,ts:e,isIFrame:i,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{ar.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Os(e);t.readUByte();return{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Os(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},nr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){nr.mp4Box=Gr.createFile(),nr.mp4Box.onReady=nr.onReady,nr.mp4Box.onError=nr.onError,nr.mp4Box.onSamples=nr.onSamples},initTransportDescarmber(){nr.transportDescarmber=new Vr},_getSeqHeader(e){const t=nr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Gr.DataStream(void 0,0,Gr.DataStream.BIG_ENDIAN);let i=[];e.avcC?(e.avcC.write(t),i=[23,0,0,0,0]):(nr.isHevc=!0,cr.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},onReady(e){cr.debugLog(nr.LOG_NAME,"onReady()");const t=e.videoTracks[0],i=e.audioTracks[0];if(t){nr.videoTrackId=t.id;const e=nr._getSeqHeader(t);e&&(cr.debugLog(nr.LOG_NAME,"seqHeader"),cr.decodeVideo(e,0,!0,0)),nr.mp4Box.setExtractionOptions(t.id)}if(i&&cr._opt.hasAudio){nr.audioTrackId=i.id;const e=i.audio||{},t=$t.indexOf(e.sample_rate),r=i.codec.replace("mp4a.40.","");nr.mp4Box.setExtractionOptions(i.id);const s=Wt({profile:parseInt(r,10),sampleRate:t,channel:e.channel_count});cr.debugLog(nr.LOG_NAME,"aacADTSHeader"),cr.decodeAudio(s,0)}nr.mp4Box.start()},onError(e){cr.debugError(nr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,i){if(e===nr.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&&cr.calcIframeIntervalTimestamp(r);let s=null;s=nr.isHevc?Ki(t,i):Ii(t,i),cr.decode(s,{type:se,ts:r,isIFrame:i,cts:0})}nr.mp4Box.removeUsedSamples(e)}else if(e===nr.audioTrackId){if(cr._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),cr.decode(r,{type:re,ts:i,isIFrame:!1,cts:0})}nr.mp4Box.removeUsedSamples(e)}}else cr.debugWarn(nr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);nr.transportDescarmber&&(t=nr.transportDescarmber.transport(t)),t.buffer.fileStart=nr.offset,nr.offset+=t.byteLength,nr.mp4Box.appendBuffer(t.buffer)},destroy(){nr.mp4Box&&(nr.mp4Box.stop(),nr.mp4Box.flush(),nr.mp4Box.destroy(),nr.mp4Box=null),nr.transportDescarmber&&(nr.transportDescarmber.destroy(),nr.transportDescarmber=null),nr.offset=0,nr.videoTrackId=null,nr.audioTrackId=null,nr.isHevc=!1}},or={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);or.extractNALu(t)},destroy(){or.lastBuffer=new Uint8Array(0),or.parsedOffset=0,or.firstStartCodeOffset=0,or.secondStartCodeOffset=0,or.state="init",or.hasInitVideoCodec=!1,or.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void cr.debugWarn(or.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(or.lastBuffer.length+e.length);for(t.set(or.lastBuffer,0),t.set(new Uint8Array(e),or.lastBuffer.length),or.lastBuffer=t;;){if("init"===or.state){let e=!1;for(;or.lastBuffer.length-or.parsedOffset>=4;)if(0===or.lastBuffer[or.parsedOffset])if(0===or.lastBuffer[or.parsedOffset+1])if(1===or.lastBuffer[or.parsedOffset+2]){if(182===or.lastBuffer[or.parsedOffset+3]){or.state="findFirstStartCode",or.firstStartCodeOffset=or.parsedOffset,or.parsedOffset+=4,e=!0;break}or.parsedOffset++}else or.parsedOffset++;else or.parsedOffset++;else or.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===or.state){let e=!1;for(;or.lastBuffer.length-or.parsedOffset>=4;)if(0===or.lastBuffer[or.parsedOffset])if(0===or.lastBuffer[or.parsedOffset+1])if(1===or.lastBuffer[or.parsedOffset+2]){if(182===or.lastBuffer[or.parsedOffset+3]){or.state="findSecondStartCode",or.secondStartCodeOffset=or.parsedOffset,or.parsedOffset+=4,e=!0;break}or.parsedOffset++}else or.parsedOffset++;else or.parsedOffset++;else or.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===or.state){if(!(or.lastBuffer.length-or.parsedOffset>0))break;{let e,t,i=192&or.lastBuffer[or.parsedOffset];e=0==i?or.secondStartCodeOffset-14:or.secondStartCodeOffset;let r=0==(192&or.lastBuffer[or.firstStartCodeOffset+4]);if(r){if(or.firstStartCodeOffset-14<0)return void cr.debugWarn(or.LOG_NAME,"firstStartCodeOffset -14 is",or.firstStartCodeOffset-14);or.hasInitVideoCodec||(or.hasInitVideoCodec=!0,cr.debugLog(or.LOG_NAME,"setCodec"),hr.setCodec(Pe,"")),t=or.lastBuffer.subarray(or.firstStartCodeOffset-14,e)}else t=or.lastBuffer.subarray(or.firstStartCodeOffset,e);let s=or.getNaluDts();or.hasInitVideoCodec?(postMessage({cmd:R,type:Be,value:t.byteLength}),postMessage({cmd:R,type:Ue,value:s}),Ze=s,hr.decode(t,r?1:0,s)):cr.debugWarn(or.LOG_NAME,"has not init video codec"),or.lastBuffer=or.lastBuffer.subarray(e),or.firstStartCodeOffset=0==i?14:0,or.parsedOffset=or.firstStartCodeOffset+4,or.state="findFirstStartCode"}}}},getNaluDts(){let e=or.localDts;return or.localDts=or.localDts+40,e}},dr={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Ns,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){dr.media_info_=null,dr.pes_slice_queues_=null,dr.section_slice_queues_=null,dr.video_metadata_=null,dr.audio_metadata_=null,dr.aac_last_incomplete_data_=null,dr.video_track_=null,dr.audio_track_=null,dr._remainingPacketData=null},probe(e){let t=new Uint8Array(e),i=-1,r=188;if(t.byteLength<=3*r)return{needMoreData:!0};for(;-1===i;){let e=Math.min(1e3,t.byteLength-3*r);for(let s=0;s=4&&(i-=4),{match:!0,consumed:0,ts_packet_size:r,sync_offset:i})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){dr._remainingPacketData&&(e=hs(dr._remainingPacketData,e),dr._remainingPacketData=null);let t=e.buffer;const i=dr.parseChunks(t);i?dr._remainingPacketData=e.subarray(i):e.length>>6;i[1];let a=(31&i[1])<<8|i[2],n=(48&i[3])>>>4,o=15&i[3],d=!(!dr.pmt_||dr.pmt_.pcr_pid!==a),l={},c=4;if(2==n||3==n){let e=i[4];if(e>0&&(d||3==n)){if(l.discontinuity_indicator=(128&i[5])>>>7,l.random_access_indicator=(64&i[5])>>>6,l.elementary_stream_priority_indicator=(32&i[5])>>>5,(16&i[5])>>>4){let e=300*(i[6]<<25|i[7]<<17|i[8]<<9|i[9]<<1|i[10]>>>7)+((1&i[10])<<8|i[11]);dr.last_pcr_=e}}if(2==n||5+e===188){t+=188,204===dr.tsPacketSize&&(t+=16);continue}c=5+e}if(1==n||3==n)if(0===a||a===dr.current_pmt_pid_||null!=dr.pmt_&&dr.pmt_.pid_stream_type[a]===Ds){let i=188-c;dr.handleSectionSlice(e,t+c,i,{pid:a,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=dr.pmt_&&null!=dr.pmt_.pid_stream_type[a]){let i=188-c,r=dr.pmt_.pid_stream_type[a];a!==dr.pmt_.common_pids.h264&&a!==dr.pmt_.common_pids.h265&&a!==dr.pmt_.common_pids.adts_aac&&a!==dr.pmt_.common_pids.loas_aac&&a!==dr.pmt_.common_pids.ac3&&a!==dr.pmt_.common_pids.eac3&&a!==dr.pmt_.common_pids.opus&&a!==dr.pmt_.common_pids.mp3&&!0!==dr.pmt_.pes_private_data_pids[a]&&!0!==dr.pmt_.timed_id3_pids[a]&&!0!==dr.pmt_.synchronous_klv_pids[a]&&!0!==dr.pmt_.asynchronous_klv_pids[a]||dr.handlePESSlice(e,t+c,i,{pid:a,stream_type:r,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===dr.tsPacketSize&&(t+=16)}return dr.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,i,r){let s=new Uint8Array(e,t,i),a=dr.section_slice_queues_[r.pid];if(r.payload_unit_start_indicator){let n=s[0];if(null!=a&&0!==a.total_length){let s=new Uint8Array(e,t+1,Math.min(i,n));a.slices.push(s),a.total_length+=s.byteLength,a.total_length===a.expected_length?dr.emitSectionSlices(a,r):dr.clearSlices(a,r)}for(let o=1+n;o=a.expected_length&&dr.clearSlices(a,r),o+=d.byteLength}}else if(null!=a&&0!==a.total_length){let s=new Uint8Array(e,t,Math.min(i,a.expected_length-a.total_length));a.slices.push(s),a.total_length+=s.byteLength,a.total_length===a.expected_length?dr.emitSectionSlices(a,r):a.total_length>=a.expected_length&&dr.clearSlices(a,r)}},handlePESSlice(e,t,i,r){let s=new Uint8Array(e,t,i),a=s[0]<<16|s[1]<<8|s[2];s[3];let n=s[4]<<8|s[5];if(r.payload_unit_start_indicator){if(1!==a)return void cr.debugWarn(dr.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${a}`);let e=dr.pes_slice_queues_[r.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?dr.emitPESSlices(e,r):dr.clearSlices(e,r)),dr.pes_slice_queues_[r.pid]=new Ps,dr.pes_slice_queues_[r.pid].random_access_indicator=r.random_access_indicator}if(null==dr.pes_slice_queues_[r.pid])return;let o=dr.pes_slice_queues_[r.pid];o.slices.push(s),r.payload_unit_start_indicator&&(o.expected_length=0===n?0:n+6),o.total_length+=s.byteLength,o.expected_length>0&&o.expected_length===o.total_length?dr.emitPESSlices(o,r):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==n&&3!==n||(i=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,a=3===n?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:i);let d,l=9+o;if(0!==s){if(s<3+o)return void cr.debugWarn(dr.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=s-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Bs:case Us:dr.parseMP3Payload(c,i);break;case Es:dr.pmt_.common_pids.opus===e.pid||dr.pmt_.common_pids.ac3===e.pid||dr.pmt_.common_pids.eac3===e.pid||(dr.pmt_.asynchronous_klv_pids[e.pid]?dr.parseAsynchronousKLVMetadataPayload(c,e.pid,r):dr.pmt_.smpte2038_pids[e.pid]?dr.parseSMPTE2038MetadataPayload(c,i,a,e.pid,r):dr.parsePESPrivateDataPayload(c,i,a,e.pid,r));break;case xs:dr.parseADTSAACPayload(c,i);break;case Ts:dr.parseLOASAACPayload(c,i);break;case ks:case Cs:break;case Ls:dr.pmt_.timed_id3_pids[e.pid]?dr.parseTimedID3MetadataPayload(c,i,a,e.pid,r):dr.pmt_.synchronous_klv_pids[e.pid]&&dr.parseSynchronousKLVMetadataPayload(c,i,a,e.pid,r);break;case Is:dr.parseH264Payload(c,i,a,e.random_access_indicator);break;case Fs:dr.parseH265Payload(c,i,a,e.random_access_indicator)}}else if((188===r||191===r||240===r||241===r||255===r||242===r||248===r)&&e.stream_type===Es){let i,a=6;i=0!==s?s:t.byteLength-a;let n=t.subarray(a,a+i);dr.parsePESPrivateDataPayload(n,void 0,void 0,e.pid,r)}}else cr.debugError(dr.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${i}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(dr.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let i=(15&e[1])<<8|e[2];e[3],e[4];let r=(62&e[5])>>>1,s=1&e[5],a=e[6];e[7];let n=null;if(1===s&&0===a)n={version_number:0,network_pid:0,program_pmt_pid:{}},n.version_number=r;else if(n=dr.pat_,null==n)return;let o=i-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let i=e[t]<<8|e[t+1],r=(31&e[t+2])<<8|e[t+3];0===i?n.network_pid=r:(n.program_pmt_pid[i]=r,-1===d&&(d=i),-1===l&&(l=r))}1===s&&0===a&&(null==dr.pat_&&cr.debugLog(dr.TAG_NAME,`Parsed first PAT: ${JSON.stringify(n)}`),dr.pat_=n,dr.current_program_=d,dr.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void cr.debugError(dr.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let i,r=(15&e[1])<<8|e[2],s=e[3]<<8|e[4],a=(62&e[5])>>>1,n=1&e[5],o=e[6];if(e[7],1===n&&0===o)i=dr._initPmt(),i.program_number=s,i.version_number=a,dr.program_pmt_map_[s]=i;else if(i=dr.program_pmt_map_[s],null==i)return;i.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=r-9-d-4;for(let t=l;t0){for(let r=t+5;r0)for(let r=t+5;rdr.has_video_&&dr.has_audio_?dr.video_init_segment_dispatched_&&dr.audio_init_segment_dispatched_:dr.has_video_&&!dr.has_audio_?dr.video_init_segment_dispatched_:!(dr.has_video_||!dr.has_audio_)&&dr.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=dr.video_metadata_.details,t={type:"video"};t.id=dr.video_track_.id,t.timescale=1e3,t.duration=dr.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let i=t.frameRate.fps_den,r=t.frameRate.fps_num;if(t.refSampleDuration=i/r*1e3,t.codec=e.codec_mimetype,dr.video_metadata_.vps){cr.isHevc=!0;let e=dr.video_metadata_.vps.data.subarray(4),i=dr.video_metadata_.sps.data.subarray(4),r=dr.video_metadata_.pps.data.subarray(4);t.hvcc=qi({vps:e,sps:i,pps:r}),0==dr.video_init_segment_dispatched_&&cr.debugLog(dr.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&cr.decodeVideo(t.hvcc,0,!0,0)}else{let e=dr.video_metadata_.sps.data.subarray(4),i=dr.video_metadata_.pps.data.subarray(4);t.avcc=Li({sps:e,pps:i}),0==dr.video_init_segment_dispatched_&&cr.debugLog(dr.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&cr.decodeVideo(t.avcc,0,!0,0)}dr.video_init_segment_dispatched_=!0,dr.video_metadata_changed_=!1;let s=dr.media_info_;s.hasVideo=!0,s.width=t.codecWidth,s.height=t.codecHeight,s.fps=t.frameRate.fps,s.profile=t.profile,s.level=t.level,s.refFrames=e.ref_frames,s.chromaFormat=e.chroma_format_string,s.sarNum=t.sarRatio.width,s.sarDen=t.sarRatio.height,s.videoCodec=t.codec,s.hasAudio&&s.audioCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.videoCodec}"`},dispatchVideoMediaSegment(){dr.isInitSegmentDispatched()&&dr.video_track_.length&&dr._preDoDecode()},dispatchAudioMediaSegment(){dr.isInitSegmentDispatched()&&dr.audio_track_.length&&dr._preDoDecode()},dispatchAudioVideoMediaSegment(){dr.isInitSegmentDispatched()&&(dr.audio_track_.length||dr.video_track_.length)&&dr._preDoDecode()},parseADTSAACPayload(e,t){if(dr.has_video_&&!dr.video_init_segment_dispatched_)return;if(dr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+dr.aac_last_incomplete_data_.byteLength);t.set(dr.aac_last_incomplete_data_,0),t.set(e,dr.aac_last_incomplete_data_.byteLength),e=t}let i,r;if(null!=t&&(r=t/dr.timescale_),"aac"===dr.audio_metadata_.codec){if(null==t&&null!=dr.audio_last_sample_pts_)i=1024/dr.audio_metadata_.sampling_frequency*1e3,r=dr.audio_last_sample_pts_+i;else if(null==t)return void cr.debugWarn(dr.TAG_NAME,"AAC: Unknown pts");if(dr.aac_last_incomplete_data_&&dr.audio_last_sample_pts_){i=1024/dr.audio_metadata_.sampling_frequency*1e3;let e=dr.audio_last_sample_pts_+i;Math.abs(e-r)>1&&(cr.debugWarn(dr.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${r}ms`),r=e)}}let s,a=new Xt(e),n=null,o=r;for(;null!=(n=a.readNextAACFrame());){i=1024/n.sampling_frequency*1e3;const e={codec:"aac",data:n};0==dr.audio_init_segment_dispatched_?(dr.audio_metadata_={codec:"aac",audio_object_type:n.audio_object_type,sampling_freq_index:n.sampling_freq_index,sampling_frequency:n.sampling_frequency,channel_config:n.channel_config},dr.dispatchAudioInitSegment(e)):dr.detectAudioMetadataChange(e)&&(dr.dispatchAudioMediaSegment(),dr.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const r=new Uint8Array(n.data.length+2);r.set([175,1],0),r.set(n.data,2);let a={payload:r,length:r.byteLength,pts:t,dts:t,type:re};dr.audio_track_.samples.push(a),dr.audio_track_.length+=r.byteLength,o+=i}a.hasIncompleteData()&&(dr.aac_last_incomplete_data_=a.getIncompleteData()),s&&(dr.audio_last_sample_pts_=s)},parseLOASAACPayload(e,t){if(dr.has_video_&&!dr.video_init_segment_dispatched_)return;if(dr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+dr.aac_last_incomplete_data_.byteLength);t.set(dr.aac_last_incomplete_data_,0),t.set(e,dr.aac_last_incomplete_data_.byteLength),e=t}let i,r;if(null!=t&&(r=t/dr.timescale_),"aac"===dr.audio_metadata_.codec){if(null==t&&null!=dr.audio_last_sample_pts_)i=1024/dr.audio_metadata_.sampling_frequency*1e3,r=dr.audio_last_sample_pts_+i;else if(null==t)return void cr.debugWarn(dr.TAG_NAME,"AAC: Unknown pts");if(dr.aac_last_incomplete_data_&&dr.audio_last_sample_pts_){i=1024/dr.audio_metadata_.sampling_frequency*1e3;let e=dr.audio_last_sample_pts_+i;Math.abs(e-r)>1&&(cr.debugWarn(dr.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${r}ms`),r=e)}}let s,a=new Zt(e),n=null,o=r;for(;null!=(n=a.readNextAACFrame(oi(dr.loas_previous_frame)?void 0:dr.loas_previous_frame));){dr.loas_previous_frame=n,i=1024/n.sampling_frequency*1e3;const e={codec:"aac",data:n};0==dr.audio_init_segment_dispatched_?(dr.audio_metadata_={codec:"aac",audio_object_type:n.audio_object_type,sampling_freq_index:n.sampling_freq_index,sampling_frequency:n.sampling_frequency,channel_config:n.channel_config},dr.dispatchAudioInitSegment(e)):dr.detectAudioMetadataChange(e)&&(dr.dispatchAudioMediaSegment(),dr.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const r=new Uint8Array(n.data.length+2);r.set([175,1],0),r.set(n.data,2);let a={payload:r,length:r.byteLength,pts:t,dts:t,type:re};dr.audio_track_.samples.push(a),dr.audio_track_.length+=r.byteLength,o+=i}a.hasIncompleteData()&&(dr.aac_last_incomplete_data_=a.getIncompleteData()),s&&(dr.audio_last_sample_pts_=s)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(dr.has_video_&&!dr.video_init_segment_dispatched_)return;let i=[44100,48e3,32e3,0],r=[22050,24e3,16e3,0],s=[11025,12e3,8e3,0],a=e[1]>>>3&3,n=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!==(e[3]>>>6&3)?2:1,l=0,c=34;switch(a){case 0:l=s[o];break;case 2:l=r[o];break;case 3:l=i[o]}switch(n){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==dr.audio_init_segment_dispatched_?(dr.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},dr.dispatchAudioInitSegment(h)):dr.detectAudioMetadataChange(h)&&(dr.dispatchAudioMediaSegment(),dr.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/dr.timescale_,dts:t/dr.timescale_,type:re};dr.audio_track_.samples.push(f),dr.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==dr.audio_metadata_.codec)return cr.debugLog(dr.TAG_NAME,`Audio: Audio Codecs changed from ${dr.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===dr.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==dr.audio_metadata_.audio_object_type)return cr.debugLog(dr.TAG_NAME,`AAC: AudioObjectType changed from ${dr.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==dr.audio_metadata_.sampling_freq_index)return cr.debugLog(dr.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${dr.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==dr.audio_metadata_.channel_config)return cr.debugLog(dr.TAG_NAME,`AAC: Channel configuration changed from ${dr.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===dr.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==dr.audio_metadata_.sampling_frequency)return cr.debugLog(dr.TAG_NAME,`AC3: Sampling Frequency changed from ${dr.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==dr.audio_metadata_.bit_stream_identification)return cr.debugLog(dr.TAG_NAME,`AC3: Bit Stream Identification changed from ${dr.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==dr.audio_metadata_.bit_stream_mode)return cr.debugLog(dr.TAG_NAME,`AC3: BitStream Mode changed from ${dr.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==dr.audio_metadata_.channel_mode)return cr.debugLog(dr.TAG_NAME,`AC3: Channel Mode changed from ${dr.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==dr.audio_metadata_.low_frequency_effects_channel_on)return cr.debugLog(dr.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${dr.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===dr.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==dr.audio_metadata_.sample_rate)return cr.debugLog(dr.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${dr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==dr.audio_metadata_.channel_count)return cr.debugLog(dr.TAG_NAME,`Opus: Channel count changed from ${dr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===dr.audio_metadata_.codec){const t=e.data;if(t.object_type!==dr.audio_metadata_.object_type)return cr.debugLog(dr.TAG_NAME,`MP3: AudioObjectType changed from ${dr.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==dr.audio_metadata_.sample_rate)return cr.debugLog(dr.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${dr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==dr.audio_metadata_.channel_count)return cr.debugLog(dr.TAG_NAME,`MP3: Channel count changed from ${dr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=dr.audio_track_.id,t.timescale=1e3,t.duration=dr.duration_,"aac"===dr.audio_metadata_.codec){let i="aac"===e.codec?e.data:null,r=new Gs(i);t.audioSampleRate=r.sampling_rate,t.audioSampleRateIndex=r.sampling_index,t.channelCount=r.channel_count,t.codec=r.codec_mimetype,t.originalCodec=r.original_codec_mimetype,t.config=r.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const s=Wt({profile:cr._opt.mseDecodeAudio?r.object_type:r.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});cr.decodeAudio(s,0)}else"ac-3"===dr.audio_metadata_.codec||"ec-3"===dr.audio_metadata_.codec||"opus"===dr.audio_metadata_.codec||"mp3"===dr.audio_metadata_.codec&&(t.audioSampleRate=dr.audio_metadata_.sample_rate,t.channelCount=dr.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==dr.audio_init_segment_dispatched_&&cr.debugLog(dr.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),dr.audio_init_segment_dispatched_=!0,dr.video_metadata_changed_=!1;let i=dr.media_info_;i.hasAudio=!0,i.audioCodec=t.originalCodec,i.audioSampleRate=t.audioSampleRate,i.audioChannelCount=t.channelCount,i.hasVideo&&i.videoCodec?i.mimeType=`video/mp2t; codecs="${i.videoCodec},${i.audioCodec}"`:i.mimeType=`video/mp2t; codecs="${i.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,i){},parsePESPrivateDataPayload(e,t,i,r,s){let a=new zs;if(a.pid=r,a.stream_id=s,a.len=e.byteLength,a.data=e,null!=t){let e=Math.floor(t/dr.timescale_);a.pts=e}else a.nearest_pts=dr.getNearestTimestampMilliseconds();if(null!=i){let e=Math.floor(i/dr.timescale_);a.dts=e}},parseTimedID3MetadataPayload(e,t,i,r,s){cr.debugLog(dr.TAG_NAME,`Timed ID3 Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},parseSynchronousKLVMetadataPayload(e,t,i,r,s){cr.debugLog(dr.TAG_NAME,`Synchronous KLV Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},parseAsynchronousKLVMetadataPayload(e,t,i){cr.debugLog(dr.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${i}`)},parseSMPTE2038MetadataPayload(e,t,i,r,s){cr.debugLog(dr.TAG_NAME,`SMPTE 2038 Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},getNearestTimestampMilliseconds(){if(null!=dr.audio_last_sample_pts_)return Math.floor(dr.audio_last_sample_pts_);if(null!=dr.last_pcr_){return Math.floor(dr.last_pcr_/300/dr.timescale_)}},_preDoDecode(){const e=dr.video_track_,t=dr.audio_track_;let i=e.samples;t.samples.length>0&&(i=e.samples.concat(t.samples),i=i.sort(((e,t)=>e.dts-t.dts))),i.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===se?dr._doDecodeVideo({...e,payload:t}):e.type===re&&dr._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Ki(t,e.isIFrame):Ii(t,e.isIFrame),e.isIFrame&&cr.calcIframeIntervalTimestamp(e.dts);let r=cr.cryptoPayload(i,e.isIFrame);cr.decode(r,{type:se,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let i=t;gi(cr._opt.m7sCryptoAudio)&&(i=cr.cryptoPayloadAudio(t)),cr.decode(i,{type:re,ts:e.dts,isIFrame:!1,cts:0})}},lr=null;bi()&&(lr={TAG_NAME:"worker MediaSource",_resetInIt(){lr.isAvc=null,lr.isAAC=null,lr.videoInfo={},lr.videoMeta={},lr.audioMeta={},lr.sourceBuffer=null,lr.audioSourceBuffer=null,lr.hasInit=!1,lr.hasAudioInit=!1,lr.isAudioInitInfo=!1,lr.videoMimeType="",lr.audioMimeType="",lr.cacheTrack={},lr.cacheAudioTrack={},lr.timeInit=!1,lr.sequenceNumber=0,lr.audioSequenceNumber=0,lr.firstRenderTime=null,lr.firstAudioTime=null,lr.mediaSourceAppendBufferFull=!1,lr.mediaSourceAppendBufferError=!1,lr.mediaSourceAddSourceBufferError=!1,lr.mediaSourceBufferError=!1,lr.mediaSourceError=!1,lr.prevTimestamp=null,lr.decodeDiffTimestamp=null,lr.prevDts=null,lr.prevAudioDts=null,lr.prevPayloadBufferSize=0,lr.isWidthOrHeightChanged=!1,lr.prevTs=null,lr.prevAudioTs=null,lr.eventListenList=[],lr.pendingRemoveRanges=[],lr.pendingSegments=[],lr.pendingAudioRemoveRanges=[],lr.pendingAudioSegments=[],lr.supportVideoFrameCallbackHandle=null,lr.audioSourceBufferCheckTimeout=null,lr.audioSourceNoDataCheckTimeout=null,lr.hasPendingEos=!1,lr.$video={currentTime:0,readyState:0}},init(){lr.events=new fs,lr._resetInIt(),lr.mediaSource=new self.MediaSource,lr.isDecodeFirstIIframe=!!yi(cr._opt.checkFirstIFrame),lr._bindMediaSourceEvents()},destroy(){lr.stop(),lr._clearAudioSourceBufferCheckTimeout(),lr.eventListenList&&lr.eventListenList.length&&(lr.eventListenList.forEach((e=>e())),lr.eventListenList=[]),lr._resetInIt(),lr.mediaSource=null},getState:()=>lr.mediaSource&&lr.mediaSource.readyState,isStateOpen:()=>lr.getState()===gt,isStateClosed:()=>lr.getState()===yt,isStateEnded:()=>lr.getState()===mt,_bindMediaSourceEvents(){const{proxy:e}=lr.events,t=e(lr.mediaSource,vt,(()=>{cr.debugLog(lr.TAG_NAME,"sourceOpen"),lr._onMediaSourceSourceOpen()})),i=e(lr.mediaSource,bt,(()=>{cr.debugLog(lr.TAG_NAME,"sourceClose")})),r=e(lr.mediaSource,St,(()=>{cr.debugLog(lr.TAG_NAME,"sourceended")}));lr.eventListenList.push(t,i,r)},_onMediaSourceSourceOpen(){lr.sourceBuffer||(cr.debugLog(lr.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),lr._initSourceBuffer()),lr.audioSourceBuffer||(cr.debugLog(lr.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),lr._initAudioSourceBuffer()),lr._hasPendingSegments()&&lr._doAppendSegments()},decodeVideo(e,t,i,r){if(cr.isDestroyed)cr.debugWarn(lr.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(yi(lr.hasInit))if(i&&e[1]===Ut){const r=15&e[0];if(r===Fe&&yi(cr._opt.supportMSEDecodeHevc))return void lr.emitError(Le.mediaSourceH265NotSupport);lr.videoInfo.codec=r,postMessage({cmd:I,code:r});const s=new Uint8Array(e);postMessage({cmd:F,buffer:s,codecId:r},[s.buffer]),lr.hasInit=lr._decodeConfigurationRecord(e,t,i,r)}else cr.debugWarn(lr.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`);else if(!lr.isDecodeFirstIIframe&&i&&(lr.isDecodeFirstIIframe=!0),lr.isDecodeFirstIIframe){if(i&&0===e[1]){const t=15&e[0];let i={};if(t===Ie){i=ki(e.slice(5))}else t===Fe&&(i=$i(e));const r=lr.videoInfo;r&&r.codecWidth&&r.codecWidth&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==r.codecWidth||i.codecHeight!==r.codecWidth)&&(cr.debugWarn(lr.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${r.codecWidth}, old height is ${r.codecHeight},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),lr.isWidthOrHeightChanged=!0,lr.emitError(Le.mseWidthOrHeightChange,`width: ${r.codecWidth}->${i.codecWidth}, height: ${r.codecWidth}->${i.codecHeight}`))}if(lr.isWidthOrHeightChanged)return void cr.debugWarn(lr.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(mi(e))return void cr.debugLog(lr.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthlr.prevTs>0&&eS,_decodeConfigurationRecord(e,t,i,r){let s=e.slice(5),a={};if(r===Ie?a=ki(s):r===Fe&&(a=Wi(s)),lr.videoInfo.width=a.codecWidth,lr.videoInfo.height=a.codecHeight,0===a.codecWidth&&0===a.codecHeight)return cr.debugWarn(lr.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(a)),lr.emitError(Le.mediaSourceDecoderConfigurationError,`width is ${0===a.codecWidth} and height is ${a.codecHeight}`),!1;const n={id:Lt,type:"video",timescale:1e3,duration:0,avcc:s,codecWidth:a.codecWidth,codecHeight:a.codecHeight,videoType:a.videoType},o=ps.generateInitSegment(n);lr.isAvc=r===Ie;let d=a.codec;return lr.videoMimeType=d?`video/mp4; codecs="${a.codec}"`:lr.isAvc?pt:_t,postMessage({cmd:E,w:a.codecWidth,h:a.codecHeight}),lr._initSourceBuffer(),lr.appendBuffer(o.buffer),lr.sequenceNumber=0,lr.cacheTrack={},lr.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const i=e[0]>>4,r=e[0]>>1&1,s=i===Oe,a=i===Re;if(yi(a||s))return cr.debugWarn(lr.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),lr.emitError(Le.mediaSourceAudioG711NotSupport),!1;const n={id:Dt,type:"audio",timescale:1e3};let o={};if(Yt(e)){if(o=Kt(e.slice(2)),!o)return!1;n.audioSampleRate=o.sampleRate,n.channelCount=o.channelCount,n.config=o.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale}else{if(!s)return!1;if(o=As(e),!o)return!1;n.audioSampleRate=o.samplingRate,n.channelCount=o.channelCount,n.refSampleDuration=1152/n.audioSampleRate*n.timescale}n.codec=o.codec,n.duration=0;let d="mp4",l=o.codec,c=null;s&&yi(cr._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=ps.generateInitSegment(n);let u=`${n.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),yi(lr.isAudioInitInfo)&&(Bi=i===Re?r?16:8:0===r?8:16,postMessage({cmd:C,code:i}),postMessage({cmd:k,sampleRate:n.audioSampleRate,channels:n.channelCount,depth:Bi}),lr.isAudioInitInfo=!0),lr.audioMimeType=u,lr.isAAC=a,lr._initAudioSourceBuffer(),lr.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=lr.events;if(null===lr.sourceBuffer&&null!==lr.mediaSource&&lr.isStateOpen()&&lr.videoMimeType){try{cr.debugLog(lr.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",lr.videoMimeType),lr.sourceBuffer=lr.mediaSource.addSourceBuffer(lr.videoMimeType)}catch(e){return cr.debugError(lr.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),lr.emitError(Le.mseWorkerAddSourceBufferError,e.code),void(lr.mediaSourceAddSourceBufferError=!0)}if(lr.sourceBuffer){const t=e(lr.sourceBuffer,"error",(e=>{lr.mediaSourceBufferError=!0,cr.debugError(lr.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),lr.emitError(Le.mseSourceBufferError,e.code)})),i=e(lr.sourceBuffer,"updateend",(()=>{lr._hasPendingRemoveRanges()?lr._doRemoveRanges():lr._hasPendingSegments()?lr._doAppendSegments():lr.hasPendingEos&&(cr.debugLog(lr.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),lr.endOfStream())}));lr.eventListenList.push(t,i)}}else cr.debugLog(lr.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${lr.isStateOpen()} and mseDecoder.isAvc === null is ${null===lr.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=lr.events;if(null===lr.audioSourceBuffer&&null!==lr.mediaSource&&lr.isStateOpen()&&lr.audioMimeType){try{cr.debugLog(lr.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",lr.audioMimeType),lr._clearAudioSourceBufferCheckTimeout(),lr.audioSourceBuffer=lr.mediaSource.addSourceBuffer(lr.audioMimeType)}catch(e){return cr.debugError(lr.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),lr.emitError(Le.mseWorkerAddSourceBufferError,e.code),void(lr.mediaSourceAddSourceBufferError=!0)}if(lr.audioSourceBuffer){const t=e(lr.audioSourceBuffer,"error",(e=>{lr.mediaSourceBufferError=!0,cr.debugError(lr.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),lr.emitError(Le.mseSourceBufferError,e.code)})),i=e(lr.audioSourceBuffer,"updateend",(()=>{lr._hasPendingRemoveRanges()?lr._doRemoveRanges():lr._hasPendingSegments()?lr._doAppendSegments():lr.hasPendingEos&&(cr.debugLog(lr.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),lr.endOfStream())}));lr.eventListenList.push(t,i),null===lr.audioSourceNoDataCheckTimeout&&(lr.audioSourceNoDataCheckTimeout=setTimeout((()=>{lr._clearAudioNoDataCheckTimeout(),lr.emitError(Le.mediaSourceAudioNoDataTimeout)}),1e3))}}else cr.debugLog(lr.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${lr.isStateOpen()} and mseDecoder.audioMimeType is ${lr.audioMimeType}`)},_decodeVideo(e,t,i,r,s){let a=e.slice(5),n=a.byteLength;if(0===n)return void cr.debugWarn(lr.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;lr.prevTimestamp||(lr.prevTimestamp=o,d=!0);const l=o-lr.prevTimestamp;if(lr.decodeDiffTimestamp=l,l>1e3&&!d&&cr.isPlayer&&cr.debugLog(lr.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${lr.prevTimestamp}, diff time is ${l} ms`),lr.cacheTrack.id&&t>=lr.cacheTrack.dts){let e=8+lr.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(ps.types.mdat,4),i.set(lr.cacheTrack.data,8),lr.cacheTrack.duration=t-lr.cacheTrack.dts;let r=ps.moof(lr.cacheTrack,lr.cacheTrack.dts);lr.cacheTrack={};let s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),lr.appendBuffer(s.buffer)}else cr.debugLog(lr.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${lr.cacheTrack&&lr.cacheTrack.dts}`),lr.timeInit=!1,lr.cacheTrack={};lr.cacheTrack||(lr.cacheTrack={}),lr.cacheTrack.id=Lt,lr.cacheTrack.sequenceNumber=++lr.sequenceNumber,lr.cacheTrack.size=n,lr.cacheTrack.dts=t,lr.cacheTrack.cts=r,lr.cacheTrack.isKeyframe=i,lr.cacheTrack.data=a,lr.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},lr.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,i){let r=lr.isAAC?e.slice(2):e.slice(1),s=r.byteLength;if(lr.cacheAudioTrack.id&&t>=lr.cacheAudioTrack.dts){let e=8+lr.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(ps.types.mdat,4),i.set(lr.cacheAudioTrack.data,8),lr.cacheAudioTrack.duration=t-lr.cacheAudioTrack.dts;let r=ps.moof(lr.cacheAudioTrack,lr.cacheAudioTrack.dts);lr.cacheAudioTrack={};let s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),lr.appendAudioBuffer(s.buffer)}else lr.cacheAudioTrack={};lr.cacheAudioTrack||(lr.cacheAudioTrack={}),lr.cacheAudioTrack.id=Dt,lr.cacheAudioTrack.sequenceNumber=++lr.audioSequenceNumber,lr.cacheAudioTrack.size=s,lr.cacheAudioTrack.dts=t,lr.cacheAudioTrack.cts=0,lr.cacheAudioTrack.data=r,lr.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){cr.isDestroyed?cr.debugWarn(lr.TAG_NAME,"appendBuffer() player is destroyed"):lr.mediaSourceAddSourceBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):lr.mediaSourceAppendBufferFull?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):lr.mediaSourceAppendBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):lr.mediaSourceBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(lr.pendingSegments.push(e),lr.sourceBuffer&&(cr._opt.mseAutoCleanupSourceBuffer&&lr._needCleanupSourceBuffer()&&lr._doCleanUpSourceBuffer(),yi(lr.getSourceBufferUpdating())&&lr.isStateOpen()&&yi(lr._hasPendingRemoveRanges()))?lr._doAppendSegments():lr.isStateClosed()?(lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):lr.isStateEnded()&&(lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){cr.isDestroyed?cr.debugWarn(lr.TAG_NAME,"appendAudioBuffer() player is destroyed"):lr.mediaSourceAddSourceBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):lr.mediaSourceAppendBufferFull?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):lr.mediaSourceAppendBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):lr.mediaSourceBufferError?cr.debugWarn(lr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(lr.pendingAudioSegments.push(e),lr.audioSourceBuffer&&(cr._opt.mseAutoCleanupSourceBuffer&&lr._needCleanupSourceBuffer()&&lr._doCleanUpSourceBuffer(),yi(lr.getAudioSourceBufferUpdating())&&lr.isStateOpen()&&yi(lr._hasPendingRemoveRanges()))?lr._doAppendSegments():lr.isStateClosed()?(lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):lr.isStateEnded()&&(lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>lr.sourceBuffer&&lr.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>lr.audioSourceBuffer&&lr.audioSourceBuffer.updating,stop(){lr.abortSourceBuffer(),lr.removeSourceBuffer(),lr.endOfStream()},clearUpAllSourceBuffer(){if(lr.sourceBuffer){const e=lr.sourceBuffer.buffered;for(let t=0;tlr.pendingSegments.length>0||lr.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>lr.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(lr.isStateClosed()||lr.isStateEnded())cr.debugLog(lr.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==lr.sourceBuffer){if(lr.needInitAudio()&&null===lr.audioSourceBuffer)return cr.debugLog(lr.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===lr.audioSourceBufferCheckTimeout&&(lr.audioSourceBufferCheckTimeout=setTimeout((()=>{lr._clearAudioSourceBufferCheckTimeout(),lr.emitError(Le.mediaSourceAudioInitTimeout)}),1e3)));if(yi(lr.getSourceBufferUpdating())&&lr.pendingSegments.length>0){const e=lr.pendingSegments.shift();try{lr.sourceBuffer.appendBuffer(e)}catch(e){cr.debugError(lr.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(lr.stop(),lr.mediaSourceAppendBufferFull=!0,lr.emitError(Le.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(lr.stop(),lr.mediaSourceAppendBufferError=!0,lr.emitError(Le.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(lr.stop(),lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(yi(lr.getAudioSourceBufferUpdating())&&lr.pendingAudioSegments.length>0){const e=lr.pendingAudioSegments.shift();try{lr.audioSourceBuffer.appendBuffer(e)}catch(e){cr.debugError(lr.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(lr.stop(),lr.mediaSourceAppendBufferFull=!0,lr.emitError(Le.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(lr.stop(),lr.mediaSourceAppendBufferError=!0,lr.emitError(Le.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(lr.stop(),lr.mediaSourceBufferError=!0,lr.emitError(Le.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else cr.debugLog(lr.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=lr.$video.currentTime;if(lr.sourceBuffer){const t=lr.sourceBuffer.buffered;let i=!1;for(let r=0;r=cr._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-cr._opt.mseAutoCleanupMinBackwardDuration;lr.pendingRemoveRanges.push({start:s,end:t})}}else a=cr._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-cr._opt.mseAutoCleanupMinBackwardDuration;lr.pendingAudioRemoveRanges.push({start:s,end:t})}}else alr.pendingRemoveRanges.length>0||lr.pendingAudioRemoveRanges.length>0,needInitAudio:()=>cr._opt.hasAudio&&cr._opt.mseDecodeAudio,_doRemoveRanges(){if(lr.sourceBuffer&&yi(lr.getSourceBufferUpdating())){let e=lr.pendingRemoveRanges;for(;e.length&&yi(lr.getSourceBufferUpdating());){let t=e.shift();try{lr.sourceBuffer.remove(t.start,t.end)}catch(e){cr.debugWarn(lr.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(lr.audioSourceBuffer&&yi(lr.getAudioSourceBufferUpdating())){let e=lr.pendingAudioRemoveRanges;for(;e.length&&yi(lr.getAudioSourceBufferUpdating());){let t=e.shift();try{lr.audioSourceBuffer.remove(t.start,t.end)}catch(e){cr.debugWarn(lr.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(yi(cr._opt.mseAutoCleanupSourceBuffer))return!1;const e=lr.$video.currentTime;if(lr.sourceBuffer){let t=lr.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=cr._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(lr.audioSourceBuffer){let t=lr.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=cr._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){lr.audioSourceBufferCheckTimeout&&(clearTimeout(lr.audioSourceBufferCheckTimeout),lr.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){lr.audioSourceNoDataCheckTimeout&&(clearTimeout(lr.audioSourceNoDataCheckTimeout),lr.audioSourceNoDataCheckTimeout=null)},getHandle:()=>lr.mediaSource.handle,emitError(e){postMessage({cmd:ie,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let cr={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Tt,_opt:rr(),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(){cr.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:cr.getVideoBufferLength(),audioDemuxBufferDelay:cr.getAudioBufferLength(),streamBufferByteLength:cr.getStreamBufferLength(),netBuf:cr.networkDelay||0,pushLatestDelay:cr.pushLatestDelay||0,latestDelay:cr.delay,isStreamTsMoreThanLocal:tt,wasmDecodeDelay:Ze-Qe});postMessage({cmd:R,type:xe,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return cr._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||cr._opt.hasVideo&&!Xe)return-1;if(t===re)return cr.delay;if(cr.preDelayTimestamp&&cr.preDelayTimestamp>e)return cr.preDelayTimestamp-e>1e3&&cr.debugWarn("worker",`getDelay() and preDelayTimestamp is ${cr.preDelayTimestamp} > timestamp is ${e} more than ${cr.preDelayTimestamp-e}ms and return ${cr.delay}`),cr.preDelayTimestamp=e,cr.delay;if(cr.firstTimestamp){if(e){const t=Date.now()-cr.startTimestamp,i=e-cr.firstTimestamp;t>=i?(tt=!1,cr.delay=t-i):(tt=!0,cr.delay=i-t)}}else cr.firstTimestamp=e,cr.startTimestamp=Date.now(),cr.delay=-1;return cr.preDelayTimestamp=e,cr.delay},getDelayNotUpdateDelay:function(e,t){if(!e||cr._opt.hasVideo&&!Xe)return-1;if(t===re)return cr.pushLatestDelay;if(cr.preDelayTimestamp&&cr.preDelayTimestamp-e>1e3)return cr.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${cr.preDelayTimestamp} > timestamp is ${e} more than ${cr.preDelayTimestamp-e}ms and return -1`),-1;if(cr.firstTimestamp){let t=-1;if(e){const i=Date.now()-cr.startTimestamp,r=e-cr.firstTimestamp;i>=r?(tt=!1,t=i-r):(tt=!0,t=r-i)}return t}return-1},resetDelay:function(){cr.firstTimestamp=null,cr.startTimestamp=null,cr.delay=-1,cr.dropping=!1},resetAllDelay:function(){cr.resetDelay(),cr.preDelayTimestamp=null},doDecode:function(e){cr._opt.isEmitSEI&&e.type===se&&cr.isWorkerFetch&&cr.findSei(e.payload,e.ts),cr.isPlayUseMSEAndDecoderInWorker()?e.type===re?cr._opt.mseDecodeAudio?lr.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===se&&lr.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):cr._opt.useWCS&&cr.useOffscreen()&&e.type===se&&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===s.length)return;const t=e.ts,r=s[0],a=e.type===se&&mi(e.payload);if(yi(i))a&&(cr.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${r.type} ts is ${r.ts}\n isVideoSqeHeader is ${a}`),s.shift(),cr.doDecode(r));else{const i=r.ts-t,n=r.type===re&&e.type===se;(i<=20||n||a)&&(cr.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${r.type} ts is ${r.ts}\n diff is ${i} and isVideoAndNextAudio is ${n} and isVideoSqeHeader is ${a}`),s.shift(),cr.doDecode(r))}},init:function(){cr.debugLog("worker",`init and forHardDecode is ${i} and forOldVersion is ${r} and opt is`,JSON.stringify(cr._opt));const e=cr._opt.playType===m,t=cr._opt.playType===g;if(ar.init(),cr.isPlayer=e,cr.isPlayback=t,cr.isPlayUseMSEAndDecoderInWorker()&&lr&&lr.init(),n&&cr._opt.useWCS&&cr.useOffscreen()&&n.init(),yi(cr.isPlaybackCacheBeforeDecodeForFpsRender())){cr.debugLog("worker","setInterval()");const t=()=>{const t=cr._opt.videoBuffer+cr._opt.videoBufferDelay;let i=null;if(s.length){if(cr.isPushDropping)return void cr.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${s.length}`);if(cr.dropping){for(i=s.shift(),cr.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${i.isIFrame} and delay is ${cr.delay} and bufferlist is ${s.length}`);!i.isIFrame&&s.length;)i=s.shift();const e=cr.getDelayNotUpdateDelay(i.ts,i.type);i.isIFrame&&e<=cr.getNotDroppingDelayTs()&&(cr.debugLog("worker","loop() is dropping = false, is iFrame"),cr.dropping=!1,cr.doDecode(i),cr.decodeNext(i))}else if(cr.isPlayback||cr.isPlayUseMSE()||0===cr._opt.videoBuffer)for(;s.length;)i=s.shift(),cr.doDecode(i);else if(i=s[0],-1===cr.getDelay(i.ts,i.type))cr.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",i.ts),s.shift(),cr.doDecode(i),cr.decodeNext(i);else if(cr.delay>t&&e)cr.hasIframeInBufferList()?(cr.debugLog("worker",`delay is ${cr.delay} > maxDelay ${t}, set dropping is true`),cr.resetAllDelay(),cr.dropping=!0,postMessage({cmd:G})):(s.shift(),cr.doDecode(i),cr.decodeNext(i));else for(;s.length;){if(i=s[0],!(cr.getDelay(i.ts,i.type)>cr._opt.videoBuffer)){cr.delay<0&&cr.debugWarn("worker",`loop() do not decode and delay is ${cr.delay}, bufferList is ${s.length}`);break}s.shift(),cr.doDecode(i)}}else-1!==cr.delay&&cr.debugLog("worker","loop() bufferList is empty and reset delay"),cr.resetAllDelay()};cr.stopId=setInterval((()=>{let e=(new Date).getTime();lt||(lt=e);const i=e-lt;i>100&&cr.debugWarn("worker",`loop demux diff time is ${i}`),t(),lt=(new Date).getTime()}),20)}else cr.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(yi(cr._opt.checkFirstIFrame)&&(Xe=!0),cr.isPlayUseMSEAndDecoderInWorker()&&lr){const e=lr.getHandle();e&&postMessage({cmd:ee,mseHandle:e},[e])}},playbackCacheLoop:function(){cr.clearPlaybackCacheLoop();const e=()=>{let e=null;s.length&&(e=s.shift(),cr.doDecode(e))};e();const t=Math.ceil(1e3/(cr.streamFps*cr._opt.playbackRate));cr.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${cr.streamFps}, streamAudioFps is ${cr.streamAudioFps} ,streamVideoFps is ${cr.streamVideoFps} playbackRate is ${cr._opt.playbackRate}`),cr.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){cr.stopId&&(clearInterval(cr.stopId),cr.stopId=null)},startPlaybackCacheLoop:function(){cr.playbackCacheLoop()},close:function(){if(cr.debugLog("worker","close"),cr.isDestroyed=!0,sr(),!d||1!==d.readyState&&2!==d.readyState?d&&cr.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Ti=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,cr.stopStreamRateAndStatsInterval(),cr.stopId&&(clearInterval(cr.stopId),cr.stopId=null),cr.mp3Demuxer&&(cr.mp3Demuxer.destroy(),cr.mp3Demuxer=null),cr.writableStream&&yi(cr.writableStream.locked)&&cr.writableStream.close().catch((e=>{cr.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),cr.writableStream=null,ur)try{ur.clear&&ur.clear(),ur=null}catch(e){cr.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hr)try{hr.clear&&hr.clear(),hr=null}catch(e){cr.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,lt=null,tt=!1,Ze=0,Qe=0,n&&(n.destroy&&n.destroy(),n=null),lr&&(lr.destroy(),lr=null),cr.firstTimestamp=null,cr.startTimestamp=null,cr.networkDelay=0,cr.streamFps=null,cr.streamAudioFps=null,cr.streamVideoFps=null,cr.delay=-1,cr.pushLatestDelay=-1,cr.preDelayTimestamp=null,cr.dropping=!1,cr.isPushDropping=!1,cr.isPlayer=!0,cr.isPlayback=!1,cr.isWorkerFetch=!1,cr.isHevc=null,cr._opt=rr(),cr.webglObj&&(cr.webglObj.destroy(),cr.offscreenCanvas.removeEventListener("webglcontextlost",cr.onOffscreenCanvasWebglContextLost),cr.offscreenCanvas.removeEventListener("webglcontextrestored",cr.onOffscreenCanvasWebglContextRestored),cr.offscreenCanvas=null,cr.offscreenCanvasGL=null,cr.offscreenCanvasCtx=null),s=[],a=[],b&&(b.close(),b=null),B=null,be=null,ve=!1,$e=!1,Xe=!1,ai=!1,Si=!1,wi=!1,Ai=null,Et=[],Gt=0,Ot=0,wt=null,At=null,Ht=null,Vt=null,Bi=null,jt=0,Jt=0,Rt=null,Nt=null,cr.fetchStatus=Tt,Oi=!0,ar.destroy(),nr.destroy(),or.destroy(),dr.destroy(),cr.debug=null,cr._opt={},postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===re&&Yt(e)){if(cr.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),cr._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:X,buffer:t},[t.buffer])}cr.decodeAudio(e,t.ts)}else if(t.type===se&&t.isIFrame&&mi(e)){if(cr.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),cr._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Z,buffer:t},[t.buffer])}cr.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(cr._opt.isRecording)if(cr._opt.isRecordTypeFlv){const i=new Uint8Array(e);postMessage({cmd:J,type:t.type,buffer:i,ts:t.ts},[i.buffer])}else if(cr._opt.recordType===y)if(t.type===se){const i=new Uint8Array(e).slice(5);postMessage({cmd:P,buffer:i,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[i.buffer])}else if(t.type===re&&cr._opt.isWasmMp4){const i=new Uint8Array(e),r=qt(i)?i.slice(2):i.slice(1);postMessage({cmd:L,buffer:r,ts:t.ts},[r.buffer])}if(cr.isPlayer){if(t.type===se){if(jt>0){const e=t.ts-Vt,i=jt+jt/2;e>i&&cr.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Vt},\n diff is ${e} and preTsDuration is ${jt} and maxDiff is ${i}\n maybe trigger black screen or flower screen\n `)}if(null!==Vt&&Vt>=t.ts&&(cr.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Vt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Jt}`),Vt-t.ts>S&&(cr.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Vt}, options.ts is ${t.ts},\n diff is ${Vt-t.ts} more than 3600000,\n and resetAllDelay`),cr.resetAllDelay(),Vt=null,jt=0),cr._opt.isDropSameTimestampGop&&yi(t.isIFrame)&&Xe)){const e=cr.hasIframeInBufferList(),t=yi(cr.isPushDropping);return cr.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?cr.dropBuffer$2():(cr.clearBuffer(!0),gi(cr._opt.checkFirstIFrame)&&gi(i)&&(cr.isPlayUseMSEAndDecoderInWorker()?lr.isDecodeFirstIIframe=!1:postMessage({cmd:Q}))))}Vt>0&&(jt=t.ts-Vt),Jt=e.byteLength,Vt=t.ts}if(Xe){const e=cr._opt.videoBuffer+cr._opt.videoBufferDelay,i=cr.getDelayNotUpdateDelay(t.ts,t.type);cr.pushLatestDelay=i,cr.delay>0&&i>e&&cr.delay({type:e.type,ts:e.ts})));cr.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${s.length}, and ts list is ${JSON.stringify(i)}`)}const i=cr.getAudioBufferLength()>0,r=i?60:40;s.length>=r&&(cr.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${s.length} more than ${r}, and hasAudio is ${i} an set streamFps is 25`),cr.streamVideoFps=25,postMessage({cmd:H,value:cr.streamVideoFps}),i?(cr.streamAudioFps=25,cr.streamFps=cr.streamVideoFps+cr.streamAudioFps):cr.streamFps=cr.streamVideoFps,cr.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return s.forEach((t=>{t.type===se&&(e+=1)})),e},hasIframeInBufferList:()=>s.some((e=>e.type===se&&e.isIFrame)),isAllIframeInBufferList(){const e=cr.getVideoBufferLength();let t=0;return s.forEach((e=>{e.type===se&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>cr._opt.videoBuffer+cr._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return s.forEach((t=>{t.type===re&&(e+=1)})),e},getStreamBufferLength(){let e=0;return b&&b.buffer&&(e=b.buffer.byteLength),cr._opt.isNakedFlow?ar.lastBuf&&(e=ar.lastBuf.byteLength):cr._opt.isTs?dr._remainingPacketData&&(e=dr._remainingPacketData.byteLength):cr._opt.isFmp4&&nr.mp4Box&&(e=nr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(cr.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),cr.isWorkerFetch=!0,t.isFlv?cr._opt.isFlv=!0:t.isFmp4?cr._opt.isFmp4=!0:t.isMpeg4?cr._opt.isMpeg4=!0:t.isNakedFlow?cr._opt.isNakedFlow=!0:t.isTs&&(cr._opt.isTs=!0),l=ni((e=>{postMessage({cmd:R,type:we,value:e})})),cr.startStreamRateAndStatsInterval(),t.isFmp4&&(nr.listenMp4Box(),cr._opt.isFmp4Private&&nr.initTransportDescarmber()),t.protocol===f){t.isFlv&&(b=new Ui(cr.demuxFlv())),o=new AbortController;const i=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,i).then((e=>{if(gi(Ti))return cr.debugLog("worker","request abort and run res.body.cancel()"),cr.fetchStatus=Tt,void e.body.cancel();if(!pi(e))return cr.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),sr(),void postMessage({cmd:R,type:Le.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:R,type:Ee}),ui())cr.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(cr.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(cr.fetchStatus=Ct)):gi(Ti)?(cr.debugLog("worker","writableStream write() and requestAbort is true so return"),cr.fetchStatus=Ct,void sr()):void("string"!=typeof e?(cr.fetchStatus=kt,l(e.byteLength),t.isFlv?b.write(e):t.isFmp4?cr.demuxFmp4(e):t.isMpeg4?cr.demuxMpeg4(e):t.isTs?cr.demuxTs(e):t.isNakedFlow&&cr.demuxNakedFlow(e)):cr.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{cr.debugLog("worker","writableStream close()"),cr.fetchStatus=Ct,sr(),cr._opt.checkStreamEnd?(b&&(b.close(),b=null),postMessage({cmd:R,type:Se,value:p,msg:"fetch done"})):postMessage({cmd:R,type:Te})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return cr.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(cr.fetchStatus=Ct);b&&(b.close(),b=null),e.name!==Bt?(cr.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),sr(),postMessage({cmd:R,type:Le.fetchError,value:e.toString()})):cr.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(cr.writableStream).catch((e=>{"AbortError"!==e.name&&cr.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const i=e.body.getReader(),r=()=>{i.read().then((e=>{let{done:i,value:s}=e;return i?(cr.debugLog("worker","fetchNext().then() and done is true"),cr.fetchStatus=Ct,sr(),void(cr._opt.checkStreamEnd?(b&&(b.close(),b=null),postMessage({cmd:R,type:Se,value:p,msg:"fetch done"})):postMessage({cmd:R,type:Te}))):o&&o.signal&&o.signal.aborted?(cr.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(cr.fetchStatus=Ct)):gi(Ti)?(cr.debugLog("worker","fetchNext().then() and requestAbort is true so return"),cr.fetchStatus=Ct,void sr()):void("string"!=typeof s?(cr.fetchStatus=kt,l(s.byteLength),t.isFlv?b.write(s):t.isFmp4?cr.demuxFmp4(s):t.isMpeg4?cr.demuxMpeg4(s):t.isTs?cr.demuxTs(s):t.isNakedFlow&&cr.demuxNakedFlow(s),r()):cr.debugWarn("worker",`fetchNext().then() and value "${s}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return cr.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(cr.fetchStatus=Ct);b&&(b.close(),b=null),e.name!==Bt?(cr.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),sr(),postMessage({cmd:R,type:Le.fetchError,value:e.toString()})):cr.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};r()}})).catch((e=>{o&&o.signal&&o.signal.aborted?cr.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Bt?(cr.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),sr(),postMessage({cmd:R,type:Le.fetchError,value:e.toString()}),b&&(b.close(),b=null)):cr.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===h&&(t.isFlv&&(b=new Ui(cr.demuxFlv())),d=new WebSocket(e,i),d.binaryType="arraybuffer",d.onopen=()=>{cr.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:R,type:Ee}),postMessage({cmd:R,type:Ce})},d.onclose=e=>{cr.isDestroyed?cr.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):v?cr.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(cr.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&cr.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),gi(Ti)?cr.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):cr._opt.checkStreamEnd?(b&&(b.close(),b=null),postMessage({cmd:R,type:Se,value:_,msg:e.code})):postMessage({cmd:R,type:Te}))},d.onerror=e=>{cr.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),v=!0,b&&(b.close(),b=null),cr.isDestroyed?cr.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):gi(Ti)?cr.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:R,type:Le.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?b.write(e.data):t.isFmp4?cr.demuxFmp4(e.data):t.isMpeg4?cr.demuxMpeg4(e.data):cr._opt.isNakedFlow?cr.demuxNakedFlow(e.data):cr.demuxM7s(e.data)):cr.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 a=i[0];const n=(yield s).slice();switch(r){case ae:if(n.byteLength>0){let e=n;gi(cr._opt.m7sCryptoAudio)&&(e=cr.cryptoPayloadAudio(n)),cr.decode(e,{type:re,ts:a})}else cr.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${n.byteLength} and return`);break;case ne:if(n.byteLength>=6){const e=n[0];if(cr._isEnhancedH265Header(e))cr._decodeEnhancedH265Video(n,a);else{const e=15&n[0];let t=n[0]>>4===xt;const r=e===Fe;if(yi(t)&&gi(vi(n,r))&&(cr.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&mi(n)&&null===cr.isHevc){const e=15&n[0];cr.isHevc=e===Fe,Ai=ii(n,cr.isHevc),cr.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${cr.isHevc} and nalUnitSize is ${Ai}`)}t&&cr.calcIframeIntervalTimestamp(a),cr.isPlayer&&cr.calcNetworkDelay(a),i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let s=i[0],o=cr.cryptoPayload(n,t);cr.decode(o,{type:se,ts:a,isIFrame:t,cts:s})}}else cr.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${n.byteLength} and return`);break;case oe:postMessage({cmd:K,buffer:n},[n.buffer]);break;default:cr.debugLog("worker",`demuxFlv() type is ${r}`)}}},decode:function(e,t){t.type===re?cr._opt.hasAudio&&(postMessage({cmd:R,type:Ae,value:e.byteLength}),cr.isPlayer?cr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):cr.isPlayback&&(cr.isPlaybackOnlyDecodeIFrame()||(cr.isPlaybackCacheBeforeDecodeForFpsRender(),cr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===se&&cr._opt.hasVideo&&(postMessage({cmd:R,type:Be,value:e.byteLength}),postMessage({cmd:R,type:Ue,value:t.ts}),cr.isPlayer?cr.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):cr.isPlayback&&(cr.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&cr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(cr.isPlaybackCacheBeforeDecodeForFpsRender(),cr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let i=e;return cr._opt.isM7sCrypto?cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength>0&&cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength>0?i=Rr(e,cr._opt.cryptoKey,cr._opt.cryptoIV,cr.isHevc):cr.debugError("worker",`isM7sCrypto cryptoKey.length is ${cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength} or cryptoIV.length is ${cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength} null`):cr._opt.isSm4Crypto?cr._opt.sm4CryptoKey?i=cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength>0&&cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength>0?ea(e,cr._opt.cryptoKey,cr._opt.cryptoIV,cr.isHevc,cr._opt.isSm4CryptoH265V2):ns(e,cr._opt.sm4CryptoKey,cr.isHevc,cr._opt.isSm4CryptoH265V2):cr._opt.sm4CryptoKey||cr.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):cr._opt.isXorCrypto&&(cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength>0&&cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength>0?i=us(e,cr._opt.cryptoKey,cr._opt.cryptoIV,cr.isHevc):cr.debugError("worker",`isXorCrypto cryptoKey.length is ${cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength} or cryptoIV.length is ${cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength} null`)),i},cryptoPayloadAudio:function(e){let t=e;if(cr._opt.isM7sCrypto)if(cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength>0&&cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength>0){e[0]>>4===Re&&(t=Nr(e,cr._opt.cryptoKey,cr._opt.cryptoIV))}else cr.debugError("worker",`isM7sCrypto cryptoKey.length is ${cr._opt.cryptoKey&&cr._opt.cryptoKey.byteLength} or cryptoIV.length is ${cr._opt.cryptoIV&&cr._opt.cryptoIV.byteLength} null`);return t},setCodecAudio:function(e,t){const i=e[0]>>4,s=e[0]>>1&1;if(Bi=i===Re?s?16:8:0===s?8:16,ur&&ur.setCodec||!yi(r))if(Yt(e)||i===Ne||i===Ge||i===Oe){cr.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${i} _opt.sampleRate is ${cr._opt.sampleRate}`);const s=i===Re?e.slice(2):new Uint8Array(0);if(r){if(i===Oe)return void cr.debugError("worker","setCodecAudio: mp3 is not support for old version");ur.sample_rate=cr._opt.sampleRate,ur.decode(e,t)}else ur.setCodec(i,cr._opt.sampleRate,s);i===Re&&postMessage({cmd:D,buffer:s},[s.buffer]),$e=!0,i!==Re&&(i===Oe?(cr.mp3Demuxer||(cr.mp3Demuxer=new ds(cr),cr.mp3Demuxer.on("data",((e,t)=>{ur.decode(e,t)}))),cr.mp3Demuxer.dispatch(e.slice(1),t)):ur.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{cr.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),cr.close(),postMessage({cmd:O})}),60*e*60*1e3)}}else cr.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",i);else cr.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(cr.isDestroyed)cr.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(cr.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())lr.decodeAudio(e,t);else if(gi(i)&&gi(cr._opt.mseDecodeAudio))postMessage({cmd:z,payload:e,ts:t,cts:t},[e.buffer]);else{const i=e[0]>>4;if($e){if(Yt(e))return void cr.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r?ur.decode(e,t):i===Oe?cr.mp3Demuxer.dispatch(e.slice(1),t):ur.decode(i===Re?e.slice(2):e.slice(1),t)}else cr.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const i=15&e[0];if(hr&&hr.setCodec||!yi(r))if(mi(e))if(i===Ie||i===Fe){cr.debugLog("worker",`setCodecVideo: init video codec , codecId is ${i}`);const t=e.slice(5);if(i===Ie&&cr._opt.useSIMD){const e=ki(t);if(e.codecWidth>w||e.codecHeight>w)return postMessage({cmd:W,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void cr.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const s=new Uint8Array(e);ve=!0,r?hr.decode(e,0):hr.setCodec(i,t),postMessage({cmd:I,code:i}),postMessage({cmd:F,buffer:s,codecId:i},[s.buffer])}else cr.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${i} is not H264 or H265`);else cr.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${i} and isIFrame is ${t} and packetType is ${e[1]}`);else cr.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,s){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(cr.isDestroyed)cr.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(cr.isPlayUseMSEAndDecoderInWorker())lr.decodeVideo(e,t,s,a);else if(gi(i))postMessage({cmd:M,payload:e,isIFrame:s,ts:t,cts:a,delay:cr.delay},[e.buffer]);else if(ve)if(!Xe&&s&&(Xe=!0),Xe){if(s&&mi(e)){const t=15&e[0];let i={};if(t===Ie){i=ki(e.slice(5))}else t===Fe&&(i=$i(e));i.codecWidth&&i.codecHeight&&B&&be&&(i.codecWidth!==B||i.codecHeight!==be)&&(cr.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${B}, old height is ${be},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),Si=!0,postMessage({cmd:V,value:`width: ${B}->${i.codecWidth}, height: ${be}->${i.codecHeight}`}))}if(Si)return void cr.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(wi)return void cr.debugWarn("worker","decodeVideo: simd decode error, and return");if(mi(e))return void cr.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];cr.debugLog("worker",`clearBuffer,bufferList length is ${s.length}, need clear is ${e}`),e&&(s=[]),cr.isPlayer&&(cr.resetAllDelay(),gi(cr._opt.checkFirstIFrame)&&(cr.dropping=!0,postMessage({cmd:G}))),gi(cr._opt.checkFirstIFrame)&&yi(i)&&(Xe=!1)},dropBuffer$2:function(){if(s.length>0){let e=s.findIndex((e=>gi(e.isIFrame)&&e.type===se));if(cr.isAllIframeInBufferList())for(let t=0;t=cr.getNotDroppingDelayTs()){cr.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${r} and notDroppingDelayTs is ${cr.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){cr.isPushDropping=!0,postMessage({cmd:G});const t=s.length;s=s.slice(e);const i=s.shift();cr.resetAllDelay(),cr.getDelay(i.ts,i.type),cr.doDecode(i),cr.isPushDropping=!1,cr.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${s.length} and new delay is ${cr.delay} `)}else cr.isPushDropping=!1}0===s.length&&(cr.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),i=t.getUint32(1,!1),r=t.getUint8(0),s=new ArrayBuffer(4),a=new Uint32Array(s);switch(r){case re:cr.decode(new Uint8Array(e,5),{type:re,ts:i});break;case se:if(t.byteLength>=11){const r=new Uint8Array(e,5),s=r[0];if(cr._isEnhancedH265Header(s))cr._decodeEnhancedH265Video(r,i);else{const e=t.getUint8(5)>>4==1;if(e&&(cr.calcIframeIntervalTimestamp(i),mi(r)&&null===cr.isHevc)){const e=15&r[0];cr.isHevc=e===Fe}cr.isPlayer&&cr.calcNetworkDelay(i),a[0]=r[4],a[1]=r[3],a[2]=r[2],a[3]=0;let s=a[0],n=cr.cryptoPayload(r,e);cr.decode(n,{type:se,ts:i,isIFrame:e,cts:s})}}else cr.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){ar.dispatch(e)},demuxFmp4:function(e){nr.dispatch(e)},demuxMpeg4:function(e){or.dispatch(e)},demuxTs:function(e){dr.dispatch(e)},_decodeEnhancedH265Video:function(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),d="a"==String.fromCharCode(a[0]);if(cr.isHevc=yi(d),s===Ft){if(r===zt){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),Ai=ii(e,cr.isHevc),cr.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${cr.isHevc} and nalUnitSize is ${Ai}`),cr.decode(r,{type:se,ts:t,isIFrame:!0,cts:0})}}}else if(s===Pt){let i=e,s=0;const a=r===zt;if(a&&cr.calcIframeIntervalTimestamp(t),d);else{o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0];i=Ki(e.slice(8),a),i=cr.cryptoPayload(i,a),cr.decode(i,{type:se,ts:t,isIFrame:a,cts:s})}}else if(s===Mt){const i=r===zt;i&&cr.calcIframeIntervalTimestamp(t);let s=Ki(e.slice(5),i);s=cr.cryptoPayload(s,i),cr.decode(s,{type:se,ts:t,isIFrame:i,cts:0})}},_isEnhancedH265Header:function(e){return(e&It)===It},findSei:function(e,t){let i=4;di(Ai)&&(i=Ai);Qt(e.slice(5),i).forEach((e=>{const i=cr.isHevc?e[0]>>>1&63:31&e[0],r=cr.isHevc&&(i===ut||i===ct),s=yi(cr.isHevc)&&i===qe;if(r||s){const i=ei(e,cr.isHevc);postMessage({cmd:j,buffer:i.payload,ts:t},[i.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Xe&&e>0))return;null===wt?(wt=e,At=ri()):et?i-t:0;cr.networkDelay=r,r>cr._opt.networkDelay&&cr._opt.playType===m&&(cr.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${wt} vs start is ${t},local diff is ${i} ,delay is ${r}`),postMessage({cmd:R,type:ke,value:r}))},calcIframeIntervalTimestamp:function(e){null===Ht?Ht=e:Ht=cr._opt.playbackForwardMaxRateDecodeIFrame&&!(cr._opt.useMSE&&cr._opt.mseDecodeAudio)},isPlayUseMSE:function(){return cr.isPlayer&&cr._opt.useMSE&&gi(i)},isPlayUseMSEAndDecoderInWorker:function(){return cr.isPlayUseMSE()&&cr._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return cr.isPlayUseMSEAndDecoderInWorker()&&cr._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){yi(cr.isPlaybackCacheBeforeDecodeForFpsRender())&&cr.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){cr.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),ai=!0,cr.webglObj.destroy(),cr.webglObj=null,cr.offscreenCanvasGL=null,setTimeout((()=>{cr.offscreenCanvasGL=cr.offscreenCanvas.getContext("webgl"),cr.offscreenCanvasGL&&cr.offscreenCanvasGL.getContextAttributes().stencil?(cr.webglObj=u(cr.offscreenCanvasGL,cr._opt.openWebglAlignment),ai=!1):cr.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){cr.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,i){postMessage({cmd:I,code:e}),postMessage({cmd:E,w:t,h:i}),B=t,be=i,cr.useOffscreen()&&(cr.offscreenCanvas=new OffscreenCanvas(t,i),cr.offscreenCanvasGL=cr.offscreenCanvas.getContext("webgl"),cr.webglObj=u(cr.offscreenCanvasGL,cr._opt.openWebglAlignment),cr.offscreenCanvas.addEventListener("webglcontextlost",cr.onOffscreenCanvasWebglContextLost,!1),cr.offscreenCanvas.addEventListener("webglcontextrestored",cr.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,i){postMessage({cmd:C,code:e}),postMessage({cmd:k,sampleRate:t,channels:i,depth:Bi}),Ot=i},yuvData:function(t,i){if(cr.isDestroyed)return void cr.debugLog("worker","yuvData, decoder is destroyed and return");const r=B*be*3/2;let s=e.HEAPU8.subarray(t,t+r),a=new Uint8Array(s);if(Rt=null,Qe=i,cr.useOffscreen())try{if(ai)return;cr.webglObj.renderYUV(B,be,a);let e=cr.offscreenCanvas.transferToImageBitmap();postMessage({cmd:x,buffer:e,delay:cr.delay,ts:i},[e])}catch(e){cr.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:x,output:a,delay:cr.delay,ts:i},[a.buffer])},pcmData:function(e,i,r){if(cr.isDestroyed)return void cr.debugLog("worker","pcmData, decoder is destroyed and return");let s=i,n=[],o=0,d=cr._opt.audioBufferSize;for(let i=0;i<2;i++){let r=t.HEAPU32[(e>>2)+i]>>2;n[i]=t.HEAPF32.subarray(r,r+s)}if(Gt){if(!(s>=(i=d-Gt)))return Gt+=s,a[0]=Float32Array.of(...a[0],...n[0]),void(2==Ot&&(a[1]=Float32Array.of(...a[1],...n[1])));Et[0]=Float32Array.of(...a[0],...n[0].subarray(0,i)),2==Ot&&(Et[1]=Float32Array.of(...a[1],...n[1].subarray(0,i))),postMessage({cmd:T,buffer:Et,ts:r},Et.map((e=>e.buffer))),o=i,s-=i}for(Gt=s;Gt>=d;Gt-=d)Et[0]=n[0].slice(o,o+=d),2==Ot&&(Et[1]=n[1].slice(o-d,o)),postMessage({cmd:T,buffer:Et,ts:r},Et.map((e=>e.buffer)));Gt&&(a[0]=n[0].slice(o),2==Ot&&(a[1]=n[1].slice(o))),n=[]},errorInfo:function(e){null===Rt&&(Rt=ri());const t=ri(),i=si(Nt>0?2*Nt:5e3,1e3,5e3),r=t-Rt;r>i&&(cr.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Nt} and diff is ${r} and maxDiff is ${i}\n and replay`),wi=!0,postMessage({cmd:$}))},sendWebsocketMessage:function(e){d?d.readyState===De?d.send(e):cr.debugError("worker","socket is not open"):cr.debugError("worker","socket is null")},timeEnd:function(){cr.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),cr.close(),postMessage({cmd:O})},postStreamToMain(e,t){postMessage({cmd:q,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){cr.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),gi(e)?cr.clearPlaybackCacheLoop():cr.startPlaybackCacheLoop()},debugLog(e){if(cr._opt.debug&&cr.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r>2,B=e,be=t,postMessage({cmd:E,w:e,h:t}),cr.useOffscreen()&&(cr.offscreenCanvas=new OffscreenCanvas(e,t),cr.offscreenCanvasGL=cr.offscreenCanvas.getContext("webgl"),cr.webglObj=u(cr.offscreenCanvasGL,cr._opt.openWebglAlignment),cr.offscreenCanvas.addEventListener("webglcontextlost",cr.onOffscreenCanvasWebglContextLost,!1),cr.offscreenCanvas.addEventListener("webglcontextrestored",cr.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Ot=e,postMessage({cmd:k,sampleRate:t,channels:e,depth:Bi})},playAudioPlanar:function(e,i,r){if(cr.isDestroyed)return void cr.debugLog("worker","pcmData, decoder is destroyed and return");let s=i,n=[],o=0,d=cr._opt.audioBufferSize;for(let i=0;i<2;i++){let r=t.HEAPU32[(e>>2)+i]>>2;n[i]=t.HEAPF32.subarray(r,r+s)}if(Gt){if(!(s>=(i=d-Gt)))return Gt+=s,a[0]=Float32Array.of(...a[0],...n[0]),void(2==Ot&&(a[1]=Float32Array.of(...a[1],...n[1])));Et[0]=Float32Array.of(...a[0],...n[0].subarray(0,i)),2==Ot&&(Et[1]=Float32Array.of(...a[1],...n[1].subarray(0,i))),postMessage({cmd:T,buffer:Et,ts:r},Et.map((e=>e.buffer))),o=i,s-=i}for(Gt=s;Gt>=d;Gt-=d)Et[0]=n[0].slice(o,o+=d),2==Ot&&(Et[1]=n[1].slice(o-d,o)),postMessage({cmd:T,buffer:Et,ts:r},Et.map((e=>e.buffer)));Gt&&(a[0]=n[0].slice(o),2==Ot&&(a[1]=n[1].slice(o))),n=[]},draw:function(t,i,r,s){if(cr.isDestroyed)return void cr.debugLog("worker","draw, decoder is destroyed and return");const a=e.HEAPU8.subarray(i,i+Hi),n=e.HEAPU8.subarray(r,r+Yi),o=e.HEAPU8.subarray(s,s+Yi),d=new Uint8Array(Hi+Yi+Yi);if(d.set(a),d.set(n,Hi),d.set(o,Hi+Yi),Rt=null,Qe=t,cr.useOffscreen())try{if(ai)return;cr.webglObj.renderYUV(B,be,d);let e=cr.offscreenCanvas.transferToImageBitmap();postMessage({cmd:x,buffer:e,delay:cr.delay,ts:t},[e])}catch(e){cr.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:x,output:d,delay:cr.delay,ts:t},[d.buffer])}}));let ur=null;t.AudioDecoder&&(ur=new t.AudioDecoder(cr));let hr=null;e.VideoDecoder&&(hr=new e.VideoDecoder(cr)),postMessage({cmd:U}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case de:try{cr._opt=Object.assign(cr._opt,JSON.parse(t.opt))}catch(e){}cr.init();break;case le:cr.pushBuffer(t.buffer,t.options);break;case ce:cr.decodeAudio(t.buffer,t.ts);break;case ue:cr.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case pe:cr.clearBuffer(t.needClear);break;case _e:cr.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case he:cr.debugLog("worker","close",JSON.stringify(t.options)),t.options&&yi(t.options.isVideoInited)&&(Oi=t.options.isVideoInited),cr.close();break;case fe:cr.debugLog("worker","updateConfig",t.key,t.value),cr._opt[t.key]=t.value,"playbackRate"===t.key&&(cr.playbackUpdatePlaybackRate(),cr.isPlaybackCacheBeforeDecodeForFpsRender()&&cr.playbackCacheLoop());break;case me:cr.sendWebsocketMessage(t.message);break;case ge:lr.$video.currentTime=Number(t.message);break;case ye:cr.updatePlaybackIsPause(t.isPause)}}}({},{},!0)})); diff --git a/demo/public/pro/js/decoder-pro-hard.js b/demo/public/pro/js/decoder-pro-hard.js index bb2c2b40..e6e750c0 100644 --- a/demo/public/pro/js/decoder-pro-hard.js +++ b/demo/public/pro/js/decoder-pro-hard.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,s=t(e),n=(r="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,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,s;(s=e).ready=new Promise(((e,r)=>{t=e,i=r})),(s=void 0!==s?s:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,a,o,d=Object.assign({},s),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return s.locateFile?s.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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-hard.js",document.baseURI).href)),n=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,s)=>{e?r(e):t(i?s.buffer:s)}))},!s.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),s.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=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,v,b=s.print||console.log.bind(console),w=s.printErr||console.error.bind(console);Object.assign(s,d),d=null,s.arguments&&s.arguments,s.thisProgram&&(l=s.thisProgram),s.quit&&s.quit,s.wasmBinary&&(y=s.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,B,U,x,k,T,C=!1;function D(e,t){e||j(t)}function L(){var e=v.buffer;s.HEAP8=S=new Int8Array(e),s.HEAP16=A=new Int16Array(e),s.HEAPU8=E=new Uint8Array(e),s.HEAPU16=B=new Uint16Array(e),s.HEAP32=U=new Int32Array(e),s.HEAPU32=x=new Uint32Array(e),s.HEAPF32=k=new Float32Array(e),s.HEAPF64=T=new Float64Array(e)}var F=[],I=[],P=[];function M(){if(s.preRun)for("function"==typeof s.preRun&&(s.preRun=[s.preRun]);s.preRun.length;)N(s.preRun.shift());se(F)}function R(){s.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,se(I)}function z(){if(s.postRun)for("function"==typeof s.postRun&&(s.postRun=[s.postRun]);s.postRun.length;)G(s.postRun.shift());se(P)}function N(e){F.unshift(e)}function O(e){I.unshift(e)}function G(e){P.unshift(e)}var $=0,H=null;function V(e){$++,s.monitorRunDependencies&&s.monitorRunDependencies($)}function W(e){if($--,s.monitorRunDependencies&&s.monitorRunDependencies($),0==$&&H){var t=H;H=null,t()}}function j(e){s.onAbort&&s.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:si};function t(e,t){return ni=e.exports,v=ni.E,L(),Ft=ni.H,O(ni.F),W(),ni}if(V(),s.instantiateWasm)try{return s.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}s.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var se=e=>{for(;e.length>0;)e.shift()(s)};function ne(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,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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(ci(this.get_type()))return x[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}s.noExitRuntime;var ae=(e,t,r)=>{throw new ne(e).init(t,r),e},oe=e=>(U[oi()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;o{for(var i=t+r,s=t;e[s]&&!(s>=i);)++s;if(s-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,s=new Array(i),n=_e(e,s,0,s.length);return t&&(s.length=n),s}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,s){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var n=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var s=Te.createNode(e,t,r,i);return Te.isDir(s.mode)?(s.node_ops=we.ops_table.dir.node,s.stream_ops=we.ops_table.dir.stream,s.contents={}):Te.isFile(s.mode)?(s.node_ops=we.ops_table.file.node,s.stream_ops=we.ops_table.file.stream,s.usedBytes=0,s.contents=null):Te.isLink(s.mode)?(s.node_ops=we.ops_table.link.node,s.stream_ops=we.ops_table.link.stream):Te.isChrdev(s.mode)&&(s.node_ops=we.ops_table.chrdev.node,s.stream_ops=we.ops_table.chrdev.stream),s.timestamp=Date.now(),e&&(e.contents[t]=s,e.timestamp=s.timestamp),s},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=Te.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,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var s in i.contents)throw new Te.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var s=i?"":`al ${e}`;a(e,(r=>{D(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),s&&W()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),s&&V()},Ee=(e,t,r,i,s,n)=>{Te.createDataFile(e,t,r,i,s,n)},Ae=s.preloadPlugins||[],Be=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var s=!1;return Ae.forEach((n=>{s||n.canHandle(t)&&(n.handle(e,t,r,i),s=!0)})),s},Ue=(e,t,r,i,s,n,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,s,d),n&&n(),W()}Be(r,c,u,(()=>{a&&a(),W()}))||u(r)}V(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},xe=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,s="/",n=0;n40)throw new Te.ErrnoError(32)}}return{path:s,node:i}},getPath(e){for(var t;;){if(Te.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)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),s=Te.nameTable[i];s;s=s.name_next){var n=s.name;if(s.parent.id===e.id&&n===t)return s}return Te.lookup(e,t)},createNode(e,t,r,i){var s=new Te.FSNode(e,t,r,i);return Te.hashAddNode(s),s},destroyNode(e){Te.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.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=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return Te.lookupNode(e,t),20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var s=Te.nodePermissions(e,"wx");if(s)return s;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.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),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function s(e){return Te.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&&Te.root)throw new Te.ErrnoError(10);if(!s&&!n){var a=Te.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,s?Te.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,s=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;s.includes(t.mount)&&Te.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=Te.lookupPath(e,{parent:!0}).node,s=de.basename(e);if(!s||"."===s||".."===s)throw new Te.ErrnoError(28);var n=Te.mayCreate(i,s);if(n)throw new Te.ErrnoError(n);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,s,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.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,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),s=Te.mayCreate(r,i);if(s)throw new Te.ErrnoError(s);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,s=de.dirname(e),n=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,a),c=ue.relative(e,n);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,s)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,o)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,a,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,o,u):Te.mayCreate(i,o))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!0);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!1);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?Te.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var s;if(!(s="string"==typeof e?Te.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);s.node_ops.setattr(s,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;if(!(r="string"==typeof e?Te.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?xe(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var n=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),n=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!n){var a=Te.mayOpen(i,t);if(a)throw new Te.ErrnoError(a)}512&t&&!n&&Te.truncate(i,0),t&=-131713;var o=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!s.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),o},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var n=void 0!==s;if(n){if(!e.seekable)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var a=void 0!==s;if(a){if(!e.seekable)throw new Te.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(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,s){if(0!=(2&i)&&0==(2&s)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,s)},msync:(e,t,r,i,s)=>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 Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Te.open(e,t.flags),s=Te.stat(e).size,n=new Uint8Array(s);return Te.read(i,n,0,s,0),"utf8"===t.encoding?r=fe(n,0):"binary"===t.encoding&&(r=n),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var s=new Uint8Array(me(t)+1),n=_e(t,s,0,s.length);Te.write(i,s,0,n,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,s)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),s={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return s.parent=s,s}},t}},{},"/proc/self/fd")},createStandardStreams(){s.stdin?Te.createDevice("/dev","stdin",s.stdin):Te.symlink("/dev/tty","/dev/stdin"),s.stdout?Te.createDevice("/dev","stdout",null,s.stdout):Te.symlink("/dev/tty","/dev/stdout"),s.stderr?Te.createDevice("/dev","stderr",null,s.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),s.stdin=e||s.stdin,s.stdout=t||s.stdout,s.stderr=r||s.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=Te.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 c(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 Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,s)=>(Te.forceLoadFile(d),c(e,t,r,i,s)),l.mmap=(e,t,r,i,s)=>{Te.forceLoadFile(d);var n=be();if(!n)throw new Te.ErrnoError(48);return c(e,S,n,t,r),{ptr:n,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;if(i=-100===e?Te.cwd():De.getStreamFromFD(e).path,0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}U[r>>2]=i.dev,U[r+4>>2]=i.mode,x[r+8>>2]=i.nlink,U[r+12>>2]=i.uid,U[r+16>>2]=i.gid,U[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+24>>2]=K[0],U[r+28>>2]=K[1],U[r+32>>2]=4096,U[r+36>>2]=i.blocks;var s=i.atime.getTime(),n=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+40>>2]=K[0],U[r+44>>2]=K[1],x[r+48>>2]=s%1e3*1e3,K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+56>>2]=K[0],U[r+60>>2]=K[1],x[r+64>>2]=n%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+72>>2]=K[0],U[r+76>>2]=K[1],x[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+88>>2]=K[0],U[r+92>>2]=K[1],0},doMsync(e,t,r,i,s){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var n=E.slice(e,e+r);Te.msync(t,n,s,r,i)},varargs:void 0,get(){var e=U[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Le(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((s=De.get())<0)return-28;for(;Te.streams[s];)s++;return Te.createStream(i,s).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var s=De.get();return i.flags|=s,0;case 5:return s=De.getp(),A[s+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var s=i?De.get():0;return Te.open(t,r,s).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Ie,Pe,Me,Re=(e,t,r,i,s)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ie=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Ie[E[r++]];return t},Oe={},Ge={},$e={},He=e=>{throw new Pe(e)},Ve=e=>{throw new Me(e)},We=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ve("Mismatched type converter count");for(var s=0;s{Ge.hasOwnProperty(e)?s[t]=Ge[e]:(n.push(e),Oe.hasOwnProperty(e)||(Oe[e]=[]),Oe[e].push((()=>{s[t]=Ge[e],++a===n.length&&i(s)})))})),0===n.length&&i(s)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Ge.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Ge[e]=t,delete $e[e],Oe.hasOwnProperty(e)){var s=Oe[e];delete Oe[e],s.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},st={},nt=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{s.getInheritedInstanceCount=nt,s.getLiveInheritedInstances=at,s.flushPendingDeletes=dt,s.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||Ve("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ve("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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 s(){return this.isSmartPointer?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var n,a=this.registeredClass.getActualType(t),o=st[a];if(!o)return s.call(this);n=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,n.registeredClass);return null===d?s.call(this):this.isSmartPointer?pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d,smartPtrType:this,smartPtr:e}):pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var 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},clone(){if(this.$$.ptr||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{s.hasOwnProperty(e)?((void 0===r||void 0!==s[e].overloadTable&&void 0!==s[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(s,e,e),s.hasOwnProperty(r)&&He(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),s[e].overloadTable[r]=t):(s[e]=t,void 0!==r&&(s[e].numArguments=r))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Bt(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=[]}var Ut=(e,t,r)=>{for(;t!==r;)t.upcast||He(`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&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=Ut(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,nr.toHandle((()=>s.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(x[e>>2])}var Dt=()=>{Object.assign(Lt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Lt(e,t,r,i,s,n,a,o,d,l,c){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=c,s||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=xt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,It,Pt=(e,t,r)=>{s.hasOwnProperty(e)||Ve("Replacing nonexistant public symbol"),void 0!==s[e].overloadTable&&void 0!==r?s[e].overloadTable[r]=t:(s[e]=t,s[e].argCount=r)},Mt=(e,t,r)=>{var i=s["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),Ot=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Gt=(e,t)=>{var r=(e=Ne(e)).includes("j")?Ot(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},$t=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=Ne(t);return ai(t),r},Vt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Ge[t]||($e[t]?$e[t].forEach(e):(r.push(t),i[t]=!0))})),new It(`${e}: `+r.map(Ht).join([", "]))},Wt=(e,t,r,i,s,n,a,o,d,l,c,u,h)=>{c=Ne(c),n=Gt(s,n),o&&(o=Gt(a,o)),l&&(l=Gt(d,l)),h=Gt(u,h);var f=At(c);wt(f,(function(){Vt(`Cannot construct ${c} due to unbound types`,[i])})),We([e,t,r],i?[i]:[],(function(t){var r,s;t=t[0],s=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Pe("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Pe(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Pe(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(s,{constructor:{value:a}});a.prototype=d;var u=new Bt(c,a,d,h,r,n,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Lt(c,u,!0,!1,!1),m=new Lt(c+"*",u,!1,!1,!1),_=new Lt(c+" const*",u,!1,!0,!1);return st[e]={pointerType:m,constPointerType:_},Pt(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,s=e.apply(i,t);return s instanceof Object?s:i}function Kt(e,t,r,i,s,n){var a=t.length;a<2&&He("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+=(c||n?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);s=Gt(i,s),We([],[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 Pe(`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]=()=>{Vt(`Cannot construct ${e.name} due to unbound types`,a)},We([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,s,n),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,s,n,a,o,d)=>{var l=jt(r,i);t=Ne(t),t=Zt(t),n=Gt(s,n),We([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function s(){Vt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=s):(bt(c,t,i),c[t].overloadTable[r-2]=s),We([],l,(function(s){var o=Kt(i,s,e,n,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,s.count_emval_handles=ir},nr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function ar(e){return this.fromWireType(U[e>>2])}var or=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=nr.toValue(e);return rr(e),t},toWireType:(e,t)=>nr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>B[e>>1];case 4:return r?e=>U[e>>2]:e=>x[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,s)=>{t=Ne(t);var n=e=>e;if(0===i){var a=32-8*r;n=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:n,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function s(e){var t=x[e>>2],r=x[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:s,argPackAdvance:Ke,readValueFromPointer:s},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=x[e>>2],s=e+4;if(r)for(var n=s,a=0;a<=i;++a){var o=s+a;if(a==i||0==E[o]){var d=Ce(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)pr(t,a,i+1);else if(s)for(var o=0;o255&&(ai(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,s=i+t/2;!(i>=s)&&B[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var s=U[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},wr=(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)),U[t>>2]=a,(t+=4)+4>s)break}return U[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,s,n,a,o;r=Ne(r),2===t?(i=gr,s=yr,a=vr,n=()=>B,o=1):4===t&&(i=br,s=wr,a=Sr,n=()=>x,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,s=x[e>>2],a=n(),d=e+4,l=0;l<=s;++l){var c=e+4+l*t;if(l==s||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ai(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var n=a(i),d=li(4+n+t);return x[d>>2]=n>>o,s(i,d+4,n+t),null!==e&&e.push(ai,d),d},argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction(e){ai(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Br={},Ur=e=>{var t=Br[e];return void 0===t?Ne(e):t},xr=[],kr=(e,t,r,i,s)=>(e=xr[e])(t=nr.toValue(t),t[r=Ur(r)],i,s),Tr=e=>{var t=xr.length;return xr.push(e),t},Cr=(e,t)=>{var r=Ge[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Lr=(e,t,r)=>{var i=[],s=e.toWireType(i,r);return i.length&&(x[t>>2]=nr.toHandle(i)),s},Fr=(e,t,r)=>{var i=Dr(e,t),s=i.shift();e--;var n="return function (obj, func, destructorsRef, args) {\n",a=0,o=[];0===r&&o.push("obj");for(var d=["retType"],l=[s],c=0;ce.name)).join(", ")}) => ${s.name}>`;return Tr(vt(h,u))},Ir=e=>{var t=nr.toValue(e);qt(t),rr(e)},Pr=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),Nr=e=>{j("OOM")},Or=e=>{E.length,Nr()},Gr={},$r=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:$r()};for(var t in Gr)void 0===Gr[t]?delete e[t]:e[t]=Gr[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Vr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Wr=(e,t)=>{var r=0;return Hr().forEach(((i,s)=>{var n=t+r;x[e+4*s>>2]=n,Vr(i,n),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();x[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),x[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+8>>2]=K[0],U[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+16>>2]=K[0],U[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.read(e,S,a,o,i);if(d<0)return-1;if(s+=d,d>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,s){var n=Pr(t,r);try{if(isNaN(n))return 61;var a=De.getStreamFromFD(e);return Te.llseek(a,n,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[s>>2]=K[0],U[s+4>>2]=K[1],a.getdents&&0===n&&0===i&&(a.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.write(e,S,a,o,i);if(d<0)return-1;s+=d,void 0!==i&&(i+=d)}return s};function Qr(e,t,r,i){try{var s=De.getStreamFromFD(e),n=Jr(s,t,r);return x[i>>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=ei,Te.createPreloadedFile=Ue,Te.staticInit(),ze(),Pe=s.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=s.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),It=s.UnboundTypeError=$t(Error,"UnboundTypeError"),Qt(),sr();var ii,si={o:ae,A:Le,s:Fe,q:Re,C:Xe,D:Wt,y:Xt,h:Jt,B:or,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:kr,g:rr,e:Fr,d:Ir,a:Mr,i:Rr,w:zr,r:Or,u:Wr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},ni=ie(),ai=e=>(ai=ni.G)(e),oi=()=>(oi=ni.I)(),di=e=>(di=ni.J)(e),li=e=>(li=ni.K)(e),ci=e=>(ci=ni.M)(e);function ui(){function e(){ii||(ii=!0,s.calledRun=!0,C||(R(),t(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),z()))}$>0||(M(),$>0||(s.setStatus?(s.setStatus("Running..."),setTimeout((function(){setTimeout((function(){s.setStatus("")}),1),e()}),1)):e()))}if(s.dynCall_viiijj=(e,t,r,i,n,a,o,d)=>(s.dynCall_viiijj=ni.N)(e,t,r,i,n,a,o,d),s.dynCall_jij=(e,t,r,i)=>(s.dynCall_jij=ni.O)(e,t,r,i),s.dynCall_jii=(e,t,r)=>(s.dynCall_jii=ni.P)(e,t,r),s.dynCall_jiji=(e,t,r,i,n)=>(s.dynCall_jiji=ni.Q)(e,t,r,i,n),H=function e(){ii||ui(),ii||(H=e)},s.preInit)for("function"==typeof s.preInit&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return ui(),e.ready}),a=1e-6,o="undefined"!=typeof Float32Array?Float32Array:Array;function d(){var e=new o(16);return o!=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 l(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 c,u=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 h(e,t,r){var i=new o(3);return i[0]=e,i[1]=t,i[2]=r,i}c=new o(3),o!=Float32Array&&(c[0]=0,c[1]=0,c[2]=0);var f=(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 i={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")}},s=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}}(),n=p(),o=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,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 n=d();u(n,-1,1,-1,1,.1,100);const p=d();l(p);const m=d();!function(e,t,r,i){var s,n,o,d,c,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Vt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Wt=Vt,jt=Vt;function qt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Yt(e){return Kt(e)&&e[1]===xt}function Kt(e){return e[0]>>4===Oe}const Xt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Zt(e){let t=new Uint8Array(e),r=null,i=0,s=0,n=0,a=null;if(i=s=t[0]>>>3,n=(7&t[0])<<1|t[1]>>>7,n<0||n>=Xt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Xt[n],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Ot.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?n>=6?(i=5,r=new Array(4),a=n-3):(i=2,r=new Array(2),a=n):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=n):(i=5,a=n,r=new Array(4),n>=6?a=n-3:1===d&&(i=2,r=new Array(2),a=n)),r[0]=i<<3,r[0]|=(15&n)>>>1,r[1]=(15&n)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+s}}class Jt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,s=(6&e[r+1])>>>1,n=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===n?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==s)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=Wt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(31&t[i+1])<<8|t[i+2];if(i+3+s>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let n=new Ht(t.subarray(i+3,i+3+s)),a=null;if(n.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+s),n.destroy();continue}a=e}else{let e=n.readBool();if(e&&n.readBool()){console.error("audioMuxVersionA is Not Supported"),n.destroy();break}if(e&&this.getLATMValue(n),!n.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),n.destroy();break}if(0!==n.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),n.destroy();break}if(0!==n.readBits(4)){console.error("more than 2 numProgram Not Supported"),n.destroy();break}if(0!==n.readBits(3)){console.error("more than 2 numLayer Not Supported"),n.destroy();break}let t=e?this.getLATMValue(n):0,r=n.readBits(5);t-=5;let i=n.readBits(4);t-=4;let s=n.readBits(4);t-=4,n.readBits(3),t-=3,t>0&&n.readBits(t);let o=n.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),n.destroy();break}n.readByte();let d=n.readBool();if(d)if(e)this.getLATMValue(n);else{let e=0;for(;;){e<<=8;let t=n.readBool();if(e+=n.readByte(),!t)break}console.log(e)}n.readBool()&&n.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=Wt[a.sampling_freq_index],a.channel_config=s,a.other_data_present=d}let o=0;for(;;){let e=n.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function tr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 rr(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++;return{payload:e.subarray(i),type:s,size:n,uuid:a}}function ir(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 sr(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 nr(){return(new Date).getTime()}function ar(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function or(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function dr(e){let t=0,r=or();return i=>{if(s=i,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=i;const n=or(),a=n-r;a>=1e3&&(e(t/a*1e3),r=n,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){}})();function lr(e){return null==e}function cr(e){return!lr(e)}function ur(e){return"function"==typeof e}function hr(e){let t=null,r=31&e[0];return r!==Ve&&r!==We||(t=ze),t||(r=(126&e[0])>>1,r!==nt&&r!==ot&&r!==lt||(t=Ne)),t}function fr(){return"undefined"!=typeof WritableStream}function pr(e){e.close()}function mr(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 _r(e){return e.ok&&e.status>=200&&e.status<=299}function gr(){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}(U)}function yr(e){return e[0]>>4===kt&&e[1]===xt}function vr(e){return!0===e||"true"===e}function br(e){return!0!==e&&"true"!==e}function wr(){return!!(Ot.Worker&&Ot.MediaSource&&"canConstructInDedicatedWorker"in Ot.MediaSource&&!0===Ot.MediaSource.canConstructInDedicatedWorker)}function Sr(e,t){const r=tr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Qe||r===tt||r===it)||br(t)&&r===je)&&(i=!0)})),i}var Er=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 Ar=Symbol(32),Br=Symbol(16),Ur=Symbol(8);class xr{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 Er(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(Ar)}readU16(){return this.read(Br)}readU8(){return this.read(Ur)}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===Ar){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Br){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Ur){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}}xr.U32=Ar,xr.U16=Br,xr.U8=Ur;class kr{constructor(e){this.log=function(t){if(e._opt.debugLevel==w){const n=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;s1?r-1:0),s=1;s1?i-1:0),n=1;n=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=Tr._ebsp2rbsp(e),r=new Ht(t);r.readByte();let i=r.readByte();r.readByte();let s=r.readByte();r.readUEG();let n=Tr.getProfileString(i),a=Tr.getLevelString(s),o=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,B=2*e,S=A/B}}let U=1;1===b&&1===w||(U=b/w);let x=0,k=0;if(0===o)x=1,k=2-m;else{x=3===o?1:2,k=(1===o?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*x,C-=(y+v)*k;let D=Math.ceil(T*U);return r.destroy(),r=null,{profile_string:n,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Tr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:B,fps_num:A},sar_ratio:{width:b,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=Tr._ebsp2rbsp(e),s=new Ht(i);s.readByte();let n=s.readByte();s.readByte();let a=s.readByte();s.readUEG();let o=Tr.getProfileString(n),d=Tr.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=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&&(c=u[l]),h=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=t[e-1],A=r[e-1]):255===e&&(E=s.readByte()<<8|s.readByte(),A=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);U=s.readBool(),x=t,k=2*e,B=x/k}}let T=1;1===E&&1===A||(T=E/A);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 L=16*(_+1),F=16*(g+1)*(2-y);L-=(v+b)*C,F-=(w+S)*D;let I=Math.ceil(L*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:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Tr.getChromaFormatString(c),frame_rate:{fixed:U,fps:B,fps_den:k,fps_num:x},sar_ratio:{width:E,height:A},codec_size:{width:L,height:F},present_size:{width:I,height:F}}}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 Lr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Fr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,s=!1;const n=Tr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(s=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,s&&(a[d]=252|n.chroma_format_idc,a[d+1]=248|n.bit_depth_luma-8,a[d+2]=248|n.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Ir(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}function Pr(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 Mr(e){return 31&e[0]}function Rr(e){return e===Ke}function zr(e){return!function(e){return e===Ve||e===We}(e)&&!Rr(e)}function Nr(e){return e===je}function Or(e){if(0===e.length)return!1;const t=Mr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,i>=Je||0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class $r{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Hr=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)},Vr=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"}};class Wr{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 parseVPS(e){let t=Wr._ebsp2rbsp(e),r=new Ht(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()}}static parseSPS(e){let t=Wr._ebsp2rbsp(e),r=new Ht(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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=t[e-1],P=i[e-1]):255===e&&(I=r.readBits(16),P=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(),L=r.readBool(),L&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&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();M=s;let n=!0,a=1;s||(n=r.readBool());let o=!1;if(n?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Hr(e),r=new Ht(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()}})(t),a=(e=>{let t=Hr(e),r=new Ht(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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=t[e-1],P=i[e-1]):255===e&&(I=r.readBits(16),P=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),L=r.readBool(),L&&(i+=r.readUEG(),s+=r.readUEG(),n+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(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();M=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=Hr(e),r=new Ht(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}})(r);s=Object.assign(s,n,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&s.general_profile_space)<<6|(s.general_tier_flag?1:0)<<5|31&s.general_profile_idc,l[2]=s.general_profile_compatibility_flags_1||0,l[3]=s.general_profile_compatibility_flags_2||0,l[4]=s.general_profile_compatibility_flags_3||0,l[5]=s.general_profile_compatibility_flags_4||0,l[6]=s.general_constraint_indicator_flags_1||0,l[7]=s.general_constraint_indicator_flags_2||0,l[8]=s.general_constraint_indicator_flags_3||0,l[9]=s.general_constraint_indicator_flags_4||0,l[10]=s.general_constraint_indicator_flags_5||0,l[11]=s.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&s.min_spatial_segmentation_idc)>>8,l[14]=255&s.min_spatial_segmentation_idc,l[15]=252|3&s.parallelismType,l[16]=252|3&s.chroma_format_idc,l[17]=248|7&s.bit_depth_luma_minus8,l[18]=248|7&s.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&s.constant_frame_rate)<<6|(7&s.num_temporal_layers)<<3|(s.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|nt,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|ot,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|lt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Xr(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}function Zr(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 Jr(e){return(126&e[0])>>1}function Qr(e){return e===ut}function ei(e){return!function(e){return e>=32&&e<=40}(e)}function ti(e){return e>=16&&e<=21}function ri(e){if(0===e.length)return!1;const t=Jr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class si{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ni(e){return parseInt(e)===e}function ai(e){if(!ni(e.length))return!1;for(var t=0;t255)return!1;return!0}function oi(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(!ai(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ni(e.length)&&ai(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function di(e){return new Uint8Array(e)}function li(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 ci,ui={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("")}},hi=(ci="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ci[15&i])}return t.join("")}}),fi={16:10,24:12,32:14},pi=[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],mi=[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],_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ei=[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],Ai=[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],Bi=[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],Ui=[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],xi=[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],ki=[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 Ti(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^mi[a>>8&255]<<16^mi[255&a]<<8^mi[a>>24&255]^pi[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^mi[a>>16&255]<<16^mi[a>>24&255]<<24;for(t=s/2+1;t>2,c=d%4,this._Ke[l][c]=n[t],this._Kd[e-l][c]=n[t++],d++}for(var l=1;l>24&255]^Ui[a>>16&255]^xi[a>>8&255]^ki[255&a]},Ci.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=Ti(e),s=0;s<4;s++)i[s]^=this._Ke[0][s];for(var n=1;n>24&255]^yi[i[(s+1)%4]>>16&255]^vi[i[(s+2)%4]>>8&255]^bi[255&i[(s+3)%4]]^this._Ke[n][s];i=r.slice()}var a,o=di(16);for(s=0;s<4;s++)a=this._Ke[t][s],o[4*s]=255&(mi[i[s]>>24&255]^a>>24),o[4*s+1]=255&(mi[i[(s+1)%4]>>16&255]^a>>16),o[4*s+2]=255&(mi[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(mi[255&i[(s+3)%4]]^a);return o},Ci.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=Ti(e),s=0;s<4;s++)i[s]^=this._Kd[0][s];for(var n=1;n>24&255]^Si[i[(s+3)%4]>>16&255]^Ei[i[(s+2)%4]>>8&255]^Ai[255&i[(s+1)%4]]^this._Kd[n][s];i=r.slice()}var a,o=di(16);for(s=0;s<4;s++)a=this._Kd[t][s],o[4*s]=255&(_i[i[s]>>24&255]^a>>24),o[4*s+1]=255&(_i[i[(s+3)%4]>>16&255]^a>>16),o[4*s+2]=255&(_i[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(_i[255&i[(s+1)%4]]^a);return o};var Di=function(e){if(!(this instanceof Di))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ci(e)};Di.prototype.encrypt=function(e){if((e=oi(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=di(e.length),r=di(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)},Pi.prototype.setBytes=function(e){if(16!=(e=oi(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Pi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Mi=function(e,t){if(!(this instanceof Mi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Pi||(t=new Pi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ci(e)};Mi.prototype.encrypt=function(e){for(var t=oi(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-n%4*8&255;t[i+n>>>2]|=a<<24-(i+n)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-s%4*8&255;i.push((n>>>4).toString(16)),i.push((15&n).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>24-s%4*8&255;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,s=i.words,n=i.sigBytes,a=this.blockSize,o=n/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,n);if(d){for(var u=0;u>>2]|=e[s]<<24-s%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.WordArray,i=e.enc;function s(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=e.charCodeAt(s)<<16-s%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=s(e.charCodeAt(n)<<16-n%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var s=[],n=0,a=0;a>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var s=[],n=0;n>>2]>>>24-n%4*8&255)<<16|(t[n+1>>>2]>>>24-(n+1)%4*8&255)<<8|t[n+2>>>2]>>>24-(n+2)%4*8&255,o=0;o<4&&n+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;s.length%4;)s.push(d);return s.join("")},parse:function(e){var t=e.length,r=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var n=0;n>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,s=t?this._safe_map:this._map;e.clamp();for(var n=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=s.charAt(64);if(l)for(;n.length%4;)n.push(l);return n.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,s=t?this._safe_map:this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(s<<24|s>>>8)}var n=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],B=e[t+14],U=e[t+15],x=n[0],k=n[1],T=n[2],C=n[3];x=l(x,k,T,C,a,7,o[0]),C=l(C,x,k,T,d,12,o[1]),T=l(T,C,x,k,f,17,o[2]),k=l(k,T,C,x,p,22,o[3]),x=l(x,k,T,C,m,7,o[4]),C=l(C,x,k,T,_,12,o[5]),T=l(T,C,x,k,g,17,o[6]),k=l(k,T,C,x,y,22,o[7]),x=l(x,k,T,C,v,7,o[8]),C=l(C,x,k,T,b,12,o[9]),T=l(T,C,x,k,w,17,o[10]),k=l(k,T,C,x,S,22,o[11]),x=l(x,k,T,C,E,7,o[12]),C=l(C,x,k,T,A,12,o[13]),T=l(T,C,x,k,B,17,o[14]),x=c(x,k=l(k,T,C,x,U,22,o[15]),T,C,d,5,o[16]),C=c(C,x,k,T,g,9,o[17]),T=c(T,C,x,k,S,14,o[18]),k=c(k,T,C,x,a,20,o[19]),x=c(x,k,T,C,_,5,o[20]),C=c(C,x,k,T,w,9,o[21]),T=c(T,C,x,k,U,14,o[22]),k=c(k,T,C,x,m,20,o[23]),x=c(x,k,T,C,b,5,o[24]),C=c(C,x,k,T,B,9,o[25]),T=c(T,C,x,k,p,14,o[26]),k=c(k,T,C,x,v,20,o[27]),x=c(x,k,T,C,A,5,o[28]),C=c(C,x,k,T,f,9,o[29]),T=c(T,C,x,k,y,14,o[30]),x=u(x,k=c(k,T,C,x,E,20,o[31]),T,C,_,4,o[32]),C=u(C,x,k,T,v,11,o[33]),T=u(T,C,x,k,S,16,o[34]),k=u(k,T,C,x,B,23,o[35]),x=u(x,k,T,C,d,4,o[36]),C=u(C,x,k,T,m,11,o[37]),T=u(T,C,x,k,y,16,o[38]),k=u(k,T,C,x,w,23,o[39]),x=u(x,k,T,C,A,4,o[40]),C=u(C,x,k,T,a,11,o[41]),T=u(T,C,x,k,p,16,o[42]),k=u(k,T,C,x,g,23,o[43]),x=u(x,k,T,C,b,4,o[44]),C=u(C,x,k,T,E,11,o[45]),T=u(T,C,x,k,U,16,o[46]),x=h(x,k=u(k,T,C,x,f,23,o[47]),T,C,a,6,o[48]),C=h(C,x,k,T,y,10,o[49]),T=h(T,C,x,k,B,15,o[50]),k=h(k,T,C,x,_,21,o[51]),x=h(x,k,T,C,E,6,o[52]),C=h(C,x,k,T,p,10,o[53]),T=h(T,C,x,k,w,15,o[54]),k=h(k,T,C,x,d,21,o[55]),x=h(x,k,T,C,v,6,o[56]),C=h(C,x,k,T,U,10,o[57]),T=h(T,C,x,k,g,15,o[58]),k=h(k,T,C,x,A,21,o[59]),x=h(x,k,T,C,m,6,o[60]),C=h(C,x,k,T,S,10,o[61]),T=h(T,C,x,k,f,15,o[62]),k=h(k,T,C,x,b,21,o[63]),n[0]=n[0]+x|0,n[1]=n[1]+k|0,n[2]=n[2]+T|0,n[3]=n[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;r[s>>>5]|=128<<24-s%32;var n=e.floor(i/4294967296),a=i;r[15+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),r[14+(s+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,s,n,a){var o=e+(t&r|~t&i)+s+a;return(o<>>32-n)+t}function c(e,t,r,i,s,n,a){var o=e+(t&i|r&~i)+s+a;return(o<>>32-n)+t}function u(e,t,r,i,s,n,a){var o=e+(t^r^i)+s+a;return(o<>>32-n)+t}function h(e,t,r,i,s,n,a){var o=e+(r^(t|~i))+s+a;return(o<>>32-n)+t}t.MD5=n._createHelper(d),t.HmacMD5=n._createHmacHelper(d)}(Math),r.MD5)})),$t((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=zi).lib,s=i.WordArray,n=i.Hasher,a=r.algo,o=[],d=a.SHA1=n.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(s&n|~s&a):l<40?1859775393+(s^n^a):l<60?(s&n|s&a|n&a)-1894007588:(s^n^a)-899497514,d=a,a=n,n=s<<30|s>>>2,s=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=n._createHelper(d),r.HmacSHA1=n._createHmacHelper(d),l.SHA1)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,s=0;s<64;)t(i)&&(s<8&&(o[s]=r(e.pow(i,.5))),d[s]=r(e.pow(i,1/3)),s++),i++}();var l=[],c=a.SHA256=n.extend({_doReset:function(){this._hash=new s.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&s^i&n^s&n,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=n,n=s,s=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;return r[s>>>5]|=128<<24-s%32,r[14+(s+64>>>9<<4)]=e.floor(i/4294967296),r[15+(s+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=n._createHelper(c),t.HmacSHA256=n._createHmacHelper(c)}(Math),r.SHA256)})),$t((function(e,t){var r,i,s,n,a,o;e.exports=(i=(r=o=zi).lib.WordArray,s=r.algo,n=s.SHA256,a=s.SHA224=n.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=n._createHelper(a),r.HmacSHA224=n._createHmacHelper(a),o.SHA224)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.Hasher,i=e.x64,s=i.Word,n=i.WordArray,a=e.algo;function o(){return s.create.apply(s,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new n.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=s.high,_=s.low,g=n.high,y=n.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,B=u.high,U=u.low,x=h.high,k=h.low,T=f,C=p,D=m,L=_,F=g,I=y,P=v,M=b,R=w,z=S,N=E,O=A,G=B,$=U,H=x,V=k,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,se=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),ne=l[W-7],ae=ne.high,oe=ne.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=se)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&G,fe=z&O^~z&$,pe=T&D^T&F^D&F,me=C&L^C&I^L&I,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=G,V=$,G=N,$=O,N=R,O=z,R=P+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,P=F,M=I,F=D,I=L,D=T,L=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=s.low=_+L,s.high=m+D+(_>>>0>>0?1:0),y=n.low=y+I,n.high=g+F+(y>>>0>>0?1:0),b=a.low=b+M,a.high=v+P+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+N+(A>>>0>>0?1:0),U=u.low=U+$,u.high=B+G+(U>>>0<$>>>0?1:0),k=h.low=k+V,h.high=x+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),$t((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=zi).x64,s=i.Word,n=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new n.init([new s.init(3418070365,3238371032),new s.init(1654270250,914150663),new s.init(2438529370,812702999),new s.init(355462360,4144912697),new s.init(1731405415,4290775857),new s.init(2394180231,1750603025),new s.init(3675008525,1694076839),new s.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var s=1,n=0;n<24;n++){for(var o=0,u=0,h=0;h<7;h++){if(1&s){var f=(1<>>24)|4278255360&(n<<24|n>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(k=r[s]).high^=a,k.low^=n}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(k=r[h+5*m]).high,p^=k.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[h+5*m]).high^=f,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var B=u[l[w]];B.high=f,B.low=p}var U=u[0],x=r[0];for(U.high=x.high,U.low=x.low,h=0;h<5;h++)for(m=0;m<5;m++){var k=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var L=c[o];k.high^=L.high,k.low^=L.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,n=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/n)*n>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new s.init(l,o)},clone:function(){for(var e=n.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=n._createHelper(h),t.HmacSHA3=n._createHmacHelper(h)}(Math),r.SHA3)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=s.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=s.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=s.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=s.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=s.create([0,1518500249,1859775393,2400959708,2840853838]),h=s.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=n.extend({_doReset:function(){this._hash=s.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,s=e[i];e[i]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}var n,a,f,b,w,S,E,A,B,U,x,k=this._hash.words,T=u.words,C=h.words,D=o.words,L=d.words,F=l.words,I=c.words;for(S=n=k[0],E=a=k[1],A=f=k[2],B=b=k[3],U=w=k[4],r=0;r<80;r+=1)x=n+e[t+D[r]]|0,x+=r<16?p(a,f,b)+T[0]:r<32?m(a,f,b)+T[1]:r<48?_(a,f,b)+T[2]:r<64?g(a,f,b)+T[3]:y(a,f,b)+T[4],x=(x=v(x|=0,F[r]))+w|0,n=w,w=b,b=v(f,10),f=a,a=x,x=S+e[t+L[r]]|0,x+=r<16?y(E,A,B)+C[0]:r<32?g(E,A,B)+C[1]:r<48?_(E,A,B)+C[2]:r<64?m(E,A,B)+C[3]:p(E,A,B)+C[4],x=(x=v(x|=0,I[r]))+U|0,S=U,U=B,B=v(A,10),A=E,E=x;x=k[1]+f+B|0,k[1]=k[2]+b+U|0,k[2]=k[3]+w+S|0,k[3]=k[4]+n+E|0,k[4]=k[0]+a+A|0,k[0]=x},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var s=this._hash,n=s.words,a=0;a<5;a++){var o=n[a];n[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return s},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=n._createHelper(f),t.HmacRIPEMD160=n._createHmacHelper(f)}(),r.RIPEMD160)})),$t((function(e,t){var r,i,s;e.exports=(i=(r=zi).lib.Base,s=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var n=this._oKey=t.clone(),a=this._iKey=t.clone(),o=n.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?n.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=n.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=s.extend({cfg:s.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var s=e.createEncryptor(r,i),n=s.finalize(t),a=s.cfg;return m.create({ciphertext:n,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,s){if(i||(i=n.random(8)),s)a=l.create({keySize:t+r,hasher:s}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=n.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var s=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=s.iv;var n=g.encrypt.call(this,e,t,s.key,i);return n.mixIn(s),n},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var s=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=s.iv,g.decrypt.call(this,e,t,s.key,i)}})}())})),$t((function(e,t){var r;e.exports=((r=zi).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var s,n=this._iv;n?(s=n.slice(0),this._iv=void 0):s=this._prevBlock,i.encryptBlock(s,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var s=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,s=r.blockSize,n=this._iv,a=this._counter;n&&(a=this._counter=n.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=s<<24-n%4*8,e.sigBytes+=s},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),$t((function(e,t){var r;e.exports=((r=zi).pad.Iso10126={pad:function(e,t){var i=4*t,s=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(s-1)).concat(r.lib.WordArray.create([s<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),$t((function(e,t){var r;e.exports=((r=zi).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),$t((function(e,t){var r;e.exports=((r=zi).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),$t((function(e,t){var r;e.exports=((r=zi).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib.CipherParams,s=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(s)},parse:function(e){var t=s.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,s=[],n=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,s[r]=p,n[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),n=this._keySchedule=[],a=0;a6&&a%r==4&&(l=s[l>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l]):(l=s[(l=l<<8|l>>>24)>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l],l^=p[a/r|0]<<24),n[a]=n[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[s[l>>>16&255]]^h[s[l>>>8&255]]^f[s[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,s)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,n),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,s,n,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^s[c>>>16&255]^n[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^s[u>>>16&255]^n[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^s[h>>>16&255]^n[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^s[l>>>16&255]^n[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib,i=t.WordArray,s=t.BlockCipher,n=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=n.DES=s.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var s=this._subKeys=[],n=0;n<16;n++){var l=s[n]=[],c=d[n];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=s[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var s=r[i],n=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^s[d])&c[d])>>>0];this._lBlock=a,this._rBlock=n^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),s=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(s))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=s._createHelper(p)}(),r.TripleDES)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],s=0;s<256;s++)i[s]=s;s=0;for(var n=0;s<256;s++){var a=s%r,o=t[a>>>2]>>>24-a%4*8&255;n=(n+i[s]+o)%256;var d=i[s];i[s]=i[n],i[n]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=n.call(this)},keySize:8,ivSize:0});function n(){for(var e=this._S,t=this._i,r=this._j,i=0,s=0;s<4;s++){r=(r+e[t=(t+1)%256])%256;var n=e[t];e[t]=e[r],e[r]=n,i|=e[(e[t]+e[r])%256]<<24-8*s}return this._i=t,this._j=r,i}e.RC4=t._createHelper(s);var a=i.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)n.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(s[0]^=l,s[1]^=u,s[2]^=c,s[3]^=h,s[4]^=l,s[5]^=u,s[6]^=c,s[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var s=0;s<4;s++)d.call(this);for(s=0;s<8;s++)i[s]^=r[s+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,s=0;s<4;s++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const s=16,n=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,s=t>>8&255,n=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][s],a+=e.sbox[3][n],a}function l(e,t,r){let i,n=t,a=r;for(let t=0;t1;--t)n^=e.pbox[t],a=d(e,n)^a,i=n,n=a,a=i;return i=n,n=a,a=i,a^=e.pbox[1],n^=e.pbox[0],{left:n,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+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=e.slice(n+4+2,n+4+a);let s=new Ri.ModeOfOperation.ctr(t,new Ri.Counter(r));const o=s.decrypt(i);s=null,e.set(o,n+4+2)}n=n+4+a}return e}function Gi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let s=new Ri.ModeOfOperation.ctr(t,new Ri.Counter(r));const n=s.decrypt(i);return s=null,e.set(n,32),e}$t((function(e,t){e.exports=zi}));var $i=$t((function(e,t){var r,s,n,a=(r=new Date,s=4,n={setLogLevel:function(e){s=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>=s&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=s&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=s&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=s&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},n);a.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+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;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),s=new Uint8Array(this._buffer);new Uint8Array(i,0,s.length).set(s),this.buffer=i,this._byteLength=t}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,s){var n=new Uint8Array(e,t,s),a=new Uint8Array(r,i,s);n.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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 r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.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)),a.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,n)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,s,n,o=[],d="";for(i=0,s=0,t=0;t0&&(d+=n.end-1+"]");var l=e?a.info:a.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,s=null,n=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+n),n):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[n]?i=new h.UUIDBoxes[n](l):(a.warn("BoxParser","Unknown uuid type: '"+n+"'"),(i=new h.Box(c,l)).uuid=n,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' 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?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(i.start+i.size)):s>0&&(a.error("BoxParser","Parsing of box '"+u+"' 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)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 r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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),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()))})),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:a.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(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()})),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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)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=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){a.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){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.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),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(),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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>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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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))},g.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&&(a.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),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.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)&&(a.debug("ISOFile","Sending samples on track #"+n.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(n.id,n.user,n.samples),n.samples=[],n!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,s=this.getTrackById(e);s.lastValidSample||(s.lastValidSample=0);for(var n=s.lastValidSample;ne*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 n=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+n),{offset:n,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,s,n=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;sthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){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 u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),n.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),n.addBox(f)}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 d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=n.sample_counts[b]),t>0?(e.samples[t-1].duration=n.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),U.cts=e.samples[t].dts+a.sample_offsets[S]):U.cts=U.dts,o?(t==o.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[A].sample_delta+B==t+1&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta,A++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+B==t&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,s,n,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var n=(r=this.stream.buffers[s]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=n)return a.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+")"),d.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===n)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+n+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,n),i.alreadyRead+=n,r.usedBytes+=n,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[n]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+s.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,o),s.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Hi(e){return e.reduce(((e,t)=>256*e+t))}function Vi(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]))}$i.Log,$i.MP4BoxStream,$i.DataStream,$i.MultiBufferStream,$i.MPEG4DescriptorParser,$i.BoxParser,$i.XMLSubtitlein4Parser,$i.Textin4Parser,$i.ISOFile,$i.createFile;class Wi{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],Vi(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}}function ji(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const qi=16,Yi=[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],Ki=[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 Xi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ji(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}function Qi(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("")}function es(e,t){const r=31&t;return e<>>32-r}function ts(e){return(255&Yi[e>>>24&255])<<24|(255&Yi[e>>>16&255])<<16|(255&Yi[e>>>8&255])<<8|255&Yi[255&e]}function rs(e){return e^es(e,2)^es(e,10)^es(e,18)^es(e,24)}function is(e){return e^es(e,13)^es(e,23)}function ss(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]^=rs(ts(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=rs(ts(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=rs(ts(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=rs(ts(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 ns(e,t,r){const i=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[0+4*t],s[1]=255&e[1+4*t],s[2]=255&e[2+4*t],s[3]=255&e[3+4*t],i[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Ki[r+0],t[r+0]=i[0]^=is(ts(e)),e=i[2]^i[3]^i[0]^Ki[r+1],t[r+1]=i[1]^=is(ts(e)),e=i[3]^i[0]^i[1]^Ki[r+2],t[r+2]=i[2]^=is(ts(e)),e=i[0]^i[1]^i[2]^Ki[r+3],t[r+3]=i[3]^=is(ts(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function as(e,t,r){let{padding:i="pkcs#7",mode:s,iv:n=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===s&&("string"==typeof n&&(n=Xi(n)),16!==n.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Xi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ji(e):Xi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=qi-e.length%qi;for(let r=0;r=qi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===s)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=new Uint8Array(e.slice(0,5)),a=5;for(;as){const t=new Uint8Array(n.length+e.length-a);t.set(n,0),t.set(e.slice(a),n.length),n=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=as(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const s=new Uint8Array(u);s.set(e.slice(a+4,a+4+u),0);const o=ir(ji(s,new Uint8Array(r))),l=new Uint8Array(n.length+o.length);l.set(n,0),l.set(o,n.length),n=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(n.length+4+t.length);r.set(n,0),r.set(o,n.length),r.set(t,n.length+4),n=r}a=a+4+d}return n}const ls={init:0,findFirstStartCode:1,findSecondStartCode:2};class cs extends class{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(){i.off(e,s);for(var n=arguments.length,a=new Array(n),o=0;o1?r-1:0),s=1;s{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=ls.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ls.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=ls.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ls.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=ls.findFirstStartCode}}}}function us(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+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=us(e.slice(n+4,n+4+a),t,r);e.set(i,n+4)}n=n+4+a}return e}function ps(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let s=0;return t.forEach((e=>{i.set(e,s),s+=e.byteLength})),i}class ms{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const s=()=>{ur(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(s),s}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class _s{static init(){_s.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 _s.types)_s.types.hasOwnProperty(e)&&(_s.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=_s.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 _s.box(_s.types.trak,_s.tkhd(e),_s.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,s=e.presentHeight;return _s.box(_s.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 _s.box(_s.types.mdia,_s.mdhd(e),_s.hdlr(e),_s.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return _s.box(_s.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?_s.constants.HDLR_AUDIO:_s.constants.HDLR_VIDEO,_s.box(_s.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?_s.box(_s.types.smhd,_s.constants.SMHD):_s.box(_s.types.vmhd,_s.constants.VMHD),_s.box(_s.types.minf,t,_s.dinf(),_s.stbl(e))}static dinf(){return _s.box(_s.types.dinf,_s.box(_s.types.dref,_s.constants.DREF))}static stbl(e){return _s.box(_s.types.stbl,_s.stsd(e),_s.box(_s.types.stts,_s.constants.STTS),_s.box(_s.types.stsc,_s.constants.STSC),_s.box(_s.types.stsz,_s.constants.STSZ),_s.box(_s.types.stco,_s.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.mp3(e)):_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.mp4a(e)):"avc"===e.videoType?_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.avc1(e)):_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.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 _s.box(_s.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 _s.box(_s.types.mp4a,i,_s.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 _s.box(_s.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 _s.box(_s.types.avc1,s,_s.box(_s.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 _s.box(_s.types.hvc1,s,_s.box(_s.types.hvcC,t))}static mvex(e){return _s.box(_s.types.mvex,_s.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 _s.box(_s.types.trex,r)}static moof(e,t){return _s.box(_s.types.moof,_s.mfhd(e.sequenceNumber),_s.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 _s.box(_s.types.mfhd,t)}static traf(e,t){let r=e.id,i=_s.box(_s.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),s=_s.box(_s.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),n=_s.sdtp(e),a=_s.trun(e,n.byteLength+16+16+8+16+8+8);return _s.box(_s.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,_s.box(_s.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),_s.box(_s.types.trun,r)}static mdat(e){return _s.box(_s.types.mdat,e)}}_s.init();var gs,ys=$t((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(gs=ys)&&gs.__esModule&&Object.prototype.hasOwnProperty.call(gs,"default")&&gs.default;const vs=[44100,48e3,32e3,0],bs=[22050,24e3,16e3,0],ws=[11025,12e3,8e3,0],Ss=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Es=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],As=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function Bs(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,s=(6&t[1])>>1,n=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=ws[a];break;case 2:d=bs[a];break;case 3:d=vs[a]}switch(s){case 1:n=e[s]&&t=6?(i=5,t=new Array(4),a=s-3):(i=2,t=new Array(2),a=s):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=s):(i=5,a=s,t=new Array(4),s>=6?a=s-3:1===n&&(i=2,t=new Array(2),a=s)),t[0]=i<<3,t[0]|=(15&s)>>>1,t[1]=(15&s)<<7,t[1]|=(15&n)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Os[s],this.sampling_index=s,this.channel_count=n,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Hs{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,n=8-i;if(n>=e)return r&&(this.index+=e),s>>n-e;{r&&(this.index+=n);const i=e-n;return s<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Vs(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Ws=new Array(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),js=new Array(2746333894,1453994832,1736282519,2993693404),qs=new Array(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 Ys(e,t,r,i,s){var n=s;n=t+s>e.length&&i+s<=r.length?e.length-t:i+s>r.length&&t+s<=e.length?r.length-i:t+s<=e.length&&i+s<=r.length?s:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Xs(e,t){return t+3>>19)^(i<<23|i>>>9)}function Qs(e,t){var r=new Array(36);r[0]=Xs(t,0),r[1]=Xs(t,4),r[2]=Xs(t,8),r[3]=Xs(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^en(r[i+1]^r[i+2]^r[i+3]^e[i]);var s=new Array(4);for(i=35;i>=32;i--)s[35-i]=r[i];var n=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function tn(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Zs(e),s=Math.ceil(r.length/16),n=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let a=5;for(;an)break;let d=e[a+4],l=!1,c=2;if(i?(s&&(c=3),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=tn(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-1-2024" '+(br(false)?"and is Trial Version[试用版本]":"")),n({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][worker]:",e)}}).then((e=>{!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=[],n=[],a=null,o=null,d=null,l=null,c=null,u=null,h=!1,w=null,S=null,U=!1,we=!1,Se=!!vr(r),je=0,Je=0,Qe=!1,tt=null,it=null,ut=null,At=[],Bt=null,kt=null,Ot=0,Gt=0,$t=null,Ht=null,Vt=0,Wt=0,Xt=!1,er=!1,or=!1,Er=null,Ar=null,Br=!1,Ur=!0,Cr=0,Hr=0,Vr=()=>{const e=gr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(a={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){a.decoder=new VideoDecoder({output:function(e){if(ur(e.createImageBitmap))e.createImageBitmap().then((t=>{a.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:r,delay:ci.delay,ts:0},[r]),pr(e)}));else{a.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:t,delay:ci.delay,ts:0},[t]),pr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){a.reset(),a.decoder&&"closed"!==a.decoder.state&&(a.decoder.close(),a.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(a.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?pt:mt});a.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:P,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,s=null;const n=e.slice(5);t===Pe?(s=Dr(n),i={codec:s.codec,description:n}):t===Me&&(s=qr(n),i={codec:s.codec,description:n}),s&&s.codecWidth&&s.codecHeight&&(i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth),a.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),a.isEmitInfo=!0,a.offscreenCanvas=new OffscreenCanvas(s.codecWidth,s.codecHeight),a.offscreenCanvasCtx=a.offscreenCanvas.getContext("2d"));try{a.decoder.configure(i),a.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){a.hasInit=!1,a.isEmitInfo=!1,a.offscreenCanvas=null,a.offscreenCanvasCtx=null}});let Yr=function(){if(Br=!0,o)try{o.abort(),o=null,ci.debugLog("worker","abort success")}catch(e){o=null,ci.debugLog("worker","abort catch",e)}},ni={init(){ni.lastBuf=null,ni.vps=null,ni.sps=null,ni.pps=null,ni.streamType=null,ni.localDts=0,ni.pendingUnits={},ni.isSendSeqHeader=!1},destroy(){ni.lastBuf=null,ni.vps=null,ni.sps=null,ni.pps=null,ni.streamType=null,ni.localDts=0,ni.pendingUnits={},ni.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=ni.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");ni.handleVideoFrames(e)}else ni.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=ni.localDts;return ni.localDts=ni.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return ni.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{const t=Mr(e);t===We||t===Ve?ni.handleVideoH264Nalu(e):zr(t)&&i.push(e)})),1===i.length)ni.handleVideoH264Nalu(i[0]);else if(Or(i)){const e=Mr(i[0]),t=Nr(e);ni.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{ni.handleVideoH264Nalu(e)}))}else if(ni.streamType===Ne)if(ci._opt.nakedFlowH265DemuxUseNew){const t=ni.handleAddNaluStartCode(e),r=ni.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Jr(e);t===lt||t===ot||t===nt?ni.handleVideoH265Nalu(e):ei(t)&&i.push(e)})),1===i.length)ni.handleVideoH265Nalu(i[0]);else if(ri(i)){const e=Jr(i[0]),t=ti(e);ni.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{ni.handleVideoH265Nalu(e)}))}else Jr(e)===lt?ni.extractH265PPS(e):ni.handleVideoH265Nalu(e)},extractH264PPS(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{Rr(Mr(e))?ni.extractH264SEI(e):ni.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{Qr(Jr(e))?ni.extractH265SEI(e):ni.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{ni.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{ni.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=Mr(e);switch(t){case Ve:ni.sps=e;break;case We:ni.pps=e}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps){const e=Lr({sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(zr(t)){const r=Nr(t),i=ni.getNaluDts(),s=Ir(e,r);ni.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Lr({sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}},handleVideoH264NaluList(e,t,r){if(ni.isSendSeqHeader){const i=ni.getNaluDts(),s=Pr(e.reduce(((e,t)=>{const r=ir(e),i=ir(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);ni.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Jr(e);switch(t){case nt:ni.vps=e;break;case ot:ni.sps=e;break;case lt:ni.pps=e}if(ni.isSendSeqHeader){if(ni.vps&&ni.sps&&ni.pps){const e=Kr({vps:ni.vps,sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.vps=null,ni.sps=null,ni.pps=null}if(ei(t)){const r=ti(t),i=ni.getNaluDts(),s=Xr(e,r);ni.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(ni.vps&&ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Kr({vps:ni.vps,sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.vps=null,ni.sps=null,ni.pps=null}},handleVideoH265NaluList(e,t,r){if(ni.isSendSeqHeader){const i=ni.getNaluDts(),s=Zr(e.reduce(((e,t)=>{const r=ir(e),i=ir(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);ni.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!ni.streamVideoType)for(let t of e)if(ni.streamVideoType=hr(t),ni.streamVideoType)break;ni.streamVideoType?ni.streamVideoType===ze?ni.handleVideoH264Frames(e):ni.streamVideoType===Ne&&ni.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,s=!1;ni.pendingUnits.units&&(t=ni.pendingUnits.units,s=ni.pendingUnits.vcl,i=ni.pendingUnits.iFrame,ni.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Mr(a);let o=!1,d=e===Ye;e!==qe&&e!==Ye||(n=ni.parseVideo264Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(ni.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,s=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case We:ni.pps=e;break;case Ve:ni.sps=e;break;case Ke:s=e}if(zr(t)){const t=ir(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!ni.isSendSeqHeader&&ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Fr({sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps){const e=Fr({sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(i){const e=ni.getNaluDts(),t=Pr(i,r);if(ci._opt.isEmitSEI&&s){const t=rr(s,!1);postMessage({cmd:X,buffer:t.payload,ts:e},[t.payload.buffer])}ni.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,s=!1;ni.pendingUnits.units&&(t=ni.pendingUnits.units,s=ni.pendingUnits.vcl,i=ni.pendingUnits.iFrame,ni.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Jr(a);let o=!1,d=ti(e);ei(e)&&(n=ni.parseVideo265Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(ni.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,s=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case lt:ni.pps=e;break;case ot:ni.sps=e;break;case nt:ni.vps=e;break;case ft:case ht:s=e}if(ei(t)){const t=ir(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!ni.isSendSeqHeader&&ni.sps&&ni.pps&&ni.vps){ni.isSendSeqHeader=!0;const e=Kr({sps:ni.sps,pps:ni.pps,vps:ni.vps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null,ni.vps=null}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps&&ni.vps){const e=Kr({sps:ni.sps,pps:ni.pps,vps:ni.vps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null,ni.vps=null}if(i){const e=ni.getNaluDts(),t=Zr(i,r);if(ci._opt.isEmitSEI&&s){const t=rr(s,!0);postMessage({cmd:X,buffer:t.payload,ts:e},[t.payload.buffer])}ni.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{ni.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Hs(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Hs(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},ai={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){ai.mp4Box=$i.createFile(),ai.mp4Box.onReady=ai.onReady,ai.mp4Box.onError=ai.onError,ai.mp4Box.onSamples=ai.onSamples},initTransportDescarmber(){ai.transportDescarmber=new Wi},_getSeqHeader(e){const t=ai.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 r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(ai.isHevc=!0,ci.isHevc=!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){ci.debugLog(ai.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){ai.videoTrackId=t.id;const e=ai._getSeqHeader(t);e&&(ci.debugLog(ai.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),ai.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){ai.audioTrackId=r.id;const e=r.audio||{},t=jt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");ai.mp4Box.setExtractionOptions(r.id);const s=qt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(ai.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(s,0)}ai.mp4Box.start()},onError(e){ci.debugError(ai.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===ai.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&&ci.calcIframeIntervalTimestamp(i);let s=null;s=ai.isHevc?Zr(t,r):Pr(t,r),ci.decode(s,{type:ae,ts:i,isIFrame:r,cts:0})}ai.mp4Box.removeUsedSamples(e)}else if(e===ai.audioTrackId){if(ci._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),ci.decode(i,{type:ne,ts:r,isIFrame:!1,cts:0})}ai.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(ai.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);ai.transportDescarmber&&(t=ai.transportDescarmber.transport(t)),t.buffer.fileStart=ai.offset,ai.offset+=t.byteLength,ai.mp4Box.appendBuffer(t.buffer)},destroy(){ai.mp4Box&&(ai.mp4Box.stop(),ai.mp4Box.flush(),ai.mp4Box.destroy(),ai.mp4Box=null),ai.transportDescarmber&&(ai.transportDescarmber.destroy(),ai.transportDescarmber=null),ai.offset=0,ai.videoTrackId=null,ai.audioTrackId=null,ai.isHevc=!1}},oi={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);oi.extractNALu(t)},destroy(){oi.lastBuffer=new Uint8Array(0),oi.parsedOffset=0,oi.firstStartCodeOffset=0,oi.secondStartCodeOffset=0,oi.state="init",oi.hasInitVideoCodec=!1,oi.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(oi.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(oi.lastBuffer.length+e.length);for(t.set(oi.lastBuffer,0),t.set(new Uint8Array(e),oi.lastBuffer.length),oi.lastBuffer=t;;){if("init"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findFirstStartCode",oi.firstStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findSecondStartCode",oi.secondStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===oi.state){if(!(oi.lastBuffer.length-oi.parsedOffset>0))break;{let e,t,r=192&oi.lastBuffer[oi.parsedOffset];e=0==r?oi.secondStartCodeOffset-14:oi.secondStartCodeOffset;let i=0==(192&oi.lastBuffer[oi.firstStartCodeOffset+4]);if(i){if(oi.firstStartCodeOffset-14<0)return void ci.debugWarn(oi.LOG_NAME,"firstStartCodeOffset -14 is",oi.firstStartCodeOffset-14);oi.hasInitVideoCodec||(oi.hasInitVideoCodec=!0,ci.debugLog(oi.LOG_NAME,"setCodec"),hi.setCodec(Re,"")),t=oi.lastBuffer.subarray(oi.firstStartCodeOffset-14,e)}else t=oi.lastBuffer.subarray(oi.firstStartCodeOffset,e);let s=oi.getNaluDts();oi.hasInitVideoCodec?(postMessage({cmd:O,type:Ue,value:t.byteLength}),postMessage({cmd:O,type:xe,value:s}),je=s,hi.decode(t,i?1:0,s)):ci.debugWarn(oi.LOG_NAME,"has not init video codec"),oi.lastBuffer=oi.lastBuffer.subarray(e),oi.firstStartCodeOffset=0==r?14:0,oi.parsedOffset=oi.firstStartCodeOffset+4,oi.state="findFirstStartCode"}}}},getNaluDts(){let e=oi.localDts;return oi.localDts=oi.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Gs,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let s=0;s=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=ps(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let n=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==n),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==a||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===n||n===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[n]===Is){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:n,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[n]){let r=188-c,i=di.pmt_.pid_stream_type[n];n!==di.pmt_.common_pids.h264&&n!==di.pmt_.common_pids.h265&&n!==di.pmt_.common_pids.adts_aac&&n!==di.pmt_.common_pids.loas_aac&&n!==di.pmt_.common_pids.ac3&&n!==di.pmt_.common_pids.eac3&&n!==di.pmt_.common_pids.opus&&n!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[n]&&!0!==di.pmt_.timed_id3_pids[n]&&!0!==di.pmt_.synchronous_klv_pids[n]&&!0!==di.pmt_.asynchronous_klv_pids[n]||di.handlePESSlice(e,t+c,r,{pid:n,stream_type:i,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=s[0];if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t+1,Math.min(r,a));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?di.emitSectionSlices(n,i):di.clearSlices(n,i)}for(let o=1+a;o=n.expected_length&&di.clearSlices(n,i),o+=d.byteLength}}else if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t,Math.min(r,n.expected_length-n.total_length));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?di.emitSectionSlices(n,i):n.total_length>=n.expected_length&&di.clearSlices(n,i)}},handlePESSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=s[0]<<16|s[1]<<8|s[2];s[3];let a=s[4]<<8|s[5];if(i.payload_unit_start_indicator){if(1!==n)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${n}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new Rs,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let o=di.pes_slice_queues_[i.pid];o.slices.push(s),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=s.byteLength,o.expected_length>0&&o.expected_length===o.total_length?di.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,n=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==s){if(s<3+o)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=s-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Us:case xs:di.parseMP3Payload(c,r);break;case ks:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,n,e.pid,i):di.parsePESPrivateDataPayload(c,r,n,e.pid,i));break;case Ts:di.parseADTSAACPayload(c,r);break;case Cs:di.parseLOASAACPayload(c,r);break;case Ds:case Ls:break;case Fs:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,n,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,n,e.pid,i);break;case Ps:di.parseH264Payload(c,r,n,e.random_access_indicator);break;case Ms:di.parseH265Payload(c,r,n,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===ks){let r,n=6;r=0!==s?s:t.byteLength-n;let a=t.subarray(n,n+r);di.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,s=1&e[5],n=e[6];e[7];let a=null;if(1===s&&0===n)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=di.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===s&&0===n&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),di.pat_=a,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],s=e[3]<<8|e[4],n=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=di._initPmt(),r.program_number=s,r.version_number=n,di.program_pmt_map_[s]=r;else if(r=di.program_pmt_map_[s],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Kr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Fr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let s=di.media_info_;s.hasVideo=!0,s.width=t.codecWidth,s.height=t.codecHeight,s.fps=t.frameRate.fps,s.profile=t.profile,s.level=t.level,s.refFrames=e.ref_frames,s.chromaFormat=e.chroma_format_string,s.sarNum=t.sarRatio.width,s.sarDen=t.sarRatio.height,s.videoCodec=t.codec,s.hasAudio&&s.audioCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Jt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};di.audio_track_.samples.push(n),di.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(di.aac_last_incomplete_data_=n.getIncompleteData()),s&&(di.audio_last_sample_pts_=s)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Qt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame(lr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};di.audio_track_.samples.push(n),di.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(di.aac_last_incomplete_data_=n.getIncompleteData()),s&&(di.audio_last_sample_pts_=s)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],s=[11025,12e3,8e3,0],n=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(n){case 0:l=s[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ne};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new $s(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const s=qt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(s,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,s){let n=new Ns;if(n.pid=i,n.stream_id=s,n.len=e.byteLength,n.data=e,null!=t){let e=Math.floor(t/di.timescale_);n.pts=e}else n.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);n.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?di._doDecodeVideo({...e,payload:t}):e.type===ne&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Zr(t,e.isIFrame):Pr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;vr(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ne,ts:e.dts,isIFrame:!1,cts:0})}},li=null;wr()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new ms,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!br(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===vt,isStateClosed:()=>li.getState()===bt,isStateEnded:()=>li.getState()===yt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,St,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,wt,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(br(li.hasInit))if(r&&e[1]===xt){const i=15&e[0];if(i===Me&&br(ci._opt.supportMSEDecodeHevc))return void li.emitError(Fe.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:P,code:i});const s=new Uint8Array(e);postMessage({cmd:M,buffer:s,codecId:i},[s.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Pe?r=Dr(e.slice(5)):t===Me&&(r=jr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Fe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(yr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eE,_decodeConfigurationRecord(e,t,r,i){let s=e.slice(5),n={};if(i===Pe?n=Dr(s):i===Me&&(n=qr(s)),li.videoInfo.width=n.codecWidth,li.videoInfo.height=n.codecHeight,0===n.codecWidth&&0===n.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(n)),li.emitError(Fe.mediaSourceDecoderConfigurationError,`width is ${0===n.codecWidth} and height is ${n.codecHeight}`),!1;const a={id:Ft,type:"video",timescale:1e3,duration:0,avcc:s,codecWidth:n.codecWidth,codecHeight:n.codecHeight,videoType:n.videoType},o=_s.generateInitSegment(a);li.isAvc=i===Pe;let d=n.codec;return li.videoMimeType=d?`video/mp4; codecs="${n.codec}"`:li.isAvc?_t:gt,postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),li._initSourceBuffer(),li.appendBuffer(o.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,s=r===He,n=r===Oe;if(br(n||s))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Fe.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Yt(e)){if(o=Zt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!s)return!1;if(o=Bs(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;s&&br(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=_s.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),br(li.isAudioInitInfo)&&(Ar=r===Oe?i?16:8:0===i?8:16,postMessage({cmd:L,code:r}),postMessage({cmd:D,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:Ar}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=n,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Fe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,s){let n=e.slice(5),a=n.byteLength;if(0===a)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=o,d=!0);const l=o-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(_s.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=_s.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),li.appendBuffer(s.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Ft,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=a,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=n,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),s=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(_s.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=_s.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),li.appendAudioBuffer(s.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=It,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=s,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),br(li.getSourceBufferUpdating())&&li.isStateOpen()&&br(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),br(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&br(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Fe.mediaSourceAudioInitTimeout)}),1e3)));if(br(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(br(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:s,end:t})}}else n=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:s,end:t})}}else nli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&br(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&br(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&br(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&br(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(br(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Ct,_opt:Vr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Qe,wasmDecodeDelay:je-Je});postMessage({cmd:O,type:Te,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ne)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Qe=!1,ci.delay=t-r):(Qe=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ne)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===ae&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ne?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===ae&&a.decode?a.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===s.length)return;const t=e.ts,i=s[0],n=e.type===ae&&yr(e.payload);if(br(r))n&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${n}`),s.shift(),ci.doDecode(i));else{const r=i.ts-t,a=i.type===ne&&e.type===ae;(r<=20||a||n)&&(ci.debugLog("worker",`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 ${a} and isVideoSqeHeader is ${n}`),s.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===y,t=ci._opt.playType===v;if(ni.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),a&&ci._opt.useWCS&&ci.useOffscreen()&&a.init(),br(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(s.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${s.length}`);if(ci.dropping){for(r=s.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${s.length}`);!r.isIFrame&&s.length;)r=s.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;s.length;)r=s.shift(),ci.doDecode(r);else if(r=s[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),s.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:$})):(s.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;s.length;){if(r=s[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${s.length}`);break}s.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();tt||(tt=e);const r=e-tt;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),tt=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(br(ci._opt.checkFirstIFrame)&&(Se=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:re,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;s.length&&(e=s.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Yr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Br=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&br(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,tt=null,Qe=!1,je=0,Je=0,a&&(a.destroy&&a.destroy(),a=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Vr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),s=[],n=[],u&&(u.close(),u=null),w=null,S=null,U=!1,we=!1,Se=!1,Xt=!1,er=!1,or=!1,Er=null,At=[],Ot=0,Gt=0,it=null,ut=null,$t=null,Ht=null,Ar=null,Vt=0,Wt=0,Bt=null,kt=null,ci.fetchStatus=Ct,Ur=!0,ni.destroy(),ai.destroy(),oi.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===ne&&Yt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&yr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:ee,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===b)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:R,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ne&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Kt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===ae){if(Vt>0){const e=t.ts-Ht,r=Vt+Vt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Vt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Wt}`),Ht-t.ts>E&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Vt=0),ci._opt.isDropSameTimestampGop&&br(t.isIFrame)&&Se)){const e=ci.hasIframeInBufferList(),t=br(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),vr(ci._opt.checkFirstIFrame)&&vr(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:te}))))}Ht>0&&(Vt=t.ts-Ht),Wt=e.byteLength,Ht=t.ts}if(Se){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${s.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;s.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${s.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return s.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>s.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return s.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return s.forEach((t=>{t.type===ne&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?ni.lastBuf&&(e=ni.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&ai.mp4Box&&(e=ai.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=dr((e=>{postMessage({cmd:O,type:Ae,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(ai.listenMp4Box(),ci._opt.isFmp4Private&&ai.initTransportDescarmber()),t.protocol===m){t.isFlv&&(u=new xr(ci.demuxFlv())),o=new AbortController;const r=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(vr(Br))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Ct,void e.body.cancel();if(!_r(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Yr(),void postMessage({cmd:O,type:Fe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:ke}),fr())ci.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):vr(Br)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Lt,void Yr()):void("string"!=typeof e?(ci.fetchStatus=Dt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Lt,Yr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:_,msg:"fetch done"})):postMessage({cmd:O,type:Ce})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Ut?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:s}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Lt,Yr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:_,msg:"fetch done"})):postMessage({cmd:O,type:Ce}))):o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):vr(Br)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Lt,void Yr()):void("string"!=typeof s?(ci.fetchStatus=Dt,l(s.byteLength),t.isFlv?u.write(s):t.isFmp4?ci.demuxFmp4(s):t.isMpeg4?ci.demuxMpeg4(s):t.isTs?ci.demuxTs(s):t.isNakedFlow&&ci.demuxNakedFlow(s),i()):ci.debugWarn("worker",`fetchNext().then() and value "${s}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Ut?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Ut?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===p&&(t.isFlv&&(u=new xr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:ke}),postMessage({cmd:O,type:Le})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),vr(Br)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:g,msg:e.code})):postMessage({cmd:O,type:Ce}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):vr(Br)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Fe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 oe:if(a.byteLength>0){let e=a;vr(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(a)),ci.decode(e,{type:ne,ts:n})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case de:if(a.byteLength>=6){const e=a[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(a,n);else{const e=15&a[0];let t=a[0]>>4===Tt;const i=e===Me;if(br(t)&&vr(Sr(a,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&yr(a)&&null===ci.isHevc){const e=15&a[0];ci.isHevc=e===Me,Er=sr(a,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Er}`)}t&&ci.calcIframeIntervalTimestamp(n),ci.isPlayer&&ci.calcNetworkDelay(n),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let s=r[0],o=ci.cryptoPayload(a,t);ci.decode(o,{type:ae,ts:n,isIFrame:t,cts:s})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case le:postMessage({cmd:Z,buffer:a},[a.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ne?ci._opt.hasAudio&&(postMessage({cmd:O,type:Be,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&ci._opt.hasVideo&&(postMessage({cmd:O,type:Ue,value:e.byteLength}),postMessage({cmd:O,type:xe,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Oi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?rn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):ds(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=fs(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Oe&&(t=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,s=e[0]>>1&1;if(Ar=r===Oe?s?16:8:0===s?8:16,ui&&ui.setCodec||!br(i))if(Yt(e)||r===Ge||r===$e||r===He){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const s=r===Oe?e.slice(2):new Uint8Array(0);if(i){if(r===He)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,s);r===Oe&&postMessage({cmd:I,buffer:s},[s.buffer]),we=!0,r!==Oe&&(r===He?(ci.mp3Demuxer||(ci.mp3Demuxer=new cs(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:H})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(vr(r)&&vr(ci._opt.mseDecodeAudio))postMessage({cmd:N,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(we){if(Yt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===He?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Oe?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!br(i))if(yr(e))if(r===Pe||r===Me){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Pe&&ci._opt.useSIMD){const e=Dr(t);if(e.codecWidth>A||e.codecHeight>A)return postMessage({cmd:q,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const s=new Uint8Array(e);U=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:P,code:r}),postMessage({cmd:M,buffer:s,codecId:r},[s.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,s){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,s,n);else if(vr(r))postMessage({cmd:z,payload:e,isIFrame:s,ts:t,cts:n,delay:ci.delay},[e.buffer]);else if(U)if(!Se&&s&&(Se=!0),Se){if(s&&yr(e)){const t=15&e[0];let r={};t===Pe?r=Dr(e.slice(5)):t===Me&&(r=jr(e)),r.codecWidth&&r.codecHeight&&w&&S&&(r.codecWidth!==w||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${w}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),er=!0,postMessage({cmd:W,value:`width: ${w}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(er)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(or)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(yr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${s.length}, need clear is ${e}`),e&&(s=[]),ci.isPlayer&&(ci.resetAllDelay(),vr(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:$}))),vr(ci._opt.checkFirstIFrame)&&br(r)&&(Se=!1)},dropBuffer$2:function(){if(s.length>0){let e=s.findIndex((e=>vr(e.isIFrame)&&e.type===ae));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:$});const t=s.length;s=s.slice(e);const r=s.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${s.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===s.length&&(ci.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 ne:ci.decode(new Uint8Array(e,5),{type:ne,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),s=i[0];if(ci._isEnhancedH265Header(s))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),yr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Me}ci.isPlayer&&ci.calcNetworkDelay(r),n[0]=i[4],n[1]=i[3],n[2]=i[2],n[3]=0;let s=n[0],a=ci.cryptoPayload(i,e);ci.decode(a,{type:ae,ts:r,isIFrame:e,cts:s})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){ni.dispatch(e)},demuxFmp4:function(e){ai.dispatch(e)},demuxMpeg4:function(e){oi.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=br(d),s===Mt){if(i===Nt){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),Er=sr(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Er}`),ci.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(s===Rt){let r=e,s=0;const n=i===Nt;n&&ci.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0],r=Zr(e.slice(8),n),r=ci.cryptoPayload(r,n),ci.decode(r,{type:ae,ts:t,isIFrame:n,cts:s}))}else if(s===zt){const r=i===Nt;r&&ci.calcIframeIntervalTimestamp(t);let s=Zr(e.slice(5),r);s=ci.cryptoPayload(s,r),ci.decode(s,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Pt)===Pt},findSei:function(e,t){let r=4;cr(Er)&&(r=Er),tr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===ft||r===ht),s=br(ci.isHevc)&&r===Ke;if(i||s){const r=rr(e,ci.isHevc);postMessage({cmd:X,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Se&&e>0))return;null===it?(it=e,ut=nr()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===y&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${it} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:De,value:i}))},calcIframeIntervalTimestamp:function(e){null===$t?$t=e:$t=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&vr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){br(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Xt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),Xt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:P,code:e}),postMessage({cmd:k,w:t,h:r}),w=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:D,sampleRate:t,channels:r,depth:Ar}),Gt=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=w*S*3/2;let s=e.HEAPU8.subarray(t,t+i),n=new Uint8Array(s);if(Bt=null,Je=r,ci.useOffscreen())try{if(Xt)return;ci.webglObj.renderYUV(w,S,n);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:T,output:n,delay:ci.delay,ts:r},[n.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ci._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(Ot){if(!(s>=(r=d-Ot)))return Ot+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==Gt&&(n[1]=Float32Array.of(...n[1],...a[1])));At[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==Gt&&(At[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer))),o=r,s-=r}for(Ot=s;Ot>=d;Ot-=d)At[0]=a[0].slice(o,o+=d),2==Gt&&(At[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer)));Ot&&(n[0]=a[0].slice(o),2==Gt&&(n[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===Bt&&(Bt=nr());const t=nr(),r=ar(kt>0?2*kt:5e3,1e3,5e3),i=t-Bt;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${kt} and diff is ${i} and maxDiff is ${r}\n and replay`),or=!0,postMessage({cmd:j}))},sendWebsocketMessage:function(e){d?d.readyState===Ie?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:H})},postStreamToMain(e,t){postMessage({cmd:K,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),vr(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,w=e,S=t,postMessage({cmd:k,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Gt=e,postMessage({cmd:D,sampleRate:t,channels:e,depth:Ar})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ci._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(Ot){if(!(s>=(r=d-Ot)))return Ot+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==Gt&&(n[1]=Float32Array.of(...n[1],...a[1])));At[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==Gt&&(At[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer))),o=r,s-=r}for(Ot=s;Ot>=d;Ot-=d)At[0]=a[0].slice(o,o+=d),2==Gt&&(At[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer)));Ot&&(n[0]=a[0].slice(o),2==Gt&&(n[1]=a[1].slice(o))),a=[]},draw:function(t,r,i,s){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const n=e.HEAPU8.subarray(r,r+Cr),a=e.HEAPU8.subarray(i,i+Hr),o=e.HEAPU8.subarray(s,s+Hr),d=new Uint8Array(Cr+Hr+Hr);if(d.set(n),d.set(a,Cr),d.set(o,Cr+Hr),Bt=null,Je=t,ci.useOffscreen())try{if(Xt)return;ci.webglObj.renderYUV(w,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:T,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:x}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ce:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case ue:ci.pushBuffer(t.buffer,t.options);break;case he:ci.decodeAudio(t.buffer,t.ts);break;case fe:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:ci.clearBuffer(t.needClear);break;case ge:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case pe:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&br(t.options.isVideoInited)&&(Ur=t.options.isVideoInited),ci.close();break;case me:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case ye:ci.sendWebsocketMessage(t.message);break;case ve:li.$video.currentTime=Number(t.message);break;case be:ci.updatePlaybackIsPause(t.isPause)}}}(e,e,!0)}))})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,s=t(e),n=(r="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,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,s;(s=e).ready=new Promise(((e,r)=>{t=e,i=r})),(s=void 0!==s?s:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,a,o,d=Object.assign({},s),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return s.locateFile?s.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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-hard.js",document.baseURI).href)),n=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,s)=>{e?r(e):t(i?s.buffer:s)}))},!s.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),s.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=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,v,b=s.print||console.log.bind(console),w=s.printErr||console.error.bind(console);Object.assign(s,d),d=null,s.arguments&&s.arguments,s.thisProgram&&(l=s.thisProgram),s.quit&&s.quit,s.wasmBinary&&(y=s.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,B,U,x,k,T,C=!1;function D(e,t){e||j(t)}function L(){var e=v.buffer;s.HEAP8=S=new Int8Array(e),s.HEAP16=A=new Int16Array(e),s.HEAPU8=E=new Uint8Array(e),s.HEAPU16=B=new Uint16Array(e),s.HEAP32=U=new Int32Array(e),s.HEAPU32=x=new Uint32Array(e),s.HEAPF32=k=new Float32Array(e),s.HEAPF64=T=new Float64Array(e)}var F=[],I=[],P=[];function M(){if(s.preRun)for("function"==typeof s.preRun&&(s.preRun=[s.preRun]);s.preRun.length;)N(s.preRun.shift());se(F)}function R(){s.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,se(I)}function z(){if(s.postRun)for("function"==typeof s.postRun&&(s.postRun=[s.postRun]);s.postRun.length;)G(s.postRun.shift());se(P)}function N(e){F.unshift(e)}function O(e){I.unshift(e)}function G(e){P.unshift(e)}var $=0,H=null;function V(e){$++,s.monitorRunDependencies&&s.monitorRunDependencies($)}function W(e){if($--,s.monitorRunDependencies&&s.monitorRunDependencies($),0==$&&H){var t=H;H=null,t()}}function j(e){s.onAbort&&s.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:si};function t(e,t){return ni=e.exports,v=ni.E,L(),Ft=ni.H,O(ni.F),W(),ni}if(V(),s.instantiateWasm)try{return s.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}s.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var se=e=>{for(;e.length>0;)e.shift()(s)};function ne(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,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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(ci(this.get_type()))return x[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}s.noExitRuntime;var ae=(e,t,r)=>{throw new ne(e).init(t,r),e},oe=e=>(U[oi()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;o{for(var i=t+r,s=t;e[s]&&!(s>=i);)++s;if(s-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,s=new Array(i),n=_e(e,s,0,s.length);return t&&(s.length=n),s}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,s){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var n=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var s=Te.createNode(e,t,r,i);return Te.isDir(s.mode)?(s.node_ops=we.ops_table.dir.node,s.stream_ops=we.ops_table.dir.stream,s.contents={}):Te.isFile(s.mode)?(s.node_ops=we.ops_table.file.node,s.stream_ops=we.ops_table.file.stream,s.usedBytes=0,s.contents=null):Te.isLink(s.mode)?(s.node_ops=we.ops_table.link.node,s.stream_ops=we.ops_table.link.stream):Te.isChrdev(s.mode)&&(s.node_ops=we.ops_table.chrdev.node,s.stream_ops=we.ops_table.chrdev.stream),s.timestamp=Date.now(),e&&(e.contents[t]=s,e.timestamp=s.timestamp),s},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=Te.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,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var s in i.contents)throw new Te.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var s=i?"":`al ${e}`;a(e,(r=>{D(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),s&&W()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),s&&V()},Ee=(e,t,r,i,s,n)=>{Te.createDataFile(e,t,r,i,s,n)},Ae=s.preloadPlugins||[],Be=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var s=!1;return Ae.forEach((n=>{s||n.canHandle(t)&&(n.handle(e,t,r,i),s=!0)})),s},Ue=(e,t,r,i,s,n,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,s,d),n&&n(),W()}Be(r,c,u,(()=>{a&&a(),W()}))||u(r)}V(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},xe=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,s="/",n=0;n40)throw new Te.ErrnoError(32)}}return{path:s,node:i}},getPath(e){for(var t;;){if(Te.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)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),s=Te.nameTable[i];s;s=s.name_next){var n=s.name;if(s.parent.id===e.id&&n===t)return s}return Te.lookup(e,t)},createNode(e,t,r,i){var s=new Te.FSNode(e,t,r,i);return Te.hashAddNode(s),s},destroyNode(e){Te.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.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=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return Te.lookupNode(e,t),20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var s=Te.nodePermissions(e,"wx");if(s)return s;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.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),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function s(e){return Te.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&&Te.root)throw new Te.ErrnoError(10);if(!s&&!n){var a=Te.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,s?Te.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,s=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;s.includes(t.mount)&&Te.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=Te.lookupPath(e,{parent:!0}).node,s=de.basename(e);if(!s||"."===s||".."===s)throw new Te.ErrnoError(28);var n=Te.mayCreate(i,s);if(n)throw new Te.ErrnoError(n);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,s,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.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,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),s=Te.mayCreate(r,i);if(s)throw new Te.ErrnoError(s);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,s=de.dirname(e),n=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,a),c=ue.relative(e,n);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,s)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,o)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,a,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,o,u):Te.mayCreate(i,o))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!0);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),s=Te.mayDelete(t,r,!1);if(s)throw new Te.ErrnoError(s);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?Te.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var s;if(!(s="string"==typeof e?Te.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);s.node_ops.setattr(s,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;if(!(r="string"==typeof e?Te.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?xe(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var n=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),n=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!n){var a=Te.mayOpen(i,t);if(a)throw new Te.ErrnoError(a)}512&t&&!n&&Te.truncate(i,0),t&=-131713;var o=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!s.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),o},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var n=void 0!==s;if(n){if(!e.seekable)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var a=void 0!==s;if(a){if(!e.seekable)throw new Te.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(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,s){if(0!=(2&i)&&0==(2&s)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,s)},msync:(e,t,r,i,s)=>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 Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Te.open(e,t.flags),s=Te.stat(e).size,n=new Uint8Array(s);return Te.read(i,n,0,s,0),"utf8"===t.encoding?r=fe(n,0):"binary"===t.encoding&&(r=n),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var s=new Uint8Array(me(t)+1),n=_e(t,s,0,s.length);Te.write(i,s,0,n,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,s)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),s={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return s.parent=s,s}},t}},{},"/proc/self/fd")},createStandardStreams(){s.stdin?Te.createDevice("/dev","stdin",s.stdin):Te.symlink("/dev/tty","/dev/stdin"),s.stdout?Te.createDevice("/dev","stdout",null,s.stdout):Te.symlink("/dev/tty","/dev/stdout"),s.stderr?Te.createDevice("/dev","stderr",null,s.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),s.stdin=e||s.stdin,s.stdout=t||s.stdout,s.stderr=r||s.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=Te.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 c(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 Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,s)=>(Te.forceLoadFile(d),c(e,t,r,i,s)),l.mmap=(e,t,r,i,s)=>{Te.forceLoadFile(d);var n=be();if(!n)throw new Te.ErrnoError(48);return c(e,S,n,t,r),{ptr:n,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;if(i=-100===e?Te.cwd():De.getStreamFromFD(e).path,0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}U[r>>2]=i.dev,U[r+4>>2]=i.mode,x[r+8>>2]=i.nlink,U[r+12>>2]=i.uid,U[r+16>>2]=i.gid,U[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+24>>2]=K[0],U[r+28>>2]=K[1],U[r+32>>2]=4096,U[r+36>>2]=i.blocks;var s=i.atime.getTime(),n=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+40>>2]=K[0],U[r+44>>2]=K[1],x[r+48>>2]=s%1e3*1e3,K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+56>>2]=K[0],U[r+60>>2]=K[1],x[r+64>>2]=n%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+72>>2]=K[0],U[r+76>>2]=K[1],x[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+88>>2]=K[0],U[r+92>>2]=K[1],0},doMsync(e,t,r,i,s){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var n=E.slice(e,e+r);Te.msync(t,n,s,r,i)},varargs:void 0,get(){var e=U[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Le(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((s=De.get())<0)return-28;for(;Te.streams[s];)s++;return Te.createStream(i,s).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var s=De.get();return i.flags|=s,0;case 5:return s=De.getp(),A[s+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var s=i?De.get():0;return Te.open(t,r,s).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Ie,Pe,Me,Re=(e,t,r,i,s)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ie=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Ie[E[r++]];return t},Oe={},Ge={},$e={},He=e=>{throw new Pe(e)},Ve=e=>{throw new Me(e)},We=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ve("Mismatched type converter count");for(var s=0;s{Ge.hasOwnProperty(e)?s[t]=Ge[e]:(n.push(e),Oe.hasOwnProperty(e)||(Oe[e]=[]),Oe[e].push((()=>{s[t]=Ge[e],++a===n.length&&i(s)})))})),0===n.length&&i(s)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Ge.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Ge[e]=t,delete $e[e],Oe.hasOwnProperty(e)){var s=Oe[e];delete Oe[e],s.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},st={},nt=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{s.getInheritedInstanceCount=nt,s.getLiveInheritedInstances=at,s.flushPendingDeletes=dt,s.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||Ve("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ve("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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 s(){return this.isSmartPointer?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var n,a=this.registeredClass.getActualType(t),o=st[a];if(!o)return s.call(this);n=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,n.registeredClass);return null===d?s.call(this):this.isSmartPointer?pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d,smartPtrType:this,smartPtr:e}):pt(n.registeredClass.instancePrototype,{ptrType:n,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var 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},clone(){if(this.$$.ptr||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{s.hasOwnProperty(e)?((void 0===r||void 0!==s[e].overloadTable&&void 0!==s[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(s,e,e),s.hasOwnProperty(r)&&He(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),s[e].overloadTable[r]=t):(s[e]=t,void 0!==r&&(s[e].numArguments=r))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Bt(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=[]}var Ut=(e,t,r)=>{for(;t!==r;)t.upcast||He(`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&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=Ut(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,nr.toHandle((()=>s.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(x[e>>2])}var Dt=()=>{Object.assign(Lt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Lt(e,t,r,i,s,n,a,o,d,l,c){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=c,s||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=xt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,It,Pt=(e,t,r)=>{s.hasOwnProperty(e)||Ve("Replacing nonexistant public symbol"),void 0!==s[e].overloadTable&&void 0!==r?s[e].overloadTable[r]=t:(s[e]=t,s[e].argCount=r)},Mt=(e,t,r)=>{var i=s["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),Ot=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Gt=(e,t)=>{var r=(e=Ne(e)).includes("j")?Ot(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},$t=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=Ne(t);return ai(t),r},Vt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Ge[t]||($e[t]?$e[t].forEach(e):(r.push(t),i[t]=!0))})),new It(`${e}: `+r.map(Ht).join([", "]))},Wt=(e,t,r,i,s,n,a,o,d,l,c,u,h)=>{c=Ne(c),n=Gt(s,n),o&&(o=Gt(a,o)),l&&(l=Gt(d,l)),h=Gt(u,h);var f=At(c);wt(f,(function(){Vt(`Cannot construct ${c} due to unbound types`,[i])})),We([e,t,r],i?[i]:[],(function(t){var r,s;t=t[0],s=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Pe("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Pe(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Pe(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(s,{constructor:{value:a}});a.prototype=d;var u=new Bt(c,a,d,h,r,n,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Lt(c,u,!0,!1,!1),m=new Lt(c+"*",u,!1,!1,!1),_=new Lt(c+" const*",u,!1,!0,!1);return st[e]={pointerType:m,constPointerType:_},Pt(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,s=e.apply(i,t);return s instanceof Object?s:i}function Kt(e,t,r,i,s,n){var a=t.length;a<2&&He("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+=(c||n?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);s=Gt(i,s),We([],[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 Pe(`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]=()=>{Vt(`Cannot construct ${e.name} due to unbound types`,a)},We([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,s,n),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,s,n,a,o,d)=>{var l=jt(r,i);t=Ne(t),t=Zt(t),n=Gt(s,n),We([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function s(){Vt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=s):(bt(c,t,i),c[t].overloadTable[r-2]=s),We([],l,(function(s){var o=Kt(i,s,e,n,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,s.count_emval_handles=ir},nr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function ar(e){return this.fromWireType(U[e>>2])}var or=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=nr.toValue(e);return rr(e),t},toWireType:(e,t)=>nr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>B[e>>1];case 4:return r?e=>U[e>>2]:e=>x[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,s)=>{t=Ne(t);var n=e=>e;if(0===i){var a=32-8*r;n=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:n,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function s(e){var t=x[e>>2],r=x[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:s,argPackAdvance:Ke,readValueFromPointer:s},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=x[e>>2],s=e+4;if(r)for(var n=s,a=0;a<=i;++a){var o=s+a;if(a==i||0==E[o]){var d=Ce(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)pr(t,a,i+1);else if(s)for(var o=0;o255&&(ai(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,s=i+t/2;!(i>=s)&&B[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var s=U[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},wr=(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)),U[t>>2]=a,(t+=4)+4>s)break}return U[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,s,n,a,o;r=Ne(r),2===t?(i=gr,s=yr,a=vr,n=()=>B,o=1):4===t&&(i=br,s=wr,a=Sr,n=()=>x,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,s=x[e>>2],a=n(),d=e+4,l=0;l<=s;++l){var c=e+4+l*t;if(l==s||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ai(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var n=a(i),d=li(4+n+t);return x[d>>2]=n>>o,s(i,d+4,n+t),null!==e&&e.push(ai,d),d},argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction(e){ai(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Br={},Ur=e=>{var t=Br[e];return void 0===t?Ne(e):t},xr=[],kr=(e,t,r,i,s)=>(e=xr[e])(t=nr.toValue(t),t[r=Ur(r)],i,s),Tr=e=>{var t=xr.length;return xr.push(e),t},Cr=(e,t)=>{var r=Ge[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Lr=(e,t,r)=>{var i=[],s=e.toWireType(i,r);return i.length&&(x[t>>2]=nr.toHandle(i)),s},Fr=(e,t,r)=>{var i=Dr(e,t),s=i.shift();e--;var n="return function (obj, func, destructorsRef, args) {\n",a=0,o=[];0===r&&o.push("obj");for(var d=["retType"],l=[s],c=0;ce.name)).join(", ")}) => ${s.name}>`;return Tr(vt(h,u))},Ir=e=>{var t=nr.toValue(e);qt(t),rr(e)},Pr=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),Nr=e=>{j("OOM")},Or=e=>{E.length,Nr()},Gr={},$r=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:$r()};for(var t in Gr)void 0===Gr[t]?delete e[t]:e[t]=Gr[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Vr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Wr=(e,t)=>{var r=0;return Hr().forEach(((i,s)=>{var n=t+r;x[e+4*s>>2]=n,Vr(i,n),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();x[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),x[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+8>>2]=K[0],U[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+16>>2]=K[0],U[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.read(e,S,a,o,i);if(d<0)return-1;if(s+=d,d>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,s){var n=Pr(t,r);try{if(isNaN(n))return 61;var a=De.getStreamFromFD(e);return Te.llseek(a,n,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[s>>2]=K[0],U[s+4>>2]=K[1],a.getdents&&0===n&&0===i&&(a.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var s=0,n=0;n>2],o=x[t+4>>2];t+=8;var d=Te.write(e,S,a,o,i);if(d<0)return-1;s+=d,void 0!==i&&(i+=d)}return s};function Qr(e,t,r,i){try{var s=De.getStreamFromFD(e),n=Jr(s,t,r);return x[i>>2]=n,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=ei,Te.createPreloadedFile=Ue,Te.staticInit(),ze(),Pe=s.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=s.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),It=s.UnboundTypeError=$t(Error,"UnboundTypeError"),Qt(),sr();var ii,si={o:ae,A:Le,s:Fe,q:Re,C:Xe,D:Wt,y:Xt,h:Jt,B:or,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:kr,g:rr,e:Fr,d:Ir,a:Mr,i:Rr,w:zr,r:Or,u:Wr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},ni=ie(),ai=e=>(ai=ni.G)(e),oi=()=>(oi=ni.I)(),di=e=>(di=ni.J)(e),li=e=>(li=ni.K)(e),ci=e=>(ci=ni.M)(e);function ui(){function e(){ii||(ii=!0,s.calledRun=!0,C||(R(),t(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),z()))}$>0||(M(),$>0||(s.setStatus?(s.setStatus("Running..."),setTimeout((function(){setTimeout((function(){s.setStatus("")}),1),e()}),1)):e()))}if(s.dynCall_viiijj=(e,t,r,i,n,a,o,d)=>(s.dynCall_viiijj=ni.N)(e,t,r,i,n,a,o,d),s.dynCall_jij=(e,t,r,i)=>(s.dynCall_jij=ni.O)(e,t,r,i),s.dynCall_jii=(e,t,r)=>(s.dynCall_jii=ni.P)(e,t,r),s.dynCall_jiji=(e,t,r,i,n)=>(s.dynCall_jiji=ni.Q)(e,t,r,i,n),H=function e(){ii||ui(),ii||(H=e)},s.preInit)for("function"==typeof s.preInit&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return ui(),e.ready}),a=1e-6,o="undefined"!=typeof Float32Array?Float32Array:Array;function d(){var e=new o(16);return o!=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 l(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 c,u=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 h(e,t,r){var i=new o(3);return i[0]=e,i[1]=t,i[2]=r,i}c=new o(3),o!=Float32Array&&(c[0]=0,c[1]=0,c[2]=0);var f=(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 i={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")}},s=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}}(),n=p(),o=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,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 n=d();u(n,-1,1,-1,1,.1,100);const p=d();l(p);const m=d();!function(e,t,r,i){var s,n,o,d,c,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Vt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Wt=Vt,jt=Vt;function qt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Yt(e){return Kt(e)&&e[1]===xt}function Kt(e){return e[0]>>4===Oe}const Xt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Zt(e){let t=new Uint8Array(e),r=null,i=0,s=0,n=0,a=null;if(i=s=t[0]>>>3,n=(7&t[0])<<1|t[1]>>>7,n<0||n>=Xt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Xt[n],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Ot.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?n>=6?(i=5,r=new Array(4),a=n-3):(i=2,r=new Array(2),a=n):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=n):(i=5,a=n,r=new Array(4),n>=6?a=n-3:1===d&&(i=2,r=new Array(2),a=n)),r[0]=i<<3,r[0]|=(15&n)>>>1,r[1]=(15&n)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+s}}class Jt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,s=(6&e[r+1])>>>1,n=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===n?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==s)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=Wt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(31&t[i+1])<<8|t[i+2];if(i+3+s>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let n=new Ht(t.subarray(i+3,i+3+s)),a=null;if(n.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+s),n.destroy();continue}a=e}else{let e=n.readBool();if(e&&n.readBool()){console.error("audioMuxVersionA is Not Supported"),n.destroy();break}if(e&&this.getLATMValue(n),!n.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),n.destroy();break}if(0!==n.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),n.destroy();break}if(0!==n.readBits(4)){console.error("more than 2 numProgram Not Supported"),n.destroy();break}if(0!==n.readBits(3)){console.error("more than 2 numLayer Not Supported"),n.destroy();break}let t=e?this.getLATMValue(n):0,r=n.readBits(5);t-=5;let i=n.readBits(4);t-=4;let s=n.readBits(4);t-=4,n.readBits(3),t-=3,t>0&&n.readBits(t);let o=n.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),n.destroy();break}n.readByte();let d=n.readBool();if(d)if(e)this.getLATMValue(n);else{let e=0;for(;;){e<<=8;let t=n.readBool();if(e+=n.readByte(),!t)break}console.log(e)}n.readBool()&&n.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=Wt[a.sampling_freq_index],a.channel_config=s,a.other_data_present=d}let o=0;for(;;){let e=n.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function tr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 rr(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++;return{payload:e.subarray(i),type:s,size:n,uuid:a}}function ir(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 sr(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 nr(){return(new Date).getTime()}function ar(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function or(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function dr(e){let t=0,r=or();return i=>{if(s=i,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=i;const n=or(),a=n-r;a>=1e3&&(e(t/a*1e3),r=n,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){}})();function lr(e){return null==e}function cr(e){return!lr(e)}function ur(e){return"function"==typeof e}function hr(e){let t=null,r=31&e[0];return r!==Ve&&r!==We||(t=ze),t||(r=(126&e[0])>>1,r!==nt&&r!==ot&&r!==lt||(t=Ne)),t}function fr(){return"undefined"!=typeof WritableStream}function pr(e){e.close()}function mr(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 _r(e){return e.ok&&e.status>=200&&e.status<=299}function gr(){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}(U)}function yr(e){return e[0]>>4===kt&&e[1]===xt}function vr(e){return!0===e||"true"===e}function br(e){return!0!==e&&"true"!==e}function wr(){return!!(Ot.Worker&&Ot.MediaSource&&"canConstructInDedicatedWorker"in Ot.MediaSource&&!0===Ot.MediaSource.canConstructInDedicatedWorker)}function Sr(e,t){const r=tr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===Qe||r===tt||r===it)||br(t)&&r===je)&&(i=!0)})),i}var Er=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 Ar=Symbol(32),Br=Symbol(16),Ur=Symbol(8);class xr{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 Er(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(Ar)}readU16(){return this.read(Br)}readU8(){return this.read(Ur)}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===Ar){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Br){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Ur){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}}xr.U32=Ar,xr.U16=Br,xr.U8=Ur;class kr{constructor(e){this.log=function(t){if(e._opt.debugLevel==w){const n=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;s1?r-1:0),s=1;s1?i-1:0),n=1;n=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=Tr._ebsp2rbsp(e),r=new Ht(t);r.readByte();let i=r.readByte();r.readByte();let s=r.readByte();r.readUEG();let n=Tr.getProfileString(i),a=Tr.getLevelString(s),o=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,B=2*e,S=A/B}}let U=1;1===b&&1===w||(U=b/w);let x=0,k=0;if(0===o)x=1,k=2-m;else{x=3===o?1:2,k=(1===o?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*x,C-=(y+v)*k;let D=Math.ceil(T*U);return r.destroy(),r=null,{profile_string:n,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Tr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:B,fps_num:A},sar_ratio:{width:b,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=Tr._ebsp2rbsp(e),s=new Ht(i);s.readByte();let n=s.readByte();s.readByte();let a=s.readByte();s.readUEG();let o=Tr.getProfileString(n),d=Tr.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=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&&(c=u[l]),h=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=t[e-1],A=r[e-1]):255===e&&(E=s.readByte()<<8|s.readByte(),A=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);U=s.readBool(),x=t,k=2*e,B=x/k}}let T=1;1===E&&1===A||(T=E/A);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 L=16*(_+1),F=16*(g+1)*(2-y);L-=(v+b)*C,F-=(w+S)*D;let I=Math.ceil(L*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:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Tr.getChromaFormatString(c),frame_rate:{fixed:U,fps:B,fps_den:k,fps_num:x},sar_ratio:{width:E,height:A},codec_size:{width:L,height:F},present_size:{width:I,height:F}}}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 Lr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Fr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,s=!1;const n=Tr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(s=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,s&&(a[d]=252|n.chroma_format_idc,a[d+1]=248|n.bit_depth_luma-8,a[d+2]=248|n.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Ir(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}function Pr(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 Mr(e){return 31&e[0]}function Rr(e){return e===Ke}function zr(e){return!function(e){return e===Ve||e===We}(e)&&!Rr(e)}function Nr(e){return e===je}function Or(e){if(0===e.length)return!1;const t=Mr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,i>=Je||0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class $r{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Hr=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)},Vr=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"}};class Wr{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 parseVPS(e){let t=Wr._ebsp2rbsp(e),r=new Ht(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()}}static parseSPS(e){let t=Wr._ebsp2rbsp(e),r=new Ht(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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=t[e-1],P=i[e-1]):255===e&&(I=r.readBits(16),P=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(),L=r.readBool(),L&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&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();M=s;let n=!0,a=1;s||(n=r.readBool());let o=!1;if(n?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Hr(e),r=new Ht(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()}})(t),a=(e=>{let t=Hr(e),r=new Ht(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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=t[e-1],P=i[e-1]):255===e&&(I=r.readBits(16),P=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),L=r.readBool(),L&&(i+=r.readUEG(),s+=r.readUEG(),n+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(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();M=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=Hr(e),r=new Ht(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}})(r);s=Object.assign(s,n,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&s.general_profile_space)<<6|(s.general_tier_flag?1:0)<<5|31&s.general_profile_idc,l[2]=s.general_profile_compatibility_flags_1||0,l[3]=s.general_profile_compatibility_flags_2||0,l[4]=s.general_profile_compatibility_flags_3||0,l[5]=s.general_profile_compatibility_flags_4||0,l[6]=s.general_constraint_indicator_flags_1||0,l[7]=s.general_constraint_indicator_flags_2||0,l[8]=s.general_constraint_indicator_flags_3||0,l[9]=s.general_constraint_indicator_flags_4||0,l[10]=s.general_constraint_indicator_flags_5||0,l[11]=s.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&s.min_spatial_segmentation_idc)>>8,l[14]=255&s.min_spatial_segmentation_idc,l[15]=252|3&s.parallelismType,l[16]=252|3&s.chroma_format_idc,l[17]=248|7&s.bit_depth_luma_minus8,l[18]=248|7&s.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&s.constant_frame_rate)<<6|(7&s.num_temporal_layers)<<3|(s.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|nt,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|ot,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|lt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Xr(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}function Zr(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 Jr(e){return(126&e[0])>>1}function Qr(e){return e===ut}function ei(e){return!function(e){return e>=32&&e<=40}(e)}function ti(e){return e>=16&&e<=21}function ri(e){if(0===e.length)return!1;const t=Jr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,s=(128&e[r])>>>7,n=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=n,0===s&&(t={type:i,data:e.subarray(r,n)})}return t}}class si{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ni(e){return parseInt(e)===e}function ai(e){if(!ni(e.length))return!1;for(var t=0;t255)return!1;return!0}function oi(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(!ai(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ni(e.length)&&ai(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function di(e){return new Uint8Array(e)}function li(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 ci,ui={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("")}},hi=(ci="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ci[15&i])}return t.join("")}}),fi={16:10,24:12,32:14},pi=[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],mi=[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],_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ei=[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],Ai=[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],Bi=[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],Ui=[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],xi=[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],ki=[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 Ti(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^mi[a>>8&255]<<16^mi[255&a]<<8^mi[a>>24&255]^pi[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^mi[a>>16&255]<<16^mi[a>>24&255]<<24;for(t=s/2+1;t>2,c=d%4,this._Ke[l][c]=n[t],this._Kd[e-l][c]=n[t++],d++}for(var l=1;l>24&255]^Ui[a>>16&255]^xi[a>>8&255]^ki[255&a]},Ci.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=Ti(e),s=0;s<4;s++)i[s]^=this._Ke[0][s];for(var n=1;n>24&255]^yi[i[(s+1)%4]>>16&255]^vi[i[(s+2)%4]>>8&255]^bi[255&i[(s+3)%4]]^this._Ke[n][s];i=r.slice()}var a,o=di(16);for(s=0;s<4;s++)a=this._Ke[t][s],o[4*s]=255&(mi[i[s]>>24&255]^a>>24),o[4*s+1]=255&(mi[i[(s+1)%4]>>16&255]^a>>16),o[4*s+2]=255&(mi[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(mi[255&i[(s+3)%4]]^a);return o},Ci.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=Ti(e),s=0;s<4;s++)i[s]^=this._Kd[0][s];for(var n=1;n>24&255]^Si[i[(s+3)%4]>>16&255]^Ei[i[(s+2)%4]>>8&255]^Ai[255&i[(s+1)%4]]^this._Kd[n][s];i=r.slice()}var a,o=di(16);for(s=0;s<4;s++)a=this._Kd[t][s],o[4*s]=255&(_i[i[s]>>24&255]^a>>24),o[4*s+1]=255&(_i[i[(s+3)%4]>>16&255]^a>>16),o[4*s+2]=255&(_i[i[(s+2)%4]>>8&255]^a>>8),o[4*s+3]=255&(_i[255&i[(s+1)%4]]^a);return o};var Di=function(e){if(!(this instanceof Di))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ci(e)};Di.prototype.encrypt=function(e){if((e=oi(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=di(e.length),r=di(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)},Pi.prototype.setBytes=function(e){if(16!=(e=oi(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Pi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Mi=function(e,t){if(!(this instanceof Mi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Pi||(t=new Pi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ci(e)};Mi.prototype.encrypt=function(e){for(var t=oi(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-n%4*8&255;t[i+n>>>2]|=a<<24-(i+n)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-s%4*8&255;i.push((n>>>4).toString(16)),i.push((15&n).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>24-s%4*8&255;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,s=i.words,n=i.sigBytes,a=this.blockSize,o=n/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,n);if(d){for(var u=0;u>>2]|=e[s]<<24-s%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.WordArray,i=e.enc;function s(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535;i.push(String.fromCharCode(n))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=e.charCodeAt(s)<<16-s%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=s(e.charCodeAt(n)<<16-n%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var s=[],n=0,a=0;a>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var s=[],n=0;n>>2]>>>24-n%4*8&255)<<16|(t[n+1>>>2]>>>24-(n+1)%4*8&255)<<8|t[n+2>>>2]>>>24-(n+2)%4*8&255,o=0;o<4&&n+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;s.length%4;)s.push(d);return s.join("")},parse:function(e){var t=e.length,r=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var n=0;n>>6-a%4*2;s[n>>>2]|=o<<24-n%4*8,n++}return t.create(s,n)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,s=t?this._safe_map:this._map;e.clamp();for(var n=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=s.charAt(64);if(l)for(;n.length%4;)n.push(l);return n.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,s=t?this._safe_map:this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(s<<24|s>>>8)}var n=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],B=e[t+14],U=e[t+15],x=n[0],k=n[1],T=n[2],C=n[3];x=l(x,k,T,C,a,7,o[0]),C=l(C,x,k,T,d,12,o[1]),T=l(T,C,x,k,f,17,o[2]),k=l(k,T,C,x,p,22,o[3]),x=l(x,k,T,C,m,7,o[4]),C=l(C,x,k,T,_,12,o[5]),T=l(T,C,x,k,g,17,o[6]),k=l(k,T,C,x,y,22,o[7]),x=l(x,k,T,C,v,7,o[8]),C=l(C,x,k,T,b,12,o[9]),T=l(T,C,x,k,w,17,o[10]),k=l(k,T,C,x,S,22,o[11]),x=l(x,k,T,C,E,7,o[12]),C=l(C,x,k,T,A,12,o[13]),T=l(T,C,x,k,B,17,o[14]),x=c(x,k=l(k,T,C,x,U,22,o[15]),T,C,d,5,o[16]),C=c(C,x,k,T,g,9,o[17]),T=c(T,C,x,k,S,14,o[18]),k=c(k,T,C,x,a,20,o[19]),x=c(x,k,T,C,_,5,o[20]),C=c(C,x,k,T,w,9,o[21]),T=c(T,C,x,k,U,14,o[22]),k=c(k,T,C,x,m,20,o[23]),x=c(x,k,T,C,b,5,o[24]),C=c(C,x,k,T,B,9,o[25]),T=c(T,C,x,k,p,14,o[26]),k=c(k,T,C,x,v,20,o[27]),x=c(x,k,T,C,A,5,o[28]),C=c(C,x,k,T,f,9,o[29]),T=c(T,C,x,k,y,14,o[30]),x=u(x,k=c(k,T,C,x,E,20,o[31]),T,C,_,4,o[32]),C=u(C,x,k,T,v,11,o[33]),T=u(T,C,x,k,S,16,o[34]),k=u(k,T,C,x,B,23,o[35]),x=u(x,k,T,C,d,4,o[36]),C=u(C,x,k,T,m,11,o[37]),T=u(T,C,x,k,y,16,o[38]),k=u(k,T,C,x,w,23,o[39]),x=u(x,k,T,C,A,4,o[40]),C=u(C,x,k,T,a,11,o[41]),T=u(T,C,x,k,p,16,o[42]),k=u(k,T,C,x,g,23,o[43]),x=u(x,k,T,C,b,4,o[44]),C=u(C,x,k,T,E,11,o[45]),T=u(T,C,x,k,U,16,o[46]),x=h(x,k=u(k,T,C,x,f,23,o[47]),T,C,a,6,o[48]),C=h(C,x,k,T,y,10,o[49]),T=h(T,C,x,k,B,15,o[50]),k=h(k,T,C,x,_,21,o[51]),x=h(x,k,T,C,E,6,o[52]),C=h(C,x,k,T,p,10,o[53]),T=h(T,C,x,k,w,15,o[54]),k=h(k,T,C,x,d,21,o[55]),x=h(x,k,T,C,v,6,o[56]),C=h(C,x,k,T,U,10,o[57]),T=h(T,C,x,k,g,15,o[58]),k=h(k,T,C,x,A,21,o[59]),x=h(x,k,T,C,m,6,o[60]),C=h(C,x,k,T,S,10,o[61]),T=h(T,C,x,k,f,15,o[62]),k=h(k,T,C,x,b,21,o[63]),n[0]=n[0]+x|0,n[1]=n[1]+k|0,n[2]=n[2]+T|0,n[3]=n[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;r[s>>>5]|=128<<24-s%32;var n=e.floor(i/4294967296),a=i;r[15+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),r[14+(s+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,s,n,a){var o=e+(t&r|~t&i)+s+a;return(o<>>32-n)+t}function c(e,t,r,i,s,n,a){var o=e+(t&i|r&~i)+s+a;return(o<>>32-n)+t}function u(e,t,r,i,s,n,a){var o=e+(t^r^i)+s+a;return(o<>>32-n)+t}function h(e,t,r,i,s,n,a){var o=e+(r^(t|~i))+s+a;return(o<>>32-n)+t}t.MD5=n._createHelper(d),t.HmacMD5=n._createHmacHelper(d)}(Math),r.MD5)})),$t((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=zi).lib,s=i.WordArray,n=i.Hasher,a=r.algo,o=[],d=a.SHA1=n.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(s&n|~s&a):l<40?1859775393+(s^n^a):l<60?(s&n|s&a|n&a)-1894007588:(s^n^a)-899497514,d=a,a=n,n=s<<30|s>>>2,s=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=n._createHelper(d),r.HmacSHA1=n._createHmacHelper(d),l.SHA1)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,s=0;s<64;)t(i)&&(s<8&&(o[s]=r(e.pow(i,.5))),d[s]=r(e.pow(i,1/3)),s++),i++}();var l=[],c=a.SHA256=n.extend({_doReset:function(){this._hash=new s.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&s^i&n^s&n,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=n,n=s,s=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+s|0,r[2]=r[2]+n|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,s=8*t.sigBytes;return r[s>>>5]|=128<<24-s%32,r[14+(s+64>>>9<<4)]=e.floor(i/4294967296),r[15+(s+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=n._createHelper(c),t.HmacSHA256=n._createHmacHelper(c)}(Math),r.SHA256)})),$t((function(e,t){var r,i,s,n,a,o;e.exports=(i=(r=o=zi).lib.WordArray,s=r.algo,n=s.SHA256,a=s.SHA224=n.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=n._createHelper(a),r.HmacSHA224=n._createHmacHelper(a),o.SHA224)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.Hasher,i=e.x64,s=i.Word,n=i.WordArray,a=e.algo;function o(){return s.create.apply(s,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new n.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],s=r[1],n=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=s.high,_=s.low,g=n.high,y=n.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,B=u.high,U=u.low,x=h.high,k=h.low,T=f,C=p,D=m,L=_,F=g,I=y,P=v,M=b,R=w,z=S,N=E,O=A,G=B,$=U,H=x,V=k,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,se=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),ne=l[W-7],ae=ne.high,oe=ne.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=se)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&G,fe=z&O^~z&$,pe=T&D^T&F^D&F,me=C&L^C&I^L&I,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=G,V=$,G=N,$=O,N=R,O=z,R=P+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,P=F,M=I,F=D,I=L,D=T,L=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=s.low=_+L,s.high=m+D+(_>>>0>>0?1:0),y=n.low=y+I,n.high=g+F+(y>>>0>>0?1:0),b=a.low=b+M,a.high=v+P+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+N+(A>>>0>>0?1:0),U=u.low=U+$,u.high=B+G+(U>>>0<$>>>0?1:0),k=h.low=k+V,h.high=x+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),$t((function(e,t){var r,i,s,n,a,o,d,l;e.exports=(i=(r=l=zi).x64,s=i.Word,n=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new n.init([new s.init(3418070365,3238371032),new s.init(1654270250,914150663),new s.init(2438529370,812702999),new s.init(355462360,4144912697),new s.init(1731405415,4290775857),new s.init(2394180231,1750603025),new s.init(3675008525,1694076839),new s.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var s=1,n=0;n<24;n++){for(var o=0,u=0,h=0;h<7;h++){if(1&s){var f=(1<>>24)|4278255360&(n<<24|n>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(k=r[s]).high^=a,k.low^=n}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(k=r[h+5*m]).high,p^=k.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[h+5*m]).high^=f,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var B=u[l[w]];B.high=f,B.low=p}var U=u[0],x=r[0];for(U.high=x.high,U.low=x.low,h=0;h<5;h++)for(m=0;m<5;m++){var k=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var L=c[o];k.high^=L.high,k.low^=L.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,n=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/n)*n>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new s.init(l,o)},clone:function(){for(var e=n.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=n._createHelper(h),t.HmacSHA3=n._createHmacHelper(h)}(Math),r.SHA3)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib,s=i.WordArray,n=i.Hasher,a=t.algo,o=s.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=s.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=s.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=s.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=s.create([0,1518500249,1859775393,2400959708,2840853838]),h=s.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=n.extend({_doReset:function(){this._hash=s.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,s=e[i];e[i]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}var n,a,f,b,w,S,E,A,B,U,x,k=this._hash.words,T=u.words,C=h.words,D=o.words,L=d.words,F=l.words,I=c.words;for(S=n=k[0],E=a=k[1],A=f=k[2],B=b=k[3],U=w=k[4],r=0;r<80;r+=1)x=n+e[t+D[r]]|0,x+=r<16?p(a,f,b)+T[0]:r<32?m(a,f,b)+T[1]:r<48?_(a,f,b)+T[2]:r<64?g(a,f,b)+T[3]:y(a,f,b)+T[4],x=(x=v(x|=0,F[r]))+w|0,n=w,w=b,b=v(f,10),f=a,a=x,x=S+e[t+L[r]]|0,x+=r<16?y(E,A,B)+C[0]:r<32?g(E,A,B)+C[1]:r<48?_(E,A,B)+C[2]:r<64?m(E,A,B)+C[3]:p(E,A,B)+C[4],x=(x=v(x|=0,I[r]))+U|0,S=U,U=B,B=v(A,10),A=E,E=x;x=k[1]+f+B|0,k[1]=k[2]+b+U|0,k[2]=k[3]+w+S|0,k[3]=k[4]+n+E|0,k[4]=k[0]+a+A|0,k[0]=x},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var s=this._hash,n=s.words,a=0;a<5;a++){var o=n[a];n[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return s},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=n._createHelper(f),t.HmacRIPEMD160=n._createHmacHelper(f)}(),r.RIPEMD160)})),$t((function(e,t){var r,i,s;e.exports=(i=(r=zi).lib.Base,s=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var n=this._oKey=t.clone(),a=this._iKey=t.clone(),o=n.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?n.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=n.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=s.extend({cfg:s.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var s=e.createEncryptor(r,i),n=s.finalize(t),a=s.cfg;return m.create({ciphertext:n,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,s){if(i||(i=n.random(8)),s)a=l.create({keySize:t+r,hasher:s}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=n.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var s=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=s.iv;var n=g.encrypt.call(this,e,t,s.key,i);return n.mixIn(s),n},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var s=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=s.iv,g.decrypt.call(this,e,t,s.key,i)}})}())})),$t((function(e,t){var r;e.exports=((r=zi).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var s,n=this._iv;n?(s=n.slice(0),this._iv=void 0):s=this._prevBlock,i.encryptBlock(s,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var s=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,s=r.blockSize,n=this._iv,a=this._counter;n&&(a=this._counter=n.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=s<<24-n%4*8,e.sigBytes+=s},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),$t((function(e,t){var r;e.exports=((r=zi).pad.Iso10126={pad:function(e,t){var i=4*t,s=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(s-1)).concat(r.lib.WordArray.create([s<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),$t((function(e,t){var r;e.exports=((r=zi).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),$t((function(e,t){var r;e.exports=((r=zi).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),$t((function(e,t){var r;e.exports=((r=zi).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),$t((function(e,t){var r;e.exports=(r=zi,function(e){var t=r,i=t.lib.CipherParams,s=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(s)},parse:function(e){var t=s.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,s=[],n=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,s[r]=p,n[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),n=this._keySchedule=[],a=0;a6&&a%r==4&&(l=s[l>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l]):(l=s[(l=l<<8|l>>>24)>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l],l^=p[a/r|0]<<24),n[a]=n[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[s[l>>>16&255]]^h[s[l>>>8&255]]^f[s[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,s)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,n),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,s,n,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^s[c>>>16&255]^n[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^s[u>>>16&255]^n[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^s[h>>>16&255]^n[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^s[l>>>16&255]^n[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib,i=t.WordArray,s=t.BlockCipher,n=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=n.DES=s.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var s=this._subKeys=[],n=0;n<16;n++){var l=s[n]=[],c=d[n];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=s[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var s=r[i],n=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^s[d])&c[d])>>>0];this._lBlock=a,this._rBlock=n^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),s=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(s))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=s._createHelper(p)}(),r.TripleDES)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],s=0;s<256;s++)i[s]=s;s=0;for(var n=0;s<256;s++){var a=s%r,o=t[a>>>2]>>>24-a%4*8&255;n=(n+i[s]+o)%256;var d=i[s];i[s]=i[n],i[n]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=n.call(this)},keySize:8,ivSize:0});function n(){for(var e=this._S,t=this._i,r=this._j,i=0,s=0;s<4;s++){r=(r+e[t=(t+1)%256])%256;var n=e[t];e[t]=e[r],e[r]=n,i|=e[(e[t]+e[r])%256]<<24-8*s}return this._i=t,this._j=r,i}e.RC4=t._createHelper(s);var a=i.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)n.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(s[0]^=l,s[1]^=u,s[2]^=c,s[3]^=h,s[4]^=l,s[5]^=u,s[6]^=c,s[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,s=[],n=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var s=0;s<4;s++)d.call(this);for(s=0;s<8;s++)i[s]^=r[s+4&7];if(t){var n=t.words,a=n[0],o=n[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,s=0;s<4;s++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),s[0]=r[0]^r[5]>>>16^r[3]<<16,s[1]=r[2]^r[7]>>>16^r[5]<<16,s[2]=r[4]^r[1]>>>16^r[7]<<16,s[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)s[i]=16711935&(s[i]<<8|s[i]>>>24)|4278255360&(s[i]<<24|s[i]>>>8),e[t+i]^=s[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)n[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],s=65535&i,o=i>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),$t((function(e,t){var r;e.exports=(r=zi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const s=16,n=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,s=t>>8&255,n=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][s],a+=e.sbox[3][n],a}function l(e,t,r){let i,n=t,a=r;for(let t=0;t1;--t)n^=e.pbox[t],a=d(e,n)^a,i=n,n=a,a=i;return i=n,n=a,a=i,a^=e.pbox[1],n^=e.pbox[0],{left:n,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+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=e.slice(n+4+2,n+4+a);let s=new Ri.ModeOfOperation.ctr(t,new Ri.Counter(r));const o=s.decrypt(i);s=null,e.set(o,n+4+2)}n=n+4+a}return e}function Gi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let s=new Ri.ModeOfOperation.ctr(t,new Ri.Counter(r));const n=s.decrypt(i);return s=null,e.set(n,32),e}$t((function(e,t){e.exports=zi}));var $i=$t((function(e,t){var r,s,n,a=(r=new Date,s=4,n={setLogLevel:function(e){s=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>=s&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=s&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=s&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=s&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},n);a.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+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;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),s=new Uint8Array(this._buffer);new Uint8Array(i,0,s.length).set(s),this.buffer=i,this._byteLength=t}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,s){var n=new Uint8Array(e,t,s),a=new Uint8Array(r,i,s);n.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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 r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.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)),a.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,n)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,s,n,o=[],d="";for(i=0,s=0,t=0;t0&&(d+=n.end-1+"]");var l=e?a.info:a.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,s=null,n=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+n),n):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[n]?i=new h.UUIDBoxes[n](l):(a.warn("BoxParser","Unknown uuid type: '"+n+"'"),(i=new h.Box(c,l)).uuid=n,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' 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?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(i.start+i.size)):s>0&&(a.error("BoxParser","Parsing of box '"+u+"' 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)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 r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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),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()))})),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:a.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(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()})),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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)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=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){a.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){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.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),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(),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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>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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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))},g.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&&(a.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),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.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)&&(a.debug("ISOFile","Sending samples on track #"+n.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(n.id,n.user,n.samples),n.samples=[],n!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,s=this.getTrackById(e);s.lastValidSample||(s.lastValidSample=0);for(var n=s.lastValidSample;ne*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 n=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+n),{offset:n,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,s,n=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;sthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){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 u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),n.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),n.addBox(f)}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 d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=n.sample_counts[b]),t>0?(e.samples[t-1].duration=n.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),U.cts=e.samples[t].dts+a.sample_offsets[S]):U.cts=U.dts,o?(t==o.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[A].sample_delta+B==t+1&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta,A++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+B==t&&(U.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,s,n,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var n=(r=this.stream.buffers[s]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=n)return a.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+")"),d.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===n)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+n+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,n),i.alreadyRead+=n,r.usedBytes+=n,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[n]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+s.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,o),s.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Hi(e){return e.reduce(((e,t)=>256*e+t))}function Vi(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]))}$i.Log,$i.MP4BoxStream,$i.DataStream,$i.MultiBufferStream,$i.MPEG4DescriptorParser,$i.BoxParser,$i.XMLSubtitlein4Parser,$i.Textin4Parser,$i.ISOFile,$i.createFile;class Wi{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],Vi(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}}function ji(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const qi=16,Yi=[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],Ki=[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 Xi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ji(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}function Qi(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("")}function es(e,t){const r=31&t;return e<>>32-r}function ts(e){return(255&Yi[e>>>24&255])<<24|(255&Yi[e>>>16&255])<<16|(255&Yi[e>>>8&255])<<8|255&Yi[255&e]}function rs(e){return e^es(e,2)^es(e,10)^es(e,18)^es(e,24)}function is(e){return e^es(e,13)^es(e,23)}function ss(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]^=rs(ts(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=rs(ts(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=rs(ts(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=rs(ts(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 ns(e,t,r){const i=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[0+4*t],s[1]=255&e[1+4*t],s[2]=255&e[2+4*t],s[3]=255&e[3+4*t],i[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Ki[r+0],t[r+0]=i[0]^=is(ts(e)),e=i[2]^i[3]^i[0]^Ki[r+1],t[r+1]=i[1]^=is(ts(e)),e=i[3]^i[0]^i[1]^Ki[r+2],t[r+2]=i[2]^=is(ts(e)),e=i[0]^i[1]^i[2]^Ki[r+3],t[r+3]=i[3]^=is(ts(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function as(e,t,r){let{padding:i="pkcs#7",mode:s,iv:n=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===s&&("string"==typeof n&&(n=Xi(n)),16!==n.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Xi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ji(e):Xi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=qi-e.length%qi;for(let r=0;r=qi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===s)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=new Uint8Array(e.slice(0,5)),a=5;for(;as){const t=new Uint8Array(n.length+e.length-a);t.set(n,0),t.set(e.slice(a),n.length),n=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=as(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const s=new Uint8Array(u);s.set(e.slice(a+4,a+4+u),0);const o=ir(ji(s,new Uint8Array(r))),l=new Uint8Array(n.length+o.length);l.set(n,0),l.set(o,n.length),n=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(n.length+4+t.length);r.set(n,0),r.set(o,n.length),r.set(t,n.length+4),n=r}a=a+4+d}return n}const ls={init:0,findFirstStartCode:1,findSecondStartCode:2};class cs extends class{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(){i.off(e,s);for(var n=arguments.length,a=new Array(n),o=0;o1?r-1:0),s=1;s{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=ls.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ls.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=ls.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ls.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=ls.findFirstStartCode}}}}function us(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let n=5;for(;ns)break;let o=e[n+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=us(e.slice(n+4,n+4+a),t,r);e.set(i,n+4)}n=n+4+a}return e}function ps(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let s=0;return t.forEach((e=>{i.set(e,s),s+=e.byteLength})),i}class ms{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const s=()=>{ur(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(s),s}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class _s{static init(){_s.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 _s.types)_s.types.hasOwnProperty(e)&&(_s.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=_s.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 _s.box(_s.types.trak,_s.tkhd(e),_s.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,s=e.presentHeight;return _s.box(_s.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 _s.box(_s.types.mdia,_s.mdhd(e),_s.hdlr(e),_s.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return _s.box(_s.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?_s.constants.HDLR_AUDIO:_s.constants.HDLR_VIDEO,_s.box(_s.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?_s.box(_s.types.smhd,_s.constants.SMHD):_s.box(_s.types.vmhd,_s.constants.VMHD),_s.box(_s.types.minf,t,_s.dinf(),_s.stbl(e))}static dinf(){return _s.box(_s.types.dinf,_s.box(_s.types.dref,_s.constants.DREF))}static stbl(e){return _s.box(_s.types.stbl,_s.stsd(e),_s.box(_s.types.stts,_s.constants.STTS),_s.box(_s.types.stsc,_s.constants.STSC),_s.box(_s.types.stsz,_s.constants.STSZ),_s.box(_s.types.stco,_s.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.mp3(e)):_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.mp4a(e)):"avc"===e.videoType?_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.avc1(e)):_s.box(_s.types.stsd,_s.constants.STSD_PREFIX,_s.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 _s.box(_s.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 _s.box(_s.types.mp4a,i,_s.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 _s.box(_s.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 _s.box(_s.types.avc1,s,_s.box(_s.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 _s.box(_s.types.hvc1,s,_s.box(_s.types.hvcC,t))}static mvex(e){return _s.box(_s.types.mvex,_s.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 _s.box(_s.types.trex,r)}static moof(e,t){return _s.box(_s.types.moof,_s.mfhd(e.sequenceNumber),_s.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 _s.box(_s.types.mfhd,t)}static traf(e,t){let r=e.id,i=_s.box(_s.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),s=_s.box(_s.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),n=_s.sdtp(e),a=_s.trun(e,n.byteLength+16+16+8+16+8+8);return _s.box(_s.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,_s.box(_s.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),_s.box(_s.types.trun,r)}static mdat(e){return _s.box(_s.types.mdat,e)}}_s.init();var gs,ys=$t((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(gs=ys)&&gs.__esModule&&Object.prototype.hasOwnProperty.call(gs,"default")&&gs.default;const vs=[44100,48e3,32e3,0],bs=[22050,24e3,16e3,0],ws=[11025,12e3,8e3,0],Ss=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Es=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],As=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function Bs(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,s=(6&t[1])>>1,n=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=ws[a];break;case 2:d=bs[a];break;case 3:d=vs[a]}switch(s){case 1:n=e[s]&&t=6?(i=5,t=new Array(4),a=s-3):(i=2,t=new Array(2),a=s):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=s):(i=5,a=s,t=new Array(4),s>=6?a=s-3:1===n&&(i=2,t=new Array(2),a=s)),t[0]=i<<3,t[0]|=(15&s)>>>1,t[1]=(15&s)<<7,t[1]|=(15&n)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Os[s],this.sampling_index=s,this.channel_count=n,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Hs{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,n=8-i;if(n>=e)return r&&(this.index+=e),s>>n-e;{r&&(this.index+=n);const i=e-n;return s<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function Vs(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Ws=new Array(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),js=new Array(2746333894,1453994832,1736282519,2993693404),qs=new Array(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 Ys(e,t,r,i,s){var n=s;n=t+s>e.length&&i+s<=r.length?e.length-t:i+s>r.length&&t+s<=e.length?r.length-i:t+s<=e.length&&i+s<=r.length?s:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Xs(e,t){return t+3>>19)^(i<<23|i>>>9)}function Qs(e,t){var r=new Array(36);r[0]=Xs(t,0),r[1]=Xs(t,4),r[2]=Xs(t,8),r[3]=Xs(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^en(r[i+1]^r[i+2]^r[i+3]^e[i]);var s=new Array(4);for(i=35;i>=32;i--)s[35-i]=r[i];var n=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function tn(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Zs(e),s=Math.ceil(r.length/16),n=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let a=5;for(;an)break;let d=e[a+4],l=!1,c=2;if(i?(s&&(c=3),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=tn(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-2-2024" '+(br(false)?"and is Trial Version[试用版本]":"")),n({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][audio wasm]:",e)}}).then((e=>{!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=[],n=[],a=null,o=null,d=null,l=null,c=null,u=null,h=!1,w=null,S=null,U=!1,we=!1,Se=!!vr(r),je=0,Je=0,Qe=!1,tt=null,it=null,ut=null,At=[],Bt=null,kt=null,Ot=0,Gt=0,$t=null,Ht=null,Vt=0,Wt=0,Xt=!1,er=!1,or=!1,Er=null,Ar=null,Br=!1,Ur=!0,Cr=0,Hr=0,Vr=()=>{const e=gr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(a={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){a.decoder=new VideoDecoder({output:function(e){if(ur(e.createImageBitmap))e.createImageBitmap().then((t=>{a.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:r,delay:ci.delay,ts:0},[r]),pr(e)}));else{a.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:t,delay:ci.delay,ts:0},[t]),pr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){a.reset(),a.decoder&&"closed"!==a.decoder.state&&(a.decoder.close(),a.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(a.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?pt:mt});a.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:P,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,s=null;const n=e.slice(5);t===Pe?(s=Dr(n),i={codec:s.codec,description:n}):t===Me&&(s=qr(n),i={codec:s.codec,description:n}),s&&s.codecWidth&&s.codecHeight&&(i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth),a.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),a.isEmitInfo=!0,a.offscreenCanvas=new OffscreenCanvas(s.codecWidth,s.codecHeight),a.offscreenCanvasCtx=a.offscreenCanvas.getContext("2d"));try{a.decoder.configure(i),a.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){a.hasInit=!1,a.isEmitInfo=!1,a.offscreenCanvas=null,a.offscreenCanvasCtx=null}});let Yr=function(){if(Br=!0,o)try{o.abort(),o=null,ci.debugLog("worker","abort success")}catch(e){o=null,ci.debugLog("worker","abort catch",e)}},ni={init(){ni.lastBuf=null,ni.vps=null,ni.sps=null,ni.pps=null,ni.streamType=null,ni.localDts=0,ni.pendingUnits={},ni.isSendSeqHeader=!1},destroy(){ni.lastBuf=null,ni.vps=null,ni.sps=null,ni.pps=null,ni.streamType=null,ni.localDts=0,ni.pendingUnits={},ni.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=ni.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");ni.handleVideoFrames(e)}else ni.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=ni.localDts;return ni.localDts=ni.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return ni.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{const t=Mr(e);t===We||t===Ve?ni.handleVideoH264Nalu(e):zr(t)&&i.push(e)})),1===i.length)ni.handleVideoH264Nalu(i[0]);else if(Or(i)){const e=Mr(i[0]),t=Nr(e);ni.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{ni.handleVideoH264Nalu(e)}))}else if(ni.streamType===Ne)if(ci._opt.nakedFlowH265DemuxUseNew){const t=ni.handleAddNaluStartCode(e),r=ni.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Jr(e);t===lt||t===ot||t===nt?ni.handleVideoH265Nalu(e):ei(t)&&i.push(e)})),1===i.length)ni.handleVideoH265Nalu(i[0]);else if(ri(i)){const e=Jr(i[0]),t=ti(e);ni.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{ni.handleVideoH265Nalu(e)}))}else Jr(e)===lt?ni.extractH265PPS(e):ni.handleVideoH265Nalu(e)},extractH264PPS(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{Rr(Mr(e))?ni.extractH264SEI(e):ni.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{Qr(Jr(e))?ni.extractH265SEI(e):ni.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{ni.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=ni.handleAddNaluStartCode(e);ni.extractNALu(t).forEach((e=>{ni.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=Mr(e);switch(t){case Ve:ni.sps=e;break;case We:ni.pps=e}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps){const e=Lr({sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(zr(t)){const r=Nr(t),i=ni.getNaluDts(),s=Ir(e,r);ni.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Lr({sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}},handleVideoH264NaluList(e,t,r){if(ni.isSendSeqHeader){const i=ni.getNaluDts(),s=Pr(e.reduce(((e,t)=>{const r=ir(e),i=ir(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);ni.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Jr(e);switch(t){case nt:ni.vps=e;break;case ot:ni.sps=e;break;case lt:ni.pps=e}if(ni.isSendSeqHeader){if(ni.vps&&ni.sps&&ni.pps){const e=Kr({vps:ni.vps,sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.vps=null,ni.sps=null,ni.pps=null}if(ei(t)){const r=ti(t),i=ni.getNaluDts(),s=Xr(e,r);ni.doDecode(s,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(ni.vps&&ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Kr({vps:ni.vps,sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.vps=null,ni.sps=null,ni.pps=null}},handleVideoH265NaluList(e,t,r){if(ni.isSendSeqHeader){const i=ni.getNaluDts(),s=Zr(e.reduce(((e,t)=>{const r=ir(e),i=ir(t),s=new Uint8Array(r.byteLength+i.byteLength);return s.set(r,0),s.set(i,r.byteLength),s})),t);ni.doDecode(s,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!ni.streamVideoType)for(let t of e)if(ni.streamVideoType=hr(t),ni.streamVideoType)break;ni.streamVideoType?ni.streamVideoType===ze?ni.handleVideoH264Frames(e):ni.streamVideoType===Ne&&ni.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,s=!1;ni.pendingUnits.units&&(t=ni.pendingUnits.units,s=ni.pendingUnits.vcl,i=ni.pendingUnits.iFrame,ni.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Mr(a);let o=!1,d=e===Ye;e!==qe&&e!==Ye||(n=ni.parseVideo264Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(ni.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,s=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case We:ni.pps=e;break;case Ve:ni.sps=e;break;case Ke:s=e}if(zr(t)){const t=ir(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!ni.isSendSeqHeader&&ni.sps&&ni.pps){ni.isSendSeqHeader=!0;const e=Fr({sps:ni.sps,pps:ni.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps){const e=Fr({sps:ni.sps,pps:ni.pps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null}if(i){const e=ni.getNaluDts(),t=Pr(i,r);if(ci._opt.isEmitSEI&&s){const t=rr(s,!1);postMessage({cmd:X,buffer:t.payload,ts:e},[t.payload.buffer])}ni.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,s=!1;ni.pendingUnits.units&&(t=ni.pendingUnits.units,s=ni.pendingUnits.vcl,i=ni.pendingUnits.iFrame,ni.pendingUnits={});let n={};for(let a of e){if(a.byteLength<4)continue;const e=Jr(a);let o=!1,d=ti(e);ei(e)&&(n=ni.parseVideo265Header(a),o=!0),t.length&&s&&(n.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,s=!1),t.push(a),i=i||d,s=s||o}t.length&&(ni.pendingUnits={units:t,vcl:s,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,s=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case lt:ni.pps=e;break;case ot:ni.sps=e;break;case nt:ni.vps=e;break;case ft:case ht:s=e}if(ei(t)){const t=ir(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!ni.isSendSeqHeader&&ni.sps&&ni.pps&&ni.vps){ni.isSendSeqHeader=!0;const e=Kr({sps:ni.sps,pps:ni.pps,vps:ni.vps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null,ni.vps=null}if(ni.isSendSeqHeader){if(ni.sps&&ni.pps&&ni.vps){const e=Kr({sps:ni.sps,pps:ni.pps,vps:ni.vps}),t=ni.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),ni.sps=null,ni.pps=null,ni.vps=null}if(i){const e=ni.getNaluDts(),t=Zr(i,r);if(ci._opt.isEmitSEI&&s){const t=rr(s,!0);postMessage({cmd:X,buffer:t.payload,ts:e},[t.payload.buffer])}ni.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{ni.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Hs(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Hs(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},ai={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){ai.mp4Box=$i.createFile(),ai.mp4Box.onReady=ai.onReady,ai.mp4Box.onError=ai.onError,ai.mp4Box.onSamples=ai.onSamples},initTransportDescarmber(){ai.transportDescarmber=new Wi},_getSeqHeader(e){const t=ai.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 r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(ai.isHevc=!0,ci.isHevc=!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){ci.debugLog(ai.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){ai.videoTrackId=t.id;const e=ai._getSeqHeader(t);e&&(ci.debugLog(ai.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),ai.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){ai.audioTrackId=r.id;const e=r.audio||{},t=jt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");ai.mp4Box.setExtractionOptions(r.id);const s=qt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(ai.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(s,0)}ai.mp4Box.start()},onError(e){ci.debugError(ai.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===ai.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&&ci.calcIframeIntervalTimestamp(i);let s=null;s=ai.isHevc?Zr(t,r):Pr(t,r),ci.decode(s,{type:ae,ts:i,isIFrame:r,cts:0})}ai.mp4Box.removeUsedSamples(e)}else if(e===ai.audioTrackId){if(ci._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),ci.decode(i,{type:ne,ts:r,isIFrame:!1,cts:0})}ai.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(ai.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);ai.transportDescarmber&&(t=ai.transportDescarmber.transport(t)),t.buffer.fileStart=ai.offset,ai.offset+=t.byteLength,ai.mp4Box.appendBuffer(t.buffer)},destroy(){ai.mp4Box&&(ai.mp4Box.stop(),ai.mp4Box.flush(),ai.mp4Box.destroy(),ai.mp4Box=null),ai.transportDescarmber&&(ai.transportDescarmber.destroy(),ai.transportDescarmber=null),ai.offset=0,ai.videoTrackId=null,ai.audioTrackId=null,ai.isHevc=!1}},oi={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);oi.extractNALu(t)},destroy(){oi.lastBuffer=new Uint8Array(0),oi.parsedOffset=0,oi.firstStartCodeOffset=0,oi.secondStartCodeOffset=0,oi.state="init",oi.hasInitVideoCodec=!1,oi.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(oi.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(oi.lastBuffer.length+e.length);for(t.set(oi.lastBuffer,0),t.set(new Uint8Array(e),oi.lastBuffer.length),oi.lastBuffer=t;;){if("init"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findFirstStartCode",oi.firstStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findSecondStartCode",oi.secondStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===oi.state){if(!(oi.lastBuffer.length-oi.parsedOffset>0))break;{let e,t,r=192&oi.lastBuffer[oi.parsedOffset];e=0==r?oi.secondStartCodeOffset-14:oi.secondStartCodeOffset;let i=0==(192&oi.lastBuffer[oi.firstStartCodeOffset+4]);if(i){if(oi.firstStartCodeOffset-14<0)return void ci.debugWarn(oi.LOG_NAME,"firstStartCodeOffset -14 is",oi.firstStartCodeOffset-14);oi.hasInitVideoCodec||(oi.hasInitVideoCodec=!0,ci.debugLog(oi.LOG_NAME,"setCodec"),hi.setCodec(Re,"")),t=oi.lastBuffer.subarray(oi.firstStartCodeOffset-14,e)}else t=oi.lastBuffer.subarray(oi.firstStartCodeOffset,e);let s=oi.getNaluDts();oi.hasInitVideoCodec?(postMessage({cmd:O,type:Ue,value:t.byteLength}),postMessage({cmd:O,type:xe,value:s}),je=s,hi.decode(t,i?1:0,s)):ci.debugWarn(oi.LOG_NAME,"has not init video codec"),oi.lastBuffer=oi.lastBuffer.subarray(e),oi.firstStartCodeOffset=0==r?14:0,oi.parsedOffset=oi.firstStartCodeOffset+4,oi.state="findFirstStartCode"}}}},getNaluDts(){let e=oi.localDts;return oi.localDts=oi.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Gs,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let s=0;s=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=ps(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let n=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==n),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==a||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===n||n===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[n]===Is){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:n,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[n]){let r=188-c,i=di.pmt_.pid_stream_type[n];n!==di.pmt_.common_pids.h264&&n!==di.pmt_.common_pids.h265&&n!==di.pmt_.common_pids.adts_aac&&n!==di.pmt_.common_pids.loas_aac&&n!==di.pmt_.common_pids.ac3&&n!==di.pmt_.common_pids.eac3&&n!==di.pmt_.common_pids.opus&&n!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[n]&&!0!==di.pmt_.timed_id3_pids[n]&&!0!==di.pmt_.synchronous_klv_pids[n]&&!0!==di.pmt_.asynchronous_klv_pids[n]||di.handlePESSlice(e,t+c,r,{pid:n,stream_type:i,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=s[0];if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t+1,Math.min(r,a));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?di.emitSectionSlices(n,i):di.clearSlices(n,i)}for(let o=1+a;o=n.expected_length&&di.clearSlices(n,i),o+=d.byteLength}}else if(null!=n&&0!==n.total_length){let s=new Uint8Array(e,t,Math.min(r,n.expected_length-n.total_length));n.slices.push(s),n.total_length+=s.byteLength,n.total_length===n.expected_length?di.emitSectionSlices(n,i):n.total_length>=n.expected_length&&di.clearSlices(n,i)}},handlePESSlice(e,t,r,i){let s=new Uint8Array(e,t,r),n=s[0]<<16|s[1]<<8|s[2];s[3];let a=s[4]<<8|s[5];if(i.payload_unit_start_indicator){if(1!==n)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${n}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new Rs,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let o=di.pes_slice_queues_[i.pid];o.slices.push(s),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=s.byteLength,o.expected_length>0&&o.expected_length===o.total_length?di.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,n=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==s){if(s<3+o)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=s-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Us:case xs:di.parseMP3Payload(c,r);break;case ks:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,n,e.pid,i):di.parsePESPrivateDataPayload(c,r,n,e.pid,i));break;case Ts:di.parseADTSAACPayload(c,r);break;case Cs:di.parseLOASAACPayload(c,r);break;case Ds:case Ls:break;case Fs:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,n,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,n,e.pid,i);break;case Ps:di.parseH264Payload(c,r,n,e.random_access_indicator);break;case Ms:di.parseH265Payload(c,r,n,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===ks){let r,n=6;r=0!==s?s:t.byteLength-n;let a=t.subarray(n,n+r);di.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,s=1&e[5],n=e[6];e[7];let a=null;if(1===s&&0===n)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=di.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===s&&0===n&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),di.pat_=a,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],s=e[3]<<8|e[4],n=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=di._initPmt(),r.program_number=s,r.version_number=n,di.program_pmt_map_[s]=r;else if(r=di.program_pmt_map_[s],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Kr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Fr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let s=di.media_info_;s.hasVideo=!0,s.width=t.codecWidth,s.height=t.codecHeight,s.fps=t.frameRate.fps,s.profile=t.profile,s.level=t.level,s.refFrames=e.ref_frames,s.chromaFormat=e.chroma_format_string,s.sarNum=t.sarRatio.width,s.sarDen=t.sarRatio.height,s.videoCodec=t.codec,s.hasAudio&&s.audioCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Jt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};di.audio_track_.samples.push(n),di.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(di.aac_last_incomplete_data_=n.getIncompleteData()),s&&(di.audio_last_sample_pts_=s)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let s,n=new Qt(e),a=null,o=i;for(;null!=(a=n.readNextAACFrame(lr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let n={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};di.audio_track_.samples.push(n),di.audio_track_.length+=i.byteLength,o+=r}n.hasIncompleteData()&&(di.aac_last_incomplete_data_=n.getIncompleteData()),s&&(di.audio_last_sample_pts_=s)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],s=[11025,12e3,8e3,0],n=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(n){case 0:l=s[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ne};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new $s(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const s=qt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(s,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,s){let n=new Ns;if(n.pid=i,n.stream_id=s,n.len=e.byteLength,n.data=e,null!=t){let e=Math.floor(t/di.timescale_);n.pts=e}else n.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);n.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,s){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${s}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?di._doDecodeVideo({...e,payload:t}):e.type===ne&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Zr(t,e.isIFrame):Pr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;vr(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ne,ts:e.dts,isIFrame:!1,cts:0})}},li=null;wr()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new ms,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!br(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===vt,isStateClosed:()=>li.getState()===bt,isStateEnded:()=>li.getState()===yt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,St,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,wt,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(br(li.hasInit))if(r&&e[1]===xt){const i=15&e[0];if(i===Me&&br(ci._opt.supportMSEDecodeHevc))return void li.emitError(Fe.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:P,code:i});const s=new Uint8Array(e);postMessage({cmd:M,buffer:s,codecId:i},[s.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Pe?r=Dr(e.slice(5)):t===Me&&(r=jr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Fe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(yr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eE,_decodeConfigurationRecord(e,t,r,i){let s=e.slice(5),n={};if(i===Pe?n=Dr(s):i===Me&&(n=qr(s)),li.videoInfo.width=n.codecWidth,li.videoInfo.height=n.codecHeight,0===n.codecWidth&&0===n.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(n)),li.emitError(Fe.mediaSourceDecoderConfigurationError,`width is ${0===n.codecWidth} and height is ${n.codecHeight}`),!1;const a={id:Ft,type:"video",timescale:1e3,duration:0,avcc:s,codecWidth:n.codecWidth,codecHeight:n.codecHeight,videoType:n.videoType},o=_s.generateInitSegment(a);li.isAvc=i===Pe;let d=n.codec;return li.videoMimeType=d?`video/mp4; codecs="${n.codec}"`:li.isAvc?_t:gt,postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),li._initSourceBuffer(),li.appendBuffer(o.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,s=r===He,n=r===Oe;if(br(n||s))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Fe.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Yt(e)){if(o=Zt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!s)return!1;if(o=Bs(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;s&&br(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=_s.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),br(li.isAudioInitInfo)&&(Ar=r===Oe?i?16:8:0===i?8:16,postMessage({cmd:L,code:r}),postMessage({cmd:D,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:Ar}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=n,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Fe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,s){let n=e.slice(5),a=n.byteLength;if(0===a)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=o,d=!0);const l=o-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(_s.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=_s.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),li.appendBuffer(s.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Ft,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=a,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=n,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),s=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(_s.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=_s.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let s=new Uint8Array(i.byteLength+r.byteLength);s.set(i,0),s.set(r,i.byteLength),li.appendAudioBuffer(s.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=It,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=s,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),br(li.getSourceBufferUpdating())&&li.isStateOpen()&&br(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),br(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&br(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Fe.mediaSourceAudioInitTimeout)}),1e3)));if(br(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(br(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:s,end:t})}}else n=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:s,end:t})}}else nli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&br(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&br(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&br(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&br(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(br(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Ct,_opt:Vr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Qe,wasmDecodeDelay:je-Je});postMessage({cmd:O,type:Te,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ne)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Qe=!1,ci.delay=t-r):(Qe=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ne)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===ae&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ne?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===ae&&a.decode?a.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===s.length)return;const t=e.ts,i=s[0],n=e.type===ae&&yr(e.payload);if(br(r))n&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${n}`),s.shift(),ci.doDecode(i));else{const r=i.ts-t,a=i.type===ne&&e.type===ae;(r<=20||a||n)&&(ci.debugLog("worker",`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 ${a} and isVideoSqeHeader is ${n}`),s.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===y,t=ci._opt.playType===v;if(ni.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),a&&ci._opt.useWCS&&ci.useOffscreen()&&a.init(),br(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(s.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${s.length}`);if(ci.dropping){for(r=s.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${s.length}`);!r.isIFrame&&s.length;)r=s.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;s.length;)r=s.shift(),ci.doDecode(r);else if(r=s[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),s.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:$})):(s.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;s.length;){if(r=s[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${s.length}`);break}s.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();tt||(tt=e);const r=e-tt;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),tt=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(br(ci._opt.checkFirstIFrame)&&(Se=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:re,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;s.length&&(e=s.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Yr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Br=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&br(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,tt=null,Qe=!1,je=0,Je=0,a&&(a.destroy&&a.destroy(),a=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Vr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),s=[],n=[],u&&(u.close(),u=null),w=null,S=null,U=!1,we=!1,Se=!1,Xt=!1,er=!1,or=!1,Er=null,At=[],Ot=0,Gt=0,it=null,ut=null,$t=null,Ht=null,Ar=null,Vt=0,Wt=0,Bt=null,kt=null,ci.fetchStatus=Ct,Ur=!0,ni.destroy(),ai.destroy(),oi.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===ne&&Yt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&yr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:ee,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===b)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:R,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ne&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Kt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===ae){if(Vt>0){const e=t.ts-Ht,r=Vt+Vt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Vt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Wt}`),Ht-t.ts>E&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Vt=0),ci._opt.isDropSameTimestampGop&&br(t.isIFrame)&&Se)){const e=ci.hasIframeInBufferList(),t=br(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),vr(ci._opt.checkFirstIFrame)&&vr(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:te}))))}Ht>0&&(Vt=t.ts-Ht),Wt=e.byteLength,Ht=t.ts}if(Se){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${s.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;s.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${s.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return s.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>s.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return s.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return s.forEach((t=>{t.type===ne&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?ni.lastBuf&&(e=ni.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&ai.mp4Box&&(e=ai.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=dr((e=>{postMessage({cmd:O,type:Ae,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(ai.listenMp4Box(),ci._opt.isFmp4Private&&ai.initTransportDescarmber()),t.protocol===m){t.isFlv&&(u=new xr(ci.demuxFlv())),o=new AbortController;const r=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(vr(Br))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Ct,void e.body.cancel();if(!_r(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Yr(),void postMessage({cmd:O,type:Fe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:ke}),fr())ci.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):vr(Br)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Lt,void Yr()):void("string"!=typeof e?(ci.fetchStatus=Dt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Lt,Yr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:_,msg:"fetch done"})):postMessage({cmd:O,type:Ce})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Ut?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:s}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Lt,Yr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:_,msg:"fetch done"})):postMessage({cmd:O,type:Ce}))):o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):vr(Br)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Lt,void Yr()):void("string"!=typeof s?(ci.fetchStatus=Dt,l(s.byteLength),t.isFlv?u.write(s):t.isFmp4?ci.demuxFmp4(s):t.isMpeg4?ci.demuxMpeg4(s):t.isTs?ci.demuxTs(s):t.isNakedFlow&&ci.demuxNakedFlow(s),i()):ci.debugWarn("worker",`fetchNext().then() and value "${s}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Ut?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Ut?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Yr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===p&&(t.isFlv&&(u=new xr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:ke}),postMessage({cmd:O,type:Le})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),vr(Br)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ee,value:g,msg:e.code})):postMessage({cmd:O,type:Ce}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):vr(Br)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Fe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 oe:if(a.byteLength>0){let e=a;vr(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(a)),ci.decode(e,{type:ne,ts:n})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case de:if(a.byteLength>=6){const e=a[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(a,n);else{const e=15&a[0];let t=a[0]>>4===Tt;const i=e===Me;if(br(t)&&vr(Sr(a,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&yr(a)&&null===ci.isHevc){const e=15&a[0];ci.isHevc=e===Me,Er=sr(a,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Er}`)}t&&ci.calcIframeIntervalTimestamp(n),ci.isPlayer&&ci.calcNetworkDelay(n),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let s=r[0],o=ci.cryptoPayload(a,t);ci.decode(o,{type:ae,ts:n,isIFrame:t,cts:s})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case le:postMessage({cmd:Z,buffer:a},[a.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ne?ci._opt.hasAudio&&(postMessage({cmd:O,type:Be,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&ci._opt.hasVideo&&(postMessage({cmd:O,type:Ue,value:e.byteLength}),postMessage({cmd:O,type:xe,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Oi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?rn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):ds(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=fs(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Oe&&(t=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,s=e[0]>>1&1;if(Ar=r===Oe?s?16:8:0===s?8:16,ui&&ui.setCodec||!br(i))if(Yt(e)||r===Ge||r===$e||r===He){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const s=r===Oe?e.slice(2):new Uint8Array(0);if(i){if(r===He)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,s);r===Oe&&postMessage({cmd:I,buffer:s},[s.buffer]),we=!0,r!==Oe&&(r===He?(ci.mp3Demuxer||(ci.mp3Demuxer=new cs(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:H})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(vr(r)&&vr(ci._opt.mseDecodeAudio))postMessage({cmd:N,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(we){if(Yt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===He?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Oe?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!br(i))if(yr(e))if(r===Pe||r===Me){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Pe&&ci._opt.useSIMD){const e=Dr(t);if(e.codecWidth>A||e.codecHeight>A)return postMessage({cmd:q,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const s=new Uint8Array(e);U=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:P,code:r}),postMessage({cmd:M,buffer:s,codecId:r},[s.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,s){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,s,n);else if(vr(r))postMessage({cmd:z,payload:e,isIFrame:s,ts:t,cts:n,delay:ci.delay},[e.buffer]);else if(U)if(!Se&&s&&(Se=!0),Se){if(s&&yr(e)){const t=15&e[0];let r={};t===Pe?r=Dr(e.slice(5)):t===Me&&(r=jr(e)),r.codecWidth&&r.codecHeight&&w&&S&&(r.codecWidth!==w||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${w}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),er=!0,postMessage({cmd:W,value:`width: ${w}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(er)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(or)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(yr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${s.length}, need clear is ${e}`),e&&(s=[]),ci.isPlayer&&(ci.resetAllDelay(),vr(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:$}))),vr(ci._opt.checkFirstIFrame)&&br(r)&&(Se=!1)},dropBuffer$2:function(){if(s.length>0){let e=s.findIndex((e=>vr(e.isIFrame)&&e.type===ae));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:$});const t=s.length;s=s.slice(e);const r=s.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${s.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===s.length&&(ci.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 ne:ci.decode(new Uint8Array(e,5),{type:ne,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),s=i[0];if(ci._isEnhancedH265Header(s))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),yr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Me}ci.isPlayer&&ci.calcNetworkDelay(r),n[0]=i[4],n[1]=i[3],n[2]=i[2],n[3]=0;let s=n[0],a=ci.cryptoPayload(i,e);ci.decode(a,{type:ae,ts:r,isIFrame:e,cts:s})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){ni.dispatch(e)},demuxFmp4:function(e){ai.dispatch(e)},demuxMpeg4:function(e){oi.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=br(d),s===Mt){if(i===Nt){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),Er=sr(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Er}`),ci.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(s===Rt){let r=e,s=0;const n=i===Nt;n&&ci.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0],r=Zr(e.slice(8),n),r=ci.cryptoPayload(r,n),ci.decode(r,{type:ae,ts:t,isIFrame:n,cts:s}))}else if(s===zt){const r=i===Nt;r&&ci.calcIframeIntervalTimestamp(t);let s=Zr(e.slice(5),r);s=ci.cryptoPayload(s,r),ci.decode(s,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Pt)===Pt},findSei:function(e,t){let r=4;cr(Er)&&(r=Er),tr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===ft||r===ht),s=br(ci.isHevc)&&r===Ke;if(i||s){const r=rr(e,ci.isHevc);postMessage({cmd:X,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Se&&e>0))return;null===it?(it=e,ut=nr()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===y&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${it} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:De,value:i}))},calcIframeIntervalTimestamp:function(e){null===$t?$t=e:$t=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&vr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){br(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Xt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),Xt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:P,code:e}),postMessage({cmd:k,w:t,h:r}),w=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:D,sampleRate:t,channels:r,depth:Ar}),Gt=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=w*S*3/2;let s=e.HEAPU8.subarray(t,t+i),n=new Uint8Array(s);if(Bt=null,Je=r,ci.useOffscreen())try{if(Xt)return;ci.webglObj.renderYUV(w,S,n);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:T,output:n,delay:ci.delay,ts:r},[n.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ci._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(Ot){if(!(s>=(r=d-Ot)))return Ot+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==Gt&&(n[1]=Float32Array.of(...n[1],...a[1])));At[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==Gt&&(At[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer))),o=r,s-=r}for(Ot=s;Ot>=d;Ot-=d)At[0]=a[0].slice(o,o+=d),2==Gt&&(At[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer)));Ot&&(n[0]=a[0].slice(o),2==Gt&&(n[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===Bt&&(Bt=nr());const t=nr(),r=ar(kt>0?2*kt:5e3,1e3,5e3),i=t-Bt;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${kt} and diff is ${i} and maxDiff is ${r}\n and replay`),or=!0,postMessage({cmd:j}))},sendWebsocketMessage:function(e){d?d.readyState===Ie?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:H})},postStreamToMain(e,t){postMessage({cmd:K,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),vr(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,w=e,S=t,postMessage({cmd:k,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=f(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Gt=e,postMessage({cmd:D,sampleRate:t,channels:e,depth:Ar})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ci._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(Ot){if(!(s>=(r=d-Ot)))return Ot+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==Gt&&(n[1]=Float32Array.of(...n[1],...a[1])));At[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==Gt&&(At[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer))),o=r,s-=r}for(Ot=s;Ot>=d;Ot-=d)At[0]=a[0].slice(o,o+=d),2==Gt&&(At[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:At,ts:i},At.map((e=>e.buffer)));Ot&&(n[0]=a[0].slice(o),2==Gt&&(n[1]=a[1].slice(o))),a=[]},draw:function(t,r,i,s){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const n=e.HEAPU8.subarray(r,r+Cr),a=e.HEAPU8.subarray(i,i+Hr),o=e.HEAPU8.subarray(s,s+Hr),d=new Uint8Array(Cr+Hr+Hr);if(d.set(n),d.set(a,Cr),d.set(o,Cr+Hr),Bt=null,Je=t,ci.useOffscreen())try{if(Xt)return;ci.webglObj.renderYUV(w,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:T,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:T,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:x}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ce:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case ue:ci.pushBuffer(t.buffer,t.options);break;case he:ci.decodeAudio(t.buffer,t.ts);break;case fe:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:ci.clearBuffer(t.needClear);break;case ge:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case pe:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&br(t.options.isVideoInited)&&(Ur=t.options.isVideoInited),ci.close();break;case me:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case ye:ci.sendWebsocketMessage(t.message);break;case ve:li.$video.currentTime=Number(t.message);break;case be:ci.updatePlaybackIsPause(t.isPause)}}}(e,e,!0)}))})); diff --git a/demo/public/pro/js/decoder-pro-mt.js b/demo/public/pro/js/decoder-pro-mt.js index 81dd989c..9dd5a75f 100644 --- a/demo/public/pro/js/decoder-pro-mt.js +++ b/demo/public/pro/js/decoder-pro-mt.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="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,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-mt-worker.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_MT_WORKER_WASM_URL&&""!=JESSIBUCA_PRO_MT_WORKER_WASM_URL?JESSIBUCA_PRO_MT_WORKER_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c=(e,t)=>{throw t},u="object"==typeof window,h="function"==typeof importScripts,f="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,p=n.ENVIRONMENT_IS_PTHREAD||!1,m="";function _(e){return n.locateFile?n.locateFile(e,m):m+e}if(f){const{createRequire:e}=await import("module");var g=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),y=g("fs"),v=g("path");let t;m=h?v.dirname(m)+"/":g("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-mt.js",document.baseURI).href)),s=(e,t)=>(e=se(e)?new URL(e):v.normalize(e),y.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=se(e)?new URL(e):v.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&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),c=(e,t)=>{throw process.exitCode=e,t},n.inspect=()=>"[Emscripten Module object]";try{t=g("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||h)&&(h?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),r&&(m=r),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",f||(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(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)}));f&&"undefined"==typeof performance&&(global.performance=g("perf_hooks").performance);var b=console.log.bind(console),w=console.error.bind(console);f&&(b=function(){for(var e=arguments.length,t=new Array(e),r=0;re.startsWith(ie),se=e=>e.startsWith("file://");function oe(e){if(e==ee&&S)return new Uint8Array(S);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ae(e){if(!S&&(u||h)){if("function"==typeof fetch&&!se(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((()=>oe(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>oe(e)))}function de(e,t,r){return ae(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{U(`failed to asynchronously prepare wasm: ${e}`),Q(e)}))}function le(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||ne(t)||se(t)||f||"function"!=typeof fetch?de(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return U(`wasm streaming compile failed: ${e}`),U("falling back to ArrayBuffer instantiation"),de(t,r,i)}))))}function ce(){var e={a:Yi};function t(e,t){return Ki=e.exports,st(Ki.W),et=Ki.Z,q(Ki.R),A=t,J(),Ki}if(Z(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){U(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return le(S,ee,e,(function(e){t(e.instance,e.module)})).catch(i),{}}function ue(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}n.locateFile?ne(ee="decoder-pro-mt-worker.wasm")||(ee=_(ee)):ee=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).href;var he=e=>{e.terminate(),e.onmessage=e=>{}},fe=e=>{var t=Xe.pthreads[e];delete Xe.pthreads[e],he(t),sn(e),Xe.runningWorkers.splice(Xe.runningWorkers.indexOf(t),1),t.pthread_ptr=0},pe=e=>{Xe.pthreads[e].postMessage({cmd:"cancel"})},me=e=>{var t=Xe.pthreads[e];Xe.returnWorkerToPool(t)},_e=e=>{var t=Xe.getNewWorker();if(!t)return 6;Xe.runningWorkers.push(t),Xe.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 f&&t.unref(),t.postMessage(r,e.transferList),0},ge=0,ye=()=>nt||ge>0,ve={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=ve.isAbs(e),r="/"===e.substr(-1);return(e=ve.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=ve.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=ve.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return ve.normalize(e.join("/"))},join2:(e,t)=>ve.normalize(e+"/"+t)},be=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>(e.set(crypto.getRandomValues(new Uint8Array(e.byteLength))),e);if(f)try{var e=g("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}Q("initRandomDevice")},we=e=>(we=be())(e),Se={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:$e.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=ve.isAbs(i)}return(t?"/":"")+(e=ve.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("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&Ee)return Ee.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},xe=[],Ue=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},ke=(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 Be(e,t,r){var i=r>0?r:Ue(e)+1,n=new Array(i),s=ke(e,n,0,n.length);return t&&(n.length=s),n}var Te=()=>{if(!xe.length){var e=null;if(f){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=y.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;xe=Be(e,!0)}return xe.shift()},Ce={ttys:[],init(){},shutdown(){},register(e,t){Ce.ttys[e]={input:[],output:[],ops:t},$e.registerDevice(e,Ce.stream_ops)},stream_ops:{open(e){var t=Ce.ttys[e.node.rdev];if(!t)throw new $e.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new $e.ErrnoError(60);for(var s=0,o=0;oTe(),put_char(e,t){null===t||10===t?(x(Ae(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(x(Ae(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(U(Ae(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(U(Ae(e.output,0)),e.output=[])}}},De=e=>{Q()},Pe={ops_table:null,mount:e=>Pe.createNode(null,"/",16895,0),createNode(e,t,r,i){if($e.isBlkdev(r)||$e.isFIFO(r))throw new $e.ErrnoError(63);Pe.ops_table||(Pe.ops_table={dir:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr,lookup:Pe.node_ops.lookup,mknod:Pe.node_ops.mknod,rename:Pe.node_ops.rename,unlink:Pe.node_ops.unlink,rmdir:Pe.node_ops.rmdir,readdir:Pe.node_ops.readdir,symlink:Pe.node_ops.symlink},stream:{llseek:Pe.stream_ops.llseek}},file:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr},stream:{llseek:Pe.stream_ops.llseek,read:Pe.stream_ops.read,write:Pe.stream_ops.write,allocate:Pe.stream_ops.allocate,mmap:Pe.stream_ops.mmap,msync:Pe.stream_ops.msync}},link:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr,readlink:Pe.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr},stream:$e.chrdev_stream_ops}});var n=$e.createNode(e,t,r,i);return $e.isDir(n.mode)?(n.node_ops=Pe.ops_table.dir.node,n.stream_ops=Pe.ops_table.dir.stream,n.contents={}):$e.isFile(n.mode)?(n.node_ops=Pe.ops_table.file.node,n.stream_ops=Pe.ops_table.file.stream,n.usedBytes=0,n.contents=null):$e.isLink(n.mode)?(n.node_ops=Pe.ops_table.link.node,n.stream_ops=Pe.ops_table.link.stream):$e.isChrdev(n.mode)&&(n.node_ops=Pe.ops_table.chrdev.node,n.stream_ops=Pe.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=$e.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,$e.isDir(e.mode)?t.size=4096:$e.isFile(e.mode)?t.size=e.usedBytes:$e.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&Pe.resizeFileStorage(e,t.size)},lookup(e,t){throw $e.genericErrors[44]},mknod:(e,t,r,i)=>Pe.createNode(e,t,r,i),rename(e,t,r){if($e.isDir(e.mode)){var i;try{i=$e.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new $e.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=$e.lookupNode(e,t);for(var i in r.contents)throw new $e.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=Pe.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!$e.isLink(e.mode))throw new $e.ErrnoError(28);return e.link}},stream_ops:{read(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(Pe.stream_ops.write(e,t,0,i,r,!1),0)}},Le=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{R(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),n&&J()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),n&&Z()},Fe=(e,t,r,i,n,s)=>{$e.createDataFile(e,t,r,i,n,s)},Ie=n.preloadPlugins||[],Me=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ie.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},Re=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?Se.resolve(ve.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Fe(e,t,r,i,n,d),s&&s(),J()}Me(r,c,u,(()=>{o&&o(),J()}))||u(r)}Z(),"string"==typeof r?Le(r,(e=>u(e)),o):u(r)},ze=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},Ne=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},$e={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=Se.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new $e.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=$e.root,n="/",s=0;s40)throw new $e.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if($e.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)%$e.nameTable.length},hashAddNode(e){var t=$e.hashName(e.parent.id,e.name);e.name_next=$e.nameTable[t],$e.nameTable[t]=e},hashRemoveNode(e){var t=$e.hashName(e.parent.id,e.name);if($e.nameTable[t]===e)$e.nameTable[t]=e.name_next;else for(var r=$e.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=$e.mayLookup(e);if(r)throw new $e.ErrnoError(r,e);for(var i=$e.hashName(e.id,t),n=$e.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return $e.lookup(e,t)},createNode(e,t,r,i){var n=new $e.FSNode(e,t,r,i);return $e.hashAddNode(n),n},destroyNode(e){$e.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>$e.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=$e.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return $e.lookupNode(e,t),20}catch(e){}return $e.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=$e.lookupNode(e,t)}catch(e){return e.errno}var n=$e.nodePermissions(e,"wx");if(n)return n;if(r){if(!$e.isDir(i.mode))return 54;if($e.isRoot(i)||$e.getPath(i)===$e.cwd())return 10}else if($e.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?$e.isLink(e.mode)?32:$e.isDir(e.mode)&&("r"!==$e.flagsToPermissionString(t)||512&t)?31:$e.nodePermissions(e,$e.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=$e.MAX_OPEN_FDS;e++)if(!$e.streams[e])return e;throw new $e.ErrnoError(33)},getStreamChecked(e){var t=$e.getStream(e);if(!t)throw new $e.ErrnoError(8);return t},getStream:e=>$e.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return $e.FSStream||($e.FSStream=function(){this.shared={}},$e.FSStream.prototype={},Object.defineProperties($e.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new $e.FSStream,e),-1==t&&(t=$e.nextfd()),e.fd=t,$e.streams[t]=e,e},closeStream(e){$e.streams[e]=null},chrdev_stream_ops:{open(e){var t=$e.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new $e.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){$e.devices[e]={stream_ops:t}},getDevice:e=>$e.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),$e.syncFSRequests++,$e.syncFSRequests>1&&U(`warning: ${$e.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=$e.getMounts($e.root.mount),i=0;function n(e){return $e.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&&$e.root)throw new $e.ErrnoError(10);if(!n&&!s){var o=$e.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,$e.isMountpoint(i))throw new $e.ErrnoError(10);if(!$e.isDir(i.mode))throw new $e.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?$e.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=$e.lookupPath(e,{follow_mount:!1});if(!$e.isMountpoint(t.node))throw new $e.ErrnoError(28);var r=t.node,i=r.mounted,n=$e.getMounts(i);Object.keys($e.nameTable).forEach((e=>{for(var t=$e.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&$e.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=$e.lookupPath(e,{parent:!0}).node,n=ve.basename(e);if(!n||"."===n||".."===n)throw new $e.ErrnoError(28);var s=$e.mayCreate(i,n);if(s)throw new $e.ErrnoError(s);if(!i.node_ops.mknod)throw new $e.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,$e.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,$e.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,$e.mknod(e,t,r)),symlink(e,t){if(!Se.resolve(e))throw new $e.ErrnoError(44);var r=$e.lookupPath(t,{parent:!0}).node;if(!r)throw new $e.ErrnoError(44);var i=ve.basename(t),n=$e.mayCreate(r,i);if(n)throw new $e.ErrnoError(n);if(!r.node_ops.symlink)throw new $e.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=ve.dirname(e),s=ve.dirname(t),o=ve.basename(e),a=ve.basename(t);if(r=$e.lookupPath(e,{parent:!0}).node,i=$e.lookupPath(t,{parent:!0}).node,!r||!i)throw new $e.ErrnoError(44);if(r.mount!==i.mount)throw new $e.ErrnoError(75);var d,l=$e.lookupNode(r,o),c=Se.relative(e,s);if("."!==c.charAt(0))throw new $e.ErrnoError(28);if("."!==(c=Se.relative(t,n)).charAt(0))throw new $e.ErrnoError(55);try{d=$e.lookupNode(i,a)}catch(e){}if(l!==d){var u=$e.isDir(l.mode),h=$e.mayDelete(r,o,u);if(h)throw new $e.ErrnoError(h);if(h=d?$e.mayDelete(i,a,u):$e.mayCreate(i,a))throw new $e.ErrnoError(h);if(!r.node_ops.rename)throw new $e.ErrnoError(63);if($e.isMountpoint(l)||d&&$e.isMountpoint(d))throw new $e.ErrnoError(10);if(i!==r&&(h=$e.nodePermissions(r,"w")))throw new $e.ErrnoError(h);$e.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{$e.hashAddNode(l)}}},rmdir(e){var t=$e.lookupPath(e,{parent:!0}).node,r=ve.basename(e),i=$e.lookupNode(t,r),n=$e.mayDelete(t,r,!0);if(n)throw new $e.ErrnoError(n);if(!t.node_ops.rmdir)throw new $e.ErrnoError(63);if($e.isMountpoint(i))throw new $e.ErrnoError(10);t.node_ops.rmdir(t,r),$e.destroyNode(i)},readdir(e){var t=$e.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new $e.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=$e.lookupPath(e,{parent:!0}).node;if(!t)throw new $e.ErrnoError(44);var r=ve.basename(e),i=$e.lookupNode(t,r),n=$e.mayDelete(t,r,!1);if(n)throw new $e.ErrnoError(n);if(!t.node_ops.unlink)throw new $e.ErrnoError(63);if($e.isMountpoint(i))throw new $e.ErrnoError(10);t.node_ops.unlink(t,r),$e.destroyNode(i)},readlink(e){var t=$e.lookupPath(e).node;if(!t)throw new $e.ErrnoError(44);if(!t.node_ops.readlink)throw new $e.ErrnoError(28);return Se.resolve($e.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=$e.lookupPath(e,{follow:!t}).node;if(!r)throw new $e.ErrnoError(44);if(!r.node_ops.getattr)throw new $e.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>$e.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?$e.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new $e.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){$e.chmod(e,t,!0)},fchmod(e,t){var r=$e.getStreamChecked(e);$e.chmod(r.node,t)},chown(e,t,r,i){var n;if(!(n="string"==typeof e?$e.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new $e.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){$e.chown(e,t,r,!0)},fchown(e,t,r){var i=$e.getStreamChecked(e);$e.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new $e.ErrnoError(28);var r;if(!(r="string"==typeof e?$e.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new $e.ErrnoError(63);if($e.isDir(r.mode))throw new $e.ErrnoError(31);if(!$e.isFile(r.mode))throw new $e.ErrnoError(28);var i=$e.nodePermissions(r,"w");if(i)throw new $e.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=$e.getStreamChecked(e);if(0==(2097155&r.flags))throw new $e.ErrnoError(28);$e.truncate(r.node,t)},utime(e,t,r){var i=$e.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new $e.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?ze(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=ve.normalize(e);try{i=$e.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new $e.ErrnoError(20)}else i=$e.mknod(e,r,0),s=!0;if(!i)throw new $e.ErrnoError(44);if($e.isChrdev(i.mode)&&(t&=-513),65536&t&&!$e.isDir(i.mode))throw new $e.ErrnoError(54);if(!s){var o=$e.mayOpen(i,t);if(o)throw new $e.ErrnoError(o)}512&t&&!s&&$e.truncate(i,0),t&=-131713;var a=$e.createStream({node:i,path:$e.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||($e.readFiles||($e.readFiles={}),e in $e.readFiles||($e.readFiles[e]=1)),a},close(e){if($e.isClosed(e))throw new $e.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{$e.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if($e.isClosed(e))throw new $e.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new $e.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new $e.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 $e.ErrnoError(28);if($e.isClosed(e))throw new $e.ErrnoError(8);if(1==(2097155&e.flags))throw new $e.ErrnoError(8);if($e.isDir(e.node.mode))throw new $e.ErrnoError(31);if(!e.stream_ops.read)throw new $e.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new $e.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 $e.ErrnoError(28);if($e.isClosed(e))throw new $e.ErrnoError(8);if(0==(2097155&e.flags))throw new $e.ErrnoError(8);if($e.isDir(e.node.mode))throw new $e.ErrnoError(31);if(!e.stream_ops.write)throw new $e.ErrnoError(28);e.seekable&&1024&e.flags&&$e.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new $e.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($e.isClosed(e))throw new $e.ErrnoError(8);if(t<0||r<=0)throw new $e.ErrnoError(28);if(0==(2097155&e.flags))throw new $e.ErrnoError(8);if(!$e.isFile(e.node.mode)&&!$e.isDir(e.node.mode))throw new $e.ErrnoError(43);if(!e.stream_ops.allocate)throw new $e.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new $e.ErrnoError(2);if(1==(2097155&e.flags))throw new $e.ErrnoError(2);if(!e.stream_ops.mmap)throw new $e.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 $e.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=$e.open(e,t.flags),n=$e.stat(e).size,s=new Uint8Array(n);return $e.read(i,s,0,n,0),"utf8"===t.encoding?r=Ae(s,0):"binary"===t.encoding&&(r=s),$e.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=$e.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(Ue(t)+1),s=ke(t,n,0,n.length);$e.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");$e.write(i,t,0,t.byteLength,void 0,r.canOwn)}$e.close(i)},cwd:()=>$e.currentPath,chdir(e){var t=$e.lookupPath(e,{follow:!0});if(null===t.node)throw new $e.ErrnoError(44);if(!$e.isDir(t.node.mode))throw new $e.ErrnoError(54);var r=$e.nodePermissions(t.node,"x");if(r)throw new $e.ErrnoError(r);$e.currentPath=t.path},createDefaultDirectories(){$e.mkdir("/tmp"),$e.mkdir("/home"),$e.mkdir("/home/web_user")},createDefaultDevices(){$e.mkdir("/dev"),$e.registerDevice($e.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),$e.mkdev("/dev/null",$e.makedev(1,3)),Ce.register($e.makedev(5,0),Ce.default_tty_ops),Ce.register($e.makedev(6,0),Ce.default_tty1_ops),$e.mkdev("/dev/tty",$e.makedev(5,0)),$e.mkdev("/dev/tty1",$e.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=we(e).byteLength),e[--t]);$e.createDevice("/dev","random",r),$e.createDevice("/dev","urandom",r),$e.mkdir("/dev/shm"),$e.mkdir("/dev/shm/tmp")},createSpecialDirectories(){$e.mkdir("/proc");var e=$e.mkdir("/proc/self");$e.mkdir("/proc/self/fd"),$e.mount({mount(){var t=$e.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=$e.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?$e.createDevice("/dev","stdin",n.stdin):$e.symlink("/dev/tty","/dev/stdin"),n.stdout?$e.createDevice("/dev","stdout",null,n.stdout):$e.symlink("/dev/tty","/dev/stdout"),n.stderr?$e.createDevice("/dev","stderr",null,n.stderr):$e.symlink("/dev/tty1","/dev/stderr"),$e.open("/dev/stdin",0),$e.open("/dev/stdout",1),$e.open("/dev/stderr",1)},ensureErrnoError(){$e.ErrnoError||($e.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},$e.ErrnoError.prototype=new Error,$e.ErrnoError.prototype.constructor=$e.ErrnoError,[44].forEach((e=>{$e.genericErrors[e]=new $e.ErrnoError(e),$e.genericErrors[e].stack=""})))},staticInit(){$e.ensureErrnoError(),$e.nameTable=new Array(4096),$e.mount(Pe,{},"/"),$e.createDefaultDirectories(),$e.createDefaultDevices(),$e.createSpecialDirectories(),$e.filesystems={MEMFS:Pe}},init(e,t,r){$e.init.initialized=!0,$e.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,$e.createStandardStreams()},quit(){$e.init.initialized=!1;for(var e=0;e<$e.streams.length;e++){var t=$e.streams[e];t&&$e.close(t)}},findObject(e,t){var r=$e.analyzePath(e,t);return r.exists?r.object:null},analyzePath(e,t){try{e=(i=$e.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=$e.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=ve.basename(e),i=$e.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:$e.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var o=ve.join2(e,s);try{$e.mkdir(o)}catch(e){}e=o}}return o},createFile(e,t,r,i,n){var s=ve.join2("string"==typeof e?e:$e.getPath(e),t),o=Ne(i,n);return $e.create(s,o)},createDataFile(e,t,r,i,n,s){var o=t;e&&(e="string"==typeof e?e:$e.getPath(e),o=t?ve.join2(e,t):e);var a=Ne(i,n),d=$e.create(o,a);if(r){if("string"==typeof r){for(var l=new Array(r.length),c=0,u=r.length;cthis.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||[]):Be(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,x("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=$e.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 c(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 $e.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>($e.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{$e.forceLoadFile(d);var s=De();if(!s)throw new $e.ErrnoError(48);return c(e,B,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Oe=(e,t)=>e?Ae(T,e,t):"",Ge={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(ve.isAbs(t))return t;var i;if(i=-100===e?$e.cwd():Ge.getStreamFromFD(e).path,0==t.length){if(!r)throw new $e.ErrnoError(44);return i}return ve.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&ve.normalize(t)!==ve.normalize($e.getPath(e.node)))return-54;throw e}P[r>>2]=i.dev,P[r+4>>2]=i.mode,L[r+8>>2]=i.nlink,P[r+12>>2]=i.uid,P[r+16>>2]=i.gid,P[r+20>>2]=i.rdev,re=[i.size>>>0,(te=i.size,+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[r+24>>2]=re[0],P[r+28>>2]=re[1],P[r+32>>2]=4096,P[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return re=[Math.floor(n/1e3)>>>0,(te=Math.floor(n/1e3),+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[r+40>>2]=re[0],P[r+44>>2]=re[1],L[r+48>>2]=n%1e3*1e3,re=[Math.floor(s/1e3)>>>0,(te=Math.floor(s/1e3),+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[r+56>>2]=re[0],P[r+60>>2]=re[1],L[r+64>>2]=s%1e3*1e3,re=[Math.floor(o/1e3)>>>0,(te=Math.floor(o/1e3),+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[r+72>>2]=re[0],P[r+76>>2]=re[1],L[r+80>>2]=o%1e3*1e3,re=[i.ino>>>0,(te=i.ino,+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[r+88>>2]=re[0],P[r+92>>2]=re[1],0},doMsync(e,t,r,i,n){if(!$e.isFile(t.node.mode))throw new $e.ErrnoError(43);if(2&i)return 0;var s=T.slice(e,e+r);$e.msync(t,s,n,r,i)},varargs:void 0,get(){var e=P[+Ge.varargs>>2];return Ge.varargs+=4,e},getp:()=>Ge.get(),getStr:e=>Oe(e),getStreamFromFD:e=>$e.getStreamChecked(e)},He=e=>{var t=ln(),r=e();return cn(t),r},We=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Ve=function(e,t){var r=arguments.length-2,i=arguments;return He((()=>{for(var n=r,s=un(8*n),o=s>>3,a=0;a{if(k=e,p)throw Qe(e),"unwind";je(e)},Ye=qe,Ke=e=>{if(e instanceof ue||"unwind"==e)return k;c(1,e)},Xe={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){p?Xe.initWorker():Xe.initMainThread()},initMainThread(){j((()=>{Z(),Xe.loadWasmModuleToAllWorkers((()=>J()))}))},initWorker(){nt=!1},setExitStatus:e=>{k=e},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var e of Xe.runningWorkers)he(e);for(var e of Xe.unusedWorkers)he(e);Xe.unusedWorkers=[],Xe.runningWorkers=[],Xe.pthreads=[]},returnWorkerToPool:e=>{var t=e.pthread_ptr;delete Xe.pthreads[t],Xe.unusedWorkers.push(e),Xe.runningWorkers.splice(Xe.runningWorkers.indexOf(e),1),e.pthread_ptr=0,sn(t)},receiveObjectTransfer(e){},threadInitTLS(){Xe.tlsInitFunctions.forEach((e=>e()))},loadWasmModuleToWorker:e=>new Promise((t=>{e.onmessage=r=>{var i=r.data,s=i.cmd;if(i.targetThread&&i.targetThread!=Ji()){var o=Xe.pthreads[i.targetThread];o?o.postMessage(i,i.transferList):U(`Internal error! Worker sent a message "${s}" to target pthread ${i.targetThread}, but that thread no longer exists!`)}else"checkMailbox"===s?ai():"spawnThread"===s?_e(i):"cleanupThread"===s?me(i.thread):"killThread"===s?fe(i.thread):"cancelThread"===s?pe(i.thread):"loaded"===s?(e.loaded=!0,t(e)):"alert"===s?alert(`Thread ${i.threadId}: ${i.text}`):"setimmediate"===i.target?e.postMessage(i):"callHandler"===s?n[i.handler](...i.args):s&&U(`worker sent an unknown command ${s}`)},e.onerror=e=>{throw U(`worker sent an error! ${e.filename}:${e.lineno}: ${e.message}`),e},f&&(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:E,wasmModule:A})})),loadWasmModuleToAllWorkers(e){e()},allocateUnusedWorker(){var e;if(n.locateFile){var t=_("decoder-pro-mt-worker.worker.js");e=new Worker(t,{type:"module"})}else e=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),{type:"module"});Xe.unusedWorkers.push(e)},getNewWorker:()=>(0==Xe.unusedWorkers.length&&(Xe.allocateUnusedWorker(),Xe.loadWasmModuleToWorker(Xe.unusedWorkers[0])),Xe.unusedWorkers.pop())};n.PThread=Xe;var Ze=e=>{for(;e.length>0;)e.shift()(n)},Je=()=>{var e=Ji(),t=L[e+52>>2],r=L[e+56>>2];dn(t,t-r),cn(t)};function Qe(e){if(p)return Ve(1,0,e);Ye(e)}n.establishStackSpace=Je;var et,tt=[],rt=e=>{var t=tt[e];return t||(e>=tt.length&&(tt.length=e+1),tt[e]=t=et.get(e)),t},it=(e,t)=>{!function(e){ye()?Xe.setExitStatus(e):on(e)}(rt(e)(t))};n.invokeEntryPoint=it;var nt=n.noExitRuntime||!0,st=e=>{Xe.tlsInitFunctions.push(e)},ot=(e,t,r,i)=>{Q(`Assertion failed: ${Oe(e)}, at: `+[t?Oe(t):"unknown filename",r,i?Oe(i):"unknown function"])};function at(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){L[this.ptr+4>>2]=e},this.get_type=function(){return L[this.ptr+4>>2]},this.set_destructor=function(e){L[this.ptr+8>>2]=e},this.get_destructor=function(){return L[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){L[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return L[this.ptr+16>>2]},this.get_exception_ptr=function(){if(hn(this.get_type()))return L[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var dt=(e,t,r)=>{throw new at(e).init(t,r),e},lt=e=>{tn(e,!h,1,!u,65536,!1),Xe.threadInitTLS()},ct=e=>{p?postMessage({cmd:"cleanupThread",thread:e}):me(e)};function ut(e,t,r,i){return p?Ve(2,1,e,t,r,i):ht(e,t,r,i)}var ht=(e,t,r,i)=>{if("undefined"==typeof SharedArrayBuffer)return U("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var n=[];if(p&&0===n.length)return ut(e,t,r,i);var s={startRoutine:r,pthread_ptr:e,arg:i,transferList:n};return p?(s.cmd="spawnThread",postMessage(s,n),0):_e(s)},ft=e=>(P[Qi()>>2]=e,e);function pt(e,t,r){if(p)return Ve(3,1,e,t,r);Ge.varargs=r;try{var i=Ge.getStreamFromFD(e);switch(t){case 0:if((n=Ge.get())<0)return-28;for(;$e.streams[n];)n++;return $e.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=Ge.get();return i.flags|=n,0;case 5:return n=Ge.getp(),C[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ft(28),-1}}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return-e.errno}}function mt(e,t,r,i){if(p)return Ve(4,1,e,t,r,i);Ge.varargs=i;try{t=Ge.getStr(t),t=Ge.calculateAt(e,t);var n=i?Ge.get():0;return $e.open(t,r,n).fd}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return-e.errno}}var _t,gt,yt,vt=(e,t,r,i,n)=>{},bt=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);_t=e},wt=e=>{for(var t="",r=e;T[r];)t+=_t[T[r++]];return t},St={},Et={},At={},xt=e=>{throw new gt(e)},Ut=e=>{throw new yt(e)},kt=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ut("Mismatched type converter count");for(var n=0;n{Et.hasOwnProperty(e)?n[t]=Et[e]:(s.push(e),St.hasOwnProperty(e)||(St[e]=[]),St[e].push((()=>{n[t]=Et[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function Bt(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||xt(`type "${i}" must have a positive integer typeid pointer`),Et.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;xt(`Cannot register type '${i}' twice`)}if(Et[e]=t,delete At[e],St.hasOwnProperty(e)){var n=St[e];delete St[e],n.forEach((e=>e()))}}function Tt(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Bt(e,t,r)}var Ct,Dt=8,Pt=(e,t,r,i)=>{Tt(e,{name:t=wt(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Dt,readValueFromPointer:function(e){return this.fromWireType(T[e])},destructorFunction:null})},Lt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Ft=e=>{xt(e.$$.ptrType.registeredClass.name+" instance already deleted")},It=!1,Mt=e=>{},Rt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},zt=e=>{e.count.value-=1,0===e.count.value&&Rt(e)},Nt=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=Nt(e,t,r.baseClass);return null===i?null:r.downcast(i)},$t={},Ot=()=>Object.keys(qt).length,Gt=()=>{var e=[];for(var t in qt)qt.hasOwnProperty(t)&&e.push(qt[t]);return e},Ht=[],Wt=()=>{for(;Ht.length;){var e=Ht.pop();e.$$.deleteScheduled=!1,e.delete()}},Vt=e=>{Ct=e,Ht.length&&Ct&&Ct(Wt)},jt=()=>{n.getInheritedInstanceCount=Ot,n.getLiveInheritedInstances=Gt,n.flushPendingDeletes=Wt,n.setDelayFunction=Vt},qt={},Yt=(e,t)=>{for(void 0===t&&xt("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Kt=(e,t)=>(t=Yt(e,t),qt[t]),Xt=(e,t)=>(t.ptrType&&t.ptr||Ut("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ut("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Jt(Object.create(e,{$$:{value:t}})));function Zt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Kt(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?Xt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Xt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,o=this.registeredClass.getActualType(t),a=$t[o];if(!a)return n.call(this);s=this.isConst?a.constPointerType:a.pointerType;var d=Nt(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?Xt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):Xt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var Jt=e=>"undefined"==typeof FinalizationRegistry?(Jt=e=>e,e):(It=new FinalizationRegistry((e=>{zt(e.$$)})),Jt=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};It.register(e,r,e)}return e},Mt=e=>It.unregister(e),Jt(e)),Qt=()=>{Object.assign(er.prototype,{isAliasOf(e){if(!(this instanceof er))return!1;if(!(e instanceof er))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||Ft(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Jt(Object.create(Object.getPrototypeOf(this),{$$:{value:Lt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Ft(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&xt("Object already scheduled for deletion"),Mt(this),zt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Ft(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&xt("Object already scheduled for deletion"),Ht.push(this),1===Ht.length&&Ct&&Ct(Wt),this.$$.deleteScheduled=!0,this}})};function er(){}var tr=(e,t)=>Object.defineProperty(t,"name",{value:e}),rr=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||xt(`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}},ir=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&xt(`Cannot register public name '${e}' twice`),rr(n,e,e),n.hasOwnProperty(r)&&xt(`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))},nr=48,sr=57,or=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=nr&&t<=sr?`_${e}`:e};function ar(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=[]}var dr=(e,t,r)=>{for(;t!==r;)t.upcast||xt(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function lr(e,t){if(null===t)return this.isReference&&xt(`null is not a valid ${this.name}`),0;t.$$||xt(`Cannot pass "${Or(t)}" as a ${this.name}`),t.$$.ptr||xt(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return dr(t.$$.ptr,r,this.registeredClass)}function cr(e,t){var r;if(null===t)return this.isReference&&xt(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||xt(`Cannot pass "${Or(t)}" as a ${this.name}`),t.$$.ptr||xt(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&xt(`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=dr(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&xt("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:xt(`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,zr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:xt("Unsupporting sharing policy")}return r}function ur(e,t){if(null===t)return this.isReference&&xt(`null is not a valid ${this.name}`),0;t.$$||xt(`Cannot pass "${Or(t)}" as a ${this.name}`),t.$$.ptr||xt(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&xt(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return dr(t.$$.ptr,r,this.registeredClass)}function hr(e){return this.fromWireType(L[e>>2])}var fr=()=>{Object.assign(pr.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Dt,readValueFromPointer:hr,deleteObject(e){null!==e&&e.delete()},fromWireType:Zt})};function pr(e,t,r,i,n,s,o,a,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=cr:i?(this.toWireType=lr,this.destructorFunction=null):(this.toWireType=ur,this.destructorFunction=null)}var mr,_r=(e,t,r)=>{n.hasOwnProperty(e)||Ut("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},gr=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},yr=(e,t,r)=>e.includes("j")?gr(e,t,r):rt(t).apply(null,r),vr=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),yr(e,t,r)}},br=(e,t)=>{var r=(e=wt(e)).includes("j")?vr(e,t):rt(t);return"function"!=typeof r&&xt(`unknown function pointer with signature ${e}: ${t}`),r},wr=(e,t)=>{var r=tr(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},Sr=e=>{var t=en(e),r=wt(t);return Xi(t),r},Er=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Et[t]||(At[t]?At[t].forEach(e):(r.push(t),i[t]=!0))})),new mr(`${e}: `+r.map(Sr).join([", "]))},Ar=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=wt(c),s=br(n,s),a&&(a=br(o,a)),l&&(l=br(d,l)),h=br(u,h);var f=or(c);ir(f,(function(){Er(`Cannot construct ${c} due to unbound types`,[i])})),kt([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:er.prototype;var o=tr(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new gt("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new gt(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new gt(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new ar(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new pr(c,u,!0,!1,!1),m=new pr(c+"*",u,!1,!1,!1),_=new pr(c+" const*",u,!1,!0,!1);return $t[e]={pointerType:m,constPointerType:_},_r(f,o),[p,m,_]}))},xr=(e,t)=>{for(var r=[],i=0;i>2]);return r},Ur=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function kr(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=tr(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Br(e,t,r,i,n,s){var o=t.length;o<2&&xt("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=xr(t,r);n=br(i,n),kt([],[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 gt(`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]=()=>{Er(`Cannot construct ${e.name} due to unbound types`,o)},kt([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Br(r,i,null,n,s),[]))),[]}))},Cr=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Dr=(e,t,r,i,n,s,o,a,d)=>{var l=xr(r,i);t=wt(t),t=Cr(t),s=br(n,s),kt([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Er(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(rr(c,t,i),c[t].overloadTable[r-2]=n),kt([],l,(function(n){var a=Br(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Pr(){Object.assign(Lr.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)}})}function Lr(){this.allocated=[void 0],this.freelist=[]}var Fr=new Lr,Ir=e=>{e>=Fr.reserved&&0==--Fr.get(e).refcount&&Fr.free(e)},Mr=()=>{for(var e=0,t=Fr.reserved;t{Fr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Fr.reserved=Fr.allocated.length,n.count_emval_handles=Mr},zr={toValue:e=>(e||xt("Cannot use deleted val. handle = "+e),Fr.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 Fr.allocate({refcount:1,value:e})}}};function Nr(e){return this.fromWireType(P[e>>2])}var $r=(e,t)=>{Tt(e,{name:t=wt(t),fromWireType:e=>{var t=zr.toValue(e);return Ir(e),t},toWireType:(e,t)=>zr.toHandle(t),argPackAdvance:Dt,readValueFromPointer:Nr,destructorFunction:null})},Or=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},Gr=(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}`)}},Hr=(e,t,r)=>{Tt(e,{name:t=wt(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Dt,readValueFromPointer:Gr(t,r),destructorFunction:null})},Wr=(e,t,r)=>{switch(t){case 1:return r?e=>B[e>>0]:e=>T[e>>0];case 2:return r?e=>C[e>>1]:e=>D[e>>1];case 4:return r?e=>P[e>>2]:e=>L[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},Vr=(e,t,r,i,n)=>{t=wt(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");Tt(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Dt,readValueFromPointer:Wr(t,r,0!==i),destructorFunction:null})},jr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=L[e>>2],r=L[e+4>>2];return new i(B.buffer,r,t)}Tt(e,{name:r=wt(r),fromWireType:n,argPackAdvance:Dt,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},qr=(e,t,r)=>ke(e,T,t,r),Yr=(e,t)=>{var r="std::string"===(t=wt(t));Tt(e,{name:t,fromWireType(e){var t,i=L[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==T[a]){var d=Oe(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)qr(t,o,i+1);else if(n)for(var a=0;a255&&(Xi(o),xt("String has UTF-16 code units that do not fit in 8 bits")),T[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&D[i];)++i;if((r=i<<1)-e>32&&Kr)return Kr.decode(T.slice(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=C[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s},Zr=(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 C[t>>1]=0,t-i},Jr=e=>2*e.length,Qr=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=P[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},ei=(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)),P[t>>2]=o,(t+=4)+4>n)break}return P[t>>2]=0,t-i},ti=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},ri=(e,t,r)=>{var i,n,s,o,a;r=wt(r),2===t?(i=Xr,n=Zr,o=Jr,s=()=>D,a=1):4===t&&(i=Qr,n=ei,o=ti,s=()=>L,a=2),Tt(e,{name:r,fromWireType:e=>{for(var r,n=L[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return Xi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&xt(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=Zi(4+s+t);return L[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(Xi,d),d},argPackAdvance:Dt,readValueFromPointer:Nr,destructorFunction(e){Xi(e)}})},ii=(e,t)=>{Tt(e,{isVoid:!0,name:t=wt(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},ni=()=>{if(!ye())try{p?on(k):Ye(k)}catch(e){Ke(e)}},si=e=>{if(!M)try{e(),ni()}catch(e){Ke(e)}},oi=e=>{if("function"==typeof Atomics.waitAsync){Atomics.waitAsync(P,e>>2,e).value.then(ai);var t=e+128;Atomics.store(P,t>>2,1)}};n.__emscripten_thread_mailbox_await=oi;var ai=()=>{var e=Ji();e&&(oi(e),si(an))};n.checkMailbox=ai;var di,li=(e,t,r)=>{if(e==t)setTimeout((()=>ai()));else if(p)postMessage({targetThread:e,cmd:"checkMailbox"});else{var i=Xe.pthreads[e];if(!i)return;i.postMessage({cmd:"checkMailbox"})}},ci=[],ui=(e,t,r,i)=>{ci.length=r;for(var n=i>>3,s=0;s{f&&Xe.pthreads[e].ref()},fi={},pi=e=>{var t=fi[e];return void 0===t?wt(e):t},mi=[],_i=(e,t,r,i,n)=>(e=mi[e])(t=zr.toValue(t),t[r=pi(r)],i,n),gi=e=>{var t=mi.length;return mi.push(e),t},yi=(e,t)=>{var r=Et[e];return void 0===r&&xt(t+" has unknown type "+Sr(e)),r},vi=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},bi=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(L[t>>2]=zr.toHandle(i)),n},wi=(e,t,r)=>{var i=vi(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",o=0,a=[];0===r&&a.push("obj");for(var d=["retType"],l=[n],c=0;ce.name)).join(", ")}) => ${n.name}>`;return gi(tr(h,u))},Si=e=>{var t=zr.toValue(e);Ur(t),Ir(e)},Ei=()=>{Q("")},Ai=()=>{},xi=()=>Date.now(),Ui=()=>{ge+=1},ki=()=>{throw Ui(),"unwind"};di=()=>performance.timeOrigin+performance.now();var Bi=()=>f?g("os").cpus().length:navigator.hardwareConcurrency,Ti=e=>{Q("OOM")},Ci=e=>{T.length,Ti()},Di={},Pi=()=>l||"./this.program",Li=()=>{if(!Li.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",_:Pi()};for(var t in Di)void 0===Di[t]?delete e[t]:e[t]=Di[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Li.strings=r}return Li.strings},Fi=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);B[t>>0]=0},Ii=function(e,t){if(p)return Ve(5,1,e,t);var r=0;return Li().forEach(((i,n)=>{var s=t+r;L[e+4*n>>2]=s,Fi(i,s),r+=i.length+1})),0},Mi=function(e,t){if(p)return Ve(6,1,e,t);var r=Li();L[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),L[t>>2]=i,0};function Ri(e){if(p)return Ve(7,1,e);try{var t=Ge.getStreamFromFD(e);return $e.close(t),0}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return e.errno}}function zi(e,t){if(p)return Ve(8,1,e,t);try{var r=Ge.getStreamFromFD(e),i=r.tty?2:$e.isDir(r.mode)?3:$e.isLink(r.mode)?7:4;return B[t>>0]=i,C[t+2>>1]=0,re=[0,(te=0,+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[t+8>>2]=re[0],P[t+12>>2]=re[1],re=[0,(te=0,+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[t+16>>2]=re[0],P[t+20>>2]=re[1],0}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return e.errno}}var Ni=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=L[t+4>>2];t+=8;var d=$e.read(e,B,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return e.errno}}function Oi(e,t,r,i,n){if(p)return Ve(10,1,e,t,r,i,n);var s=We(t,r);try{if(isNaN(s))return 61;var o=Ge.getStreamFromFD(e);return $e.llseek(o,s,i),re=[o.position>>>0,(te=o.position,+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[n>>2]=re[0],P[n+4>>2]=re[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return e.errno}}var Gi=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=L[t+4>>2];t+=8;var d=$e.write(e,B,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Hi(e,t,r,i){if(p)return Ve(11,1,e,t,r,i);try{var n=Ge.getStreamFromFD(e),s=Gi(n,t,r);return L[i>>2]=s,0}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return e.errno}}Xe.init();var Wi=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=$e.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Vi=365,ji=146;Object.defineProperties(Wi.prototype,{read:{get:function(){return(this.mode&Vi)===Vi},set:function(e){e?this.mode|=Vi:this.mode&=~Vi}},write:{get:function(){return(this.mode&ji)===ji},set:function(e){e?this.mode|=ji:this.mode&=~ji}},isFolder:{get:function(){return $e.isDir(this.mode)}},isDevice:{get:function(){return $e.isChrdev(this.mode)}}}),$e.FSNode=Wi,$e.createPreloadedFile=Re,$e.staticInit(),bt(),gt=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},yt=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Qt(),jt(),fr(),mr=n.UnboundTypeError=wr(Error,"UnboundTypeError"),Pr(),Rr();var qi=[je,Qe,ut,pt,mt,Ii,Mi,Ri,zi,$i,Oi,Hi],Yi={f:ot,s:dt,E:lt,m:ct,z:ht,N:pt,B:mt,u:vt,P:Pt,M:Ar,D:Tr,j:Dr,O:$r,p:Hr,d:Vr,c:jr,q:Yr,l:ri,Q:ii,w:li,A:ui,C:oi,J:hi,i:_i,r:Ir,h:wi,g:Si,b:Ei,n:Ai,k:xi,I:ki,e:di,x:Bi,v:Ci,G:Ii,H:Mi,y:Ye,o:Ri,F:zi,L:$i,t:Oi,K:Hi,a:E||n.wasmMemory},Ki=ce(),Xi=e=>(Xi=Ki.S)(e),Zi=e=>(Zi=Ki.T)(e),Ji=n._pthread_self=()=>(Ji=n._pthread_self=Ki.U)(),Qi=()=>(Qi=Ki.V)();n.__emscripten_tls_init=()=>(n.__emscripten_tls_init=Ki.W)();var en=e=>(en=Ki.X)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=Ki.Y)();var tn=n.__emscripten_thread_init=(e,t,r,i,s,o)=>(tn=n.__emscripten_thread_init=Ki._)(e,t,r,i,s,o);n.__emscripten_thread_crashed=()=>(n.__emscripten_thread_crashed=Ki.$)();var rn,nn=(e,t,r,i)=>(nn=Ki.aa)(e,t,r,i),sn=e=>(sn=Ki.ba)(e),on=n.__emscripten_thread_exit=e=>(on=n.__emscripten_thread_exit=Ki.ca)(e),an=()=>(an=Ki.da)(),dn=(e,t)=>(dn=Ki.ea)(e,t),ln=()=>(ln=Ki.fa)(),cn=e=>(cn=Ki.ga)(e),un=e=>(un=Ki.ha)(e),hn=e=>(hn=Ki.ia)(e);function fn(){if(!(K>0)){if(p)return t(n),W(),void startWorker(n);H(),K>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e())}function e(){rn||(rn=!0,n.calledRun=!0,M||(W(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),V()))}}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=Ki.ja)(e,t,r,i,s),n._ff_h264_cabac_tables=98885,n.wasmMemory=E,n.keepRuntimeAlive=ye,n.ExitStatus=ue,n.PThread=Xe,X=function e(){rn||fn(),rn||(X=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return fn(),e.ready}),o=(()=>{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 async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};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-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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-mt.js",document.baseURI).href)),s=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(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,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,x,U,k,B,T,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=x=new Uint16Array(e),n.HEAP32=U=new Int32Array(e),n.HEAPU32=k=new Uint32Array(e),n.HEAPF32=B=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var L=[],F=[],I=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(L)}function R(){n.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,ne(F)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(I)}function N(e){L.unshift(e)}function $(e){F.unshift(e)}function O(e){I.unshift(e)}var G=0,H=null;function W(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function V(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ni};function t(e,t){return si=e.exports,v=si.E,P(),Lt=si.H,$(si.F),V(),si}if(W(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){k[this.ptr+4>>2]=e},this.get_type=function(){return k[this.ptr+4>>2]},this.set_destructor=function(e){k[this.ptr+8>>2]=e},this.get_destructor=function(){return k[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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){k[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return k[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ci(this.get_type()))return k[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var oe=(e,t,r)=>{throw new se(e).init(t,r),e},ae=e=>(U[ai()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var s=0,o=0;oye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var n=Te.createNode(e,t,r,i);return Te.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):Te.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):Te.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):Te.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=Te.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,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Te.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{D(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&&W()},Ee=(e,t,r,i,n,s)=>{Te.createDataFile(e,t,r,i,n,s)},Ae=n.preloadPlugins||[],xe=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},Ue=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Ee(e,t,r,i,n,d),s&&s(),V()}xe(r,c,u,(()=>{o&&o(),V()}))||u(r)}W(),"string"==typeof r?Se(r,(e=>u(e)),o):u(r)},ke=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},Be=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,n="/",s=0;s40)throw new Te.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(Te.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)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),n=Te.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Te.lookup(e,t)},createNode(e,t,r,i){var n=new Te.FSNode(e,t,r,i);return Te.hashAddNode(n),n},destroyNode(e){Te.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.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=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{Te.lookupNode(e,t);return 20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var n=Te.nodePermissions(e,"wx");if(n)return n;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.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),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function n(e){return Te.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&&Te.root)throw new Te.ErrnoError(10);if(!n&&!s){var o=Te.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Te.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,n=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Te.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=Te.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new Te.ErrnoError(28);var s=Te.mayCreate(i,n);if(s)throw new Te.ErrnoError(s);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.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,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),n=Te.mayCreate(r,i);if(n)throw new Te.ErrnoError(n);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),o=de.basename(e),a=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,o),c=ue.relative(e,s);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,a)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,o,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,a,u):Te.mayCreate(i,a))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!0);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!1);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=Te.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=Te.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new Te.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;"string"==typeof e?r=Te.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?ke(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),s=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!s){var o=Te.mayOpen(i,t);if(o)throw new Te.ErrnoError(o)}512&t&&!s&&Te.truncate(i,0),t&=-131713;var a=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),a},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Te.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(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Te.open(e,t.flags),n=Te.stat(e).size,s=new Uint8Array(n);return Te.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);Te.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?Te.createDevice("/dev","stdin",n.stdin):Te.symlink("/dev/tty","/dev/stdin"),n.stdout?Te.createDevice("/dev","stdout",null,n.stdout):Te.symlink("/dev/tty","/dev/stdout"),n.stderr?Te.createDevice("/dev","stderr",null,n.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=Te.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 c(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 Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(Te.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{Te.forceLoadFile(d);var s=be();if(!s)throw new Te.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=Te.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}U[r>>2]=i.dev,U[r+4>>2]=i.mode,k[r+8>>2]=i.nlink,U[r+12>>2]=i.uid,U[r+16>>2]=i.gid,U[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+24>>2]=K[0],U[r+28>>2]=K[1],U[r+32>>2]=4096,U[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+40>>2]=K[0],U[r+44>>2]=K[1],k[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+56>>2]=K[0],U[r+60>>2]=K[1],k[r+64>>2]=s%1e3*1e3,K=[Math.floor(o/1e3)>>>0,(Y=Math.floor(o/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+72>>2]=K[0],U[r+76>>2]=K[1],k[r+80>>2]=o%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+88>>2]=K[0],U[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);Te.msync(t,s,n,r,i)},varargs:void 0,get(){var e=U[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;Te.streams[n];)n++;return Te.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ae(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Le(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return Te.open(t,r,n).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Fe,Ie,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Fe=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Fe[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Ie(e)},We=e=>{throw new Me(e)},Ve=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&We("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},nt={},st=()=>Object.keys(ut).length,ot=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},at=[],dt=()=>{for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,at.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=ot,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||We("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&We("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(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?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))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||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),at.push(this),1===at.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(n,e,e),n.hasOwnProperty(r)&&He(`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))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function xt(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=[]}var Ut=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function kt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function Bt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=Ut(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,sr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(k[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,o,a,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=Bt:i?(this.toWireType=kt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Lt,Ft,It=(e,t,r)=>{n.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Lt.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=Ne(t);return oi(t),r},Wt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new Ft(`${e}: `+r.map(Ht).join([", "]))},Vt=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),a&&(a=Ot(o,a)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=At(c);wt(f,(function(){Wt(`Cannot construct ${c} due to unbound types`,[i])})),Ve([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var o=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new xt(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},It(f,o),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var o=t.length;o<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=jt(t,r);n=Ot(i,n),Ve([],[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 Ie(`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]=()=>{Wt(`Cannot construct ${e.name} due to unbound types`,o)},Ve([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,n,s,o,a,d)=>{var l=jt(r,i);t=Ne(t),t=Zt(t),s=Ot(n,s),Ve([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Wt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(bt(c,t,i),c[t].overloadTable[r-2]=n),Ve([],l,(function(n){var a=Kt(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,n.count_emval_handles=ir},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function or(e){return this.fromWireType(U[e>>2])}var ar=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=sr.toValue(e);return rr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:or,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(B[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>x[e>>1];case 4:return r?e=>U[e>>2]:e=>k[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=k[e>>2],r=k[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=k[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==E[a]){var d=Ce(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)pr(t,o,i+1);else if(n)for(var a=0;a255&&(oi(o),He("String has UTF-16 code units that do not fit in 8 bits")),E[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&x[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(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},wr=(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(U[t>>2]=o,(t+=4)+4>n)break}return U[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,n,s,o,a;r=Ne(r),2===t?(i=gr,n=yr,o=vr,s=()=>x,a=1):4===t&&(i=br,n=wr,o=Sr,s=()=>k,a=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=k[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return oi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=li(4+s+t);return k[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(oi,d),d},argPackAdvance:Ke,readValueFromPointer:or,destructorFunction(e){oi(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},xr={},Ur=e=>{var t=xr[e];return void 0===t?Ne(e):t},kr=[],Br=(e,t,r,i,n)=>(e=kr[e])(t=sr.toValue(t),t[r=Ur(r)],i,n),Tr=e=>{var t=kr.length;return kr.push(e),t},Cr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Pr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(k[t>>2]=sr.toHandle(i)),n},Lr=(e,t,r)=>{var i=Dr(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",o=0,a=[];0===r&&a.push("obj");for(var d=["retType"],l=[n],c=0;ce.name)).join(", ")}) => ${n.name}>`;return Tr(vt(h,u))},Fr=e=>{var t=sr.toValue(e);qt(t),rr(e)},Ir=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),Nr=e=>{j("OOM")},$r=e=>{E.length,Nr()},Or={},Gr=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:Gr()};for(var t in Or)void 0===Or[t]?delete e[t]:e[t]=Or[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Wr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Vr=(e,t)=>{var r=0;return Hr().forEach(((i,n)=>{var s=t+r;k[e+4*n>>2]=s,Wr(i,s),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();k[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),k[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+8>>2]=K[0],U[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+16>>2]=K[0],U[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=k[t+4>>2];t+=8;var d=Te.read(e,S,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,n){var s=Ir(t,r);try{if(isNaN(s))return 61;var o=De.getStreamFromFD(e);return Te.llseek(o,s,i),K=[o.position>>>0,(Y=o.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[n>>2]=K[0],U[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=k[t+4>>2];t+=8;var d=Te.write(e,S,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Qr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Jr(n,t,r);return k[i>>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=ei,Te.createPreloadedFile=Ue,Te.staticInit(),ze(),Ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Ft=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Qt(),nr();var ii,ni={o:oe,A:Pe,s:Le,q:Re,C:Xe,D:Vt,y:Xt,h:Jt,B:ar,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:Br,g:rr,e:Lr,d:Fr,a:Mr,i:Rr,w:zr,r:$r,u:Vr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},si=ie(),oi=e=>(oi=si.G)(e),ai=()=>(ai=si.I)(),di=e=>(di=si.J)(e),li=e=>(li=si.K)(e),ci=e=>(ci=si.M)(e);function ui(){function e(){ii||(ii=!0,n.calledRun=!0,C||(R(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,o,a,d)=>(n.dynCall_viiijj=si.N)(e,t,r,i,s,o,a,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=si.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=si.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=si.Q)(e,t,r,i,s),H=function e(){ii||ui(),ii||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ui(),t.ready}})(),a=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=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 c(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 u,h=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 f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(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 i={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")}},n=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}}(),s=p(),o=p(),d=p(),u=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 s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,o,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Vt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],jt=Vt,qt=Vt;function Yt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Kt(e){return Xt(e)&&e[1]===Bt}function Xt(e){return e[0]>>4===Oe}const Zt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Jt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,o=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Zt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let a=Zt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(o=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Ot.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),o=s-3):(i=2,r=new Array(2),o=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),o=s):(i=5,o=s,r=new Array(4),s>=6?o=s-3:1===d&&(i=2,r=new Array(2),o=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&o)>>>1,r[2]=(1&o)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:a,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],o=(192&e[r+2])>>>6,a=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=o+1,t.sampling_freq_index=a,t.sampling_frequency=jt[a],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class er{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Wt(t.subarray(i+3,i+3+n)),o=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}o=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let a=s.readBits(3);if(0!==a){console.error(`frameLengthType = ${a}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),o={},o.audio_object_type=r,o.sampling_freq_index=i,o.sampling_frequency=jt[o.sampling_freq_index],o.channel_config=n,o.other_data_present=d}let a=0;for(;;){let e=s.readByte();if(a+=e,255!==e)break}let d=new Uint8Array(a);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function rr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 ir(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++;return{payload:e.subarray(i),type:n,size:s,uuid:o}}function nr(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 sr(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 or(){return(new Date).getTime()}function ar(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function dr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function lr(e){let t=0,r=dr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=dr(),o=s-r;o>=1e3&&(e(t/o*1e3),r=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){}})();function cr(e){return null==e}function ur(e){return!cr(e)}function hr(e){return"function"==typeof e}function fr(e){let t=null,r=31&e[0];return r!==Ve&&r!==je||(t=Ne),t||(r=(126&e[0])>>1,r!==ot&&r!==dt&&r!==ct||(t=$e)),t}function pr(){return"undefined"!=typeof WritableStream}function mr(e){e.close()}function _r(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 gr(e){return e.ok&&e.status>=200&&e.status<=299}function yr(){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}(k)}function vr(e){return e[0]>>4===Tt&&e[1]===Bt}function br(e){return!0===e||"true"===e}function wr(e){return!0!==e&&"true"!==e}function Sr(){return!!(Ot.Worker&&Ot.MediaSource&&"canConstructInDedicatedWorker"in Ot.MediaSource&&!0===Ot.MediaSource.canConstructInDedicatedWorker)}function Er(e,t){const r=rr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===et||r===rt||r===nt)||wr(t)&&r===qe)&&(i=!0)})),i}var Ar=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 xr=Symbol(32),Ur=Symbol(16),kr=Symbol(8);class Br{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 Ar(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(xr)}readU16(){return this.read(Ur)}readU8(){return this.read(kr)}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===xr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Ur){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===kr){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}}Br.U32=xr,Br.U16=Ur,Br.U8=kr;class Tr{constructor(e){this.log=function(t){if(e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=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=Cr._ebsp2rbsp(e),r=new Wt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Cr.getProfileString(i),o=Cr.getLevelString(n),a=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,x=2*e,S=A/x}}let U=1;1===b&&1===w||(U=b/w);let k=0,B=0;if(0===a)k=1,B=2-m;else{k=3===a?1:2,B=(1===a?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*k,C-=(y+v)*B;let D=Math.ceil(T*U);return r.destroy(),r=null,{profile_string:s,level_string:o,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Cr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:x,fps_num:A},sar_ratio:{width:b,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=Cr._ebsp2rbsp(e),n=new Wt(i);n.readByte();let s=n.readByte();n.readByte();let o=n.readByte();n.readUEG();let a=Cr.getProfileString(s),d=Cr.getLevelString(o),l=1,c=420,u=[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&&(c=u[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=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=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);U=n.readBool(),k=t,B=2*e,x=k/B}}let T=1;1===E&&1===A||(T=E/A);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 P=16*(_+1),L=16*(g+1)*(2-y);P-=(v+b)*C,L-=(w+S)*D;let F=Math.ceil(P*T);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:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Cr.getChromaFormatString(c),frame_rate:{fixed:U,fps:x,fps_den:B,fps_num:k},sar_ratio:{width:E,height:A},codec_size:{width:P,height:L},present_size:{width:F,height:L}}}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 Lr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Fr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Cr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let o=new Uint8Array(i);o[0]=1,o[1]=t[1],o[2]=t[2],o[3]=t[3],o[4]=255,o[5]=225;let a=t.byteLength;o[6]=a>>>8,o[7]=255&a;let d=8;o.set(t,8),d+=a,o[d]=1;let l=r.byteLength;o[d+1]=l>>>8,o[d+2]=255&l,o.set(r,d+3),d+=3+l,n&&(o[d]=252|s.chroma_format_idc,o[d+1]=248|s.bit_depth_luma-8,o[d+2]=248|s.bit_depth_chroma-8,o[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+o.byteLength);return u.set(c,0),u.set(o,c.length),u}function Ir(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}function Mr(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 Rr(e){return 31&e[0]}function zr(e){return e===Xe}function Nr(e){return!function(e){return e===Ve||e===je}(e)&&!zr(e)}function $r(e){return e===qe}function Or(e){if(0===e.length)return!1;const t=Rr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Qe||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Hr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Wr=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)},Vr=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"}};class jr{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 parseVPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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()}}static parseSPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=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&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&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();M=n;let s=!0,o=1;n||(s=r.readBool());let a=!1;if(s?r.readUEG():a=r.readBool(),a||(o=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Wr(e),r=new Wt(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()}})(t),o=(e=>{let t=Wr(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),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()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(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();M=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=Wr(e),r=new Wt(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}})(r);n=Object.assign(n,s,o,a);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|ot,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|dt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|ct,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Zr(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}function Jr(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 Qr(e){return(126&e[0])>>1}function ei(e){return e===ht}function ti(e){return!function(e){return e>=32&&e<=40}(e)}function ri(e){return e>=16&&e<=21}function ii(e){if(0===e.length)return!1;const t=Qr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class si{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function oi(e){return parseInt(e)===e}function ai(e){if(!oi(e.length))return!1;for(var t=0;t255)return!1;return!0}function di(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(!ai(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(oi(e.length)&&ai(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function li(e){return new Uint8Array(e)}function ci(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 ui,hi={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("")}},fi=(ui="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ui[15&i])}return t.join("")}}),pi={16:10,24:12,32:14},mi=[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],_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ai=[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],xi=[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],Ui=[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],ki=[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],Bi=[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],Ti=[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 Ci(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^_i[o>>8&255]<<16^_i[255&o]<<8^_i[o>>24&255]^mi[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^_i[o>>16&255]<<16^_i[o>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^ki[o>>16&255]^Bi[o>>8&255]^Ti[255&o]},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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^vi[i[(n+1)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var o,a=li(16);for(n=0;n<4;n++)o=this._Ke[t][n],a[4*n]=255&(_i[i[n]>>24&255]^o>>24),a[4*n+1]=255&(_i[i[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(_i[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(_i[255&i[(n+3)%4]]^o);return a},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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^Ei[i[(n+3)%4]>>16&255]^Ai[i[(n+2)%4]>>8&255]^xi[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var o,a=li(16);for(n=0;n<4;n++)o=this._Kd[t][n],a[4*n]=255&(gi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(gi[i[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(gi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(gi[255&i[(n+1)%4]]^o);return a};var Pi=function(e){if(!(this instanceof Pi))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Di(e)};Pi.prototype.encrypt=function(e){if((e=di(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=li(e.length),r=li(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)},Mi.prototype.setBytes=function(e){if(16!=(e=di(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Mi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Ri=function(e,t){if(!(this instanceof Ri))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Mi||(t=new Mi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Di(e)};Ri.prototype.encrypt=function(e){for(var t=di(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=o<<24-(i+s)%4*8}else for(var a=0;a>>2]=r[a>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=a.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,o=this.blockSize,a=s/(4*o),d=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,o=0;o>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,a=0;a<4&&s+.75*a>>6*(3-a)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,d=0;d<4&&o+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var o=0;o>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,o=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],x=e[t+14],U=e[t+15],k=s[0],B=s[1],T=s[2],C=s[3];k=l(k,B,T,C,o,7,a[0]),C=l(C,k,B,T,d,12,a[1]),T=l(T,C,k,B,f,17,a[2]),B=l(B,T,C,k,p,22,a[3]),k=l(k,B,T,C,m,7,a[4]),C=l(C,k,B,T,_,12,a[5]),T=l(T,C,k,B,g,17,a[6]),B=l(B,T,C,k,y,22,a[7]),k=l(k,B,T,C,v,7,a[8]),C=l(C,k,B,T,b,12,a[9]),T=l(T,C,k,B,w,17,a[10]),B=l(B,T,C,k,S,22,a[11]),k=l(k,B,T,C,E,7,a[12]),C=l(C,k,B,T,A,12,a[13]),T=l(T,C,k,B,x,17,a[14]),k=c(k,B=l(B,T,C,k,U,22,a[15]),T,C,d,5,a[16]),C=c(C,k,B,T,g,9,a[17]),T=c(T,C,k,B,S,14,a[18]),B=c(B,T,C,k,o,20,a[19]),k=c(k,B,T,C,_,5,a[20]),C=c(C,k,B,T,w,9,a[21]),T=c(T,C,k,B,U,14,a[22]),B=c(B,T,C,k,m,20,a[23]),k=c(k,B,T,C,b,5,a[24]),C=c(C,k,B,T,x,9,a[25]),T=c(T,C,k,B,p,14,a[26]),B=c(B,T,C,k,v,20,a[27]),k=c(k,B,T,C,A,5,a[28]),C=c(C,k,B,T,f,9,a[29]),T=c(T,C,k,B,y,14,a[30]),k=u(k,B=c(B,T,C,k,E,20,a[31]),T,C,_,4,a[32]),C=u(C,k,B,T,v,11,a[33]),T=u(T,C,k,B,S,16,a[34]),B=u(B,T,C,k,x,23,a[35]),k=u(k,B,T,C,d,4,a[36]),C=u(C,k,B,T,m,11,a[37]),T=u(T,C,k,B,y,16,a[38]),B=u(B,T,C,k,w,23,a[39]),k=u(k,B,T,C,A,4,a[40]),C=u(C,k,B,T,o,11,a[41]),T=u(T,C,k,B,p,16,a[42]),B=u(B,T,C,k,g,23,a[43]),k=u(k,B,T,C,b,4,a[44]),C=u(C,k,B,T,E,11,a[45]),T=u(T,C,k,B,U,16,a[46]),k=h(k,B=u(B,T,C,k,f,23,a[47]),T,C,o,6,a[48]),C=h(C,k,B,T,y,10,a[49]),T=h(T,C,k,B,x,15,a[50]),B=h(B,T,C,k,_,21,a[51]),k=h(k,B,T,C,E,6,a[52]),C=h(C,k,B,T,p,10,a[53]),T=h(T,C,k,B,w,15,a[54]),B=h(B,T,C,k,d,21,a[55]),k=h(k,B,T,C,v,6,a[56]),C=h(C,k,B,T,U,10,a[57]),T=h(T,C,k,B,g,15,a[58]),B=h(B,T,C,k,A,21,a[59]),k=h(k,B,T,C,m,6,a[60]),C=h(C,k,B,T,S,10,a[61]),T=h(T,C,k,B,f,15,a[62]),B=h(B,T,C,k,b,21,a[63]),s[0]=s[0]+k|0,s[1]=s[1]+B|0,s[2]=s[2]+T|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),o=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,d=a.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return a},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,o){var a=e+(t&r|~t&i)+n+o;return(a<>>32-s)+t}function c(e,t,r,i,n,s,o){var a=e+(t&i|r&~i)+n+o;return(a<>>32-s)+t}function u(e,t,r,i,n,s,o){var a=e+(t^r^i)+n+o;return(a<>>32-s)+t}function h(e,t,r,i,n,s,o){var a=e+(r^(t|~i))+n+o;return(a<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Ht((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Ni).lib,n=i.WordArray,s=i.Hasher,o=r.algo,a=[],d=o.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],d=r[4],l=0;l<80;l++){if(l<16)a[l]=0|e[t+l];else{var c=a[l-3]^a[l-8]^a[l-14]^a[l-16];a[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+a[l];u+=l<20?1518500249+(n&s|~n&o):l<40?1859775393+(n^s^o):l<60?(n&s|n&o|s&o)-1894007588:(n^s^o)-899497514,d=o,o=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(a[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=o.SHA256=s.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&c^~a&u)+d[f]+l[f];h=u,u=c,c=a,a=o+b|0,o=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+a|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Ht((function(e,t){var r,i,n,s,o,a;e.exports=(i=(r=a=Ni).lib.WordArray,n=r.algo,s=n.SHA256,o=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(o),r.HmacSHA224=s._createHmacHelper(o),a.SHA224)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,o=e.algo;function a(){return n.create.apply(n,arguments)}var d=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=a()}();var c=o.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=o.high,b=o.low,w=a.high,S=a.low,E=c.high,A=c.low,x=u.high,U=u.low,k=h.high,B=h.low,T=f,C=p,D=m,P=_,L=g,F=y,I=v,M=b,R=w,z=S,N=E,$=A,O=x,G=U,H=k,W=B,V=0;V<80;V++){var j,q,Y=l[V];if(V<16)q=Y.high=0|e[t+2*V],j=Y.low=0|e[t+2*V+1];else{var K=l[V-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[V-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[V-7],oe=se.high,ae=se.low,de=l[V-16],le=de.high,ce=de.low;q=(q=(q=J+oe+((j=Q+ae)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&O,fe=z&$^~z&G,pe=T&D^T&L^D&L,me=C&P^C&F^P&F,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[V],we=be.high,Se=be.low,Ee=H+ye+((ue=W+ve)>>>0>>0?1:0),Ae=ge+me;H=O,W=G,O=N,G=$,N=R,$=z,R=I+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,I=L,M=F,L=D,F=P,D=T,P=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

    >>0?1:0),y=s.low=y+F,s.high=g+L+(y>>>0>>0?1:0),b=o.low=b+M,o.high=v+I+(b>>>0>>0?1:0),S=a.low=S+z,a.high=w+R+(S>>>0>>0?1:0),A=c.low=A+$,c.high=E+N+(A>>>0<$>>>0?1:0),U=u.low=U+G,u.high=x+O+(U>>>0>>0?1:0),B=h.low=B+W,h.high=k+H+(B>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Ht((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Ni).x64,n=i.Word,s=i.WordArray,o=r.algo,a=o.SHA512,d=o.SHA384=a.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=a._createHelper(d),r.HmacSHA384=a._createHmacHelper(d),l.SHA384)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.x64.Word,a=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var a=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),(B=r[n]).high^=o,B.low^=s}for(var a=0;a<24;a++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(B=r[h+5*m]).high,p^=B.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(B=r[h+5*m]).high^=f,B.low^=p}for(var w=1;w<25;w++){var S=(B=r[w]).high,E=B.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var x=u[l[w]];x.high=f,x.low=p}var U=u[0],k=r[0];for(U.high=k.high,U.low=k.low,h=0;h<5;h++)for(m=0;m<5;m++){var B=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];B.high=T.high^~C.high&D.high,B.low=T.low^~C.low&D.low}B=r[0];var P=c[a];B.high^=P.high,B.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var o=this._state,a=this.cfg.outputLength/8,d=a/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,a)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=o.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,o,f,b,w,S,E,A,x,U,k,B=this._hash.words,T=u.words,C=h.words,D=a.words,P=d.words,L=l.words,F=c.words;for(S=s=B[0],E=o=B[1],A=f=B[2],x=b=B[3],U=w=B[4],r=0;r<80;r+=1)k=s+e[t+D[r]]|0,k+=r<16?p(o,f,b)+T[0]:r<32?m(o,f,b)+T[1]:r<48?_(o,f,b)+T[2]:r<64?g(o,f,b)+T[3]:y(o,f,b)+T[4],k=(k=v(k|=0,L[r]))+w|0,s=w,w=b,b=v(f,10),f=o,o=k,k=S+e[t+P[r]]|0,k+=r<16?y(E,A,x)+C[0]:r<32?g(E,A,x)+C[1]:r<48?_(E,A,x)+C[2]:r<64?m(E,A,x)+C[3]:p(E,A,x)+C[4],k=(k=v(k|=0,F[r]))+U|0,S=U,U=x,x=v(A,10),A=E,E=k;k=B[1]+f+x|0,B[1]=B[2]+b+U|0,B[2]=B[3]+w+S|0,B[3]=B[4]+s+E|0,B[4]=B[0]+o+A|0,B[0]=k},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,o=0;o<5;o++){var a=s[o];s[o]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Ht((function(e,t){var r,i,n;e.exports=(i=(r=Ni).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),o=this._iKey=t.clone(),a=s.words,d=o.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),o=n.cfg;return m.create({ciphertext:s,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)o=l.create({keySize:t+r,hasher:n}).compute(e,i);else var o=l.create({keySize:t+r}).compute(e,i);var a=s.create(o.words.slice(t),4*r);return o.sigBytes=4*t,m.create({key:o,iv:a,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Ht((function(e,t){var r;e.exports=((r=Ni).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var o=0;o>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,o=this._counter;s&&(o=this._counter=s.slice(0),this._iv=void 0),i(o);var a=o.slice(0);r.encryptBlock(a,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],o=[],a=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;o[r]=y<<24|y>>>8,a[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],o=0;o6&&o%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[o/r|0]<<24),s[o]=s[o-r]^l);for(var a=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,o,a){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^o[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^o[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^o[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^o[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(a[l>>>24]<<24|a[c>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[f++],_=(a[c>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&l])^r[f++],g=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[l>>>8&255]<<8|a[255&c])^r[f++],y=(a[h>>>24]<<24|a[l>>>16&255]<<16|a[c>>>8&255]<<8|a[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=o[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(a[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(a[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,o=this._rBlock,a=0,d=0;d<8;d++)a|=l[d][((o^n[d])&c[d])>>>0];this._lBlock=o,this._rBlock=s^a}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var o=n%r,a=t[o>>>2]>>>24-o%4*8&255;s=(s+i[n]+a)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var o=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(o)}(),r.RC4)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=t._createHelper(a)}(),r.Rabbit)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=t._createHelper(a)}(),r.RabbitLegacy)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],o=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var a={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,o=e.sbox[0][r]+e.sbox[1][i];return o^=e.sbox[2][n],o+=e.sbox[3][s],o}function l(e,t,r){let i,s=t,o=r;for(let t=0;t1;--t)s^=e.pbox[t],o=d(e,s)^o,i=s,s=o,o=i;return i=s,s=o,o=i,o^=e.pbox[1],s^=e.pbox[0],{left:s,right:o}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=o[t][r]}let i=0;for(let o=0;o=r&&(i=0);let a=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=e.slice(s+4+2,s+4+o);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const a=n.decrypt(i);n=null,e.set(a,s+4+2)}s=s+4+o}return e}function Gi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Ht((function(e,t){e.exports=Ni}));var Hi=Ht((function(e,t){var r,n,s,o=(r=new Date,n=4,s={setLogLevel:function(e){n=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>=n&&console.debug("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);o.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+="["+o.getDurationString(e.start(i))+","+o.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=o;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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),o=new Uint8Array(r,i,n);s.set(o)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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,o.debug("MultiBufferStream","Stream ready for parsing"),!0):(o.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(o.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){o.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},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}o.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)),o.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,s)}}t&&(o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,a=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?o.info:o.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(o.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(o.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):0!==l&&a+l>e.getEndPosition()?(e.seek(a),o.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:a}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(o.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(o.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=a,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(o.info("BoxParser","'"+u+"' 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?(o.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(o.error("BoxParser","Parsing of box '"+u+"' read "+n+" 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)o.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 o.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else o.error("av1C reserved_1 parsing problem");else o.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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=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())}})),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(),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(", ")+")"})),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,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})),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),o.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?o.property_index=(127&s)<<8|e.readUint8():o.property_index=127&s}}})),h.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:o.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(o.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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)o.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){o.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){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){o.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),o.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}})),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var o=i.extract_bits(1);this.ptl_sublayer_present_mask|=o<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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 n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}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,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},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>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),o.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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&o.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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?(o.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(o.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(o.warn("ISOFile","Not ready to start parsing"),!1))},g.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&&(o.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),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(o.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),o.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)&&(o.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*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 s=r.samples[l].offset+r.samples[l].alreadyRead,o.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+o.getDurationString(e,a)+" and offset: "+s),{offset:s,time:e/a}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-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 u=new h.avcCBox;u.parse(new a(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new a(t.hevcDecoderConfigRecord)),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 h["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}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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"),n=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-(n.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.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,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,o?(t>=w&&(S++,w<0&&(w=0),w+=o.sample_counts[S]),U.cts=e.samples[t].dts+o.sample_offsets[S]):U.cts=U.dts,a?(t==a.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[A].sample_delta+x==t+1&&(U.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta,A++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+x==t&&(U.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,o,a,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=o,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:a,p.offset=0===t&&0===r?b?w+_.data_offset:w:a,a=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return o.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+")"),d.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===s)return null;o.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var a=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=a))return o.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+a+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,a),n.alreadyRead+=a,r.alreadyRead+=a,t.usedBytes+=a,this.stream.logBufferLevel(),null;o.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Wi(e){return e.reduce(((e,t)=>256*e+t))}function Vi(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]))}Hi.Log,Hi.MP4BoxStream,Hi.DataStream,Hi.MultiBufferStream,Hi.MPEG4DescriptorParser,Hi.BoxParser,Hi.XMLSubtitlein4Parser,Hi.Textin4Parser,Hi.ISOFile,Hi.createFile;class ji{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],Vi(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}}function qi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Yi=16,Ki=[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 Zi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Qi(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}function en(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("")}function tn(e,t){const r=31&t;return e<>>32-r}function rn(e){return(255&Ki[e>>>24&255])<<24|(255&Ki[e>>>16&255])<<16|(255&Ki[e>>>8&255])<<8|255&Ki[255&e]}function nn(e){return e^tn(e,2)^tn(e,10)^tn(e,18)^tn(e,24)}function sn(e){return e^tn(e,13)^tn(e,23)}function on(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]^=nn(rn(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=nn(rn(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=nn(rn(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=nn(rn(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 an(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Xi[r+0],t[r+0]=i[0]^=sn(rn(e)),e=i[2]^i[3]^i[0]^Xi[r+1],t[r+1]=i[1]^=sn(rn(e)),e=i[3]^i[0]^i[1]^Xi[r+2],t[r+2]=i[2]^=sn(rn(e)),e=i[0]^i[1]^i[2]^Xi[r+3],t[r+3]=i[3]^=sn(rn(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function dn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:o="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=Zi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Zi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Qi(e):Zi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Yi-e.length%Yi;for(let r=0;r=Yi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),o=5;for(;on){const t=new Uint8Array(s.length+e.length-o);t.set(s,0),t.set(e.slice(o),s.length),s=t;break}let l=e[o+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=dn(e.slice(o+4+u,o+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(o+4,o+4+u),0);const a=nr(qi(n,new Uint8Array(r))),l=new Uint8Array(s.length+a.length);l.set(s,0),l.set(a,s.length),s=l}else{const t=e.slice(o+4,o+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(a,s.length),r.set(t,s.length+4),s=r}o=o+4+d}return s}const un={init:0,findFirstStartCode:1,findSecondStartCode:2};class hn extends class{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(){i.off(e,n);for(var s=arguments.length,o=new Array(s),a=0;a1?r-1:0),n=1;n{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=un.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findFirstStartCode}}}}function fn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=fn(e.slice(s+4,s+4+o),t,r);e.set(i,s+4)}s=s+4+o}return e}function _n(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class gn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{hr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class yn{static init(){yn.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 yn.types)yn.types.hasOwnProperty(e)&&(yn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=yn.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 yn.box(yn.types.trak,yn.tkhd(e),yn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return yn.box(yn.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 yn.box(yn.types.mdia,yn.mdhd(e),yn.hdlr(e),yn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return yn.box(yn.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?yn.constants.HDLR_AUDIO:yn.constants.HDLR_VIDEO,yn.box(yn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?yn.box(yn.types.smhd,yn.constants.SMHD):yn.box(yn.types.vmhd,yn.constants.VMHD),yn.box(yn.types.minf,t,yn.dinf(),yn.stbl(e))}static dinf(){return yn.box(yn.types.dinf,yn.box(yn.types.dref,yn.constants.DREF))}static stbl(e){return yn.box(yn.types.stbl,yn.stsd(e),yn.box(yn.types.stts,yn.constants.STTS),yn.box(yn.types.stsc,yn.constants.STSC),yn.box(yn.types.stsz,yn.constants.STSZ),yn.box(yn.types.stco,yn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp3(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp4a(e)):"avc"===e.videoType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.avc1(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.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 yn.box(yn.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 yn.box(yn.types.mp4a,i,yn.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 yn.box(yn.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 yn.box(yn.types.avc1,n,yn.box(yn.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 yn.box(yn.types.hvc1,n,yn.box(yn.types.hvcC,t))}static mvex(e){return yn.box(yn.types.mvex,yn.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 yn.box(yn.types.trex,r)}static moof(e,t){return yn.box(yn.types.moof,yn.mfhd(e.sequenceNumber),yn.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 yn.box(yn.types.mfhd,t)}static traf(e,t){let r=e.id,i=yn.box(yn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=yn.box(yn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=yn.sdtp(e),o=yn.trun(e,s.byteLength+16+16+8+16+8+8);return yn.box(yn.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,yn.box(yn.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),yn.box(yn.types.trun,r)}static mdat(e){return yn.box(yn.types.mdat,e)}}yn.init();var vn,bn=Ht((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(vn=bn)&&vn.__esModule&&Object.prototype.hasOwnProperty.call(vn,"default")&&vn.default;const wn=[44100,48e3,32e3,0],Sn=[22050,24e3,16e3,0],En=[11025,12e3,8e3,0],An=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],xn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Un=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function kn(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,o=(12&t[2])>>>2,a=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=En[o];break;case 2:d=Sn[o];break;case 3:d=wn[o]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),o=n-3):(i=2,t=new Array(2),o=n):-1!==a.indexOf("android")?(i=2,t=new Array(2),o=n):(i=5,o=n,t=new Array(4),n>=6?o=n-3:1===s&&(i=2,t=new Array(2),o=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&o)>>>1,t[2]=(1&o)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Gn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Vn{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function jn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const qn=new Array(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),Yn=new Array(2746333894,1453994832,1736282519,2993693404),Kn=new Array(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 Xn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Jn(e,t){return t+3>>19)^(i<<23|i>>>9)}function ts(e,t){var r=new Array(36);r[0]=Jn(t,0),r[1]=Jn(t,4),r[2]=Jn(t,8),r[3]=Jn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^rs(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function is(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Qn(e),n=Math.ceil(r.length/16),s=new Array(r.length),o=t.slice(),a=0;a3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let o=5;for(;os)break;let d=e[o+4],l=!1,c=2;if(i?(n&&(c=3),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=is(t,r,e.slice(o+4+c,o+4+a));e.set(i,o+4+c)}o=o+4+a}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-1-2024" '+(wr(false)?"and is Trial Version[试用版本]":""));const ss=[];ss.push(o({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][worker]:",e)}}),s({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support, using thread emulation"))})(e)||console.warn("JbPro[❌❌❌][worker]:",e)}})),Promise.all(ss).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=[],s=[],o=null,a=null,d=null,l=null,c=null,u=null,h=!1,f=null,S=null,E=!1,k=!1,Se=!!br(r),Ee=0,qe=0,Qe=!1,et=null,rt=null,nt=null,ht=[],xt=null,Ut=null,Tt=0,Ot=0,Gt=null,Ht=null,Wt=0,Vt=0,jt=!1,Zt=!1,tr=!1,dr=null,Ar=null,xr=!1,Ur=!0,kr=0,Dr=0,Wr=()=>{const e=yr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(o={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){o.decoder=new VideoDecoder({output:function(e){if(hr(e.createImageBitmap))e.createImageBitmap().then((t=>{o.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ci.delay,ts:0},[r]),mr(e)}));else{o.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ci.delay,ts:0},[t]),mr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){o.reset(),o.decoder&&"closed"!==o.decoder.state&&(o.decoder.close(),o.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(o.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?mt:_t});o.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Me?(n=Pr(s),i={codec:n.codec,description:s}):t===Re&&(n=Yr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),o.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:T,w:n.codecWidth,h:n.codecHeight}),o.isEmitInfo=!0,o.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),o.offscreenCanvasCtx=o.offscreenCanvas.getContext("2d"));try{o.decoder.configure(i),o.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){o.hasInit=!1,o.isEmitInfo=!1,o.offscreenCanvas=null,o.offscreenCanvasCtx=null}});let Vr=function(){if(xr=!0,a)try{a.abort(),a=null,ci.debugLog("worker","abort success")}catch(e){a=null,ci.debugLog("worker","abort catch",e)}},Kr={init(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},destroy(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=Kr.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");Kr.handleVideoFrames(e)}else Kr.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=Kr.localDts;return Kr.localDts=Kr.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return Kr.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{const t=Rr(e);t===je||t===Ve?Kr.handleVideoH264Nalu(e):Nr(t)&&i.push(e)})),1===i.length)Kr.handleVideoH264Nalu(i[0]);else if(Or(i)){const e=Rr(i[0]),t=$r(e);Kr.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH264Nalu(e)}))}else if(Kr.streamType===$e)if(ci._opt.nakedFlowH265DemuxUseNew){const t=Kr.handleAddNaluStartCode(e),r=Kr.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Qr(e);t===ct||t===dt||t===ot?Kr.handleVideoH265Nalu(e):ti(t)&&i.push(e)})),1===i.length)Kr.handleVideoH265Nalu(i[0]);else if(ii(i)){const e=Qr(i[0]),t=ri(e);Kr.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH265Nalu(e)}))}else Qr(e)===ct?Kr.extractH265PPS(e):Kr.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{zr(Rr(e))?Kr.extractH264SEI(e):Kr.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{ei(Qr(e))?Kr.extractH265SEI(e):Kr.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.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=Rr(e);switch(t){case Ve:Kr.sps=e;break;case je:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Lr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(Nr(t)){const r=$r(t),i=Kr.getNaluDts(),n=Ir(e,r);Kr.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Lr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}},handleVideoH264NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Mr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Qr(e);switch(t){case ot:Kr.vps=e;break;case dt:Kr.sps=e;break;case ct:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.vps&&Kr.sps&&Kr.pps){const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}if(ti(t)){const r=ri(t),i=Kr.getNaluDts(),n=Zr(e,r);Kr.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(Kr.vps&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}},handleVideoH265NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Jr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!Kr.streamVideoType)for(let t of e)if(Kr.streamVideoType=fr(t),Kr.streamVideoType)break;Kr.streamVideoType?Kr.streamVideoType===Ne?Kr.handleVideoH264Frames(e):Kr.streamVideoType===$e&&Kr.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=Rr(o);let a=!1,d=e===Ke;e!==Ye&&e!==Ke||(s=Kr.parseVideo264Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case je:Kr.pps=e;break;case Ve:Kr.sps=e;break;case Xe:n=e}if(Nr(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Fr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Fr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(i){const e=Kr.getNaluDts(),t=Mr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!1);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=Qr(o);let a=!1,d=ri(e);ti(e)&&(s=Kr.parseVideo265Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ct:Kr.pps=e;break;case dt:Kr.sps=e;break;case ot:Kr.vps=e;break;case pt:case ft:n=e}if(ti(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps&&Kr.vps){Kr.isSendSeqHeader=!0;const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps&&Kr.vps){const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps}),t=Kr.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(i){const e=Kr.getNaluDts(),t=Jr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!0);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{Kr.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Vn(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Vn(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},oi={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){oi.mp4Box=Hi.createFile(),oi.mp4Box.onReady=oi.onReady,oi.mp4Box.onError=oi.onError,oi.mp4Box.onSamples=oi.onSamples},initTransportDescarmber(){oi.transportDescarmber=new ji},_getSeqHeader(e){const t=oi.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Hi.DataStream(void 0,0,Hi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(oi.isHevc=!0,ci.isHevc=!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){ci.debugLog(oi.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){oi.videoTrackId=t.id;const e=oi._getSeqHeader(t);e&&(ci.debugLog(oi.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),oi.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){oi.audioTrackId=r.id;const e=r.audio||{},t=qt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");oi.mp4Box.setExtractionOptions(r.id);const n=Yt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(oi.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(n,0)}oi.mp4Box.start()},onError(e){ci.debugError(oi.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===oi.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&&ci.calcIframeIntervalTimestamp(i);let n=null;n=oi.isHevc?Jr(t,r):Mr(t,r),ci.decode(n,{type:ae,ts:i,isIFrame:r,cts:0})}oi.mp4Box.removeUsedSamples(e)}else if(e===oi.audioTrackId){if(ci._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),ci.decode(i,{type:oe,ts:r,isIFrame:!1,cts:0})}oi.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(oi.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);oi.transportDescarmber&&(t=oi.transportDescarmber.transport(t)),t.buffer.fileStart=oi.offset,oi.offset+=t.byteLength,oi.mp4Box.appendBuffer(t.buffer)},destroy(){oi.mp4Box&&(oi.mp4Box.stop(),oi.mp4Box.flush(),oi.mp4Box.destroy(),oi.mp4Box=null),oi.transportDescarmber&&(oi.transportDescarmber.destroy(),oi.transportDescarmber=null),oi.offset=0,oi.videoTrackId=null,oi.audioTrackId=null,oi.isHevc=!1}},ai={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);ai.extractNALu(t)},destroy(){ai.lastBuffer=new Uint8Array(0),ai.parsedOffset=0,ai.firstStartCodeOffset=0,ai.secondStartCodeOffset=0,ai.state="init",ai.hasInitVideoCodec=!1,ai.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(ai.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(ai.lastBuffer.length+e.length);for(t.set(ai.lastBuffer,0),t.set(new Uint8Array(e),ai.lastBuffer.length),ai.lastBuffer=t;;){if("init"===ai.state){let e=!1;for(;ai.lastBuffer.length-ai.parsedOffset>=4;)if(0===ai.lastBuffer[ai.parsedOffset])if(0===ai.lastBuffer[ai.parsedOffset+1])if(1===ai.lastBuffer[ai.parsedOffset+2]){if(182===ai.lastBuffer[ai.parsedOffset+3]){ai.state="findFirstStartCode",ai.firstStartCodeOffset=ai.parsedOffset,ai.parsedOffset+=4,e=!0;break}ai.parsedOffset++}else ai.parsedOffset++;else ai.parsedOffset++;else ai.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===ai.state){let e=!1;for(;ai.lastBuffer.length-ai.parsedOffset>=4;)if(0===ai.lastBuffer[ai.parsedOffset])if(0===ai.lastBuffer[ai.parsedOffset+1])if(1===ai.lastBuffer[ai.parsedOffset+2]){if(182===ai.lastBuffer[ai.parsedOffset+3]){ai.state="findSecondStartCode",ai.secondStartCodeOffset=ai.parsedOffset,ai.parsedOffset+=4,e=!0;break}ai.parsedOffset++}else ai.parsedOffset++;else ai.parsedOffset++;else ai.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===ai.state){if(!(ai.lastBuffer.length-ai.parsedOffset>0))break;{let e,t,r=192&ai.lastBuffer[ai.parsedOffset];e=0==r?ai.secondStartCodeOffset-14:ai.secondStartCodeOffset;let i=0==(192&ai.lastBuffer[ai.firstStartCodeOffset+4]);if(i){if(ai.firstStartCodeOffset-14<0)return void ci.debugWarn(ai.LOG_NAME,"firstStartCodeOffset -14 is",ai.firstStartCodeOffset-14);ai.hasInitVideoCodec||(ai.hasInitVideoCodec=!0,ci.debugLog(ai.LOG_NAME,"setCodec"),hi.setCodec(ze,"")),t=ai.lastBuffer.subarray(ai.firstStartCodeOffset-14,e)}else t=ai.lastBuffer.subarray(ai.firstStartCodeOffset,e);let n=ai.getNaluDts();ai.hasInitVideoCodec?(postMessage({cmd:O,type:ke,value:t.byteLength}),postMessage({cmd:O,type:Be,value:n}),Ee=n,hi.decode(t,i?1:0,n)):ci.debugWarn(ai.LOG_NAME,"has not init video codec"),ai.lastBuffer=ai.lastBuffer.subarray(e),ai.firstStartCodeOffset=0==r?14:0,ai.parsedOffset=ai.firstStartCodeOffset+4,ai.state="findFirstStartCode"}}}},getNaluDts(){let e=ai.localDts;return ai.localDts=ai.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Hn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=_n(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],o=(48&r[3])>>>4,a=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==s),l={},c=4;if(2==o||3==o){let e=r[4];if(e>0&&(d||3==o)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==o||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==o||3==o)if(0===s||s===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[s]===Mn){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[s]){let r=188-c,i=di.pmt_.pid_stream_type[s];s!==di.pmt_.common_pids.h264&&s!==di.pmt_.common_pids.h265&&s!==di.pmt_.common_pids.adts_aac&&s!==di.pmt_.common_pids.loas_aac&&s!==di.pmt_.common_pids.ac3&&s!==di.pmt_.common_pids.eac3&&s!==di.pmt_.common_pids.opus&&s!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[s]&&!0!==di.pmt_.timed_id3_pids[s]&&!0!==di.pmt_.synchronous_klv_pids[s]&&!0!==di.pmt_.asynchronous_klv_pids[s]||di.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let o=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,o));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):di.clearSlices(s,i)}for(let a=1+o;a=s.expected_length&&di.clearSlices(s,i),a+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):s.total_length>=s.expected_length&&di.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let o=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new Nn,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let a=di.pes_slice_queues_[i.pid];a.slices.push(n),i.payload_unit_start_indicator&&(a.expected_length=0===o?0:o+6),a.total_length+=n.byteLength,a.expected_length>0&&a.expected_length===a.total_length?di.emitPESSlices(a,i):a.expected_length>0&&a.expected_length>>6,a=t[8];2!==o&&3!==o||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===o?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+a;if(0!==n){if(n<3+a)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-a}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Bn:case Tn:di.parseMP3Payload(c,r);break;case Cn:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):di.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Dn:di.parseADTSAACPayload(c,r);break;case Pn:di.parseLOASAACPayload(c,r);break;case Ln:case Fn:break;case In:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,s,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Rn:di.parseH264Payload(c,r,s,e.random_access_indicator);break;case zn:di.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Cn){let r,s=6;r=0!==n?n:t.byteLength-s;let o=t.subarray(s,s+r);di.parsePESPrivateDataPayload(o,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let o=null;if(1===n&&0===s)o={version_number:0,network_pid:0,program_pmt_pid:{}},o.version_number=i;else if(o=di.pat_,null==o)return;let a=r-5-4,d=-1,l=-1;for(let t=8;t<8+a;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?o.network_pid=i:(o.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(o)}`),di.pat_=o,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,o=1&e[5],a=e[6];if(e[7],1===o&&0===a)r=di._initPmt(),r.program_number=n,r.version_number=s,di.program_pmt_map_[n]=r;else if(r=di.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Xr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Fr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let n=di.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Qt(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame());){r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new er(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame(cr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=o,r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,o=(6&e[1])>>1;e[2];let a=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[a];break;case 2:l=i[a];break;case 3:l=r[a]}switch(o){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:oe};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new Wn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Yt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(n,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new On;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/di.timescale_);s.pts=e}else s.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?di._doDecodeVideo({...e,payload:t}):e.type===oe&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Jr(t,e.isIFrame):Mr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;br(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:oe,ts:e.dts,isIFrame:!1,cts:0})}},li=null;Sr()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new gn,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!wr(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===bt,isStateClosed:()=>li.getState()===wt,isStateEnded:()=>li.getState()===vt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,St,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,At,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(wr(li.hasInit))if(r&&e[1]===Bt){const i=15&e[0];if(i===Re&&wr(ci._opt.supportMSEDecodeHevc))return void li.emitError(Fe.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Me?r=Pr(e.slice(5)):t===Re&&(r=qr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Fe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(vr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Me?s=Pr(n):i===Re&&(s=Yr(n)),li.videoInfo.width=s.codecWidth,li.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),li.emitError(Fe.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const o={id:Ft,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},a=yn.generateInitSegment(o);li.isAvc=i===Me;let d=s.codec;return li.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:li.isAvc?gt:yt,postMessage({cmd:T,w:s.codecWidth,h:s.codecHeight}),li._initSourceBuffer(),li.appendBuffer(a.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===We,s=r===Oe;if(wr(s||n))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Fe.mediaSourceAudioG711NotSupport),!1;const o={id:It,type:"audio",timescale:1e3};let a={};if(Kt(e)){if(a=Jt(e.slice(2)),!a)return!1;o.audioSampleRate=a.sampleRate,o.channelCount=a.channelCount,o.config=a.config,o.refSampleDuration=1024/o.audioSampleRate*o.timescale}else{if(!n)return!1;if(a=kn(e),!a)return!1;o.audioSampleRate=a.samplingRate,o.channelCount=a.channelCount,o.refSampleDuration=1152/o.audioSampleRate*o.timescale}o.codec=a.codec,o.duration=0;let d="mp4",l=a.codec,c=null;n&&wr(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=yn.generateInitSegment(o);let u=`${o.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),wr(li.isAudioInitInfo)&&(Ar=r===Oe?i?16:8:0===i?8:16,postMessage({cmd:L,code:r}),postMessage({cmd:P,sampleRate:o.audioSampleRate,channels:o.channelCount,depth:Ar}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=s,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Fe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),o=s.byteLength;if(0===o)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let a=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=a,d=!0);const l=a-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${a} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=yn.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendBuffer(n.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Ft,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=o,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=s,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=yn.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendAudioBuffer(n.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=It,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=n,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Fe.mediaSourceAudioInitTimeout)}),1e3)));if(wr(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(wr(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:n,end:t})}}else s=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:n,end:t})}}else sli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&wr(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&wr(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&wr(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&wr(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(wr(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Dt,_opt:Wr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Qe,wasmDecodeDelay:Ee-qe});postMessage({cmd:O,type:Ce,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===oe)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Qe=!1,ci.delay=t-r):(Qe=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===oe)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===ae&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===oe?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===ae&&o.decode?o.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===n.length)return;const t=e.ts,i=n[0],s=e.type===ae&&vr(e.payload);if(wr(r))s&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i));else{const r=i.ts-t,o=i.type===oe&&e.type===ae;(r<=20||o||s)&&(ci.debugLog("worker",`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 ${o} and isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===v,t=ci._opt.playType===b;if(Kr.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),o&&ci._opt.useWCS&&ci.useOffscreen()&&o.init(),wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(n.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${n.length}`);if(ci.dropping){for(r=n.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${n.length}`);!r.isIFrame&&n.length;)r=n.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;n.length;)r=n.shift(),ci.doDecode(r);else if(r=n[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),n.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:H})):(n.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;n.length;){if(r=n[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${n.length}`);break}n.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();et||(et=e);const r=e-et;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),et=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(wr(ci._opt.checkFirstIFrame)&&(Se=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;n.length&&(e=n.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Vr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(xr=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&wr(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,et=null,Qe=!1,Ee=0,qe=0,o&&(o.destroy&&o.destroy(),o=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Wr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),n=[],s=[],u&&(u.close(),u=null),f=null,S=null,E=!1,k=!1,Se=!1,jt=!1,Zt=!1,tr=!1,dr=null,ht=[],Tt=0,Ot=0,rt=null,nt=null,Gt=null,Ht=null,Ar=null,Wt=0,Vt=0,xt=null,Ut=null,ci.fetchStatus=Dt,Ur=!0,Kr.destroy(),oi.destroy(),ai.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===oe&&Kt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&vr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===w)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===oe&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Xt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===ae){if(Wt>0){const e=t.ts-Ht,r=Wt+Wt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Wt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Vt}`),Ht-t.ts>A&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Wt=0),ci._opt.isDropSameTimestampGop&&wr(t.isIFrame)&&Se)){const e=ci.hasIframeInBufferList(),t=wr(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),br(ci._opt.checkFirstIFrame)&&br(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}Ht>0&&(Wt=t.ts-Ht),Vt=e.byteLength,Ht=t.ts}if(Se){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${n.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;n.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${n.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return n.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>n.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return n.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return n.forEach((t=>{t.type===oe&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?Kr.lastBuf&&(e=Kr.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&oi.mp4Box&&(e=oi.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=lr((e=>{postMessage({cmd:O,type:xe,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(oi.listenMp4Box(),ci._opt.isFmp4Private&&oi.initTransportDescarmber()),t.protocol===_){t.isFlv&&(u=new Br(ci.demuxFlv())),a=new AbortController;const r=Object.assign({signal:a.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(br(xr))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Dt,void e.body.cancel();if(!gr(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Vr(),void postMessage({cmd:O,type:Fe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:Te}),pr())ci.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):br(xr)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof e?(ci.fetchStatus=Pt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Lt,Vr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==kt?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Lt,Vr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De}))):a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):br(xr)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof n?(ci.fetchStatus=Pt,l(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ci.demuxFmp4(n):t.isMpeg4?ci.demuxMpeg4(n):t.isTs?ci.demuxTs(n):t.isNakedFlow&&ci.demuxNakedFlow(n),i()):ci.debugWarn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==kt?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==kt?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(u=new Br(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:Te}),postMessage({cmd:O,type:Le})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),br(xr)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:y,msg:e.code})):postMessage({cmd:O,type:De}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):br(xr)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Fe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 de:if(o.byteLength>0){let e=o;br(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(o)),ci.decode(e,{type:oe,ts:s})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${o.byteLength} and return`);break;case le:if(o.byteLength>=6){const e=o[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(o,s);else{const e=15&o[0];let t=o[0]>>4===Ct;const i=e===Re;if(wr(t)&&br(Er(o,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&vr(o)&&null===ci.isHevc){const e=15&o[0];ci.isHevc=e===Re,dr=sr(o,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`)}t&&ci.calcIframeIntervalTimestamp(s),ci.isPlayer&&ci.calcNetworkDelay(s),r[0]=o[4],r[1]=o[3],r[2]=o[2],r[3]=0;let n=r[0],a=ci.cryptoPayload(o,t);ci.decode(a,{type:ae,ts:s,isIFrame:t,cts:n})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${o.byteLength} and return`);break;case ce:postMessage({cmd:J,buffer:o},[o.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===oe?ci._opt.hasAudio&&(postMessage({cmd:O,type:Ue,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&ci._opt.hasVideo&&(postMessage({cmd:O,type:ke,value:e.byteLength}),postMessage({cmd:O,type:Be,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Oi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?ns(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):cn(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=mn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Oe&&(t=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,n=e[0]>>1&1;if(Ar=r===Oe?n?16:8:0===n?8:16,ui&&ui.setCodec||!wr(i))if(Kt(e)||r===Ge||r===He||r===We){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const n=r===Oe?e.slice(2):new Uint8Array(0);if(i){if(r===We)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,n);r===Oe&&postMessage({cmd:I,buffer:n},[n.buffer]),k=!0,r!==Oe&&(r===We?(ci.mp3Demuxer||(ci.mp3Demuxer=new hn(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(br(r)&&br(ci._opt.mseDecodeAudio))postMessage({cmd:$,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(k){if(Kt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===We?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Oe?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!wr(i))if(vr(e))if(r===Me||r===Re){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Me&&ci._opt.useSIMD){const e=Pr(t);if(e.codecWidth>x||e.codecHeight>x)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const n=new Uint8Array(e);E=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:M,code:r}),postMessage({cmd:R,buffer:n,codecId:r},[n.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,n){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,n,s);else if(br(r))postMessage({cmd:N,payload:e,isIFrame:n,ts:t,cts:s,delay:ci.delay},[e.buffer]);else if(E)if(!Se&&n&&(Se=!0),Se){if(n&&vr(e)){const t=15&e[0];let r={};t===Me?r=Pr(e.slice(5)):t===Re&&(r=qr(e)),r.codecWidth&&r.codecHeight&&f&&S&&(r.codecWidth!==f||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${f}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Zt=!0,postMessage({cmd:j,value:`width: ${f}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(Zt)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(tr)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(vr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${n.length}, need clear is ${e}`),e&&(n=[]),ci.isPlayer&&(ci.resetAllDelay(),br(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:H}))),br(ci._opt.checkFirstIFrame)&&wr(r)&&(Se=!1)},dropBuffer$2:function(){if(n.length>0){let e=n.findIndex((e=>br(e.isIFrame)&&e.type===ae));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:H});const t=n.length;n=n.slice(e);const r=n.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${n.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===n.length&&(ci.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 oe:ci.decode(new Uint8Array(e,5),{type:oe,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ci._isEnhancedH265Header(n))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),vr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Re}ci.isPlayer&&ci.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],o=ci.cryptoPayload(i,e);ci.decode(o,{type:ae,ts:r,isIFrame:e,cts:n})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kr.dispatch(e)},demuxFmp4:function(e){oi.dispatch(e)},demuxMpeg4:function(e){ai.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=wr(d),n===Rt){if(i===$t){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),dr=sr(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`),ci.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(n===zt){let r=e,n=0;const s=i===$t;s&&ci.calcIframeIntervalTimestamp(t),d||(a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0],r=Jr(e.slice(8),s),r=ci.cryptoPayload(r,s),ci.decode(r,{type:ae,ts:t,isIFrame:s,cts:n}))}else if(n===Nt){const r=i===$t;r&&ci.calcIframeIntervalTimestamp(t);let n=Jr(e.slice(5),r);n=ci.cryptoPayload(n,r),ci.decode(n,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Mt)===Mt},findSei:function(e,t){let r=4;ur(dr)&&(r=dr),rr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===pt||r===ft),n=wr(ci.isHevc)&&r===Xe;if(i||n){const r=ir(e,ci.isHevc);postMessage({cmd:Z,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Se&&e>0))return;null===rt?(rt=e,nt=or()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===v&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${rt} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Pe,value:i}))},calcIframeIntervalTimestamp:function(e){null===Gt?Gt=e:Gt=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&br(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),jt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),jt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:T,w:t,h:r}),f=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:Ar}),Ot=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=f*S*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(xt=null,qe=r,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,s);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:s,delay:ci.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(Tt){if(!(n>=(r=d-Tt)))return Tt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...o[1])));ht[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),a=r,n-=r}for(Tt=n;Tt>=d;Tt-=d)ht[0]=o[0].slice(a,a+=d),2==Ot&&(ht[1]=o[1].slice(a-d,a)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));Tt&&(s[0]=o[0].slice(a),2==Ot&&(s[1]=o[1].slice(a))),o=[]},errorInfo:function(e){null===xt&&(xt=or());const t=or(),r=ar(Ut>0?2*Ut:5e3,1e3,5e3),i=t-xt;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Ut} and diff is ${i} and maxDiff is ${r}\n and replay`),tr=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){d?d.readyState===Ie?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),br(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,f=e,S=t,postMessage({cmd:T,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Ot=e,postMessage({cmd:P,sampleRate:t,channels:e,depth:Ar})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(Tt){if(!(n>=(r=d-Tt)))return Tt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...o[1])));ht[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),a=r,n-=r}for(Tt=n;Tt>=d;Tt-=d)ht[0]=o[0].slice(a,a+=d),2==Ot&&(ht[1]=o[1].slice(a-d,a)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));Tt&&(s[0]=o[0].slice(a),2==Ot&&(s[1]=o[1].slice(a))),o=[]},draw:function(t,r,i,n){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const s=e.HEAPU8.subarray(r,r+kr),o=e.HEAPU8.subarray(i,i+Dr),a=e.HEAPU8.subarray(n,n+Dr),d=new Uint8Array(kr+Dr+Dr);if(d.set(s),d.set(o,kr),d.set(a,kr+Dr),xt=null,qe=t,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:B}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case he:ci.pushBuffer(t.buffer,t.options);break;case fe:ci.decodeAudio(t.buffer,t.ts);break;case pe:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ge:ci.clearBuffer(t.needClear);break;case ye:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case me:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&wr(t.options.isVideoInited)&&(Ur=t.options.isVideoInited),ci.close();break;case _e:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case ve:ci.sendWebsocketMessage(t.message);break;case be:li.$video.currentTime=Number(t.message);break;case we:ci.updatePlaybackIsPause(t.isPause)}}}(e[1],t)}))})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="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,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-mt-worker.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_MT_WORKER_WASM_URL&&""!=JESSIBUCA_PRO_MT_WORKER_WASM_URL?JESSIBUCA_PRO_MT_WORKER_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c=(e,t)=>{throw t},u="object"==typeof window,h="function"==typeof importScripts,f="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,p=n.ENVIRONMENT_IS_PTHREAD||!1,m="";function _(e){return n.locateFile?n.locateFile(e,m):m+e}if(f){const{createRequire:e}=await import("module");var g=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),y=g("fs"),v=g("path");let t;m=h?v.dirname(m)+"/":g("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-mt.js",document.baseURI).href)),s=(e,t)=>(e=se(e)?new URL(e):v.normalize(e),y.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=se(e)?new URL(e):v.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&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),c=(e,t)=>{throw process.exitCode=e,t},n.inspect=()=>"[Emscripten Module object]";try{t=g("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||h)&&(h?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),r&&(m=r),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",f||(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(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)}));f&&"undefined"==typeof performance&&(global.performance=g("perf_hooks").performance);var b=console.log.bind(console),w=console.error.bind(console);f&&(b=function(){for(var e=arguments.length,t=new Array(e),r=0;re.startsWith(ie),se=e=>e.startsWith("file://");function oe(e){if(e==ee&&S)return new Uint8Array(S);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ae(e){if(!S&&(u||h)){if("function"==typeof fetch&&!se(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((()=>oe(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>oe(e)))}function de(e,t,r){return ae(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{U(`failed to asynchronously prepare wasm: ${e}`),Q(e)}))}function le(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||ne(t)||se(t)||f||"function"!=typeof fetch?de(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return U(`wasm streaming compile failed: ${e}`),U("falling back to ArrayBuffer instantiation"),de(t,r,i)}))))}function ce(){var e={a:Yi};function t(e,t){return Ki=e.exports,st(Ki.W),et=Ki.Z,q(Ki.R),A=t,J(),Ki}if(Z(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){U(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return le(S,ee,e,(function(e){t(e.instance,e.module)})).catch(i),{}}function ue(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}n.locateFile?ne(ee="decoder-pro-mt-worker.wasm")||(ee=_(ee)):ee=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).href;var he=e=>{e.terminate(),e.onmessage=e=>{}},fe=e=>{var t=Xe.pthreads[e];delete Xe.pthreads[e],he(t),sn(e),Xe.runningWorkers.splice(Xe.runningWorkers.indexOf(t),1),t.pthread_ptr=0},pe=e=>{Xe.pthreads[e].postMessage({cmd:"cancel"})},me=e=>{var t=Xe.pthreads[e];Xe.returnWorkerToPool(t)},_e=e=>{var t=Xe.getNewWorker();if(!t)return 6;Xe.runningWorkers.push(t),Xe.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 f&&t.unref(),t.postMessage(r,e.transferList),0},ge=0,ye=()=>nt||ge>0,ve={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=ve.isAbs(e),r="/"===e.substr(-1);return(e=ve.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=ve.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=ve.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return ve.normalize(e.join("/"))},join2:(e,t)=>ve.normalize(e+"/"+t)},be=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>(e.set(crypto.getRandomValues(new Uint8Array(e.byteLength))),e);if(f)try{var e=g("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}Q("initRandomDevice")},we=e=>(we=be())(e),Se={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:$e.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=ve.isAbs(i)}return(t?"/":"")+(e=ve.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("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&Ee)return Ee.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},xe=[],Ue=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},ke=(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 Be(e,t,r){var i=r>0?r:Ue(e)+1,n=new Array(i),s=ke(e,n,0,n.length);return t&&(n.length=s),n}var Te=()=>{if(!xe.length){var e=null;if(f){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=y.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;xe=Be(e,!0)}return xe.shift()},Ce={ttys:[],init(){},shutdown(){},register(e,t){Ce.ttys[e]={input:[],output:[],ops:t},$e.registerDevice(e,Ce.stream_ops)},stream_ops:{open(e){var t=Ce.ttys[e.node.rdev];if(!t)throw new $e.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new $e.ErrnoError(60);for(var s=0,o=0;oTe(),put_char(e,t){null===t||10===t?(x(Ae(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(x(Ae(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(U(Ae(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(U(Ae(e.output,0)),e.output=[])}}},De=e=>{Q()},Pe={ops_table:null,mount:e=>Pe.createNode(null,"/",16895,0),createNode(e,t,r,i){if($e.isBlkdev(r)||$e.isFIFO(r))throw new $e.ErrnoError(63);Pe.ops_table||(Pe.ops_table={dir:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr,lookup:Pe.node_ops.lookup,mknod:Pe.node_ops.mknod,rename:Pe.node_ops.rename,unlink:Pe.node_ops.unlink,rmdir:Pe.node_ops.rmdir,readdir:Pe.node_ops.readdir,symlink:Pe.node_ops.symlink},stream:{llseek:Pe.stream_ops.llseek}},file:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr},stream:{llseek:Pe.stream_ops.llseek,read:Pe.stream_ops.read,write:Pe.stream_ops.write,allocate:Pe.stream_ops.allocate,mmap:Pe.stream_ops.mmap,msync:Pe.stream_ops.msync}},link:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr,readlink:Pe.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Pe.node_ops.getattr,setattr:Pe.node_ops.setattr},stream:$e.chrdev_stream_ops}});var n=$e.createNode(e,t,r,i);return $e.isDir(n.mode)?(n.node_ops=Pe.ops_table.dir.node,n.stream_ops=Pe.ops_table.dir.stream,n.contents={}):$e.isFile(n.mode)?(n.node_ops=Pe.ops_table.file.node,n.stream_ops=Pe.ops_table.file.stream,n.usedBytes=0,n.contents=null):$e.isLink(n.mode)?(n.node_ops=Pe.ops_table.link.node,n.stream_ops=Pe.ops_table.link.stream):$e.isChrdev(n.mode)&&(n.node_ops=Pe.ops_table.chrdev.node,n.stream_ops=Pe.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=$e.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,$e.isDir(e.mode)?t.size=4096:$e.isFile(e.mode)?t.size=e.usedBytes:$e.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&Pe.resizeFileStorage(e,t.size)},lookup(e,t){throw $e.genericErrors[44]},mknod:(e,t,r,i)=>Pe.createNode(e,t,r,i),rename(e,t,r){if($e.isDir(e.mode)){var i;try{i=$e.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new $e.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=$e.lookupNode(e,t);for(var i in r.contents)throw new $e.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=Pe.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!$e.isLink(e.mode))throw new $e.ErrnoError(28);return e.link}},stream_ops:{read(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(Pe.stream_ops.write(e,t,0,i,r,!1),0)}},Le=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{R(r,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(r)),n&&J()}),(t=>{if(!r)throw`Loading data file "${e}" failed.`;r()})),n&&Z()},Fe=(e,t,r,i,n,s)=>{$e.createDataFile(e,t,r,i,n,s)},Ie=n.preloadPlugins||[],Me=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ie.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},Re=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?Se.resolve(ve.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Fe(e,t,r,i,n,d),s&&s(),J()}Me(r,c,u,(()=>{o&&o(),J()}))||u(r)}Z(),"string"==typeof r?Le(r,(e=>u(e)),o):u(r)},ze=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},Ne=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},$e={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=Se.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new $e.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=$e.root,n="/",s=0;s40)throw new $e.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if($e.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)%$e.nameTable.length},hashAddNode(e){var t=$e.hashName(e.parent.id,e.name);e.name_next=$e.nameTable[t],$e.nameTable[t]=e},hashRemoveNode(e){var t=$e.hashName(e.parent.id,e.name);if($e.nameTable[t]===e)$e.nameTable[t]=e.name_next;else for(var r=$e.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=$e.mayLookup(e);if(r)throw new $e.ErrnoError(r,e);for(var i=$e.hashName(e.id,t),n=$e.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return $e.lookup(e,t)},createNode(e,t,r,i){var n=new $e.FSNode(e,t,r,i);return $e.hashAddNode(n),n},destroyNode(e){$e.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>$e.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=$e.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return $e.lookupNode(e,t),20}catch(e){}return $e.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=$e.lookupNode(e,t)}catch(e){return e.errno}var n=$e.nodePermissions(e,"wx");if(n)return n;if(r){if(!$e.isDir(i.mode))return 54;if($e.isRoot(i)||$e.getPath(i)===$e.cwd())return 10}else if($e.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?$e.isLink(e.mode)?32:$e.isDir(e.mode)&&("r"!==$e.flagsToPermissionString(t)||512&t)?31:$e.nodePermissions(e,$e.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=$e.MAX_OPEN_FDS;e++)if(!$e.streams[e])return e;throw new $e.ErrnoError(33)},getStreamChecked(e){var t=$e.getStream(e);if(!t)throw new $e.ErrnoError(8);return t},getStream:e=>$e.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return $e.FSStream||($e.FSStream=function(){this.shared={}},$e.FSStream.prototype={},Object.defineProperties($e.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new $e.FSStream,e),-1==t&&(t=$e.nextfd()),e.fd=t,$e.streams[t]=e,e},closeStream(e){$e.streams[e]=null},chrdev_stream_ops:{open(e){var t=$e.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new $e.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){$e.devices[e]={stream_ops:t}},getDevice:e=>$e.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),$e.syncFSRequests++,$e.syncFSRequests>1&&U(`warning: ${$e.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=$e.getMounts($e.root.mount),i=0;function n(e){return $e.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&&$e.root)throw new $e.ErrnoError(10);if(!n&&!s){var o=$e.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,$e.isMountpoint(i))throw new $e.ErrnoError(10);if(!$e.isDir(i.mode))throw new $e.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?$e.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=$e.lookupPath(e,{follow_mount:!1});if(!$e.isMountpoint(t.node))throw new $e.ErrnoError(28);var r=t.node,i=r.mounted,n=$e.getMounts(i);Object.keys($e.nameTable).forEach((e=>{for(var t=$e.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&$e.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=$e.lookupPath(e,{parent:!0}).node,n=ve.basename(e);if(!n||"."===n||".."===n)throw new $e.ErrnoError(28);var s=$e.mayCreate(i,n);if(s)throw new $e.ErrnoError(s);if(!i.node_ops.mknod)throw new $e.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,$e.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,$e.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,$e.mknod(e,t,r)),symlink(e,t){if(!Se.resolve(e))throw new $e.ErrnoError(44);var r=$e.lookupPath(t,{parent:!0}).node;if(!r)throw new $e.ErrnoError(44);var i=ve.basename(t),n=$e.mayCreate(r,i);if(n)throw new $e.ErrnoError(n);if(!r.node_ops.symlink)throw new $e.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=ve.dirname(e),s=ve.dirname(t),o=ve.basename(e),a=ve.basename(t);if(r=$e.lookupPath(e,{parent:!0}).node,i=$e.lookupPath(t,{parent:!0}).node,!r||!i)throw new $e.ErrnoError(44);if(r.mount!==i.mount)throw new $e.ErrnoError(75);var d,l=$e.lookupNode(r,o),c=Se.relative(e,s);if("."!==c.charAt(0))throw new $e.ErrnoError(28);if("."!==(c=Se.relative(t,n)).charAt(0))throw new $e.ErrnoError(55);try{d=$e.lookupNode(i,a)}catch(e){}if(l!==d){var u=$e.isDir(l.mode),h=$e.mayDelete(r,o,u);if(h)throw new $e.ErrnoError(h);if(h=d?$e.mayDelete(i,a,u):$e.mayCreate(i,a))throw new $e.ErrnoError(h);if(!r.node_ops.rename)throw new $e.ErrnoError(63);if($e.isMountpoint(l)||d&&$e.isMountpoint(d))throw new $e.ErrnoError(10);if(i!==r&&(h=$e.nodePermissions(r,"w")))throw new $e.ErrnoError(h);$e.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{$e.hashAddNode(l)}}},rmdir(e){var t=$e.lookupPath(e,{parent:!0}).node,r=ve.basename(e),i=$e.lookupNode(t,r),n=$e.mayDelete(t,r,!0);if(n)throw new $e.ErrnoError(n);if(!t.node_ops.rmdir)throw new $e.ErrnoError(63);if($e.isMountpoint(i))throw new $e.ErrnoError(10);t.node_ops.rmdir(t,r),$e.destroyNode(i)},readdir(e){var t=$e.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new $e.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=$e.lookupPath(e,{parent:!0}).node;if(!t)throw new $e.ErrnoError(44);var r=ve.basename(e),i=$e.lookupNode(t,r),n=$e.mayDelete(t,r,!1);if(n)throw new $e.ErrnoError(n);if(!t.node_ops.unlink)throw new $e.ErrnoError(63);if($e.isMountpoint(i))throw new $e.ErrnoError(10);t.node_ops.unlink(t,r),$e.destroyNode(i)},readlink(e){var t=$e.lookupPath(e).node;if(!t)throw new $e.ErrnoError(44);if(!t.node_ops.readlink)throw new $e.ErrnoError(28);return Se.resolve($e.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=$e.lookupPath(e,{follow:!t}).node;if(!r)throw new $e.ErrnoError(44);if(!r.node_ops.getattr)throw new $e.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>$e.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?$e.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new $e.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){$e.chmod(e,t,!0)},fchmod(e,t){var r=$e.getStreamChecked(e);$e.chmod(r.node,t)},chown(e,t,r,i){var n;if(!(n="string"==typeof e?$e.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new $e.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){$e.chown(e,t,r,!0)},fchown(e,t,r){var i=$e.getStreamChecked(e);$e.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new $e.ErrnoError(28);var r;if(!(r="string"==typeof e?$e.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new $e.ErrnoError(63);if($e.isDir(r.mode))throw new $e.ErrnoError(31);if(!$e.isFile(r.mode))throw new $e.ErrnoError(28);var i=$e.nodePermissions(r,"w");if(i)throw new $e.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=$e.getStreamChecked(e);if(0==(2097155&r.flags))throw new $e.ErrnoError(28);$e.truncate(r.node,t)},utime(e,t,r){var i=$e.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new $e.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?ze(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=ve.normalize(e);try{i=$e.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new $e.ErrnoError(20)}else i=$e.mknod(e,r,0),s=!0;if(!i)throw new $e.ErrnoError(44);if($e.isChrdev(i.mode)&&(t&=-513),65536&t&&!$e.isDir(i.mode))throw new $e.ErrnoError(54);if(!s){var o=$e.mayOpen(i,t);if(o)throw new $e.ErrnoError(o)}512&t&&!s&&$e.truncate(i,0),t&=-131713;var a=$e.createStream({node:i,path:$e.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||($e.readFiles||($e.readFiles={}),e in $e.readFiles||($e.readFiles[e]=1)),a},close(e){if($e.isClosed(e))throw new $e.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{$e.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if($e.isClosed(e))throw new $e.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new $e.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new $e.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 $e.ErrnoError(28);if($e.isClosed(e))throw new $e.ErrnoError(8);if(1==(2097155&e.flags))throw new $e.ErrnoError(8);if($e.isDir(e.node.mode))throw new $e.ErrnoError(31);if(!e.stream_ops.read)throw new $e.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new $e.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 $e.ErrnoError(28);if($e.isClosed(e))throw new $e.ErrnoError(8);if(0==(2097155&e.flags))throw new $e.ErrnoError(8);if($e.isDir(e.node.mode))throw new $e.ErrnoError(31);if(!e.stream_ops.write)throw new $e.ErrnoError(28);e.seekable&&1024&e.flags&&$e.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new $e.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($e.isClosed(e))throw new $e.ErrnoError(8);if(t<0||r<=0)throw new $e.ErrnoError(28);if(0==(2097155&e.flags))throw new $e.ErrnoError(8);if(!$e.isFile(e.node.mode)&&!$e.isDir(e.node.mode))throw new $e.ErrnoError(43);if(!e.stream_ops.allocate)throw new $e.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new $e.ErrnoError(2);if(1==(2097155&e.flags))throw new $e.ErrnoError(2);if(!e.stream_ops.mmap)throw new $e.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 $e.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=$e.open(e,t.flags),n=$e.stat(e).size,s=new Uint8Array(n);return $e.read(i,s,0,n,0),"utf8"===t.encoding?r=Ae(s,0):"binary"===t.encoding&&(r=s),$e.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=$e.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(Ue(t)+1),s=ke(t,n,0,n.length);$e.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");$e.write(i,t,0,t.byteLength,void 0,r.canOwn)}$e.close(i)},cwd:()=>$e.currentPath,chdir(e){var t=$e.lookupPath(e,{follow:!0});if(null===t.node)throw new $e.ErrnoError(44);if(!$e.isDir(t.node.mode))throw new $e.ErrnoError(54);var r=$e.nodePermissions(t.node,"x");if(r)throw new $e.ErrnoError(r);$e.currentPath=t.path},createDefaultDirectories(){$e.mkdir("/tmp"),$e.mkdir("/home"),$e.mkdir("/home/web_user")},createDefaultDevices(){$e.mkdir("/dev"),$e.registerDevice($e.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),$e.mkdev("/dev/null",$e.makedev(1,3)),Ce.register($e.makedev(5,0),Ce.default_tty_ops),Ce.register($e.makedev(6,0),Ce.default_tty1_ops),$e.mkdev("/dev/tty",$e.makedev(5,0)),$e.mkdev("/dev/tty1",$e.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=we(e).byteLength),e[--t]);$e.createDevice("/dev","random",r),$e.createDevice("/dev","urandom",r),$e.mkdir("/dev/shm"),$e.mkdir("/dev/shm/tmp")},createSpecialDirectories(){$e.mkdir("/proc");var e=$e.mkdir("/proc/self");$e.mkdir("/proc/self/fd"),$e.mount({mount(){var t=$e.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=$e.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?$e.createDevice("/dev","stdin",n.stdin):$e.symlink("/dev/tty","/dev/stdin"),n.stdout?$e.createDevice("/dev","stdout",null,n.stdout):$e.symlink("/dev/tty","/dev/stdout"),n.stderr?$e.createDevice("/dev","stderr",null,n.stderr):$e.symlink("/dev/tty1","/dev/stderr"),$e.open("/dev/stdin",0),$e.open("/dev/stdout",1),$e.open("/dev/stderr",1)},ensureErrnoError(){$e.ErrnoError||($e.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},$e.ErrnoError.prototype=new Error,$e.ErrnoError.prototype.constructor=$e.ErrnoError,[44].forEach((e=>{$e.genericErrors[e]=new $e.ErrnoError(e),$e.genericErrors[e].stack=""})))},staticInit(){$e.ensureErrnoError(),$e.nameTable=new Array(4096),$e.mount(Pe,{},"/"),$e.createDefaultDirectories(),$e.createDefaultDevices(),$e.createSpecialDirectories(),$e.filesystems={MEMFS:Pe}},init(e,t,r){$e.init.initialized=!0,$e.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,$e.createStandardStreams()},quit(){$e.init.initialized=!1;for(var e=0;e<$e.streams.length;e++){var t=$e.streams[e];t&&$e.close(t)}},findObject(e,t){var r=$e.analyzePath(e,t);return r.exists?r.object:null},analyzePath(e,t){try{e=(i=$e.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=$e.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=ve.basename(e),i=$e.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:$e.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var o=ve.join2(e,s);try{$e.mkdir(o)}catch(e){}e=o}}return o},createFile(e,t,r,i,n){var s=ve.join2("string"==typeof e?e:$e.getPath(e),t),o=Ne(i,n);return $e.create(s,o)},createDataFile(e,t,r,i,n,s){var o=t;e&&(e="string"==typeof e?e:$e.getPath(e),o=t?ve.join2(e,t):e);var a=Ne(i,n),d=$e.create(o,a);if(r){if("string"==typeof r){for(var l=new Array(r.length),c=0,u=r.length;cthis.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||[]):Be(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,x("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=$e.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 c(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 $e.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>($e.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{$e.forceLoadFile(d);var s=De();if(!s)throw new $e.ErrnoError(48);return c(e,B,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Oe=(e,t)=>e?Ae(T,e,t):"",Ge={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(ve.isAbs(t))return t;var i;if(i=-100===e?$e.cwd():Ge.getStreamFromFD(e).path,0==t.length){if(!r)throw new $e.ErrnoError(44);return i}return ve.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&ve.normalize(t)!==ve.normalize($e.getPath(e.node)))return-54;throw e}P[r>>2]=i.dev,P[r+4>>2]=i.mode,L[r+8>>2]=i.nlink,P[r+12>>2]=i.uid,P[r+16>>2]=i.gid,P[r+20>>2]=i.rdev,re=[i.size>>>0,(te=i.size,+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[r+24>>2]=re[0],P[r+28>>2]=re[1],P[r+32>>2]=4096,P[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return re=[Math.floor(n/1e3)>>>0,(te=Math.floor(n/1e3),+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[r+40>>2]=re[0],P[r+44>>2]=re[1],L[r+48>>2]=n%1e3*1e3,re=[Math.floor(s/1e3)>>>0,(te=Math.floor(s/1e3),+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[r+56>>2]=re[0],P[r+60>>2]=re[1],L[r+64>>2]=s%1e3*1e3,re=[Math.floor(o/1e3)>>>0,(te=Math.floor(o/1e3),+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[r+72>>2]=re[0],P[r+76>>2]=re[1],L[r+80>>2]=o%1e3*1e3,re=[i.ino>>>0,(te=i.ino,+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[r+88>>2]=re[0],P[r+92>>2]=re[1],0},doMsync(e,t,r,i,n){if(!$e.isFile(t.node.mode))throw new $e.ErrnoError(43);if(2&i)return 0;var s=T.slice(e,e+r);$e.msync(t,s,n,r,i)},varargs:void 0,get(){var e=P[+Ge.varargs>>2];return Ge.varargs+=4,e},getp:()=>Ge.get(),getStr:e=>Oe(e),getStreamFromFD:e=>$e.getStreamChecked(e)},He=e=>{var t=ln(),r=e();return cn(t),r},We=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Ve=function(e,t){var r=arguments.length-2,i=arguments;return He((()=>{for(var n=r,s=un(8*n),o=s>>3,a=0;a{if(k=e,p)throw Qe(e),"unwind";je(e)},Ye=qe,Ke=e=>{if(e instanceof ue||"unwind"==e)return k;c(1,e)},Xe={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){p?Xe.initWorker():Xe.initMainThread()},initMainThread(){j((()=>{Z(),Xe.loadWasmModuleToAllWorkers((()=>J()))}))},initWorker(){nt=!1},setExitStatus:e=>{k=e},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var e of Xe.runningWorkers)he(e);for(var e of Xe.unusedWorkers)he(e);Xe.unusedWorkers=[],Xe.runningWorkers=[],Xe.pthreads=[]},returnWorkerToPool:e=>{var t=e.pthread_ptr;delete Xe.pthreads[t],Xe.unusedWorkers.push(e),Xe.runningWorkers.splice(Xe.runningWorkers.indexOf(e),1),e.pthread_ptr=0,sn(t)},receiveObjectTransfer(e){},threadInitTLS(){Xe.tlsInitFunctions.forEach((e=>e()))},loadWasmModuleToWorker:e=>new Promise((t=>{e.onmessage=r=>{var i=r.data,s=i.cmd;if(i.targetThread&&i.targetThread!=Ji()){var o=Xe.pthreads[i.targetThread];o?o.postMessage(i,i.transferList):U(`Internal error! Worker sent a message "${s}" to target pthread ${i.targetThread}, but that thread no longer exists!`)}else"checkMailbox"===s?ai():"spawnThread"===s?_e(i):"cleanupThread"===s?me(i.thread):"killThread"===s?fe(i.thread):"cancelThread"===s?pe(i.thread):"loaded"===s?(e.loaded=!0,t(e)):"alert"===s?alert(`Thread ${i.threadId}: ${i.text}`):"setimmediate"===i.target?e.postMessage(i):"callHandler"===s?n[i.handler](...i.args):s&&U(`worker sent an unknown command ${s}`)},e.onerror=e=>{throw U(`worker sent an error! ${e.filename}:${e.lineno}: ${e.message}`),e},f&&(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:E,wasmModule:A})})),loadWasmModuleToAllWorkers(e){e()},allocateUnusedWorker(){var e;if(n.locateFile){var t=_("decoder-pro-mt-worker.worker.js");e=new Worker(t,{type:"module"})}else e=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),{type:"module"});Xe.unusedWorkers.push(e)},getNewWorker:()=>(0==Xe.unusedWorkers.length&&(Xe.allocateUnusedWorker(),Xe.loadWasmModuleToWorker(Xe.unusedWorkers[0])),Xe.unusedWorkers.pop())};n.PThread=Xe;var Ze=e=>{for(;e.length>0;)e.shift()(n)},Je=()=>{var e=Ji(),t=L[e+52>>2],r=L[e+56>>2];dn(t,t-r),cn(t)};function Qe(e){if(p)return Ve(1,0,e);Ye(e)}n.establishStackSpace=Je;var et,tt=[],rt=e=>{var t=tt[e];return t||(e>=tt.length&&(tt.length=e+1),tt[e]=t=et.get(e)),t},it=(e,t)=>{!function(e){ye()?Xe.setExitStatus(e):on(e)}(rt(e)(t))};n.invokeEntryPoint=it;var nt=n.noExitRuntime||!0,st=e=>{Xe.tlsInitFunctions.push(e)},ot=(e,t,r,i)=>{Q(`Assertion failed: ${Oe(e)}, at: `+[t?Oe(t):"unknown filename",r,i?Oe(i):"unknown function"])};function at(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){L[this.ptr+4>>2]=e},this.get_type=function(){return L[this.ptr+4>>2]},this.set_destructor=function(e){L[this.ptr+8>>2]=e},this.get_destructor=function(){return L[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){L[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return L[this.ptr+16>>2]},this.get_exception_ptr=function(){if(hn(this.get_type()))return L[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var dt=(e,t,r)=>{throw new at(e).init(t,r),e},lt=e=>{tn(e,!h,1,!u,65536,!1),Xe.threadInitTLS()},ct=e=>{p?postMessage({cmd:"cleanupThread",thread:e}):me(e)};function ut(e,t,r,i){return p?Ve(2,1,e,t,r,i):ht(e,t,r,i)}var ht=(e,t,r,i)=>{if("undefined"==typeof SharedArrayBuffer)return U("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var n=[];if(p&&0===n.length)return ut(e,t,r,i);var s={startRoutine:r,pthread_ptr:e,arg:i,transferList:n};return p?(s.cmd="spawnThread",postMessage(s,n),0):_e(s)},ft=e=>(P[Qi()>>2]=e,e);function pt(e,t,r){if(p)return Ve(3,1,e,t,r);Ge.varargs=r;try{var i=Ge.getStreamFromFD(e);switch(t){case 0:if((n=Ge.get())<0)return-28;for(;$e.streams[n];)n++;return $e.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=Ge.get();return i.flags|=n,0;case 5:return n=Ge.getp(),C[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ft(28),-1}}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return-e.errno}}function mt(e,t,r,i){if(p)return Ve(4,1,e,t,r,i);Ge.varargs=i;try{t=Ge.getStr(t),t=Ge.calculateAt(e,t);var n=i?Ge.get():0;return $e.open(t,r,n).fd}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return-e.errno}}var _t,gt,yt,vt=(e,t,r,i,n)=>{},bt=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);_t=e},wt=e=>{for(var t="",r=e;T[r];)t+=_t[T[r++]];return t},St={},Et={},At={},xt=e=>{throw new gt(e)},Ut=e=>{throw new yt(e)},kt=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ut("Mismatched type converter count");for(var n=0;n{Et.hasOwnProperty(e)?n[t]=Et[e]:(s.push(e),St.hasOwnProperty(e)||(St[e]=[]),St[e].push((()=>{n[t]=Et[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function Bt(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||xt(`type "${i}" must have a positive integer typeid pointer`),Et.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;xt(`Cannot register type '${i}' twice`)}if(Et[e]=t,delete At[e],St.hasOwnProperty(e)){var n=St[e];delete St[e],n.forEach((e=>e()))}}function Tt(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Bt(e,t,r)}var Ct,Dt=8,Pt=(e,t,r,i)=>{Tt(e,{name:t=wt(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Dt,readValueFromPointer:function(e){return this.fromWireType(T[e])},destructorFunction:null})},Lt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Ft=e=>{xt(e.$$.ptrType.registeredClass.name+" instance already deleted")},It=!1,Mt=e=>{},Rt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},zt=e=>{e.count.value-=1,0===e.count.value&&Rt(e)},Nt=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=Nt(e,t,r.baseClass);return null===i?null:r.downcast(i)},$t={},Ot=()=>Object.keys(qt).length,Gt=()=>{var e=[];for(var t in qt)qt.hasOwnProperty(t)&&e.push(qt[t]);return e},Ht=[],Wt=()=>{for(;Ht.length;){var e=Ht.pop();e.$$.deleteScheduled=!1,e.delete()}},Vt=e=>{Ct=e,Ht.length&&Ct&&Ct(Wt)},jt=()=>{n.getInheritedInstanceCount=Ot,n.getLiveInheritedInstances=Gt,n.flushPendingDeletes=Wt,n.setDelayFunction=Vt},qt={},Yt=(e,t)=>{for(void 0===t&&xt("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Kt=(e,t)=>(t=Yt(e,t),qt[t]),Xt=(e,t)=>(t.ptrType&&t.ptr||Ut("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ut("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Jt(Object.create(e,{$$:{value:t}})));function Zt(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Kt(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?Xt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Xt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,o=this.registeredClass.getActualType(t),a=$t[o];if(!a)return n.call(this);s=this.isConst?a.constPointerType:a.pointerType;var d=Nt(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?Xt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):Xt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var Jt=e=>"undefined"==typeof FinalizationRegistry?(Jt=e=>e,e):(It=new FinalizationRegistry((e=>{zt(e.$$)})),Jt=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};It.register(e,r,e)}return e},Mt=e=>It.unregister(e),Jt(e)),Qt=()=>{Object.assign(er.prototype,{isAliasOf(e){if(!(this instanceof er))return!1;if(!(e instanceof er))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||Ft(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Jt(Object.create(Object.getPrototypeOf(this),{$$:{value:Lt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Ft(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&xt("Object already scheduled for deletion"),Mt(this),zt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Ft(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&xt("Object already scheduled for deletion"),Ht.push(this),1===Ht.length&&Ct&&Ct(Wt),this.$$.deleteScheduled=!0,this}})};function er(){}var tr=(e,t)=>Object.defineProperty(t,"name",{value:e}),rr=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||xt(`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}},ir=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&xt(`Cannot register public name '${e}' twice`),rr(n,e,e),n.hasOwnProperty(r)&&xt(`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))},nr=48,sr=57,or=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=nr&&t<=sr?`_${e}`:e};function ar(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=[]}var dr=(e,t,r)=>{for(;t!==r;)t.upcast||xt(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function lr(e,t){if(null===t)return this.isReference&&xt(`null is not a valid ${this.name}`),0;t.$$||xt(`Cannot pass "${Or(t)}" as a ${this.name}`),t.$$.ptr||xt(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return dr(t.$$.ptr,r,this.registeredClass)}function cr(e,t){var r;if(null===t)return this.isReference&&xt(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||xt(`Cannot pass "${Or(t)}" as a ${this.name}`),t.$$.ptr||xt(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&xt(`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=dr(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&xt("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:xt(`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,zr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:xt("Unsupporting sharing policy")}return r}function ur(e,t){if(null===t)return this.isReference&&xt(`null is not a valid ${this.name}`),0;t.$$||xt(`Cannot pass "${Or(t)}" as a ${this.name}`),t.$$.ptr||xt(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&xt(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return dr(t.$$.ptr,r,this.registeredClass)}function hr(e){return this.fromWireType(L[e>>2])}var fr=()=>{Object.assign(pr.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Dt,readValueFromPointer:hr,deleteObject(e){null!==e&&e.delete()},fromWireType:Zt})};function pr(e,t,r,i,n,s,o,a,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=cr:i?(this.toWireType=lr,this.destructorFunction=null):(this.toWireType=ur,this.destructorFunction=null)}var mr,_r=(e,t,r)=>{n.hasOwnProperty(e)||Ut("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},gr=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},yr=(e,t,r)=>e.includes("j")?gr(e,t,r):rt(t).apply(null,r),vr=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),yr(e,t,r)}},br=(e,t)=>{var r=(e=wt(e)).includes("j")?vr(e,t):rt(t);return"function"!=typeof r&&xt(`unknown function pointer with signature ${e}: ${t}`),r},wr=(e,t)=>{var r=tr(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},Sr=e=>{var t=en(e),r=wt(t);return Xi(t),r},Er=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Et[t]||(At[t]?At[t].forEach(e):(r.push(t),i[t]=!0))})),new mr(`${e}: `+r.map(Sr).join([", "]))},Ar=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=wt(c),s=br(n,s),a&&(a=br(o,a)),l&&(l=br(d,l)),h=br(u,h);var f=or(c);ir(f,(function(){Er(`Cannot construct ${c} due to unbound types`,[i])})),kt([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:er.prototype;var o=tr(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new gt("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new gt(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new gt(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new ar(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new pr(c,u,!0,!1,!1),m=new pr(c+"*",u,!1,!1,!1),_=new pr(c+" const*",u,!1,!0,!1);return $t[e]={pointerType:m,constPointerType:_},_r(f,o),[p,m,_]}))},xr=(e,t)=>{for(var r=[],i=0;i>2]);return r},Ur=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function kr(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=tr(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Br(e,t,r,i,n,s){var o=t.length;o<2&&xt("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=xr(t,r);n=br(i,n),kt([],[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 gt(`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]=()=>{Er(`Cannot construct ${e.name} due to unbound types`,o)},kt([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Br(r,i,null,n,s),[]))),[]}))},Cr=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Dr=(e,t,r,i,n,s,o,a,d)=>{var l=xr(r,i);t=wt(t),t=Cr(t),s=br(n,s),kt([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Er(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(rr(c,t,i),c[t].overloadTable[r-2]=n),kt([],l,(function(n){var a=Br(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Pr(){Object.assign(Lr.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)}})}function Lr(){this.allocated=[void 0],this.freelist=[]}var Fr=new Lr,Ir=e=>{e>=Fr.reserved&&0==--Fr.get(e).refcount&&Fr.free(e)},Mr=()=>{for(var e=0,t=Fr.reserved;t{Fr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Fr.reserved=Fr.allocated.length,n.count_emval_handles=Mr},zr={toValue:e=>(e||xt("Cannot use deleted val. handle = "+e),Fr.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 Fr.allocate({refcount:1,value:e})}}};function Nr(e){return this.fromWireType(P[e>>2])}var $r=(e,t)=>{Tt(e,{name:t=wt(t),fromWireType:e=>{var t=zr.toValue(e);return Ir(e),t},toWireType:(e,t)=>zr.toHandle(t),argPackAdvance:Dt,readValueFromPointer:Nr,destructorFunction:null})},Or=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},Gr=(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}`)}},Hr=(e,t,r)=>{Tt(e,{name:t=wt(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Dt,readValueFromPointer:Gr(t,r),destructorFunction:null})},Wr=(e,t,r)=>{switch(t){case 1:return r?e=>B[e>>0]:e=>T[e>>0];case 2:return r?e=>C[e>>1]:e=>D[e>>1];case 4:return r?e=>P[e>>2]:e=>L[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},Vr=(e,t,r,i,n)=>{t=wt(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");Tt(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Dt,readValueFromPointer:Wr(t,r,0!==i),destructorFunction:null})},jr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=L[e>>2],r=L[e+4>>2];return new i(B.buffer,r,t)}Tt(e,{name:r=wt(r),fromWireType:n,argPackAdvance:Dt,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},qr=(e,t,r)=>ke(e,T,t,r),Yr=(e,t)=>{var r="std::string"===(t=wt(t));Tt(e,{name:t,fromWireType(e){var t,i=L[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==T[a]){var d=Oe(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)qr(t,o,i+1);else if(n)for(var a=0;a255&&(Xi(o),xt("String has UTF-16 code units that do not fit in 8 bits")),T[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&D[i];)++i;if((r=i<<1)-e>32&&Kr)return Kr.decode(T.slice(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=C[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s},Zr=(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 C[t>>1]=0,t-i},Jr=e=>2*e.length,Qr=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=P[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},ei=(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)),P[t>>2]=o,(t+=4)+4>n)break}return P[t>>2]=0,t-i},ti=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},ri=(e,t,r)=>{var i,n,s,o,a;r=wt(r),2===t?(i=Xr,n=Zr,o=Jr,s=()=>D,a=1):4===t&&(i=Qr,n=ei,o=ti,s=()=>L,a=2),Tt(e,{name:r,fromWireType:e=>{for(var r,n=L[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return Xi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&xt(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=Zi(4+s+t);return L[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(Xi,d),d},argPackAdvance:Dt,readValueFromPointer:Nr,destructorFunction(e){Xi(e)}})},ii=(e,t)=>{Tt(e,{isVoid:!0,name:t=wt(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},ni=()=>{if(!ye())try{p?on(k):Ye(k)}catch(e){Ke(e)}},si=e=>{if(!M)try{e(),ni()}catch(e){Ke(e)}},oi=e=>{if("function"==typeof Atomics.waitAsync){Atomics.waitAsync(P,e>>2,e).value.then(ai);var t=e+128;Atomics.store(P,t>>2,1)}};n.__emscripten_thread_mailbox_await=oi;var ai=()=>{var e=Ji();e&&(oi(e),si(an))};n.checkMailbox=ai;var di,li=(e,t,r)=>{if(e==t)setTimeout((()=>ai()));else if(p)postMessage({targetThread:e,cmd:"checkMailbox"});else{var i=Xe.pthreads[e];if(!i)return;i.postMessage({cmd:"checkMailbox"})}},ci=[],ui=(e,t,r,i)=>{ci.length=r;for(var n=i>>3,s=0;s{f&&Xe.pthreads[e].ref()},fi={},pi=e=>{var t=fi[e];return void 0===t?wt(e):t},mi=[],_i=(e,t,r,i,n)=>(e=mi[e])(t=zr.toValue(t),t[r=pi(r)],i,n),gi=e=>{var t=mi.length;return mi.push(e),t},yi=(e,t)=>{var r=Et[e];return void 0===r&&xt(t+" has unknown type "+Sr(e)),r},vi=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},bi=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(L[t>>2]=zr.toHandle(i)),n},wi=(e,t,r)=>{var i=vi(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",o=0,a=[];0===r&&a.push("obj");for(var d=["retType"],l=[n],c=0;ce.name)).join(", ")}) => ${n.name}>`;return gi(tr(h,u))},Si=e=>{var t=zr.toValue(e);Ur(t),Ir(e)},Ei=()=>{Q("")},Ai=()=>{},xi=()=>Date.now(),Ui=()=>{ge+=1},ki=()=>{throw Ui(),"unwind"};di=()=>performance.timeOrigin+performance.now();var Bi=()=>f?g("os").cpus().length:navigator.hardwareConcurrency,Ti=e=>{Q("OOM")},Ci=e=>{T.length,Ti()},Di={},Pi=()=>l||"./this.program",Li=()=>{if(!Li.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",_:Pi()};for(var t in Di)void 0===Di[t]?delete e[t]:e[t]=Di[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Li.strings=r}return Li.strings},Fi=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);B[t>>0]=0},Ii=function(e,t){if(p)return Ve(5,1,e,t);var r=0;return Li().forEach(((i,n)=>{var s=t+r;L[e+4*n>>2]=s,Fi(i,s),r+=i.length+1})),0},Mi=function(e,t){if(p)return Ve(6,1,e,t);var r=Li();L[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),L[t>>2]=i,0};function Ri(e){if(p)return Ve(7,1,e);try{var t=Ge.getStreamFromFD(e);return $e.close(t),0}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return e.errno}}function zi(e,t){if(p)return Ve(8,1,e,t);try{var r=Ge.getStreamFromFD(e),i=r.tty?2:$e.isDir(r.mode)?3:$e.isLink(r.mode)?7:4;return B[t>>0]=i,C[t+2>>1]=0,re=[0,(te=0,+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[t+8>>2]=re[0],P[t+12>>2]=re[1],re=[0,(te=0,+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[t+16>>2]=re[0],P[t+20>>2]=re[1],0}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return e.errno}}var Ni=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=L[t+4>>2];t+=8;var d=$e.read(e,B,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return e.errno}}function Oi(e,t,r,i,n){if(p)return Ve(10,1,e,t,r,i,n);var s=We(t,r);try{if(isNaN(s))return 61;var o=Ge.getStreamFromFD(e);return $e.llseek(o,s,i),re=[o.position>>>0,(te=o.position,+Math.abs(te)>=1?te>0?+Math.floor(te/4294967296)>>>0:~~+Math.ceil((te-+(~~te>>>0))/4294967296)>>>0:0)],P[n>>2]=re[0],P[n+4>>2]=re[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return e.errno}}var Gi=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=L[t+4>>2];t+=8;var d=$e.write(e,B,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Hi(e,t,r,i){if(p)return Ve(11,1,e,t,r,i);try{var n=Ge.getStreamFromFD(e),s=Gi(n,t,r);return L[i>>2]=s,0}catch(e){if(void 0===$e||"ErrnoError"!==e.name)throw e;return e.errno}}Xe.init();var Wi=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=$e.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Vi=365,ji=146;Object.defineProperties(Wi.prototype,{read:{get:function(){return(this.mode&Vi)===Vi},set:function(e){e?this.mode|=Vi:this.mode&=~Vi}},write:{get:function(){return(this.mode&ji)===ji},set:function(e){e?this.mode|=ji:this.mode&=~ji}},isFolder:{get:function(){return $e.isDir(this.mode)}},isDevice:{get:function(){return $e.isChrdev(this.mode)}}}),$e.FSNode=Wi,$e.createPreloadedFile=Re,$e.staticInit(),bt(),gt=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},yt=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Qt(),jt(),fr(),mr=n.UnboundTypeError=wr(Error,"UnboundTypeError"),Pr(),Rr();var qi=[je,Qe,ut,pt,mt,Ii,Mi,Ri,zi,$i,Oi,Hi],Yi={f:ot,s:dt,E:lt,m:ct,z:ht,N:pt,B:mt,u:vt,P:Pt,M:Ar,D:Tr,j:Dr,O:$r,p:Hr,d:Vr,c:jr,q:Yr,l:ri,Q:ii,w:li,A:ui,C:oi,J:hi,i:_i,r:Ir,h:wi,g:Si,b:Ei,n:Ai,k:xi,I:ki,e:di,x:Bi,v:Ci,G:Ii,H:Mi,y:Ye,o:Ri,F:zi,L:$i,t:Oi,K:Hi,a:E||n.wasmMemory},Ki=ce(),Xi=e=>(Xi=Ki.S)(e),Zi=e=>(Zi=Ki.T)(e),Ji=n._pthread_self=()=>(Ji=n._pthread_self=Ki.U)(),Qi=()=>(Qi=Ki.V)();n.__emscripten_tls_init=()=>(n.__emscripten_tls_init=Ki.W)();var en=e=>(en=Ki.X)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=Ki.Y)();var tn=n.__emscripten_thread_init=(e,t,r,i,s,o)=>(tn=n.__emscripten_thread_init=Ki._)(e,t,r,i,s,o);n.__emscripten_thread_crashed=()=>(n.__emscripten_thread_crashed=Ki.$)();var rn,nn=(e,t,r,i)=>(nn=Ki.aa)(e,t,r,i),sn=e=>(sn=Ki.ba)(e),on=n.__emscripten_thread_exit=e=>(on=n.__emscripten_thread_exit=Ki.ca)(e),an=()=>(an=Ki.da)(),dn=(e,t)=>(dn=Ki.ea)(e,t),ln=()=>(ln=Ki.fa)(),cn=e=>(cn=Ki.ga)(e),un=e=>(un=Ki.ha)(e),hn=e=>(hn=Ki.ia)(e);function fn(){if(!(K>0)){if(p)return t(n),W(),void startWorker(n);H(),K>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e())}function e(){rn||(rn=!0,n.calledRun=!0,M||(W(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),V()))}}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=Ki.ja)(e,t,r,i,s),n._ff_h264_cabac_tables=98885,n.wasmMemory=E,n.keepRuntimeAlive=ye,n.ExitStatus=ue,n.PThread=Xe,X=function e(){rn||fn(),rn||(X=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return fn(),e.ready}),o=(()=>{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 async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};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-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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-mt.js",document.baseURI).href)),s=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(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,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,x,U,k,B,T,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=x=new Uint16Array(e),n.HEAP32=U=new Int32Array(e),n.HEAPU32=k=new Uint32Array(e),n.HEAPF32=B=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var L=[],F=[],I=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(L)}function R(){n.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,ne(F)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(I)}function N(e){L.unshift(e)}function $(e){F.unshift(e)}function O(e){I.unshift(e)}var G=0,H=null;function W(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function V(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ni};function t(e,t){return si=e.exports,v=si.E,P(),Lt=si.H,$(si.F),V(),si}if(W(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){k[this.ptr+4>>2]=e},this.get_type=function(){return k[this.ptr+4>>2]},this.set_destructor=function(e){k[this.ptr+8>>2]=e},this.get_destructor=function(){return k[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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){k[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return k[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ci(this.get_type()))return k[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var oe=(e,t,r)=>{throw new se(e).init(t,r),e},ae=e=>(U[ai()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var s=0,o=0;oye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var n=Te.createNode(e,t,r,i);return Te.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):Te.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):Te.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):Te.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=Te.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,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Te.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{D(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&&W()},Ee=(e,t,r,i,n,s)=>{Te.createDataFile(e,t,r,i,n,s)},Ae=n.preloadPlugins||[],xe=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},Ue=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Ee(e,t,r,i,n,d),s&&s(),V()}xe(r,c,u,(()=>{o&&o(),V()}))||u(r)}W(),"string"==typeof r?Se(r,(e=>u(e)),o):u(r)},ke=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},Be=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,n="/",s=0;s40)throw new Te.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(Te.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)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),n=Te.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Te.lookup(e,t)},createNode(e,t,r,i){var n=new Te.FSNode(e,t,r,i);return Te.hashAddNode(n),n},destroyNode(e){Te.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.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=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{Te.lookupNode(e,t);return 20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var n=Te.nodePermissions(e,"wx");if(n)return n;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.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),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function n(e){return Te.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&&Te.root)throw new Te.ErrnoError(10);if(!n&&!s){var o=Te.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Te.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,n=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Te.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=Te.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new Te.ErrnoError(28);var s=Te.mayCreate(i,n);if(s)throw new Te.ErrnoError(s);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.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,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),n=Te.mayCreate(r,i);if(n)throw new Te.ErrnoError(n);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),o=de.basename(e),a=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,o),c=ue.relative(e,s);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,a)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,o,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,a,u):Te.mayCreate(i,a))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!0);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!1);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=Te.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=Te.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new Te.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;"string"==typeof e?r=Te.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?ke(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),s=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!s){var o=Te.mayOpen(i,t);if(o)throw new Te.ErrnoError(o)}512&t&&!s&&Te.truncate(i,0),t&=-131713;var a=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),a},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Te.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(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Te.open(e,t.flags),n=Te.stat(e).size,s=new Uint8Array(n);return Te.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);Te.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?Te.createDevice("/dev","stdin",n.stdin):Te.symlink("/dev/tty","/dev/stdin"),n.stdout?Te.createDevice("/dev","stdout",null,n.stdout):Te.symlink("/dev/tty","/dev/stdout"),n.stderr?Te.createDevice("/dev","stderr",null,n.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=Te.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 c(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 Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(Te.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{Te.forceLoadFile(d);var s=be();if(!s)throw new Te.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=Te.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}U[r>>2]=i.dev,U[r+4>>2]=i.mode,k[r+8>>2]=i.nlink,U[r+12>>2]=i.uid,U[r+16>>2]=i.gid,U[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+24>>2]=K[0],U[r+28>>2]=K[1],U[r+32>>2]=4096,U[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+40>>2]=K[0],U[r+44>>2]=K[1],k[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+56>>2]=K[0],U[r+60>>2]=K[1],k[r+64>>2]=s%1e3*1e3,K=[Math.floor(o/1e3)>>>0,(Y=Math.floor(o/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+72>>2]=K[0],U[r+76>>2]=K[1],k[r+80>>2]=o%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[r+88>>2]=K[0],U[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);Te.msync(t,s,n,r,i)},varargs:void 0,get(){var e=U[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;Te.streams[n];)n++;return Te.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ae(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Le(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return Te.open(t,r,n).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Fe,Ie,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Fe=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Fe[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Ie(e)},We=e=>{throw new Me(e)},Ve=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&We("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},nt={},st=()=>Object.keys(ut).length,ot=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},at=[],dt=()=>{for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,at.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=ot,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||We("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&We("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(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?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))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||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),at.push(this),1===at.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(n,e,e),n.hasOwnProperty(r)&&He(`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))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function xt(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=[]}var Ut=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function kt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function Bt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=Ut(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,sr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ut(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(k[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,o,a,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=Bt:i?(this.toWireType=kt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Lt,Ft,It=(e,t,r)=>{n.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Lt.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=Ne(t);return oi(t),r},Wt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new Ft(`${e}: `+r.map(Ht).join([", "]))},Vt=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),a&&(a=Ot(o,a)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=At(c);wt(f,(function(){Wt(`Cannot construct ${c} due to unbound types`,[i])})),Ve([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var o=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new xt(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},It(f,o),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var o=t.length;o<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=jt(t,r);n=Ot(i,n),Ve([],[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 Ie(`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]=()=>{Wt(`Cannot construct ${e.name} due to unbound types`,o)},Ve([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,n,s,o,a,d)=>{var l=jt(r,i);t=Ne(t),t=Zt(t),s=Ot(n,s),Ve([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Wt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(bt(c,t,i),c[t].overloadTable[r-2]=n),Ve([],l,(function(n){var a=Kt(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,n.count_emval_handles=ir},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function or(e){return this.fromWireType(U[e>>2])}var ar=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=sr.toValue(e);return rr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:or,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(B[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>x[e>>1];case 4:return r?e=>U[e>>2]:e=>k[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=k[e>>2],r=k[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=k[e>>2],n=e+4;if(r)for(var s=n,o=0;o<=i;++o){var a=n+o;if(o==i||0==E[a]){var d=Ce(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)pr(t,o,i+1);else if(n)for(var a=0;a255&&(oi(o),He("String has UTF-16 code units that do not fit in 8 bits")),E[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&x[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(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},wr=(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(U[t>>2]=o,(t+=4)+4>n)break}return U[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,n,s,o,a;r=Ne(r),2===t?(i=gr,n=yr,o=vr,s=()=>x,a=1):4===t&&(i=br,n=wr,o=Sr,s=()=>k,a=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=k[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return oi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=li(4+s+t);return k[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(oi,d),d},argPackAdvance:Ke,readValueFromPointer:or,destructorFunction(e){oi(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},xr={},Ur=e=>{var t=xr[e];return void 0===t?Ne(e):t},kr=[],Br=(e,t,r,i,n)=>(e=kr[e])(t=sr.toValue(t),t[r=Ur(r)],i,n),Tr=e=>{var t=kr.length;return kr.push(e),t},Cr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Pr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(k[t>>2]=sr.toHandle(i)),n},Lr=(e,t,r)=>{var i=Dr(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",o=0,a=[];0===r&&a.push("obj");for(var d=["retType"],l=[n],c=0;ce.name)).join(", ")}) => ${n.name}>`;return Tr(vt(h,u))},Fr=e=>{var t=sr.toValue(e);qt(t),rr(e)},Ir=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),Nr=e=>{j("OOM")},$r=e=>{E.length,Nr()},Or={},Gr=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:Gr()};for(var t in Or)void 0===Or[t]?delete e[t]:e[t]=Or[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Wr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Vr=(e,t)=>{var r=0;return Hr().forEach(((i,n)=>{var s=t+r;k[e+4*n>>2]=s,Wr(i,s),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();k[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),k[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+8>>2]=K[0],U[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[t+16>>2]=K[0],U[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=k[t+4>>2];t+=8;var d=Te.read(e,S,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,n){var s=Ir(t,r);try{if(isNaN(s))return 61;var o=De.getStreamFromFD(e);return Te.llseek(o,s,i),K=[o.position>>>0,(Y=o.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],U[n>>2]=K[0],U[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=k[t+4>>2];t+=8;var d=Te.write(e,S,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Qr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Jr(n,t,r);return k[i>>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=ei,Te.createPreloadedFile=Ue,Te.staticInit(),ze(),Ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Ft=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Qt(),nr();var ii,ni={o:oe,A:Pe,s:Le,q:Re,C:Xe,D:Vt,y:Xt,h:Jt,B:ar,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:Br,g:rr,e:Lr,d:Fr,a:Mr,i:Rr,w:zr,r:$r,u:Vr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},si=ie(),oi=e=>(oi=si.G)(e),ai=()=>(ai=si.I)(),di=e=>(di=si.J)(e),li=e=>(li=si.K)(e),ci=e=>(ci=si.M)(e);function ui(){function e(){ii||(ii=!0,n.calledRun=!0,C||(R(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,o,a,d)=>(n.dynCall_viiijj=si.N)(e,t,r,i,s,o,a,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=si.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=si.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=si.Q)(e,t,r,i,s),H=function e(){ii||ui(),ii||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ui(),t.ready}})(),a=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=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 c(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 u,h=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 f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(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 i={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")}},n=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}}(),s=p(),o=p(),d=p(),u=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 s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,o,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const jt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],qt=jt,Yt=jt;function Kt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Xt(e){return Zt(e)&&e[1]===Tt}function Zt(e){return e[0]>>4===Ge}const Jt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Qt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,o=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Jt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let a=Jt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(o=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Gt.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),o=s-3):(i=2,r=new Array(2),o=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),o=s):(i=5,o=s,r=new Array(4),s>=6?o=s-3:1===d&&(i=2,r=new Array(2),o=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&o)>>>1,r[2]=(1&o)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:a,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class er{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],o=(192&e[r+2])>>>6,a=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=o+1,t.sampling_freq_index=a,t.sampling_frequency=qt[a],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class tr{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Vt(t.subarray(i+3,i+3+n)),o=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}o=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let a=s.readBits(3);if(0!==a){console.error(`frameLengthType = ${a}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),o={},o.audio_object_type=r,o.sampling_freq_index=i,o.sampling_frequency=qt[o.sampling_freq_index],o.channel_config=n,o.other_data_present=d}let a=0;for(;;){let e=s.readByte();if(a+=e,255!==e)break}let d=new Uint8Array(a);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function ir(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 nr(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++;return{payload:e.subarray(i),type:n,size:s,uuid:o}}function sr(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 or(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 ar(){return(new Date).getTime()}function dr(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function lr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function cr(e){let t=0,r=lr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=lr(),o=s-r;o>=1e3&&(e(t/o*1e3),r=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){}})();function ur(e){return null==e}function hr(e){return!ur(e)}function fr(e){return"function"==typeof e}function pr(e){let t=null,r=31&e[0];return r!==je&&r!==qe||(t=$e),t||(r=(126&e[0])>>1,r!==at&&r!==lt&&r!==ut||(t=Oe)),t}function mr(){return"undefined"!=typeof WritableStream}function _r(e){e.close()}function gr(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 yr(e){return e.ok&&e.status>=200&&e.status<=299}function vr(){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}(k)}function br(e){return e[0]>>4===Ct&&e[1]===Tt}function wr(e){return!0===e||"true"===e}function Sr(e){return!0!==e&&"true"!==e}function Er(){return!!(Gt.Worker&&Gt.MediaSource&&"canConstructInDedicatedWorker"in Gt.MediaSource&&!0===Gt.MediaSource.canConstructInDedicatedWorker)}function Ar(e,t){const r=ir(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===tt||r===it||r===st)||Sr(t)&&r===Ye)&&(i=!0)})),i}var xr=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 Ur=Symbol(32),kr=Symbol(16),Br=Symbol(8);class Tr{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 xr(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(Ur)}readU16(){return this.read(kr)}readU8(){return this.read(Br)}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===Ur){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===kr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Br){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}}Tr.U32=Ur,Tr.U16=kr,Tr.U8=Br;class Cr{constructor(e){this.log=function(t){if(e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=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=Dr._ebsp2rbsp(e),r=new Vt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Dr.getProfileString(i),o=Dr.getLevelString(n),a=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,x=2*e,S=A/x}}let U=1;1===b&&1===w||(U=b/w);let k=0,B=0;if(0===a)k=1,B=2-m;else{k=3===a?1:2,B=(1===a?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*k,C-=(y+v)*B;let D=Math.ceil(T*U);return r.destroy(),r=null,{profile_string:s,level_string:o,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Dr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:x,fps_num:A},sar_ratio:{width:b,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=Dr._ebsp2rbsp(e),n=new Vt(i);n.readByte();let s=n.readByte();n.readByte();let o=n.readByte();n.readUEG();let a=Dr.getProfileString(s),d=Dr.getLevelString(o),l=1,c=420,u=[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&&(c=u[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=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=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);U=n.readBool(),k=t,B=2*e,x=k/B}}let T=1;1===E&&1===A||(T=E/A);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 P=16*(_+1),L=16*(g+1)*(2-y);P-=(v+b)*C,L-=(w+S)*D;let F=Math.ceil(P*T);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:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Dr.getChromaFormatString(c),frame_rate:{fixed:U,fps:x,fps_den:B,fps_num:k},sar_ratio:{width:E,height:A},codec_size:{width:P,height:L},present_size:{width:F,height:L}}}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 Fr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Ir(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Dr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let o=new Uint8Array(i);o[0]=1,o[1]=t[1],o[2]=t[2],o[3]=t[3],o[4]=255,o[5]=225;let a=t.byteLength;o[6]=a>>>8,o[7]=255&a;let d=8;o.set(t,8),d+=a,o[d]=1;let l=r.byteLength;o[d+1]=l>>>8,o[d+2]=255&l,o.set(r,d+3),d+=3+l,n&&(o[d]=252|s.chroma_format_idc,o[d+1]=248|s.bit_depth_luma-8,o[d+2]=248|s.bit_depth_chroma-8,o[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+o.byteLength);return u.set(c,0),u.set(o,c.length),u}function Mr(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}function Rr(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 zr(e){return 31&e[0]}function Nr(e){return e===Ze}function $r(e){return!function(e){return e===je||e===qe}(e)&&!Nr(e)}function Or(e){return e===Ye}function Gr(e){if(0===e.length)return!1;const t=zr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=et||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Wr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Vr=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)},jr=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"}};class qr{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 parseVPS(e){let t=qr._ebsp2rbsp(e),r=new Vt(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()}}static parseSPS(e){let t=qr._ebsp2rbsp(e),r=new Vt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=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&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&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();M=n;let s=!0,o=1;n||(s=r.readBool());let a=!1;if(s?r.readUEG():a=r.readBool(),a||(o=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Vr(e),r=new Vt(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()}})(t),o=(e=>{let t=Vr(e),r=new Vt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),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()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(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();M=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=Vr(e),r=new Vt(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}})(r);n=Object.assign(n,s,o,a);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|at,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|lt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|ut,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Jr(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}function Qr(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 ei(e){return(126&e[0])>>1}function ti(e){return e===ft}function ri(e){return!function(e){return e>=32&&e<=40}(e)}function ii(e){return e>=16&&e<=21}function ni(e){if(0===e.length)return!1;const t=ei(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class oi{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ai(e){return parseInt(e)===e}function di(e){if(!ai(e.length))return!1;for(var t=0;t255)return!1;return!0}function li(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(!di(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ai(e.length)&&di(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function ci(e){return new Uint8Array(e)}function ui(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 hi,fi={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("")}},pi=(hi="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+hi[15&i])}return t.join("")}}),mi={16:10,24:12,32:14},_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ei=[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],Ai=[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],xi=[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],Ui=[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],ki=[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],Bi=[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],Ti=[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],Ci=[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 Di(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^gi[o>>8&255]<<16^gi[255&o]<<8^gi[o>>24&255]^_i[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^gi[o>>16&255]<<16^gi[o>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Bi[o>>16&255]^Ti[o>>8&255]^Ci[255&o]},Pi.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=Di(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^bi[i[(n+1)%4]>>16&255]^wi[i[(n+2)%4]>>8&255]^Si[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var o,a=ci(16);for(n=0;n<4;n++)o=this._Ke[t][n],a[4*n]=255&(gi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(gi[i[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(gi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(gi[255&i[(n+3)%4]]^o);return a},Pi.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=Di(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^Ai[i[(n+3)%4]>>16&255]^xi[i[(n+2)%4]>>8&255]^Ui[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var o,a=ci(16);for(n=0;n<4;n++)o=this._Kd[t][n],a[4*n]=255&(yi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(yi[i[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(yi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(yi[255&i[(n+1)%4]]^o);return a};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 Pi(e)};Li.prototype.encrypt=function(e){if((e=li(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=ci(e.length),r=ci(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)},Ri.prototype.setBytes=function(e){if(16!=(e=li(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ri.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var zi=function(e,t){if(!(this instanceof zi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ri||(t=new Ri(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Pi(e)};zi.prototype.encrypt=function(e){for(var t=li(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=o<<24-(i+s)%4*8}else for(var a=0;a>>2]=r[a>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=a.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,o=this.blockSize,a=s/(4*o),d=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,o=0;o>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,a=0;a<4&&s+.75*a>>6*(3-a)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,d=0;d<4&&o+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var o=0;o>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,o=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],x=e[t+14],U=e[t+15],k=s[0],B=s[1],T=s[2],C=s[3];k=l(k,B,T,C,o,7,a[0]),C=l(C,k,B,T,d,12,a[1]),T=l(T,C,k,B,f,17,a[2]),B=l(B,T,C,k,p,22,a[3]),k=l(k,B,T,C,m,7,a[4]),C=l(C,k,B,T,_,12,a[5]),T=l(T,C,k,B,g,17,a[6]),B=l(B,T,C,k,y,22,a[7]),k=l(k,B,T,C,v,7,a[8]),C=l(C,k,B,T,b,12,a[9]),T=l(T,C,k,B,w,17,a[10]),B=l(B,T,C,k,S,22,a[11]),k=l(k,B,T,C,E,7,a[12]),C=l(C,k,B,T,A,12,a[13]),T=l(T,C,k,B,x,17,a[14]),k=c(k,B=l(B,T,C,k,U,22,a[15]),T,C,d,5,a[16]),C=c(C,k,B,T,g,9,a[17]),T=c(T,C,k,B,S,14,a[18]),B=c(B,T,C,k,o,20,a[19]),k=c(k,B,T,C,_,5,a[20]),C=c(C,k,B,T,w,9,a[21]),T=c(T,C,k,B,U,14,a[22]),B=c(B,T,C,k,m,20,a[23]),k=c(k,B,T,C,b,5,a[24]),C=c(C,k,B,T,x,9,a[25]),T=c(T,C,k,B,p,14,a[26]),B=c(B,T,C,k,v,20,a[27]),k=c(k,B,T,C,A,5,a[28]),C=c(C,k,B,T,f,9,a[29]),T=c(T,C,k,B,y,14,a[30]),k=u(k,B=c(B,T,C,k,E,20,a[31]),T,C,_,4,a[32]),C=u(C,k,B,T,v,11,a[33]),T=u(T,C,k,B,S,16,a[34]),B=u(B,T,C,k,x,23,a[35]),k=u(k,B,T,C,d,4,a[36]),C=u(C,k,B,T,m,11,a[37]),T=u(T,C,k,B,y,16,a[38]),B=u(B,T,C,k,w,23,a[39]),k=u(k,B,T,C,A,4,a[40]),C=u(C,k,B,T,o,11,a[41]),T=u(T,C,k,B,p,16,a[42]),B=u(B,T,C,k,g,23,a[43]),k=u(k,B,T,C,b,4,a[44]),C=u(C,k,B,T,E,11,a[45]),T=u(T,C,k,B,U,16,a[46]),k=h(k,B=u(B,T,C,k,f,23,a[47]),T,C,o,6,a[48]),C=h(C,k,B,T,y,10,a[49]),T=h(T,C,k,B,x,15,a[50]),B=h(B,T,C,k,_,21,a[51]),k=h(k,B,T,C,E,6,a[52]),C=h(C,k,B,T,p,10,a[53]),T=h(T,C,k,B,w,15,a[54]),B=h(B,T,C,k,d,21,a[55]),k=h(k,B,T,C,v,6,a[56]),C=h(C,k,B,T,U,10,a[57]),T=h(T,C,k,B,g,15,a[58]),B=h(B,T,C,k,A,21,a[59]),k=h(k,B,T,C,m,6,a[60]),C=h(C,k,B,T,S,10,a[61]),T=h(T,C,k,B,f,15,a[62]),B=h(B,T,C,k,b,21,a[63]),s[0]=s[0]+k|0,s[1]=s[1]+B|0,s[2]=s[2]+T|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),o=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,d=a.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return a},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,o){var a=e+(t&r|~t&i)+n+o;return(a<>>32-s)+t}function c(e,t,r,i,n,s,o){var a=e+(t&i|r&~i)+n+o;return(a<>>32-s)+t}function u(e,t,r,i,n,s,o){var a=e+(t^r^i)+n+o;return(a<>>32-s)+t}function h(e,t,r,i,n,s,o){var a=e+(r^(t|~i))+n+o;return(a<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Wt((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=$i).lib,n=i.WordArray,s=i.Hasher,o=r.algo,a=[],d=o.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],d=r[4],l=0;l<80;l++){if(l<16)a[l]=0|e[t+l];else{var c=a[l-3]^a[l-8]^a[l-14]^a[l-16];a[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+a[l];u+=l<20?1518500249+(n&s|~n&o):l<40?1859775393+(n^s^o):l<60?(n&s|n&o|s&o)-1894007588:(n^s^o)-899497514,d=o,o=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Wt((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(a[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=o.SHA256=s.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&c^~a&u)+d[f]+l[f];h=u,u=c,c=a,a=o+b|0,o=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+a|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Wt((function(e,t){var r,i,n,s,o,a;e.exports=(i=(r=a=$i).lib.WordArray,n=r.algo,s=n.SHA256,o=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(o),r.HmacSHA224=s._createHmacHelper(o),a.SHA224)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,o=e.algo;function a(){return n.create.apply(n,arguments)}var d=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=a()}();var c=o.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=o.high,b=o.low,w=a.high,S=a.low,E=c.high,A=c.low,x=u.high,U=u.low,k=h.high,B=h.low,T=f,C=p,D=m,P=_,L=g,F=y,I=v,M=b,R=w,z=S,N=E,$=A,O=x,G=U,H=k,W=B,V=0;V<80;V++){var j,q,Y=l[V];if(V<16)q=Y.high=0|e[t+2*V],j=Y.low=0|e[t+2*V+1];else{var K=l[V-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[V-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[V-7],oe=se.high,ae=se.low,de=l[V-16],le=de.high,ce=de.low;q=(q=(q=J+oe+((j=Q+ae)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&O,fe=z&$^~z&G,pe=T&D^T&L^D&L,me=C&P^C&F^P&F,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[V],we=be.high,Se=be.low,Ee=H+ye+((ue=W+ve)>>>0>>0?1:0),Ae=ge+me;H=O,W=G,O=N,G=$,N=R,$=z,R=I+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,I=L,M=F,L=D,F=P,D=T,P=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

    >>0?1:0),y=s.low=y+F,s.high=g+L+(y>>>0>>0?1:0),b=a.low=b+M,a.high=v+I+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+N,c.high=E+$+(A>>>0>>0?1:0),x=u.low=x+G,u.high=U+O+(x>>>0>>0?1:0),T=h.low=T+W,h.high=B+H+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Ht((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=$i).x64,n=i.Word,s=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var o=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(T=r[n]).high^=a,T.low^=s}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(T=r[h+5*m]).high,p^=T.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(T=r[h+5*m]).high^=f,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var U=u[l[w]];U.high=f,U.low=p}var x=u[0],B=r[0];for(x.high=B.high,x.low=B.low,h=0;h<5;h++)for(m=0;m<5;m++){var T=r[w=h+5*m],k=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var P=c[o];T.high^=P.high,T.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,o)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,a,f,b,w,S,E,A,U,x,B,T=this._hash.words,k=u.words,C=h.words,D=o.words,P=d.words,L=l.words,F=c.words;for(S=s=T[0],E=a=T[1],A=f=T[2],U=b=T[3],x=w=T[4],r=0;r<80;r+=1)B=s+e[t+D[r]]|0,B+=r<16?p(a,f,b)+k[0]:r<32?m(a,f,b)+k[1]:r<48?_(a,f,b)+k[2]:r<64?g(a,f,b)+k[3]:y(a,f,b)+k[4],B=(B=v(B|=0,L[r]))+w|0,s=w,w=b,b=v(f,10),f=a,a=B,B=S+e[t+P[r]]|0,B+=r<16?y(E,A,U)+C[0]:r<32?g(E,A,U)+C[1]:r<48?_(E,A,U)+C[2]:r<64?m(E,A,U)+C[3]:p(E,A,U)+C[4],B=(B=v(B|=0,F[r]))+x|0,S=x,x=U,U=v(A,10),A=E,E=B;B=T[1]+f+U|0,T[1]=T[2]+b+x|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+a+A|0,T[0]=B},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,a=0;a<5;a++){var o=s[a];s[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Ht((function(e,t){var r,i,n;e.exports=(i=(r=$i).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),a=this._iKey=t.clone(),o=s.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),a=n.cfg;return m.create({ciphertext:s,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)a=l.create({keySize:t+r,hasher:n}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=s.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Ht((function(e,t){var r;e.exports=((r=$i).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,a=this._counter;s&&(a=this._counter=s.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[a/r|0]<<24),s[a]=s[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^n[d])&c[d])>>>0];this._lBlock=a,this._rBlock=s^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var a=n%r,o=t[a>>>2]>>>24-a%4*8&255;s=(s+i[n]+o)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var a=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][n],a+=e.sbox[3][s],a}function l(e,t,r){let i,s=t,a=r;for(let t=0;t1;--t)s^=e.pbox[t],a=d(e,s)^a,i=s,s=a,a=i;return i=s,s=a,a=i,a^=e.pbox[1],s^=e.pbox[0],{left:s,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)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=e.slice(s+4+2,s+4+a);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}return e}function Gi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Ht((function(e,t){e.exports=$i}));var Hi=Ht((function(e,t){var r,n,s,a=(r=new Date,n=4,s={setLogLevel:function(e){n=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>=n&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);a.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+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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 r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.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)),a.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,s)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,o=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?a.info:a.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(a.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' 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?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+n+" 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)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 r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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=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())}})),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(),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(", ")+")"})),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,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})),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),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()))})),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&s)<<8|e.readUint8():a.property_index=127&s}}})),h.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:a.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(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()})),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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)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=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){a.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){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.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),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(),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}})),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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 n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}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,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},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>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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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))},g.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&&(a.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),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.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)&&(a.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*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 s=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+s),{offset:s,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-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 u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),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 h["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}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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"),n=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-(n.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.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,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),x.cts=e.samples[t].dts+a.sample_offsets[S]):x.cts=x.dts,o?(t==o.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+U==t+1&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+U==t&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return a.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+")"),d.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===s)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,o),n.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Wi(e){return e.reduce(((e,t)=>256*e+t))}function Vi(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]))}Hi.Log,Hi.MP4BoxStream,Hi.DataStream,Hi.MultiBufferStream,Hi.MPEG4DescriptorParser,Hi.BoxParser,Hi.XMLSubtitlein4Parser,Hi.Textin4Parser,Hi.ISOFile,Hi.createFile;class ji{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],Vi(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}}function qi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Yi=16,Ki=[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 Zi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Qi(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}function en(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("")}function tn(e,t){const r=31&t;return e<>>32-r}function rn(e){return(255&Ki[e>>>24&255])<<24|(255&Ki[e>>>16&255])<<16|(255&Ki[e>>>8&255])<<8|255&Ki[255&e]}function nn(e){return e^tn(e,2)^tn(e,10)^tn(e,18)^tn(e,24)}function sn(e){return e^tn(e,13)^tn(e,23)}function an(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]^=nn(rn(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=nn(rn(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=nn(rn(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=nn(rn(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 on(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Xi[r+0],t[r+0]=i[0]^=sn(rn(e)),e=i[2]^i[3]^i[0]^Xi[r+1],t[r+1]=i[1]^=sn(rn(e)),e=i[3]^i[0]^i[1]^Xi[r+2],t[r+2]=i[2]^=sn(rn(e)),e=i[0]^i[1]^i[2]^Xi[r+3],t[r+3]=i[3]^=sn(rn(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function dn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=Zi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Zi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Qi(e):Zi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Yi-e.length%Yi;for(let r=0;r=Yi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),a=5;for(;an){const t=new Uint8Array(s.length+e.length-a);t.set(s,0),t.set(e.slice(a),s.length),s=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=dn(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(a+4,a+4+u),0);const o=nr(qi(n,new Uint8Array(r))),l=new Uint8Array(s.length+o.length);l.set(s,0),l.set(o,s.length),s=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(o,s.length),r.set(t,s.length+4),s=r}a=a+4+d}return s}const un={init:0,findFirstStartCode:1,findSecondStartCode:2};class hn extends class{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(){i.off(e,n);for(var s=arguments.length,a=new Array(s),o=0;o1?r-1:0),n=1;n{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=un.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findFirstStartCode}}}}function fn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)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=fn(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}return e}function _n(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class gn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{hr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class yn{static init(){yn.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 yn.types)yn.types.hasOwnProperty(e)&&(yn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=yn.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 yn.box(yn.types.trak,yn.tkhd(e),yn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return yn.box(yn.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 yn.box(yn.types.mdia,yn.mdhd(e),yn.hdlr(e),yn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return yn.box(yn.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?yn.constants.HDLR_AUDIO:yn.constants.HDLR_VIDEO,yn.box(yn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?yn.box(yn.types.smhd,yn.constants.SMHD):yn.box(yn.types.vmhd,yn.constants.VMHD),yn.box(yn.types.minf,t,yn.dinf(),yn.stbl(e))}static dinf(){return yn.box(yn.types.dinf,yn.box(yn.types.dref,yn.constants.DREF))}static stbl(e){return yn.box(yn.types.stbl,yn.stsd(e),yn.box(yn.types.stts,yn.constants.STTS),yn.box(yn.types.stsc,yn.constants.STSC),yn.box(yn.types.stsz,yn.constants.STSZ),yn.box(yn.types.stco,yn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp3(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp4a(e)):"avc"===e.videoType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.avc1(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.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 yn.box(yn.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 yn.box(yn.types.mp4a,i,yn.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 yn.box(yn.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 yn.box(yn.types.avc1,n,yn.box(yn.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 yn.box(yn.types.hvc1,n,yn.box(yn.types.hvcC,t))}static mvex(e){return yn.box(yn.types.mvex,yn.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 yn.box(yn.types.trex,r)}static moof(e,t){return yn.box(yn.types.moof,yn.mfhd(e.sequenceNumber),yn.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 yn.box(yn.types.mfhd,t)}static traf(e,t){let r=e.id,i=yn.box(yn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=yn.box(yn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=yn.sdtp(e),a=yn.trun(e,s.byteLength+16+16+8+16+8+8);return yn.box(yn.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,yn.box(yn.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),yn.box(yn.types.trun,r)}static mdat(e){return yn.box(yn.types.mdat,e)}}yn.init();var vn,bn=Ht((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(vn=bn)&&vn.__esModule&&Object.prototype.hasOwnProperty.call(vn,"default")&&vn.default;const wn=[44100,48e3,32e3,0],Sn=[22050,24e3,16e3,0],En=[11025,12e3,8e3,0],An=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Un=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],xn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function Bn(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=En[a];break;case 2:d=Sn[a];break;case 3:d=wn[a]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),a=n-3):(i=2,t=new Array(2),a=n):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=n):(i=5,a=n,t=new Array(4),n>=6?a=n-3:1===s&&(i=2,t=new Array(2),a=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Gn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Vn{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function jn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const qn=new Array(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),Yn=new Array(2746333894,1453994832,1736282519,2993693404),Kn=new Array(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 Xn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Jn(e,t){return t+3>>19)^(i<<23|i>>>9)}function ts(e,t){var r=new Array(36);r[0]=Jn(t,0),r[1]=Jn(t,4),r[2]=Jn(t,8),r[3]=Jn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^rs(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function is(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Qn(e),n=Math.ceil(r.length/16),s=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let a=5;for(;as)break;let d=e[a+4],l=!1,c=2;if(i?(n&&(c=3),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=is(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-1-2024" '+(wr(false)?"and is Trial Version[试用版本]":""));const ss=[];ss.push(a({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][worker]:",e)}}),s({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support, using thread emulation"))})(e)||console.warn("JbPro[❌❌❌][worker]:",e)}})),Promise.all(ss).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=[],s=[],a=null,o=null,d=null,l=null,c=null,u=null,h=!1,f=null,S=null,E=!1,B=!1,Se=!!br(r),Ee=0,qe=0,Qe=!1,et=null,rt=null,nt=null,ht=[],Ut=null,xt=null,kt=0,Ot=0,Gt=null,Ht=null,Wt=0,Vt=0,jt=!1,Zt=!1,tr=!1,dr=null,Ar=null,Ur=!1,xr=!0,Br=0,Dr=0,Wr=()=>{const e=yr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(a={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){a.decoder=new VideoDecoder({output:function(e){if(hr(e.createImageBitmap))e.createImageBitmap().then((t=>{a.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ci.delay,ts:0},[r]),mr(e)}));else{a.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ci.delay,ts:0},[t]),mr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){a.reset(),a.decoder&&"closed"!==a.decoder.state&&(a.decoder.close(),a.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(a.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?mt:_t});a.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Me?(n=Pr(s),i={codec:n.codec,description:s}):t===Re&&(n=Yr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),a.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),a.isEmitInfo=!0,a.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),a.offscreenCanvasCtx=a.offscreenCanvas.getContext("2d"));try{a.decoder.configure(i),a.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){a.hasInit=!1,a.isEmitInfo=!1,a.offscreenCanvas=null,a.offscreenCanvasCtx=null}});let Vr=function(){if(Ur=!0,o)try{o.abort(),o=null,ci.debugLog("worker","abort success")}catch(e){o=null,ci.debugLog("worker","abort catch",e)}},Kr={init(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},destroy(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=Kr.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");Kr.handleVideoFrames(e)}else Kr.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=Kr.localDts;return Kr.localDts=Kr.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return Kr.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{const t=Rr(e);t===je||t===Ve?Kr.handleVideoH264Nalu(e):$r(t)&&i.push(e)})),1===i.length)Kr.handleVideoH264Nalu(i[0]);else if(Or(i)){const e=Rr(i[0]),t=Nr(e);Kr.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH264Nalu(e)}))}else if(Kr.streamType===Ne)if(ci._opt.nakedFlowH265DemuxUseNew){const t=Kr.handleAddNaluStartCode(e),r=Kr.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Qr(e);t===ct||t===dt||t===at?Kr.handleVideoH265Nalu(e):ti(t)&&i.push(e)})),1===i.length)Kr.handleVideoH265Nalu(i[0]);else if(ii(i)){const e=Qr(i[0]),t=ri(e);Kr.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH265Nalu(e)}))}else Qr(e)===ct?Kr.extractH265PPS(e):Kr.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{zr(Rr(e))?Kr.extractH264SEI(e):Kr.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{ei(Qr(e))?Kr.extractH265SEI(e):Kr.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.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=Rr(e);switch(t){case Ve:Kr.sps=e;break;case je:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Lr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if($r(t)){const r=Nr(t),i=Kr.getNaluDts(),n=Ir(e,r);Kr.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if(Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Lr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}},handleVideoH264NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Mr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Qr(e);switch(t){case at:Kr.vps=e;break;case dt:Kr.sps=e;break;case ct:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.vps&&Kr.sps&&Kr.pps){const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}if(ti(t)){const r=ri(t),i=Kr.getNaluDts(),n=Zr(e,r);Kr.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if(Kr.vps&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}},handleVideoH265NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Jr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!Kr.streamVideoType)for(let t of e)if(Kr.streamVideoType=fr(t),Kr.streamVideoType)break;Kr.streamVideoType?Kr.streamVideoType===$e?Kr.handleVideoH264Frames(e):Kr.streamVideoType===Ne&&Kr.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Rr(a);let o=!1,d=e===Ke;e!==Ye&&e!==Ke||(s=Kr.parseVideo264Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case je:Kr.pps=e;break;case Ve:Kr.sps=e;break;case Xe:n=e}if($r(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Fr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Fr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(i){const e=Kr.getNaluDts(),t=Mr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!1);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Qr(a);let o=!1,d=ri(e);ti(e)&&(s=Kr.parseVideo265Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ct:Kr.pps=e;break;case dt:Kr.sps=e;break;case at:Kr.vps=e;break;case pt:case ft:n=e}if(ti(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps&&Kr.vps){Kr.isSendSeqHeader=!0;const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps&&Kr.vps){const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(i){const e=Kr.getNaluDts(),t=Jr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!0);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{Kr.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Vn(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Vn(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},ai={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){ai.mp4Box=Hi.createFile(),ai.mp4Box.onReady=ai.onReady,ai.mp4Box.onError=ai.onError,ai.mp4Box.onSamples=ai.onSamples},initTransportDescarmber(){ai.transportDescarmber=new ji},_getSeqHeader(e){const t=ai.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Hi.DataStream(void 0,0,Hi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(ai.isHevc=!0,ci.isHevc=!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){ci.debugLog(ai.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){ai.videoTrackId=t.id;const e=ai._getSeqHeader(t);e&&(ci.debugLog(ai.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),ai.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){ai.audioTrackId=r.id;const e=r.audio||{},t=qt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");ai.mp4Box.setExtractionOptions(r.id);const n=Yt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(ai.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(n,0)}ai.mp4Box.start()},onError(e){ci.debugError(ai.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===ai.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&&ci.calcIframeIntervalTimestamp(i);let n=null;n=ai.isHevc?Jr(t,r):Mr(t,r),ci.decode(n,{type:oe,ts:i,isIFrame:r,cts:0})}ai.mp4Box.removeUsedSamples(e)}else if(e===ai.audioTrackId){if(ci._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),ci.decode(i,{type:ae,ts:r,isIFrame:!1,cts:0})}ai.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(ai.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);ai.transportDescarmber&&(t=ai.transportDescarmber.transport(t)),t.buffer.fileStart=ai.offset,ai.offset+=t.byteLength,ai.mp4Box.appendBuffer(t.buffer)},destroy(){ai.mp4Box&&(ai.mp4Box.stop(),ai.mp4Box.flush(),ai.mp4Box.destroy(),ai.mp4Box=null),ai.transportDescarmber&&(ai.transportDescarmber.destroy(),ai.transportDescarmber=null),ai.offset=0,ai.videoTrackId=null,ai.audioTrackId=null,ai.isHevc=!1}},oi={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);oi.extractNALu(t)},destroy(){oi.lastBuffer=new Uint8Array(0),oi.parsedOffset=0,oi.firstStartCodeOffset=0,oi.secondStartCodeOffset=0,oi.state="init",oi.hasInitVideoCodec=!1,oi.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(oi.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(oi.lastBuffer.length+e.length);for(t.set(oi.lastBuffer,0),t.set(new Uint8Array(e),oi.lastBuffer.length),oi.lastBuffer=t;;){if("init"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findFirstStartCode",oi.firstStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findSecondStartCode",oi.secondStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===oi.state){if(!(oi.lastBuffer.length-oi.parsedOffset>0))break;{let e,t,r=192&oi.lastBuffer[oi.parsedOffset];e=0==r?oi.secondStartCodeOffset-14:oi.secondStartCodeOffset;let i=0==(192&oi.lastBuffer[oi.firstStartCodeOffset+4]);if(i){if(oi.firstStartCodeOffset-14<0)return void ci.debugWarn(oi.LOG_NAME,"firstStartCodeOffset -14 is",oi.firstStartCodeOffset-14);oi.hasInitVideoCodec||(oi.hasInitVideoCodec=!0,ci.debugLog(oi.LOG_NAME,"setCodec"),hi.setCodec(ze,"")),t=oi.lastBuffer.subarray(oi.firstStartCodeOffset-14,e)}else t=oi.lastBuffer.subarray(oi.firstStartCodeOffset,e);let n=oi.getNaluDts();oi.hasInitVideoCodec?(postMessage({cmd:O,type:Be,value:t.byteLength}),postMessage({cmd:O,type:Te,value:n}),Ee=n,hi.decode(t,i?1:0,n)):ci.debugWarn(oi.LOG_NAME,"has not init video codec"),oi.lastBuffer=oi.lastBuffer.subarray(e),oi.firstStartCodeOffset=0==r?14:0,oi.parsedOffset=oi.firstStartCodeOffset+4,oi.state="findFirstStartCode"}}}},getNaluDts(){let e=oi.localDts;return oi.localDts=oi.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Hn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=_n(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==s),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==a||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===s||s===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[s]===Mn){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[s]){let r=188-c,i=di.pmt_.pid_stream_type[s];s!==di.pmt_.common_pids.h264&&s!==di.pmt_.common_pids.h265&&s!==di.pmt_.common_pids.adts_aac&&s!==di.pmt_.common_pids.loas_aac&&s!==di.pmt_.common_pids.ac3&&s!==di.pmt_.common_pids.eac3&&s!==di.pmt_.common_pids.opus&&s!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[s]&&!0!==di.pmt_.timed_id3_pids[s]&&!0!==di.pmt_.synchronous_klv_pids[s]&&!0!==di.pmt_.asynchronous_klv_pids[s]||di.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,a));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):di.clearSlices(s,i)}for(let o=1+a;o=s.expected_length&&di.clearSlices(s,i),o+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):s.total_length>=s.expected_length&&di.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let a=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new $n,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let o=di.pes_slice_queues_[i.pid];o.slices.push(n),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=n.byteLength,o.expected_length>0&&o.expected_length===o.total_length?di.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==n){if(n<3+o)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Tn:case kn:di.parseMP3Payload(c,r);break;case Cn:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):di.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Dn:di.parseADTSAACPayload(c,r);break;case Pn:di.parseLOASAACPayload(c,r);break;case Ln:case Fn:break;case In:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,s,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Rn:di.parseH264Payload(c,r,s,e.random_access_indicator);break;case zn:di.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Cn){let r,s=6;r=0!==n?n:t.byteLength-s;let a=t.subarray(s,s+r);di.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let a=null;if(1===n&&0===s)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=di.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),di.pat_=a,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=di._initPmt(),r.program_number=n,r.version_number=s,di.program_pmt_map_[n]=r;else if(r=di.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Xr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Fr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let n=di.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Qt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new er(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame(cr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ae};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new Wn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Yt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(n,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new On;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/di.timescale_);s.pts=e}else s.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===oe?di._doDecodeVideo({...e,payload:t}):e.type===ae&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Jr(t,e.isIFrame):Mr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:oe,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;br(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ae,ts:e.dts,isIFrame:!1,cts:0})}},li=null;Sr()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new gn,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!wr(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===bt,isStateClosed:()=>li.getState()===wt,isStateEnded:()=>li.getState()===vt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,St,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,At,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(wr(li.hasInit))if(r&&e[1]===Tt){const i=15&e[0];if(i===Re&&wr(ci._opt.supportMSEDecodeHevc))return void li.emitError(Fe.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Me?r=Pr(e.slice(5)):t===Re&&(r=qr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Fe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(vr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Me?s=Pr(n):i===Re&&(s=Yr(n)),li.videoInfo.width=s.codecWidth,li.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),li.emitError(Fe.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const a={id:Ft,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},o=yn.generateInitSegment(a);li.isAvc=i===Me;let d=s.codec;return li.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:li.isAvc?gt:yt,postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),li._initSourceBuffer(),li.appendBuffer(o.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===We,s=r===Oe;if(wr(s||n))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Fe.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Kt(e)){if(o=Jt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!n)return!1;if(o=Bn(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;n&&wr(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=yn.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),wr(li.isAudioInitInfo)&&(Ar=r===Oe?i?16:8:0===i?8:16,postMessage({cmd:L,code:r}),postMessage({cmd:P,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:Ar}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=s,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Fe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),a=s.byteLength;if(0===a)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=o,d=!0);const l=o-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=yn.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendBuffer(n.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Ft,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=a,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=s,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=yn.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendAudioBuffer(n.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=It,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=n,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Fe.mediaSourceAudioInitTimeout)}),1e3)));if(wr(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(wr(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:n,end:t})}}else s=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:n,end:t})}}else sli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&wr(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&wr(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&wr(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&wr(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(wr(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Dt,_opt:Wr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Qe,wasmDecodeDelay:Ee-qe});postMessage({cmd:O,type:Ce,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ae)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Qe=!1,ci.delay=t-r):(Qe=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ae)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===oe&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ae?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===oe&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===oe&&a.decode?a.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===n.length)return;const t=e.ts,i=n[0],s=e.type===oe&&vr(e.payload);if(wr(r))s&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i));else{const r=i.ts-t,a=i.type===ae&&e.type===oe;(r<=20||a||s)&&(ci.debugLog("worker",`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 ${a} and isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===v,t=ci._opt.playType===b;if(Kr.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),a&&ci._opt.useWCS&&ci.useOffscreen()&&a.init(),wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(n.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${n.length}`);if(ci.dropping){for(r=n.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${n.length}`);!r.isIFrame&&n.length;)r=n.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;n.length;)r=n.shift(),ci.doDecode(r);else if(r=n[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),n.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:H})):(n.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;n.length;){if(r=n[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${n.length}`);break}n.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();et||(et=e);const r=e-et;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),et=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(wr(ci._opt.checkFirstIFrame)&&(Se=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;n.length&&(e=n.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Vr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Ur=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&wr(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,et=null,Qe=!1,Ee=0,qe=0,a&&(a.destroy&&a.destroy(),a=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Wr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),n=[],s=[],u&&(u.close(),u=null),f=null,S=null,E=!1,B=!1,Se=!1,jt=!1,Zt=!1,tr=!1,dr=null,ht=[],kt=0,Ot=0,rt=null,nt=null,Gt=null,Ht=null,Ar=null,Wt=0,Vt=0,Ut=null,xt=null,ci.fetchStatus=Dt,xr=!0,Kr.destroy(),ai.destroy(),oi.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===ae&&Kt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===oe&&t.isIFrame&&vr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===w)if(t.type===oe){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ae&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Xt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===oe){if(Wt>0){const e=t.ts-Ht,r=Wt+Wt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Wt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Vt}`),Ht-t.ts>A&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Wt=0),ci._opt.isDropSameTimestampGop&&wr(t.isIFrame)&&Se)){const e=ci.hasIframeInBufferList(),t=wr(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),br(ci._opt.checkFirstIFrame)&&br(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}Ht>0&&(Wt=t.ts-Ht),Vt=e.byteLength,Ht=t.ts}if(Se){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${n.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;n.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${n.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return n.forEach((t=>{t.type===oe&&(e+=1)})),e},hasIframeInBufferList:()=>n.some((e=>e.type===oe&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return n.forEach((e=>{e.type===oe&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return n.forEach((t=>{t.type===ae&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?Kr.lastBuf&&(e=Kr.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&ai.mp4Box&&(e=ai.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=lr((e=>{postMessage({cmd:O,type:Ue,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(ai.listenMp4Box(),ci._opt.isFmp4Private&&ai.initTransportDescarmber()),t.protocol===_){t.isFlv&&(u=new Tr(ci.demuxFlv())),o=new AbortController;const r=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(br(Ur))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Dt,void e.body.cancel();if(!gr(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Vr(),void postMessage({cmd:O,type:Fe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:ke}),pr())ci.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):br(Ur)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof e?(ci.fetchStatus=Pt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Lt,Vr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Lt,Vr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De}))):o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):br(Ur)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof n?(ci.fetchStatus=Pt,l(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ci.demuxFmp4(n):t.isMpeg4?ci.demuxMpeg4(n):t.isTs?ci.demuxTs(n):t.isNakedFlow&&ci.demuxNakedFlow(n),i()):ci.debugWarn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Bt?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(u=new Tr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:ke}),postMessage({cmd:O,type:Le})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),br(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:y,msg:e.code})):postMessage({cmd:O,type:De}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):br(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Fe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 de:if(a.byteLength>0){let e=a;br(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(a)),ci.decode(e,{type:ae,ts:s})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case le:if(a.byteLength>=6){const e=a[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(a,s);else{const e=15&a[0];let t=a[0]>>4===Ct;const i=e===Re;if(wr(t)&&br(Er(a,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&vr(a)&&null===ci.isHevc){const e=15&a[0];ci.isHevc=e===Re,dr=sr(a,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`)}t&&ci.calcIframeIntervalTimestamp(s),ci.isPlayer&&ci.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let n=r[0],o=ci.cryptoPayload(a,t);ci.decode(o,{type:oe,ts:s,isIFrame:t,cts:n})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case ce:postMessage({cmd:J,buffer:a},[a.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ae?ci._opt.hasAudio&&(postMessage({cmd:O,type:xe,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===oe&&ci._opt.hasVideo&&(postMessage({cmd:O,type:Be,value:e.byteLength}),postMessage({cmd:O,type:Te,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Oi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?ns(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):cn(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=mn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Oe&&(t=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,n=e[0]>>1&1;if(Ar=r===Oe?n?16:8:0===n?8:16,ui&&ui.setCodec||!wr(i))if(Kt(e)||r===Ge||r===He||r===We){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const n=r===Oe?e.slice(2):new Uint8Array(0);if(i){if(r===We)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,n);r===Oe&&postMessage({cmd:I,buffer:n},[n.buffer]),B=!0,r!==Oe&&(r===We?(ci.mp3Demuxer||(ci.mp3Demuxer=new hn(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(br(r)&&br(ci._opt.mseDecodeAudio))postMessage({cmd:N,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(B){if(Kt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===We?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Oe?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!wr(i))if(vr(e))if(r===Me||r===Re){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Me&&ci._opt.useSIMD){const e=Pr(t);if(e.codecWidth>U||e.codecHeight>U)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const n=new Uint8Array(e);E=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:M,code:r}),postMessage({cmd:R,buffer:n,codecId:r},[n.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,n){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,n,s);else if(br(r))postMessage({cmd:$,payload:e,isIFrame:n,ts:t,cts:s,delay:ci.delay},[e.buffer]);else if(E)if(!Se&&n&&(Se=!0),Se){if(n&&vr(e)){const t=15&e[0];let r={};t===Me?r=Pr(e.slice(5)):t===Re&&(r=qr(e)),r.codecWidth&&r.codecHeight&&f&&S&&(r.codecWidth!==f||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${f}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Zt=!0,postMessage({cmd:j,value:`width: ${f}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(Zt)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(tr)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(vr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${n.length}, need clear is ${e}`),e&&(n=[]),ci.isPlayer&&(ci.resetAllDelay(),br(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:H}))),br(ci._opt.checkFirstIFrame)&&wr(r)&&(Se=!1)},dropBuffer$2:function(){if(n.length>0){let e=n.findIndex((e=>br(e.isIFrame)&&e.type===oe));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:H});const t=n.length;n=n.slice(e);const r=n.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${n.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===n.length&&(ci.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 ae:ci.decode(new Uint8Array(e,5),{type:ae,ts:r});break;case oe:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ci._isEnhancedH265Header(n))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),vr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Re}ci.isPlayer&&ci.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=ci.cryptoPayload(i,e);ci.decode(a,{type:oe,ts:r,isIFrame:e,cts:n})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kr.dispatch(e)},demuxFmp4:function(e){ai.dispatch(e)},demuxMpeg4:function(e){oi.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=wr(d),n===Rt){if(i===Nt){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),dr=sr(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`),ci.decode(i,{type:oe,ts:t,isIFrame:!0,cts:0})}}}else if(n===zt){let r=e,n=0;const s=i===Nt;s&&ci.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0],r=Jr(e.slice(8),s),r=ci.cryptoPayload(r,s),ci.decode(r,{type:oe,ts:t,isIFrame:s,cts:n}))}else if(n===$t){const r=i===Nt;r&&ci.calcIframeIntervalTimestamp(t);let n=Jr(e.slice(5),r);n=ci.cryptoPayload(n,r),ci.decode(n,{type:oe,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Mt)===Mt},findSei:function(e,t){let r=4;ur(dr)&&(r=dr),rr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===pt||r===ft),n=wr(ci.isHevc)&&r===Xe;if(i||n){const r=ir(e,ci.isHevc);postMessage({cmd:Z,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Se&&e>0))return;null===rt?(rt=e,nt=ar()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===v&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${rt} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Pe,value:i}))},calcIframeIntervalTimestamp:function(e){null===Gt?Gt=e:Gt=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&br(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),jt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),jt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:k,w:t,h:r}),f=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:Ar}),Ot=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=f*S*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(Ut=null,qe=r,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,s);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:s,delay:ci.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=ci._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(kt){if(!(n>=(r=d-kt)))return kt+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...a[1])));ht[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,n-=r}for(kt=n;kt>=d;kt-=d)ht[0]=a[0].slice(o,o+=d),2==Ot&&(ht[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));kt&&(s[0]=a[0].slice(o),2==Ot&&(s[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===Ut&&(Ut=ar());const t=ar(),r=or(xt>0?2*xt:5e3,1e3,5e3),i=t-Ut;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${xt} and diff is ${i} and maxDiff is ${r}\n and replay`),tr=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){d?d.readyState===Ie?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),br(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,f=e,S=t,postMessage({cmd:k,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Ot=e,postMessage({cmd:P,sampleRate:t,channels:e,depth:Ar})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=ci._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(kt){if(!(n>=(r=d-kt)))return kt+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...a[1])));ht[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,n-=r}for(kt=n;kt>=d;kt-=d)ht[0]=a[0].slice(o,o+=d),2==Ot&&(ht[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));kt&&(s[0]=a[0].slice(o),2==Ot&&(s[1]=a[1].slice(o))),a=[]},draw:function(t,r,i,n){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const s=e.HEAPU8.subarray(r,r+Br),a=e.HEAPU8.subarray(i,i+Dr),o=e.HEAPU8.subarray(n,n+Dr),d=new Uint8Array(Br+Dr+Dr);if(d.set(s),d.set(a,Br),d.set(o,Br+Dr),Ut=null,qe=t,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:T}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case he:ci.pushBuffer(t.buffer,t.options);break;case fe:ci.decodeAudio(t.buffer,t.ts);break;case pe:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ge:ci.clearBuffer(t.needClear);break;case ye:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case me:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&wr(t.options.isVideoInited)&&(xr=t.options.isVideoInited),ci.close();break;case _e:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case ve:ci.sendWebsocketMessage(t.message);break;case be:li.$video.currentTime=Number(t.message);break;case we:ci.updatePlaybackIsPause(t.isPause)}}}(e[1],t)}))})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-simd-mt-worker.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL&&""!=JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL?JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL:e};var s,a,o,d=Object.assign({},n),l=(e,t)=>{throw t},c="object"==typeof window,u="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),g=_("fs"),y=_("path");let t;p=u?y.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=te(e)?new URL(e):y.normalize(e),g.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=te(e)?new URL(e):y.normalize(e),g.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(c||u)&&(u?p=self.location.href:"undefined"!=typeof document&&document.currentScript&&(p=document.currentScript.src),r&&(p=r),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},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)}));h&&"undefined"==typeof performance&&(global.performance=_("perf_hooks").performance);var v=console.log.bind(console),b=console.error.bind(console);h&&(v=function(){for(var e=arguments.length,t=new Array(e),r=0;re.startsWith(Q),te=e=>e.startsWith("file://");function re(e){if(e==J&&w)return new Uint8Array(w);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ie(e){if(!w&&(c||u)){if("function"==typeof fetch&&!te(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((()=>re(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>re(e)))}function ne(e,t,r){return ie(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{U(`failed to asynchronously prepare wasm: ${e}`),Z(e)}))}function se(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||ee(t)||te(t)||h||"function"!=typeof fetch?ne(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return U(`wasm streaming compile failed: ${e}`),U("falling back to ArrayBuffer instantiation"),ne(t,r,i)}))))}function ae(){var e={a:hi};function t(e,t){return fi=e.exports,Le(fi.R),Te=fi.V,V(fi.N),E=t,X(),fi}if(K(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){U(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return se(w,J,e,(function(e){t(e.instance,e.module)})).catch(i),{}}function oe(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}n.locateFile?ee(J="decoder-pro-simd-mt-worker.wasm")||(J=m(J)):J=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 de=e=>{e.terminate(),e.onmessage=e=>{}},le=e=>{var t=Ae.pthreads[e];delete Ae.pthreads[e],de(t),wi(e),Ae.runningWorkers.splice(Ae.runningWorkers.indexOf(t),1),t.pthread_ptr=0},ce=e=>{Ae.pthreads[e].postMessage({cmd:"cancel"})},ue=e=>{var t=Ae.pthreads[e];Ae.returnWorkerToPool(t)},he=e=>{var t=Ae.getNewWorker();if(!t)return 6;Ae.runningWorkers.push(t),Ae.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},fe=0,pe=()=>Pe||fe>0,me="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,_e=(e,t,r)=>{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&me)return me.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},ge=(e,t)=>e?_e(T,e,t):"",ye=e=>{var t=Ui(),r=e();return xi(t),r},ve=function(e,t){var r=arguments.length-2,i=arguments;return ye((()=>{for(var n=r,s=Bi(8*n),a=s>>3,o=0;o{if(x=e,f)throw Be(e),"unwind";be(e)},Se=we,Ee=e=>{if(e instanceof oe||"unwind"==e)return x;l(1,e)},Ae={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){f?Ae.initWorker():Ae.initMainThread()},initMainThread(){for(var e=8;e--;)Ae.allocateUnusedWorker();W((()=>{K(),Ae.loadWasmModuleToAllWorkers((()=>X()))}))},initWorker(){Pe=!1},setExitStatus:e=>{x=e},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var e of Ae.runningWorkers)de(e);for(var e of Ae.unusedWorkers)de(e);Ae.unusedWorkers=[],Ae.runningWorkers=[],Ae.pthreads=[]},returnWorkerToPool:e=>{var t=e.pthread_ptr;delete Ae.pthreads[t],Ae.unusedWorkers.push(e),Ae.runningWorkers.splice(Ae.runningWorkers.indexOf(e),1),e.pthread_ptr=0,wi(t)},receiveObjectTransfer(e){},threadInitTLS(){Ae.tlsInitFunctions.forEach((e=>e()))},loadWasmModuleToWorker:e=>new Promise((t=>{e.onmessage=r=>{var i=r.data,s=i.cmd;if(i.targetThread&&i.targetThread!=_i()){var a=Ae.pthreads[i.targetThread];a?a.postMessage(i,i.transferList):U(`Internal error! Worker sent a message "${s}" to target pthread ${i.targetThread}, but that thread no longer exists!`)}else"checkMailbox"===s?Fr():"spawnThread"===s?he(i):"cleanupThread"===s?ue(i.thread):"killThread"===s?le(i.thread):"cancelThread"===s?ce(i.thread):"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&&U(`worker sent an unknown command ${s}`)},e.onerror=e=>{throw U(`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(Ae.unusedWorkers.map(Ae.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"});Ae.unusedWorkers.push(e)},getNewWorker:()=>(0==Ae.unusedWorkers.length&&(Ae.allocateUnusedWorker(),Ae.loadWasmModuleToWorker(Ae.unusedWorkers[0])),Ae.unusedWorkers.pop())};n.PThread=Ae;var Ue=e=>{for(;e.length>0;)e.shift()(n)},xe=()=>{var e=_i(),t=P[e+52>>2],r=P[e+56>>2];Ai(t,t-r),xi(t)};function Be(e){if(f)return ve(1,0,e);Se(e)}n.establishStackSpace=xe;var Te,ke=[],Ce=e=>{var t=ke[e];return t||(e>=ke.length&&(ke.length=e+1),ke[e]=t=Te.get(e)),t},De=(e,t)=>{!function(e){pe()?Ae.setExitStatus(e):Si(e)}(Ce(e)(t))};n.invokeEntryPoint=De;var Pe=n.noExitRuntime||!0,Le=e=>{Ae.tlsInitFunctions.push(e)},Fe=(e,t,r,i)=>{Z(`Assertion failed: ${ge(e)}, at: `+[t?ge(t):"unknown filename",r,i?ge(i):"unknown function"])};function Ie(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,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){P[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return P[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Ti(this.get_type()))return P[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var Me=(e,t,r)=>{throw new Ie(e).init(t,r),e},Re=e=>{yi(e,!u,1,!c,16777216,!1),Ae.threadInitTLS()},ze=e=>{f?postMessage({cmd:"cleanupThread",thread:e}):ue(e)};function $e(e,t,r,i){return f?ve(2,1,e,t,r,i):He(e,t,r,i)}var Ne,Oe,Ge,He=(e,t,r,i)=>{if("undefined"==typeof SharedArrayBuffer)return U("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var n=[];if(f&&0===n.length)return $e(e,t,r,i);var s={startRoutine:r,pthread_ptr:e,arg:i,transferList:n};return f?(s.cmd="spawnThread",postMessage(s,n),0):he(s)},We=(e,t,r,i,n)=>{},Ve=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ne=e},je=e=>{for(var t="",r=e;T[r];)t+=Ne[T[r++]];return t},qe={},Ye={},Ke={},Xe=e=>{throw new Oe(e)},Ze=e=>{throw new Ge(e)},Je=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ze("Mismatched type converter count");for(var n=0;n{Ye.hasOwnProperty(e)?n[t]=Ye[e]:(s.push(e),qe.hasOwnProperty(e)||(qe[e]=[]),qe[e].push((()=>{n[t]=Ye[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function Qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||Xe(`type "${i}" must have a positive integer typeid pointer`),Ye.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Xe(`Cannot register type '${i}' twice`)}if(Ye[e]=t,delete Ke[e],qe.hasOwnProperty(e)){var n=qe[e];delete qe[e],n.forEach((e=>e()))}}function et(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Qe(e,t,r)}var tt,rt=8,it=(e,t,r,i)=>{et(e,{name:t=je(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:rt,readValueFromPointer:function(e){return this.fromWireType(T[e])},destructorFunction:null})},nt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),st=e=>{Xe(e.$$.ptrType.registeredClass.name+" instance already deleted")},at=!1,ot=e=>{},dt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},lt=e=>{e.count.value-=1,0===e.count.value&&dt(e)},ct=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=ct(e,t,r.baseClass);return null===i?null:r.downcast(i)},ut={},ht=()=>Object.keys(yt).length,ft=()=>{var e=[];for(var t in yt)yt.hasOwnProperty(t)&&e.push(yt[t]);return e},pt=[],mt=()=>{for(;pt.length;){var e=pt.pop();e.$$.deleteScheduled=!1,e.delete()}},_t=e=>{tt=e,pt.length&&tt&&tt(mt)},gt=()=>{n.getInheritedInstanceCount=ht,n.getLiveInheritedInstances=ft,n.flushPendingDeletes=mt,n.setDelayFunction=_t},yt={},vt=(e,t)=>{for(void 0===t&&Xe("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},bt=(e,t)=>(t=vt(e,t),yt[t]),wt=(e,t)=>(t.ptrType&&t.ptr||Ze("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ze("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Et(Object.create(e,{$$:{value:t}})));function St(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=bt(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?wt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):wt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=ut[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=ct(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?wt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):wt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var Et=e=>"undefined"==typeof FinalizationRegistry?(Et=e=>e,e):(at=new FinalizationRegistry((e=>{lt(e.$$)})),Et=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};at.register(e,r,e)}return e},ot=e=>at.unregister(e),Et(e)),At=()=>{Object.assign(Ut.prototype,{isAliasOf(e){if(!(this instanceof Ut))return!1;if(!(e instanceof Ut))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||st(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Et(Object.create(Object.getPrototypeOf(this),{$$:{value:nt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||st(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Xe("Object already scheduled for deletion"),ot(this),lt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||st(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Xe("Object already scheduled for deletion"),pt.push(this),1===pt.length&&tt&&tt(mt),this.$$.deleteScheduled=!0,this}})};function Ut(){}var xt=(e,t)=>Object.defineProperty(t,"name",{value:e}),Bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Xe(`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}},Tt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&Xe(`Cannot register public name '${e}' twice`),Bt(n,e,e),n.hasOwnProperty(r)&&Xe(`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))},kt=48,Ct=57,Dt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=kt&&t<=Ct?`_${e}`:e};function Pt(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 Lt=(e,t,r)=>{for(;t!==r;)t.upcast||Xe(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Ft(e,t){if(null===t)return this.isReference&&Xe(`null is not a valid ${this.name}`),0;t.$$||Xe(`Cannot pass "${hr(t)}" as a ${this.name}`),t.$$.ptr||Xe(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Lt(t.$$.ptr,r,this.registeredClass)}function It(e,t){var r;if(null===t)return this.isReference&&Xe(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Xe(`Cannot pass "${hr(t)}" as a ${this.name}`),t.$$.ptr||Xe(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&Xe(`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=Lt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Xe("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Xe(`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,lr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:Xe("Unsupporting sharing policy")}return r}function Mt(e,t){if(null===t)return this.isReference&&Xe(`null is not a valid ${this.name}`),0;t.$$||Xe(`Cannot pass "${hr(t)}" as a ${this.name}`),t.$$.ptr||Xe(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&Xe(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Lt(t.$$.ptr,r,this.registeredClass)}function Rt(e){return this.fromWireType(P[e>>2])}var zt=()=>{Object.assign($t.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:rt,readValueFromPointer:Rt,deleteObject(e){null!==e&&e.delete()},fromWireType:St})};function $t(e,t,r,i,n,s,a,o,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=It:i?(this.toWireType=Ft,this.destructorFunction=null):(this.toWireType=Mt,this.destructorFunction=null)}var Nt,Ot=(e,t,r)=>{n.hasOwnProperty(e)||Ze("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Gt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Ht=(e,t,r)=>e.includes("j")?Gt(e,t,r):Ce(t).apply(null,r),Wt=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Ht(e,t,r)}},Vt=(e,t)=>{var r=(e=je(e)).includes("j")?Wt(e,t):Ce(t);return"function"!=typeof r&&Xe(`unknown function pointer with signature ${e}: ${t}`),r},jt=(e,t)=>{var r=xt(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},qt=e=>{var t=gi(e),r=je(t);return pi(t),r},Yt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Ye[t]||(Ke[t]?Ke[t].forEach(e):(r.push(t),i[t]=!0))})),new Nt(`${e}: `+r.map(qt).join([", "]))},Kt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=je(c),s=Vt(n,s),o&&(o=Vt(a,o)),l&&(l=Vt(d,l)),h=Vt(u,h);var f=Dt(c);Tt(f,(function(){Yt(`Cannot construct ${c} due to unbound types`,[i])})),Je([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:Ut.prototype;var a=xt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Oe("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Oe(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Oe(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Pt(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new $t(c,u,!0,!1,!1),m=new $t(c+"*",u,!1,!1,!1),_=new $t(c+" const*",u,!1,!0,!1);return ut[e]={pointerType:m,constPointerType:_},Ot(f,a),[p,m,_]}))},Xt=(e,t)=>{for(var r=[],i=0;i>2]);return r},Zt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Jt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=xt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Qt(e,t,r,i,n,s){var a=t.length;a<2&&Xe("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+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=Xt(t,r);n=Vt(i,n),Je([],[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 Oe(`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]=()=>{Yt(`Cannot construct ${e.name} due to unbound types`,a)},Je([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Qt(r,i,null,n,s),[]))),[]}))},tr=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},rr=(e,t,r,i,n,s,a,o,d)=>{var l=Xt(r,i);t=je(t),t=tr(t),s=Vt(n,s),Je([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Yt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(Bt(c,t,i),c[t].overloadTable[r-2]=n),Je([],l,(function(n){var o=Qt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function ir(){Object.assign(nr.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)}})}function nr(){this.allocated=[void 0],this.freelist=[]}var sr=new nr,ar=e=>{e>=sr.reserved&&0==--sr.get(e).refcount&&sr.free(e)},or=()=>{for(var e=0,t=sr.reserved;t{sr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),sr.reserved=sr.allocated.length,n.count_emval_handles=or},lr={toValue:e=>(e||Xe("Cannot use deleted val. handle = "+e),sr.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 sr.allocate({refcount:1,value:e})}}};function cr(e){return this.fromWireType(D[e>>2])}var ur=(e,t)=>{et(e,{name:t=je(t),fromWireType:e=>{var t=lr.toValue(e);return ar(e),t},toWireType:(e,t)=>lr.toHandle(t),argPackAdvance:rt,readValueFromPointer:cr,destructorFunction:null})},hr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},fr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(L[e>>2])};case 8:return function(e){return this.fromWireType(F[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},pr=(e,t,r)=>{et(e,{name:t=je(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:rt,readValueFromPointer:fr(t,r),destructorFunction:null})},mr=(e,t,r)=>{switch(t){case 1:return r?e=>B[e>>0]:e=>T[e>>0];case 2:return r?e=>k[e>>1]:e=>C[e>>1];case 4:return r?e=>D[e>>2]:e=>P[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},_r=(e,t,r,i,n)=>{t=je(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");et(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:rt,readValueFromPointer:mr(t,r,0!==i),destructorFunction:null})},gr=(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(B.buffer,r,t)}et(e,{name:r=je(r),fromWireType:n,argPackAdvance:rt,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},yr=(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)),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},vr=(e,t,r)=>yr(e,T,t,r),br=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},wr=(e,t)=>{var r="std::string"===(t=je(t));et(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==T[o]){var d=ge(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)vr(t,a,i+1);else if(n)for(var o=0;o255&&(pi(a),Xe("String has UTF-16 code units that do not fit in 8 bits")),T[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&C[i];)++i;if((r=i<<1)-e>32&&Sr)return Sr.decode(T.slice(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=k[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},Ar=(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 k[t>>1]=0,t-i},Ur=e=>2*e.length,xr=(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},Br=(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},Tr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},kr=(e,t,r)=>{var i,n,s,a,o;r=je(r),2===t?(i=Er,n=Ar,a=Ur,s=()=>C,o=1):4===t&&(i=xr,n=Br,a=Tr,s=()=>P,o=2),et(e,{name:r,fromWireType:e=>{for(var r,n=P[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return pi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&Xe(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=mi(4+s+t);return P[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(pi,d),d},argPackAdvance:rt,readValueFromPointer:cr,destructorFunction(e){pi(e)}})},Cr=(e,t)=>{et(e,{isVoid:!0,name:t=je(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Dr=()=>{if(!pe())try{f?Si(x):Se(x)}catch(e){Ee(e)}},Pr=e=>{if(!I)try{e(),Dr()}catch(e){Ee(e)}},Lr=e=>{if("function"==typeof Atomics.waitAsync){Atomics.waitAsync(D,e>>2,e).value.then(Fr);var t=e+128;Atomics.store(D,t>>2,1)}};n.__emscripten_thread_mailbox_await=Lr;var Fr=()=>{var e=_i();e&&(Lr(e),Pr(Ei))};n.checkMailbox=Fr;var Ir,Mr=(e,t,r)=>{if(e==t)setTimeout((()=>Fr()));else if(f)postMessage({targetThread:e,cmd:"checkMailbox"});else{var i=Ae.pthreads[e];if(!i)return;i.postMessage({cmd:"checkMailbox"})}},Rr=[],zr=(e,t,r,i)=>{Rr.length=r;for(var n=i>>3,s=0;s{h&&Ae.pthreads[e].ref()},Nr={},Or=e=>{var t=Nr[e];return void 0===t?je(e):t},Gr=[],Hr=(e,t,r,i,n)=>(e=Gr[e])(t=lr.toValue(t),t[r=Or(r)],i,n),Wr=e=>{var t=Gr.length;return Gr.push(e),t},Vr=(e,t)=>{var r=Ye[e];return void 0===r&&Xe(t+" has unknown type "+qt(e)),r},jr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},qr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(P[t>>2]=lr.toHandle(i)),n},Yr=(e,t,r)=>{var i=jr(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],c=0;ce.name)).join(", ")}) => ${n.name}>`;return Wr(xt(h,u))},Kr=e=>{e>4&&(sr.get(e).refcount+=1)},Xr=e=>lr.toHandle(Or(e)),Zr=()=>lr.toHandle({}),Jr=e=>lr.toHandle(ge(e)),Qr=e=>{var t=lr.toValue(e);Zt(t),ar(e)},ei=(e,t,r)=>{e=lr.toValue(e),t=lr.toValue(t),r=lr.toValue(r),e[t]=r},ti=(e,t)=>{var r=(e=Vr(e,"_emval_take_value")).readValueFromPointer(t);return lr.toHandle(r)},ri=()=>{Z("")},ii=()=>{},ni=()=>{fe+=1},si=()=>{throw ni(),"unwind"};Ir=()=>performance.timeOrigin+performance.now();var ai=e=>{Z("OOM")},oi=e=>{T.length,ai()},di=[null,[],[]],li=(e,t)=>{var r=di[e];0===t||10===t?((1===e?A:U)(_e(r,0)),r.length=0):r.push(t)};function ci(e,t,r,i){if(f)return ve(3,1,e,t,r,i);for(var n=0,s=0;s>2],o=P[t+4>>2];t+=8;for(var d=0;d>2]=n,0}Ae.init(),Ve(),Oe=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Ge=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},At(),gt(),zt(),Nt=n.UnboundTypeError=jt(Error,"UnboundTypeError"),ir(),dr();var ui=[be,Be,$e,ci],hi={e:Fe,s:Me,D:Re,m:ze,A:He,v:We,J:it,u:Kt,t:er,j:rr,I:ur,o:pr,c:_r,b:gr,p:wr,k:kr,K:Cr,x:Mr,E:zr,C:Lr,G:$r,h:Hr,d:ar,g:Yr,L:Kr,q:Xr,H:Zr,B:Jr,i:Qr,r:ei,M:ti,l:ri,n:ii,F:si,f:Ir,w:oi,z:Se,y:ci,a:S||n.wasmMemory},fi=ae(),pi=e=>(pi=fi.O)(e),mi=e=>(mi=fi.P)(e),_i=n._pthread_self=()=>(_i=n._pthread_self=fi.Q)();n.__emscripten_tls_init=()=>(n.__emscripten_tls_init=fi.R)();var gi=e=>(gi=fi.S)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=fi.T)();var yi=n.__emscripten_thread_init=(e,t,r,i,s,a)=>(yi=n.__emscripten_thread_init=fi.U)(e,t,r,i,s,a);n.__emscripten_thread_crashed=()=>(n.__emscripten_thread_crashed=fi.W)();var vi,bi=(e,t,r,i)=>(bi=fi.X)(e,t,r,i),wi=e=>(wi=fi.Y)(e),Si=n.__emscripten_thread_exit=e=>(Si=n.__emscripten_thread_exit=fi.Z)(e),Ei=()=>(Ei=fi._)(),Ai=(e,t)=>(Ai=fi.$)(e,t),Ui=()=>(Ui=fi.aa)(),xi=e=>(xi=fi.ba)(e),Bi=e=>(Bi=fi.ca)(e),Ti=e=>(Ti=fi.da)(e);function ki(){if(!(q>0)){if(f)return t(n),G(),void startWorker(n);O(),q>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e())}function e(){vi||(vi=!0,n.calledRun=!0,I||(G(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),H()))}}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=fi.ea)(e,t,r,i,s),n.___start_em_js=143516,n.___stop_em_js=143573,n.wasmMemory=S,n.keepRuntimeAlive=pe,n.ExitStatus=oe,n.PThread=Ae,Y=function e(){vi||ki(),vi||(Y=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ki(),e.ready}),a=(()=>{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 async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};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-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,a,o,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.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,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,x,B,T,k,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=x=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=T=new Float32Array(e),n.HEAPF64=k=new Float64Array(e)}var L=[],F=[],I=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)$(n.preRun.shift());ne(L)}function R(){n.noFSInit||ke.init.initialized||ke.init(),ke.ignorePermissions=!1,ne(F)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(I)}function $(e){L.unshift(e)}function N(e){F.unshift(e)}function O(e){I.unshift(e)}var G=0,H=null;function W(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function V(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ni};function t(e,t){return si=e.exports,v=si.E,P(),Lt=si.H,N(si.F),V(),si}if(W(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(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_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ci(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var ae=(e,t,r)=>{throw new se(e).init(t,r),e},oe=e=>(x[oi()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ke.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;o{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},ke.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new ke.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new ke.ErrnoError(60);for(var s=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(ke.isBlkdev(r)||ke.isFIFO(r))throw new ke.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:ke.chrdev_stream_ops}});var n=ke.createNode(e,t,r,i);return ke.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):ke.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):ke.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):ke.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=ke.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,ke.isDir(e.mode)?t.size=4096:ke.isFile(e.mode)?t.size=e.usedBytes:ke.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw ke.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(ke.isDir(e.mode)){var i;try{i=ke.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ke.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=ke.lookupNode(e,t);for(var i in r.contents)throw new ke.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!ke.isLink(e.mode))throw new ke.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;a(e,(r=>{D(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&&W()},Ee=(e,t,r,i,n,s)=>{ke.createDataFile(e,t,r,i,n,s)},Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},xe=(e,t,r,i,n,s,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,n,d),s&&s(),V()}Ue(r,c,u,(()=>{a&&a(),V()}))||u(r)}W(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},Te=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},ke={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new ke.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=ke.root,n="/",s=0;s40)throw new ke.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(ke.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)%ke.nameTable.length},hashAddNode(e){var t=ke.hashName(e.parent.id,e.name);e.name_next=ke.nameTable[t],ke.nameTable[t]=e},hashRemoveNode(e){var t=ke.hashName(e.parent.id,e.name);if(ke.nameTable[t]===e)ke.nameTable[t]=e.name_next;else for(var r=ke.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=ke.mayLookup(e);if(r)throw new ke.ErrnoError(r,e);for(var i=ke.hashName(e.id,t),n=ke.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return ke.lookup(e,t)},createNode(e,t,r,i){var n=new ke.FSNode(e,t,r,i);return ke.hashAddNode(n),n},destroyNode(e){ke.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ke.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=ke.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{ke.lookupNode(e,t);return 20}catch(e){}return ke.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=ke.lookupNode(e,t)}catch(e){return e.errno}var n=ke.nodePermissions(e,"wx");if(n)return n;if(r){if(!ke.isDir(i.mode))return 54;if(ke.isRoot(i)||ke.getPath(i)===ke.cwd())return 10}else if(ke.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ke.isLink(e.mode)?32:ke.isDir(e.mode)&&("r"!==ke.flagsToPermissionString(t)||512&t)?31:ke.nodePermissions(e,ke.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=ke.MAX_OPEN_FDS;e++)if(!ke.streams[e])return e;throw new ke.ErrnoError(33)},getStreamChecked(e){var t=ke.getStream(e);if(!t)throw new ke.ErrnoError(8);return t},getStream:e=>ke.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return ke.FSStream||(ke.FSStream=function(){this.shared={}},ke.FSStream.prototype={},Object.defineProperties(ke.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new ke.FSStream,e),-1==t&&(t=ke.nextfd()),e.fd=t,ke.streams[t]=e,e},closeStream(e){ke.streams[e]=null},chrdev_stream_ops:{open(e){var t=ke.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new ke.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){ke.devices[e]={stream_ops:t}},getDevice:e=>ke.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),ke.syncFSRequests++,ke.syncFSRequests>1&&w(`warning: ${ke.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=ke.getMounts(ke.root.mount),i=0;function n(e){return ke.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&&ke.root)throw new ke.ErrnoError(10);if(!n&&!s){var a=ke.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,ke.isMountpoint(i))throw new ke.ErrnoError(10);if(!ke.isDir(i.mode))throw new ke.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,n?ke.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=ke.lookupPath(e,{follow_mount:!1});if(!ke.isMountpoint(t.node))throw new ke.ErrnoError(28);var r=t.node,i=r.mounted,n=ke.getMounts(i);Object.keys(ke.nameTable).forEach((e=>{for(var t=ke.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ke.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=ke.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new ke.ErrnoError(28);var s=ke.mayCreate(i,n);if(s)throw new ke.ErrnoError(s);if(!i.node_ops.mknod)throw new ke.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ke.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ke.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,ke.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new ke.ErrnoError(44);var r=ke.lookupPath(t,{parent:!0}).node;if(!r)throw new ke.ErrnoError(44);var i=de.basename(t),n=ke.mayCreate(r,i);if(n)throw new ke.ErrnoError(n);if(!r.node_ops.symlink)throw new ke.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=ke.lookupPath(e,{parent:!0}).node,i=ke.lookupPath(t,{parent:!0}).node,!r||!i)throw new ke.ErrnoError(44);if(r.mount!==i.mount)throw new ke.ErrnoError(75);var d,l=ke.lookupNode(r,a),c=ue.relative(e,s);if("."!==c.charAt(0))throw new ke.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new ke.ErrnoError(55);try{d=ke.lookupNode(i,o)}catch(e){}if(l!==d){var u=ke.isDir(l.mode),h=ke.mayDelete(r,a,u);if(h)throw new ke.ErrnoError(h);if(h=d?ke.mayDelete(i,o,u):ke.mayCreate(i,o))throw new ke.ErrnoError(h);if(!r.node_ops.rename)throw new ke.ErrnoError(63);if(ke.isMountpoint(l)||d&&ke.isMountpoint(d))throw new ke.ErrnoError(10);if(i!==r&&(h=ke.nodePermissions(r,"w")))throw new ke.ErrnoError(h);ke.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{ke.hashAddNode(l)}}},rmdir(e){var t=ke.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!0);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.rmdir)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.rmdir(t,r),ke.destroyNode(i)},readdir(e){var t=ke.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ke.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=ke.lookupPath(e,{parent:!0}).node;if(!t)throw new ke.ErrnoError(44);var r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!1);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.unlink)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.unlink(t,r),ke.destroyNode(i)},readlink(e){var t=ke.lookupPath(e).node;if(!t)throw new ke.ErrnoError(44);if(!t.node_ops.readlink)throw new ke.ErrnoError(28);return ue.resolve(ke.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=ke.lookupPath(e,{follow:!t}).node;if(!r)throw new ke.ErrnoError(44);if(!r.node_ops.getattr)throw new ke.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ke.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=ke.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new ke.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){ke.chmod(e,t,!0)},fchmod(e,t){var r=ke.getStreamChecked(e);ke.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=ke.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new ke.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){ke.chown(e,t,r,!0)},fchown(e,t,r){var i=ke.getStreamChecked(e);ke.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new ke.ErrnoError(28);var r;"string"==typeof e?r=ke.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new ke.ErrnoError(63);if(ke.isDir(r.mode))throw new ke.ErrnoError(31);if(!ke.isFile(r.mode))throw new ke.ErrnoError(28);var i=ke.nodePermissions(r,"w");if(i)throw new ke.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=ke.getStreamChecked(e);if(0==(2097155&r.flags))throw new ke.ErrnoError(28);ke.truncate(r.node,t)},utime(e,t,r){var i=ke.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new ke.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=ke.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new ke.ErrnoError(20)}else i=ke.mknod(e,r,0),s=!0;if(!i)throw new ke.ErrnoError(44);if(ke.isChrdev(i.mode)&&(t&=-513),65536&t&&!ke.isDir(i.mode))throw new ke.ErrnoError(54);if(!s){var a=ke.mayOpen(i,t);if(a)throw new ke.ErrnoError(a)}512&t&&!s&&ke.truncate(i,0),t&=-131713;var o=ke.createStream({node:i,path:ke.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!n.logReadFiles||1&t||(ke.readFiles||(ke.readFiles={}),e in ke.readFiles||(ke.readFiles[e]=1)),o},close(e){if(ke.isClosed(e))throw new ke.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ke.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(ke.isClosed(e))throw new ke.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ke.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ke.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 ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(1==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.read)throw new ke.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new ke.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 ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.write)throw new ke.ErrnoError(28);e.seekable&&1024&e.flags&&ke.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new ke.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(ke.isClosed(e))throw new ke.ErrnoError(8);if(t<0||r<=0)throw new ke.ErrnoError(28);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(!ke.isFile(e.node.mode)&&!ke.isDir(e.node.mode))throw new ke.ErrnoError(43);if(!e.stream_ops.allocate)throw new ke.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new ke.ErrnoError(2);if(1==(2097155&e.flags))throw new ke.ErrnoError(2);if(!e.stream_ops.mmap)throw new ke.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 ke.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=ke.open(e,t.flags),n=ke.stat(e).size,s=new Uint8Array(n);return ke.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),ke.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=ke.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);ke.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ke.write(i,t,0,t.byteLength,void 0,r.canOwn)}ke.close(i)},cwd:()=>ke.currentPath,chdir(e){var t=ke.lookupPath(e,{follow:!0});if(null===t.node)throw new ke.ErrnoError(44);if(!ke.isDir(t.node.mode))throw new ke.ErrnoError(54);var r=ke.nodePermissions(t.node,"x");if(r)throw new ke.ErrnoError(r);ke.currentPath=t.path},createDefaultDirectories(){ke.mkdir("/tmp"),ke.mkdir("/home"),ke.mkdir("/home/web_user")},createDefaultDevices(){ke.mkdir("/dev"),ke.registerDevice(ke.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ke.mkdev("/dev/null",ke.makedev(1,3)),ve.register(ke.makedev(5,0),ve.default_tty_ops),ve.register(ke.makedev(6,0),ve.default_tty1_ops),ke.mkdev("/dev/tty",ke.makedev(5,0)),ke.mkdev("/dev/tty1",ke.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);ke.createDevice("/dev","random",r),ke.createDevice("/dev","urandom",r),ke.mkdir("/dev/shm"),ke.mkdir("/dev/shm/tmp")},createSpecialDirectories(){ke.mkdir("/proc");var e=ke.mkdir("/proc/self");ke.mkdir("/proc/self/fd"),ke.mount({mount(){var t=ke.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=ke.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?ke.createDevice("/dev","stdin",n.stdin):ke.symlink("/dev/tty","/dev/stdin"),n.stdout?ke.createDevice("/dev","stdout",null,n.stdout):ke.symlink("/dev/tty","/dev/stdout"),n.stderr?ke.createDevice("/dev","stderr",null,n.stderr):ke.symlink("/dev/tty1","/dev/stderr"),ke.open("/dev/stdin",0),ke.open("/dev/stdout",1),ke.open("/dev/stderr",1)},ensureErrnoError(){ke.ErrnoError||(ke.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ke.ErrnoError.prototype=new Error,ke.ErrnoError.prototype.constructor=ke.ErrnoError,[44].forEach((e=>{ke.genericErrors[e]=new ke.ErrnoError(e),ke.genericErrors[e].stack=""})))},staticInit(){ke.ensureErrnoError(),ke.nameTable=new Array(4096),ke.mount(we,{},"/"),ke.createDefaultDirectories(),ke.createDefaultDevices(),ke.createSpecialDirectories(),ke.filesystems={MEMFS:we}},init(e,t,r){ke.init.initialized=!0,ke.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,ke.createStandardStreams()},quit(){ke.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=ke.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 c(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 ke.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(ke.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{ke.forceLoadFile(d);var s=be();if(!s)throw new ke.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=ke.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new ke.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(ke.getPath(e.node)))return-54;throw e}x[r>>2]=i.dev,x[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,x[r+12>>2]=i.uid,x[r+16>>2]=i.gid,x[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+24>>2]=K[0],x[r+28>>2]=K[1],x[r+32>>2]=4096,x[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+40>>2]=K[0],x[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+56>>2]=K[0],x[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+72>>2]=K[0],x[r+76>>2]=K[1],B[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+88>>2]=K[0],x[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!ke.isFile(t.node.mode))throw new ke.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);ke.msync(t,s,n,r,i)},varargs:void 0,get(){var e=x[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>ke.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;ke.streams[n];)n++;return ke.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}function Le(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return ke.open(t,r,n).fd}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}var Fe,Ie,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Fe=e},$e=e=>{for(var t="",r=e;E[r];)t+=Fe[E[r++]];return t},Ne={},Oe={},Ge={},He=e=>{throw new Ie(e)},We=e=>{throw new Me(e)},Ve=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&We("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),Ne.hasOwnProperty(e)||(Ne[e]=[]),Ne[e].push((()=>{n[t]=Oe[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],Ne.hasOwnProperty(e)){var n=Ne[e];delete Ne[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=$e(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},nt={},st=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=at,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||We("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&We("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=nt[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))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||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(n,e,e),n.hasOwnProperty(r)&&He(`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))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Ut(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 xt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Tt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=xt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,sr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function kt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,a,o,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=Tt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=kt,this.destructorFunction=null)}var Lt,Ft,It=(e,t,r)=>{n.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Lt.get(e)),t},$t=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),Nt=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),$t(e,t,r)}},Ot=(e,t)=>{var r=(e=$e(e)).includes("j")?Nt(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=$e(t);return ai(t),r},Wt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new Ft(`${e}: `+r.map(Ht).join([", "]))},Vt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=$e(c),s=Ot(n,s),o&&(o=Ot(a,o)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=At(c);wt(f,(function(){Wt(`Cannot construct ${c} due to unbound types`,[i])})),Ve([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Ut(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},It(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var a=t.length;a<2&&He("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+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);n=Ot(i,n),Ve([],[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 Ie(`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]=()=>{Wt(`Cannot construct ${e.name} due to unbound types`,a)},Ve([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,n,s,a,o,d)=>{var l=jt(r,i);t=$e(t),t=Zt(t),s=Ot(n,s),Ve([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Wt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(bt(c,t,i),c[t].overloadTable[r-2]=n),Ve([],l,(function(n){var o=Kt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,n.count_emval_handles=ir},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function ar(e){return this.fromWireType(x[e>>2])}var or=(e,t)=>{qe(e,{name:t=$e(t),fromWireType:e=>{var t=sr.toValue(e);return rr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(T[e>>2])};case 8:return function(e){return this.fromWireType(k[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=$e(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>x[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,n)=>{t=$e(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=$e(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=$e(t));qe(e,{name:t,fromWireType(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==E[o]){var d=Ce(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)pr(t,a,i+1);else if(n)for(var o=0;o255&&(ai(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=x[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},wr=(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(x[t>>2]=a,(t+=4)+4>n)break}return x[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,n,s,a,o;r=$e(r),2===t?(i=gr,n=yr,a=vr,s=()=>U,o=1):4===t&&(i=br,n=wr,a=Sr,s=()=>B,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ai(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=li(4+s+t);return B[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(ai,d),d},argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction(e){ai(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=$e(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ur={},xr=e=>{var t=Ur[e];return void 0===t?$e(e):t},Br=[],Tr=(e,t,r,i,n)=>(e=Br[e])(t=sr.toValue(t),t[r=xr(r)],i,n),kr=e=>{var t=Br.length;return Br.push(e),t},Cr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Pr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(B[t>>2]=sr.toHandle(i)),n},Lr=(e,t,r)=>{var i=Dr(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],c=0;ce.name)).join(", ")}) => ${n.name}>`;return kr(vt(h,u))},Fr=e=>{var t=sr.toValue(e);qt(t),rr(e)},Ir=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),$r=e=>{j("OOM")},Nr=e=>{E.length,$r()},Or={},Gr=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:Gr()};for(var t in Or)void 0===Or[t]?delete e[t]:e[t]=Or[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Wr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Vr=(e,t)=>{var r=0;return Hr().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Wr(i,s),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return ke.close(t),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:ke.isDir(r.mode)?3:ke.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+8>>2]=K[0],x[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+16>>2]=K[0],x[t+20>>2]=K[1],0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=B[t+4>>2];t+=8;var d=ke.read(e,S,a,o,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,n){var s=Ir(t,r);try{if(isNaN(s))return 61;var a=De.getStreamFromFD(e);return ke.llseek(a,s,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[n>>2]=K[0],x[n+4>>2]=K[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=B[t+4>>2];t+=8;var d=ke.write(e,S,a,o,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Qr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Jr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ke.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return ke.isDir(this.mode)}},isDevice:{get:function(){return ke.isChrdev(this.mode)}}}),ke.FSNode=ei,ke.createPreloadedFile=xe,ke.staticInit(),ze(),Ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Ft=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Qt(),nr();var ii,ni={o:ae,A:Pe,s:Le,q:Re,C:Xe,D:Vt,y:Xt,h:Jt,B:or,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:Tr,g:rr,e:Lr,d:Fr,a:Mr,i:Rr,w:zr,r:Nr,u:Vr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},si=ie(),ai=e=>(ai=si.G)(e),oi=()=>(oi=si.I)(),di=e=>(di=si.J)(e),li=e=>(li=si.K)(e),ci=e=>(ci=si.M)(e);function ui(){function e(){ii||(ii=!0,n.calledRun=!0,C||(R(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,a,o,d)=>(n.dynCall_viiijj=si.N)(e,t,r,i,s,a,o,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=si.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=si.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=si.Q)(e,t,r,i,s),H=function e(){ii||ui(),ii||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ui(),t.ready}})(),o=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=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 c(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 u,h=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 f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(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 i={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")}},n=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}}(),s=p(),a=p(),d=p(),u=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 s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,a,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Vt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],jt=Vt,qt=Vt;function Yt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Kt(e){return Xt(e)&&e[1]===Tt}function Xt(e){return e[0]>>4===Oe}const Zt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Jt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,a=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Zt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Zt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Ot.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),a=s-3):(i=2,r=new Array(2),a=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=s):(i=5,a=s,r=new Array(4),s>=6?a=s-3:1===d&&(i=2,r=new Array(2),a=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=jt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class er{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Wt(t.subarray(i+3,i+3+n)),a=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}a=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let o=s.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=jt[a.sampling_freq_index],a.channel_config=n,a.other_data_present=d}let o=0;for(;;){let e=s.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function rr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 ir(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++;return{payload:e.subarray(i),type:n,size:s,uuid:a}}function nr(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 sr(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 ar(){return(new Date).getTime()}function or(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function dr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function lr(e){let t=0,r=dr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=dr(),a=s-r;a>=1e3&&(e(t/a*1e3),r=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){}})();function cr(e){return null==e}function ur(e){return!cr(e)}function hr(e){return"function"==typeof e}function fr(e){let t=null,r=31&e[0];return r!==Ve&&r!==je||(t=$e),t||(r=(126&e[0])>>1,r!==at&&r!==dt&&r!==ct||(t=Ne)),t}function pr(){return"undefined"!=typeof WritableStream}function mr(e){e.close()}function _r(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 gr(e){return e.ok&&e.status>=200&&e.status<=299}function yr(){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}(B)}function vr(e){return e[0]>>4===kt&&e[1]===Tt}function br(e){return!0===e||"true"===e}function wr(e){return!0!==e&&"true"!==e}function Sr(){return!!(Ot.Worker&&Ot.MediaSource&&"canConstructInDedicatedWorker"in Ot.MediaSource&&!0===Ot.MediaSource.canConstructInDedicatedWorker)}function Er(e,t){const r=rr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===et||r===rt||r===nt)||wr(t)&&r===qe)&&(i=!0)})),i}var Ar=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 Ur=Symbol(32),xr=Symbol(16),Br=Symbol(8);class Tr{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 Ar(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(Ur)}readU16(){return this.read(xr)}readU8(){return this.read(Br)}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===Ur){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===xr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Br){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}}Tr.U32=Ur,Tr.U16=xr,Tr.U8=Br;class kr{constructor(e){this.log=function(t){if(e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=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=Cr._ebsp2rbsp(e),r=new Wt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Cr.getProfileString(i),a=Cr.getLevelString(n),o=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,U=2*e,S=A/U}}let x=1;1===b&&1===w||(x=b/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*(f+1),C=16*(p+1)*(2-m);k-=(_+g)*B,C-=(y+v)*T;let D=Math.ceil(k*x);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Cr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:U,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,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=Cr._ebsp2rbsp(e),n=new Wt(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=Cr.getProfileString(s),d=Cr.getLevelString(a),l=1,c=420,u=[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&&(c=u[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=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=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);x=n.readBool(),B=t,T=2*e,U=B/T}}let k=1;1===E&&1===A||(k=E/A);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 P=16*(_+1),L=16*(g+1)*(2-y);P-=(v+b)*C,L-=(w+S)*D;let F=Math.ceil(P*k);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:c,chroma_format_string:Cr.getChromaFormatString(c),frame_rate:{fixed:x,fps:U,fps_den:T,fps_num:B},sar_ratio:{width:E,height:A},codec_size:{width:P,height:L},present_size:{width:F,height:L}}}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 Lr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Fr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Cr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,n&&(a[d]=252|s.chroma_format_idc,a[d+1]=248|s.bit_depth_luma-8,a[d+2]=248|s.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Ir(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}function Mr(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 Rr(e){return 31&e[0]}function zr(e){return e===Xe}function $r(e){return!function(e){return e===Ve||e===je}(e)&&!zr(e)}function Nr(e){return e===qe}function Or(e){if(0===e.length)return!1;const t=Rr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Qe||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Hr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Wr=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)},Vr=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"}};class jr{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 parseVPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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()}}static parseSPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=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&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&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();M=n;let s=!0,a=1;n||(s=r.readBool());let o=!1;if(s?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Wr(e),r=new Wt(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()}})(t),a=(e=>{let t=Wr(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),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()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(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();M=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=Wr(e),r=new Wt(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}})(r);n=Object.assign(n,s,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|at,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|dt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|ct,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Zr(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}function Jr(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 Qr(e){return(126&e[0])>>1}function ei(e){return e===ht}function ti(e){return!function(e){return e>=32&&e<=40}(e)}function ri(e){return e>=16&&e<=21}function ii(e){if(0===e.length)return!1;const t=Qr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class si{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ai(e){return parseInt(e)===e}function oi(e){if(!ai(e.length))return!1;for(var t=0;t255)return!1;return!0}function di(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(!oi(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ai(e.length)&&oi(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function li(e){return new Uint8Array(e)}function ci(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 ui,hi={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("")}},fi=(ui="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ui[15&i])}return t.join("")}}),pi={16:10,24:12,32:14},mi=[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],_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ai=[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],Ui=[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],xi=[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],Bi=[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],Ti=[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],ki=[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 Ci(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^_i[a>>8&255]<<16^_i[255&a]<<8^_i[a>>24&255]^mi[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^_i[a>>16&255]<<16^_i[a>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Bi[a>>16&255]^Ti[a>>8&255]^ki[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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^vi[i[(n+1)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=li(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(_i[i[n]>>24&255]^a>>24),o[4*n+1]=255&(_i[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(_i[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(_i[255&i[(n+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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^Ei[i[(n+3)%4]>>16&255]^Ai[i[(n+2)%4]>>8&255]^Ui[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=li(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(gi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(gi[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(gi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(gi[255&i[(n+1)%4]]^a);return o};var Pi=function(e){if(!(this instanceof Pi))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Di(e)};Pi.prototype.encrypt=function(e){if((e=di(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=li(e.length),r=li(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)},Mi.prototype.setBytes=function(e){if(16!=(e=di(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Mi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Ri=function(e,t){if(!(this instanceof Ri))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Mi||(t=new Mi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Di(e)};Ri.prototype.encrypt=function(e){for(var t=di(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=a<<24-(i+s)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,a=this.blockSize,o=s/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,a=0;a>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],U=e[t+14],x=e[t+15],B=s[0],T=s[1],k=s[2],C=s[3];B=l(B,T,k,C,a,7,o[0]),C=l(C,B,T,k,d,12,o[1]),k=l(k,C,B,T,f,17,o[2]),T=l(T,k,C,B,p,22,o[3]),B=l(B,T,k,C,m,7,o[4]),C=l(C,B,T,k,_,12,o[5]),k=l(k,C,B,T,g,17,o[6]),T=l(T,k,C,B,y,22,o[7]),B=l(B,T,k,C,v,7,o[8]),C=l(C,B,T,k,b,12,o[9]),k=l(k,C,B,T,w,17,o[10]),T=l(T,k,C,B,S,22,o[11]),B=l(B,T,k,C,E,7,o[12]),C=l(C,B,T,k,A,12,o[13]),k=l(k,C,B,T,U,17,o[14]),B=c(B,T=l(T,k,C,B,x,22,o[15]),k,C,d,5,o[16]),C=c(C,B,T,k,g,9,o[17]),k=c(k,C,B,T,S,14,o[18]),T=c(T,k,C,B,a,20,o[19]),B=c(B,T,k,C,_,5,o[20]),C=c(C,B,T,k,w,9,o[21]),k=c(k,C,B,T,x,14,o[22]),T=c(T,k,C,B,m,20,o[23]),B=c(B,T,k,C,b,5,o[24]),C=c(C,B,T,k,U,9,o[25]),k=c(k,C,B,T,p,14,o[26]),T=c(T,k,C,B,v,20,o[27]),B=c(B,T,k,C,A,5,o[28]),C=c(C,B,T,k,f,9,o[29]),k=c(k,C,B,T,y,14,o[30]),B=u(B,T=c(T,k,C,B,E,20,o[31]),k,C,_,4,o[32]),C=u(C,B,T,k,v,11,o[33]),k=u(k,C,B,T,S,16,o[34]),T=u(T,k,C,B,U,23,o[35]),B=u(B,T,k,C,d,4,o[36]),C=u(C,B,T,k,m,11,o[37]),k=u(k,C,B,T,y,16,o[38]),T=u(T,k,C,B,w,23,o[39]),B=u(B,T,k,C,A,4,o[40]),C=u(C,B,T,k,a,11,o[41]),k=u(k,C,B,T,p,16,o[42]),T=u(T,k,C,B,g,23,o[43]),B=u(B,T,k,C,b,4,o[44]),C=u(C,B,T,k,E,11,o[45]),k=u(k,C,B,T,x,16,o[46]),B=h(B,T=u(T,k,C,B,f,23,o[47]),k,C,a,6,o[48]),C=h(C,B,T,k,y,10,o[49]),k=h(k,C,B,T,U,15,o[50]),T=h(T,k,C,B,_,21,o[51]),B=h(B,T,k,C,E,6,o[52]),C=h(C,B,T,k,p,10,o[53]),k=h(k,C,B,T,w,15,o[54]),T=h(T,k,C,B,d,21,o[55]),B=h(B,T,k,C,v,6,o[56]),C=h(C,B,T,k,x,10,o[57]),k=h(k,C,B,T,g,15,o[58]),T=h(T,k,C,B,A,21,o[59]),B=h(B,T,k,C,m,6,o[60]),C=h(C,B,T,k,S,10,o[61]),k=h(k,C,B,T,f,15,o[62]),T=h(T,k,C,B,b,21,o[63]),s[0]=s[0]+B|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),a=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,a){var o=e+(t&r|~t&i)+n+a;return(o<>>32-s)+t}function c(e,t,r,i,n,s,a){var o=e+(t&i|r&~i)+n+a;return(o<>>32-s)+t}function u(e,t,r,i,n,s,a){var o=e+(t^r^i)+n+a;return(o<>>32-s)+t}function h(e,t,r,i,n,s,a){var o=e+(r^(t|~i))+n+a;return(o<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Ht((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=$i).lib,n=i.WordArray,s=i.Hasher,a=r.algo,o=[],d=a.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(n&s|~n&a):l<40?1859775393+(n^s^a):l<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,d=a,a=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(o[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=a.SHA256=s.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Ht((function(e,t){var r,i,n,s,a,o;e.exports=(i=(r=o=$i).lib.WordArray,n=r.algo,s=n.SHA256,a=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(a),r.HmacSHA224=s._createHmacHelper(a),o.SHA224)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,a=e.algo;function o(){return n.create.apply(n,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,U=u.high,x=u.low,B=h.high,T=h.low,k=f,C=p,D=m,P=_,L=g,F=y,I=v,M=b,R=w,z=S,$=E,N=A,O=U,G=x,H=B,W=T,V=0;V<80;V++){var j,q,Y=l[V];if(V<16)q=Y.high=0|e[t+2*V],j=Y.low=0|e[t+2*V+1];else{var K=l[V-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[V-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[V-7],ae=se.high,oe=se.low,de=l[V-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&$^~R&O,fe=z&N^~z&G,pe=k&D^k&L^D&L,me=C&P^C&F^P&F,_e=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[V],we=be.high,Se=be.low,Ee=H+ye+((ue=W+ve)>>>0>>0?1:0),Ae=ge+me;H=O,W=G,O=$,G=N,$=R,N=z,R=I+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,I=L,M=F,L=D,F=P,D=k,P=C,k=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+k+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

    >>0?1:0),y=s.low=y+F,s.high=g+L+(y>>>0>>0?1:0),b=a.low=b+M,a.high=v+I+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+N,c.high=E+$+(A>>>0>>0?1:0),x=u.low=x+G,u.high=U+O+(x>>>0>>0?1:0),T=h.low=T+W,h.high=B+H+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Ht((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=$i).x64,n=i.Word,s=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var o=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(T=r[n]).high^=a,T.low^=s}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(T=r[h+5*m]).high,p^=T.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(T=r[h+5*m]).high^=f,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var U=u[l[w]];U.high=f,U.low=p}var x=u[0],B=r[0];for(x.high=B.high,x.low=B.low,h=0;h<5;h++)for(m=0;m<5;m++){var T=r[w=h+5*m],k=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var P=c[o];T.high^=P.high,T.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,o)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,a,f,b,w,S,E,A,U,x,B,T=this._hash.words,k=u.words,C=h.words,D=o.words,P=d.words,L=l.words,F=c.words;for(S=s=T[0],E=a=T[1],A=f=T[2],U=b=T[3],x=w=T[4],r=0;r<80;r+=1)B=s+e[t+D[r]]|0,B+=r<16?p(a,f,b)+k[0]:r<32?m(a,f,b)+k[1]:r<48?_(a,f,b)+k[2]:r<64?g(a,f,b)+k[3]:y(a,f,b)+k[4],B=(B=v(B|=0,L[r]))+w|0,s=w,w=b,b=v(f,10),f=a,a=B,B=S+e[t+P[r]]|0,B+=r<16?y(E,A,U)+C[0]:r<32?g(E,A,U)+C[1]:r<48?_(E,A,U)+C[2]:r<64?m(E,A,U)+C[3]:p(E,A,U)+C[4],B=(B=v(B|=0,F[r]))+x|0,S=x,x=U,U=v(A,10),A=E,E=B;B=T[1]+f+U|0,T[1]=T[2]+b+x|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+a+A|0,T[0]=B},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,a=0;a<5;a++){var o=s[a];s[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Ht((function(e,t){var r,i,n;e.exports=(i=(r=$i).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),a=this._iKey=t.clone(),o=s.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),a=n.cfg;return m.create({ciphertext:s,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)a=l.create({keySize:t+r,hasher:n}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=s.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Ht((function(e,t){var r;e.exports=((r=$i).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,a=this._counter;s&&(a=this._counter=s.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[a/r|0]<<24),s[a]=s[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^n[d])&c[d])>>>0];this._lBlock=a,this._rBlock=s^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var a=n%r,o=t[a>>>2]>>>24-a%4*8&255;s=(s+i[n]+o)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var a=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][n],a+=e.sbox[3][s],a}function l(e,t,r){let i,s=t,a=r;for(let t=0;t1;--t)s^=e.pbox[t],a=d(e,s)^a,i=s,s=a,a=i;return i=s,s=a,a=i,a^=e.pbox[1],s^=e.pbox[0],{left:s,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)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=e.slice(s+4+2,s+4+a);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}return e}function Gi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Ht((function(e,t){e.exports=$i}));var Hi=Ht((function(e,t){var r,n,s,a=(r=new Date,n=4,s={setLogLevel:function(e){n=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>=n&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);a.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+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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 r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.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)),a.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,s)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,o=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?a.info:a.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(a.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' 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?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+n+" 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)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 r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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=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())}})),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(),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(", ")+")"})),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,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})),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),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()))})),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&s)<<8|e.readUint8():a.property_index=127&s}}})),h.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:a.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(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()})),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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)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=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){a.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){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.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),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(),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}})),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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 n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}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,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},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>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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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))},g.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&&(a.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),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.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)&&(a.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*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 s=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+s),{offset:s,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-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 u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),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 h["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}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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"),n=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-(n.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.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,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),x.cts=e.samples[t].dts+a.sample_offsets[S]):x.cts=x.dts,o?(t==o.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+U==t+1&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+U==t&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return a.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+")"),d.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===s)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,o),n.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Wi(e){return e.reduce(((e,t)=>256*e+t))}function Vi(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]))}Hi.Log,Hi.MP4BoxStream,Hi.DataStream,Hi.MultiBufferStream,Hi.MPEG4DescriptorParser,Hi.BoxParser,Hi.XMLSubtitlein4Parser,Hi.Textin4Parser,Hi.ISOFile,Hi.createFile;class ji{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],Vi(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}}function qi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Yi=16,Ki=[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 Zi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Qi(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}function en(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("")}function tn(e,t){const r=31&t;return e<>>32-r}function rn(e){return(255&Ki[e>>>24&255])<<24|(255&Ki[e>>>16&255])<<16|(255&Ki[e>>>8&255])<<8|255&Ki[255&e]}function nn(e){return e^tn(e,2)^tn(e,10)^tn(e,18)^tn(e,24)}function sn(e){return e^tn(e,13)^tn(e,23)}function an(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]^=nn(rn(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=nn(rn(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=nn(rn(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=nn(rn(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 on(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Xi[r+0],t[r+0]=i[0]^=sn(rn(e)),e=i[2]^i[3]^i[0]^Xi[r+1],t[r+1]=i[1]^=sn(rn(e)),e=i[3]^i[0]^i[1]^Xi[r+2],t[r+2]=i[2]^=sn(rn(e)),e=i[0]^i[1]^i[2]^Xi[r+3],t[r+3]=i[3]^=sn(rn(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function dn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=Zi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Zi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Qi(e):Zi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Yi-e.length%Yi;for(let r=0;r=Yi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),a=5;for(;an){const t=new Uint8Array(s.length+e.length-a);t.set(s,0),t.set(e.slice(a),s.length),s=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=dn(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(a+4,a+4+u),0);const o=nr(qi(n,new Uint8Array(r))),l=new Uint8Array(s.length+o.length);l.set(s,0),l.set(o,s.length),s=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(o,s.length),r.set(t,s.length+4),s=r}a=a+4+d}return s}const un={init:0,findFirstStartCode:1,findSecondStartCode:2};class hn extends class{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(){i.off(e,n);for(var s=arguments.length,a=new Array(s),o=0;o1?r-1:0),n=1;n{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=un.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findFirstStartCode}}}}function fn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)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=fn(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}return e}function _n(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class gn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{hr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class yn{static init(){yn.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 yn.types)yn.types.hasOwnProperty(e)&&(yn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=yn.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 yn.box(yn.types.trak,yn.tkhd(e),yn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return yn.box(yn.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 yn.box(yn.types.mdia,yn.mdhd(e),yn.hdlr(e),yn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return yn.box(yn.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?yn.constants.HDLR_AUDIO:yn.constants.HDLR_VIDEO,yn.box(yn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?yn.box(yn.types.smhd,yn.constants.SMHD):yn.box(yn.types.vmhd,yn.constants.VMHD),yn.box(yn.types.minf,t,yn.dinf(),yn.stbl(e))}static dinf(){return yn.box(yn.types.dinf,yn.box(yn.types.dref,yn.constants.DREF))}static stbl(e){return yn.box(yn.types.stbl,yn.stsd(e),yn.box(yn.types.stts,yn.constants.STTS),yn.box(yn.types.stsc,yn.constants.STSC),yn.box(yn.types.stsz,yn.constants.STSZ),yn.box(yn.types.stco,yn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp3(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp4a(e)):"avc"===e.videoType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.avc1(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.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 yn.box(yn.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 yn.box(yn.types.mp4a,i,yn.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 yn.box(yn.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 yn.box(yn.types.avc1,n,yn.box(yn.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 yn.box(yn.types.hvc1,n,yn.box(yn.types.hvcC,t))}static mvex(e){return yn.box(yn.types.mvex,yn.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 yn.box(yn.types.trex,r)}static moof(e,t){return yn.box(yn.types.moof,yn.mfhd(e.sequenceNumber),yn.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 yn.box(yn.types.mfhd,t)}static traf(e,t){let r=e.id,i=yn.box(yn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=yn.box(yn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=yn.sdtp(e),a=yn.trun(e,s.byteLength+16+16+8+16+8+8);return yn.box(yn.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,yn.box(yn.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),yn.box(yn.types.trun,r)}static mdat(e){return yn.box(yn.types.mdat,e)}}yn.init();var vn,bn=Ht((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(vn=bn)&&vn.__esModule&&Object.prototype.hasOwnProperty.call(vn,"default")&&vn.default;const wn=[44100,48e3,32e3,0],Sn=[22050,24e3,16e3,0],En=[11025,12e3,8e3,0],An=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Un=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],xn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function Bn(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=En[a];break;case 2:d=Sn[a];break;case 3:d=wn[a]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),a=n-3):(i=2,t=new Array(2),a=n):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=n):(i=5,a=n,t=new Array(4),n>=6?a=n-3:1===s&&(i=2,t=new Array(2),a=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Gn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Vn{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function jn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const qn=new Array(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),Yn=new Array(2746333894,1453994832,1736282519,2993693404),Kn=new Array(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 Xn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Jn(e,t){return t+3>>19)^(i<<23|i>>>9)}function ts(e,t){var r=new Array(36);r[0]=Jn(t,0),r[1]=Jn(t,4),r[2]=Jn(t,8),r[3]=Jn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^rs(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function is(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Qn(e),n=Math.ceil(r.length/16),s=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let a=5;for(;as)break;let d=e[a+4],l=!1,c=2;if(i?(n&&(c=3),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=is(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-2-2024" '+(wr(false)?"and is Trial Version[试用版本]":""));const ss=[];ss.push(a({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][audio wasm]:",e)}}),s({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support, using thread emulation"))})(e)||console.warn("JbPro[❌❌❌][video wasm]:",e)}})),Promise.all(ss).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=[],s=[],a=null,o=null,d=null,l=null,c=null,u=null,h=!1,f=null,S=null,E=!1,B=!1,Se=!!br(r),Ee=0,qe=0,Qe=!1,et=null,rt=null,nt=null,ht=[],Ut=null,xt=null,kt=0,Ot=0,Gt=null,Ht=null,Wt=0,Vt=0,jt=!1,Zt=!1,tr=!1,dr=null,Ar=null,Ur=!1,xr=!0,Br=0,Dr=0,Wr=()=>{const e=yr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(a={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){a.decoder=new VideoDecoder({output:function(e){if(hr(e.createImageBitmap))e.createImageBitmap().then((t=>{a.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ci.delay,ts:0},[r]),mr(e)}));else{a.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ci.delay,ts:0},[t]),mr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){a.reset(),a.decoder&&"closed"!==a.decoder.state&&(a.decoder.close(),a.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(a.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?mt:_t});a.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Me?(n=Pr(s),i={codec:n.codec,description:s}):t===Re&&(n=Yr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),a.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),a.isEmitInfo=!0,a.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),a.offscreenCanvasCtx=a.offscreenCanvas.getContext("2d"));try{a.decoder.configure(i),a.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){a.hasInit=!1,a.isEmitInfo=!1,a.offscreenCanvas=null,a.offscreenCanvasCtx=null}});let Vr=function(){if(Ur=!0,o)try{o.abort(),o=null,ci.debugLog("worker","abort success")}catch(e){o=null,ci.debugLog("worker","abort catch",e)}},Kr={init(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},destroy(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=Kr.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");Kr.handleVideoFrames(e)}else Kr.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=Kr.localDts;return Kr.localDts=Kr.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return Kr.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{const t=Rr(e);t===je||t===Ve?Kr.handleVideoH264Nalu(e):$r(t)&&i.push(e)})),1===i.length)Kr.handleVideoH264Nalu(i[0]);else if(Or(i)){const e=Rr(i[0]),t=Nr(e);Kr.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH264Nalu(e)}))}else if(Kr.streamType===Ne)if(ci._opt.nakedFlowH265DemuxUseNew){const t=Kr.handleAddNaluStartCode(e),r=Kr.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Qr(e);t===ct||t===dt||t===at?Kr.handleVideoH265Nalu(e):ti(t)&&i.push(e)})),1===i.length)Kr.handleVideoH265Nalu(i[0]);else if(ii(i)){const e=Qr(i[0]),t=ri(e);Kr.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH265Nalu(e)}))}else Qr(e)===ct?Kr.extractH265PPS(e):Kr.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{zr(Rr(e))?Kr.extractH264SEI(e):Kr.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{ei(Qr(e))?Kr.extractH265SEI(e):Kr.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.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=Rr(e);switch(t){case Ve:Kr.sps=e;break;case je:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Lr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if($r(t)){const r=Nr(t),i=Kr.getNaluDts(),n=Ir(e,r);Kr.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if(Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Lr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}},handleVideoH264NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Mr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Qr(e);switch(t){case at:Kr.vps=e;break;case dt:Kr.sps=e;break;case ct:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.vps&&Kr.sps&&Kr.pps){const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}if(ti(t)){const r=ri(t),i=Kr.getNaluDts(),n=Zr(e,r);Kr.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if(Kr.vps&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}},handleVideoH265NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Jr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!Kr.streamVideoType)for(let t of e)if(Kr.streamVideoType=fr(t),Kr.streamVideoType)break;Kr.streamVideoType?Kr.streamVideoType===$e?Kr.handleVideoH264Frames(e):Kr.streamVideoType===Ne&&Kr.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Rr(a);let o=!1,d=e===Ke;e!==Ye&&e!==Ke||(s=Kr.parseVideo264Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case je:Kr.pps=e;break;case Ve:Kr.sps=e;break;case Xe:n=e}if($r(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Fr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Fr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(i){const e=Kr.getNaluDts(),t=Mr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!1);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Qr(a);let o=!1,d=ri(e);ti(e)&&(s=Kr.parseVideo265Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ct:Kr.pps=e;break;case dt:Kr.sps=e;break;case at:Kr.vps=e;break;case pt:case ft:n=e}if(ti(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps&&Kr.vps){Kr.isSendSeqHeader=!0;const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps&&Kr.vps){const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(i){const e=Kr.getNaluDts(),t=Jr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!0);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{Kr.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Vn(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Vn(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},ai={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){ai.mp4Box=Hi.createFile(),ai.mp4Box.onReady=ai.onReady,ai.mp4Box.onError=ai.onError,ai.mp4Box.onSamples=ai.onSamples},initTransportDescarmber(){ai.transportDescarmber=new ji},_getSeqHeader(e){const t=ai.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Hi.DataStream(void 0,0,Hi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(ai.isHevc=!0,ci.isHevc=!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){ci.debugLog(ai.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){ai.videoTrackId=t.id;const e=ai._getSeqHeader(t);e&&(ci.debugLog(ai.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),ai.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){ai.audioTrackId=r.id;const e=r.audio||{},t=qt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");ai.mp4Box.setExtractionOptions(r.id);const n=Yt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(ai.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(n,0)}ai.mp4Box.start()},onError(e){ci.debugError(ai.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===ai.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&&ci.calcIframeIntervalTimestamp(i);let n=null;n=ai.isHevc?Jr(t,r):Mr(t,r),ci.decode(n,{type:oe,ts:i,isIFrame:r,cts:0})}ai.mp4Box.removeUsedSamples(e)}else if(e===ai.audioTrackId){if(ci._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),ci.decode(i,{type:ae,ts:r,isIFrame:!1,cts:0})}ai.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(ai.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);ai.transportDescarmber&&(t=ai.transportDescarmber.transport(t)),t.buffer.fileStart=ai.offset,ai.offset+=t.byteLength,ai.mp4Box.appendBuffer(t.buffer)},destroy(){ai.mp4Box&&(ai.mp4Box.stop(),ai.mp4Box.flush(),ai.mp4Box.destroy(),ai.mp4Box=null),ai.transportDescarmber&&(ai.transportDescarmber.destroy(),ai.transportDescarmber=null),ai.offset=0,ai.videoTrackId=null,ai.audioTrackId=null,ai.isHevc=!1}},oi={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);oi.extractNALu(t)},destroy(){oi.lastBuffer=new Uint8Array(0),oi.parsedOffset=0,oi.firstStartCodeOffset=0,oi.secondStartCodeOffset=0,oi.state="init",oi.hasInitVideoCodec=!1,oi.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(oi.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(oi.lastBuffer.length+e.length);for(t.set(oi.lastBuffer,0),t.set(new Uint8Array(e),oi.lastBuffer.length),oi.lastBuffer=t;;){if("init"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findFirstStartCode",oi.firstStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findSecondStartCode",oi.secondStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===oi.state){if(!(oi.lastBuffer.length-oi.parsedOffset>0))break;{let e,t,r=192&oi.lastBuffer[oi.parsedOffset];e=0==r?oi.secondStartCodeOffset-14:oi.secondStartCodeOffset;let i=0==(192&oi.lastBuffer[oi.firstStartCodeOffset+4]);if(i){if(oi.firstStartCodeOffset-14<0)return void ci.debugWarn(oi.LOG_NAME,"firstStartCodeOffset -14 is",oi.firstStartCodeOffset-14);oi.hasInitVideoCodec||(oi.hasInitVideoCodec=!0,ci.debugLog(oi.LOG_NAME,"setCodec"),hi.setCodec(ze,"")),t=oi.lastBuffer.subarray(oi.firstStartCodeOffset-14,e)}else t=oi.lastBuffer.subarray(oi.firstStartCodeOffset,e);let n=oi.getNaluDts();oi.hasInitVideoCodec?(postMessage({cmd:O,type:Be,value:t.byteLength}),postMessage({cmd:O,type:Te,value:n}),Ee=n,hi.decode(t,i?1:0,n)):ci.debugWarn(oi.LOG_NAME,"has not init video codec"),oi.lastBuffer=oi.lastBuffer.subarray(e),oi.firstStartCodeOffset=0==r?14:0,oi.parsedOffset=oi.firstStartCodeOffset+4,oi.state="findFirstStartCode"}}}},getNaluDts(){let e=oi.localDts;return oi.localDts=oi.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Hn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=_n(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==s),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==a||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===s||s===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[s]===Mn){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[s]){let r=188-c,i=di.pmt_.pid_stream_type[s];s!==di.pmt_.common_pids.h264&&s!==di.pmt_.common_pids.h265&&s!==di.pmt_.common_pids.adts_aac&&s!==di.pmt_.common_pids.loas_aac&&s!==di.pmt_.common_pids.ac3&&s!==di.pmt_.common_pids.eac3&&s!==di.pmt_.common_pids.opus&&s!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[s]&&!0!==di.pmt_.timed_id3_pids[s]&&!0!==di.pmt_.synchronous_klv_pids[s]&&!0!==di.pmt_.asynchronous_klv_pids[s]||di.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,a));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):di.clearSlices(s,i)}for(let o=1+a;o=s.expected_length&&di.clearSlices(s,i),o+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):s.total_length>=s.expected_length&&di.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let a=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new $n,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let o=di.pes_slice_queues_[i.pid];o.slices.push(n),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=n.byteLength,o.expected_length>0&&o.expected_length===o.total_length?di.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==n){if(n<3+o)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Tn:case kn:di.parseMP3Payload(c,r);break;case Cn:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):di.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Dn:di.parseADTSAACPayload(c,r);break;case Pn:di.parseLOASAACPayload(c,r);break;case Ln:case Fn:break;case In:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,s,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Rn:di.parseH264Payload(c,r,s,e.random_access_indicator);break;case zn:di.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Cn){let r,s=6;r=0!==n?n:t.byteLength-s;let a=t.subarray(s,s+r);di.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let a=null;if(1===n&&0===s)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=di.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),di.pat_=a,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=di._initPmt(),r.program_number=n,r.version_number=s,di.program_pmt_map_[n]=r;else if(r=di.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Xr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Fr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let n=di.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Qt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new er(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame(cr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ae};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new Wn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Yt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(n,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new On;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/di.timescale_);s.pts=e}else s.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===oe?di._doDecodeVideo({...e,payload:t}):e.type===ae&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Jr(t,e.isIFrame):Mr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:oe,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;br(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ae,ts:e.dts,isIFrame:!1,cts:0})}},li=null;Sr()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new gn,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!wr(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===bt,isStateClosed:()=>li.getState()===wt,isStateEnded:()=>li.getState()===vt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,St,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,At,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(wr(li.hasInit))if(r&&e[1]===Tt){const i=15&e[0];if(i===Re&&wr(ci._opt.supportMSEDecodeHevc))return void li.emitError(Fe.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Me?r=Pr(e.slice(5)):t===Re&&(r=qr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Fe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(vr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Me?s=Pr(n):i===Re&&(s=Yr(n)),li.videoInfo.width=s.codecWidth,li.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),li.emitError(Fe.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const a={id:Ft,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},o=yn.generateInitSegment(a);li.isAvc=i===Me;let d=s.codec;return li.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:li.isAvc?gt:yt,postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),li._initSourceBuffer(),li.appendBuffer(o.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===We,s=r===Oe;if(wr(s||n))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Fe.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Kt(e)){if(o=Jt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!n)return!1;if(o=Bn(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;n&&wr(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=yn.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),wr(li.isAudioInitInfo)&&(Ar=r===Oe?i?16:8:0===i?8:16,postMessage({cmd:L,code:r}),postMessage({cmd:P,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:Ar}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=s,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Fe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),a=s.byteLength;if(0===a)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=o,d=!0);const l=o-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=yn.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendBuffer(n.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Ft,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=a,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=s,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=yn.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendAudioBuffer(n.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=It,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=n,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Fe.mediaSourceAudioInitTimeout)}),1e3)));if(wr(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(wr(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:n,end:t})}}else s=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:n,end:t})}}else sli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&wr(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&wr(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&wr(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&wr(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(wr(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Dt,_opt:Wr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Qe,wasmDecodeDelay:Ee-qe});postMessage({cmd:O,type:Ce,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ae)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Qe=!1,ci.delay=t-r):(Qe=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ae)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===oe&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ae?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===oe&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===oe&&a.decode?a.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===n.length)return;const t=e.ts,i=n[0],s=e.type===oe&&vr(e.payload);if(wr(r))s&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i));else{const r=i.ts-t,a=i.type===ae&&e.type===oe;(r<=20||a||s)&&(ci.debugLog("worker",`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 ${a} and isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===v,t=ci._opt.playType===b;if(Kr.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),a&&ci._opt.useWCS&&ci.useOffscreen()&&a.init(),wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(n.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${n.length}`);if(ci.dropping){for(r=n.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${n.length}`);!r.isIFrame&&n.length;)r=n.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;n.length;)r=n.shift(),ci.doDecode(r);else if(r=n[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),n.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:H})):(n.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;n.length;){if(r=n[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${n.length}`);break}n.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();et||(et=e);const r=e-et;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),et=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(wr(ci._opt.checkFirstIFrame)&&(Se=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;n.length&&(e=n.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Vr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Ur=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&wr(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,et=null,Qe=!1,Ee=0,qe=0,a&&(a.destroy&&a.destroy(),a=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Wr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),n=[],s=[],u&&(u.close(),u=null),f=null,S=null,E=!1,B=!1,Se=!1,jt=!1,Zt=!1,tr=!1,dr=null,ht=[],kt=0,Ot=0,rt=null,nt=null,Gt=null,Ht=null,Ar=null,Wt=0,Vt=0,Ut=null,xt=null,ci.fetchStatus=Dt,xr=!0,Kr.destroy(),ai.destroy(),oi.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===ae&&Kt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===oe&&t.isIFrame&&vr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===w)if(t.type===oe){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ae&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Xt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===oe){if(Wt>0){const e=t.ts-Ht,r=Wt+Wt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Wt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Vt}`),Ht-t.ts>A&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Wt=0),ci._opt.isDropSameTimestampGop&&wr(t.isIFrame)&&Se)){const e=ci.hasIframeInBufferList(),t=wr(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),br(ci._opt.checkFirstIFrame)&&br(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}Ht>0&&(Wt=t.ts-Ht),Vt=e.byteLength,Ht=t.ts}if(Se){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${n.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;n.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${n.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return n.forEach((t=>{t.type===oe&&(e+=1)})),e},hasIframeInBufferList:()=>n.some((e=>e.type===oe&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return n.forEach((e=>{e.type===oe&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return n.forEach((t=>{t.type===ae&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?Kr.lastBuf&&(e=Kr.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&ai.mp4Box&&(e=ai.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=lr((e=>{postMessage({cmd:O,type:Ue,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(ai.listenMp4Box(),ci._opt.isFmp4Private&&ai.initTransportDescarmber()),t.protocol===_){t.isFlv&&(u=new Tr(ci.demuxFlv())),o=new AbortController;const r=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(br(Ur))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Dt,void e.body.cancel();if(!gr(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Vr(),void postMessage({cmd:O,type:Fe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:ke}),pr())ci.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):br(Ur)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof e?(ci.fetchStatus=Pt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Lt,Vr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Lt,Vr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De}))):o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):br(Ur)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof n?(ci.fetchStatus=Pt,l(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ci.demuxFmp4(n):t.isMpeg4?ci.demuxMpeg4(n):t.isTs?ci.demuxTs(n):t.isNakedFlow&&ci.demuxNakedFlow(n),i()):ci.debugWarn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Bt?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(u=new Tr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:ke}),postMessage({cmd:O,type:Le})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),br(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:y,msg:e.code})):postMessage({cmd:O,type:De}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):br(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Fe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 de:if(a.byteLength>0){let e=a;br(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(a)),ci.decode(e,{type:ae,ts:s})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case le:if(a.byteLength>=6){const e=a[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(a,s);else{const e=15&a[0];let t=a[0]>>4===Ct;const i=e===Re;if(wr(t)&&br(Er(a,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&vr(a)&&null===ci.isHevc){const e=15&a[0];ci.isHevc=e===Re,dr=sr(a,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`)}t&&ci.calcIframeIntervalTimestamp(s),ci.isPlayer&&ci.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let n=r[0],o=ci.cryptoPayload(a,t);ci.decode(o,{type:oe,ts:s,isIFrame:t,cts:n})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case ce:postMessage({cmd:J,buffer:a},[a.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ae?ci._opt.hasAudio&&(postMessage({cmd:O,type:xe,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===oe&&ci._opt.hasVideo&&(postMessage({cmd:O,type:Be,value:e.byteLength}),postMessage({cmd:O,type:Te,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Oi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?ns(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):cn(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=mn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Oe&&(t=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,n=e[0]>>1&1;if(Ar=r===Oe?n?16:8:0===n?8:16,ui&&ui.setCodec||!wr(i))if(Kt(e)||r===Ge||r===He||r===We){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const n=r===Oe?e.slice(2):new Uint8Array(0);if(i){if(r===We)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,n);r===Oe&&postMessage({cmd:I,buffer:n},[n.buffer]),B=!0,r!==Oe&&(r===We?(ci.mp3Demuxer||(ci.mp3Demuxer=new hn(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(br(r)&&br(ci._opt.mseDecodeAudio))postMessage({cmd:N,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(B){if(Kt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===We?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Oe?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!wr(i))if(vr(e))if(r===Me||r===Re){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Me&&ci._opt.useSIMD){const e=Pr(t);if(e.codecWidth>U||e.codecHeight>U)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const n=new Uint8Array(e);E=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:M,code:r}),postMessage({cmd:R,buffer:n,codecId:r},[n.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,n){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,n,s);else if(br(r))postMessage({cmd:$,payload:e,isIFrame:n,ts:t,cts:s,delay:ci.delay},[e.buffer]);else if(E)if(!Se&&n&&(Se=!0),Se){if(n&&vr(e)){const t=15&e[0];let r={};t===Me?r=Pr(e.slice(5)):t===Re&&(r=qr(e)),r.codecWidth&&r.codecHeight&&f&&S&&(r.codecWidth!==f||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${f}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Zt=!0,postMessage({cmd:j,value:`width: ${f}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(Zt)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(tr)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(vr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${n.length}, need clear is ${e}`),e&&(n=[]),ci.isPlayer&&(ci.resetAllDelay(),br(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:H}))),br(ci._opt.checkFirstIFrame)&&wr(r)&&(Se=!1)},dropBuffer$2:function(){if(n.length>0){let e=n.findIndex((e=>br(e.isIFrame)&&e.type===oe));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:H});const t=n.length;n=n.slice(e);const r=n.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${n.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===n.length&&(ci.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 ae:ci.decode(new Uint8Array(e,5),{type:ae,ts:r});break;case oe:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ci._isEnhancedH265Header(n))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),vr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Re}ci.isPlayer&&ci.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=ci.cryptoPayload(i,e);ci.decode(a,{type:oe,ts:r,isIFrame:e,cts:n})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kr.dispatch(e)},demuxFmp4:function(e){ai.dispatch(e)},demuxMpeg4:function(e){oi.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=wr(d),n===Rt){if(i===Nt){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),dr=sr(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`),ci.decode(i,{type:oe,ts:t,isIFrame:!0,cts:0})}}}else if(n===zt){let r=e,n=0;const s=i===Nt;s&&ci.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0],r=Jr(e.slice(8),s),r=ci.cryptoPayload(r,s),ci.decode(r,{type:oe,ts:t,isIFrame:s,cts:n}))}else if(n===$t){const r=i===Nt;r&&ci.calcIframeIntervalTimestamp(t);let n=Jr(e.slice(5),r);n=ci.cryptoPayload(n,r),ci.decode(n,{type:oe,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Mt)===Mt},findSei:function(e,t){let r=4;ur(dr)&&(r=dr),rr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===pt||r===ft),n=wr(ci.isHevc)&&r===Xe;if(i||n){const r=ir(e,ci.isHevc);postMessage({cmd:Z,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Se&&e>0))return;null===rt?(rt=e,nt=ar()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===v&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${rt} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Pe,value:i}))},calcIframeIntervalTimestamp:function(e){null===Gt?Gt=e:Gt=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&br(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),jt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),jt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:k,w:t,h:r}),f=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:Ar}),Ot=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=f*S*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(Ut=null,qe=r,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,s);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:s,delay:ci.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=ci._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(kt){if(!(n>=(r=d-kt)))return kt+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...a[1])));ht[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,n-=r}for(kt=n;kt>=d;kt-=d)ht[0]=a[0].slice(o,o+=d),2==Ot&&(ht[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));kt&&(s[0]=a[0].slice(o),2==Ot&&(s[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===Ut&&(Ut=ar());const t=ar(),r=or(xt>0?2*xt:5e3,1e3,5e3),i=t-Ut;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${xt} and diff is ${i} and maxDiff is ${r}\n and replay`),tr=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){d?d.readyState===Ie?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),br(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,f=e,S=t,postMessage({cmd:k,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Ot=e,postMessage({cmd:P,sampleRate:t,channels:e,depth:Ar})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=ci._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(kt){if(!(n>=(r=d-kt)))return kt+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...a[1])));ht[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,n-=r}for(kt=n;kt>=d;kt-=d)ht[0]=a[0].slice(o,o+=d),2==Ot&&(ht[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));kt&&(s[0]=a[0].slice(o),2==Ot&&(s[1]=a[1].slice(o))),a=[]},draw:function(t,r,i,n){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const s=e.HEAPU8.subarray(r,r+Br),a=e.HEAPU8.subarray(i,i+Dr),o=e.HEAPU8.subarray(n,n+Dr),d=new Uint8Array(Br+Dr+Dr);if(d.set(s),d.set(a,Br),d.set(o,Br+Dr),Ut=null,qe=t,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:T}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case he:ci.pushBuffer(t.buffer,t.options);break;case fe:ci.decodeAudio(t.buffer,t.ts);break;case pe:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ge:ci.clearBuffer(t.needClear);break;case ye:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case me:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&wr(t.options.isVideoInited)&&(xr=t.options.isVideoInited),ci.close();break;case _e:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case ve:ci.sendWebsocketMessage(t.message);break;case be:li.$video.currentTime=Number(t.message);break;case we:ci.updatePlaybackIsPause(t.isPause)}}}(e[1],t)}))})); diff --git a/demo/public/pro/js/decoder-pro-simd.js b/demo/public/pro/js/decoder-pro-simd.js index 692044c3..4b0cff96 100644 --- a/demo/public/pro/js/decoder-pro-simd.js +++ b/demo/public/pro/js/decoder-pro-simd.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-simd.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_SIMD_WASM_URL&&""!=JESSIBUCA_PRO_SIMD_WASM_URL?JESSIBUCA_PRO_SIMD_WASM_URL:e};var s,a,o,d=Object.assign({},n),l="object"==typeof window,c="function"==typeof importScripts,u="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,h="";function f(e){return n.locateFile?n.locateFile(e,h):h+e}if(u){const{createRequire:e}=await import("module");var p=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),m=p("fs"),_=p("path");h=c?_.dirname(h)+"/":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.js",document.baseURI).href)),s=(e,t)=>(e=Y(e)?new URL(e):_.normalize(e),m.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=Y(e)?new URL(e):_.normalize(e),m.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(l||c)&&(c?h=self.location.href:"undefined"!=typeof document&&document.currentScript&&(h=document.currentScript.src),r&&(h=r),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},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)});var g,y,v=n.print||console.log.bind(console),b=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.quit&&n.quit,n.wasmBinary&&(g=n.wasmBinary),"object"!=typeof WebAssembly&&W("no native wasm support detected");var w,S,E,A,U,x,B,T,k=!1;function C(){var e=y.buffer;n.HEAP8=w=new Int8Array(e),n.HEAP16=E=new Int16Array(e),n.HEAPU8=S=new Uint8Array(e),n.HEAPU16=A=new Uint16Array(e),n.HEAP32=U=new Int32Array(e),n.HEAPU32=x=new Uint32Array(e),n.HEAPF32=B=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var D=[],P=[],L=[];function F(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)M(n.preRun.shift());ee(D)}function I(){ee(P)}function R(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)$(n.postRun.shift());ee(L)}function M(e){D.unshift(e)}function z(e){P.unshift(e)}function $(e){L.unshift(e)}var N=0,O=null;function G(e){N++,n.monitorRunDependencies&&n.monitorRunDependencies(N)}function H(e){if(N--,n.monitorRunDependencies&&n.monitorRunDependencies(N),0==N&&O){var t=O;O=null,t()}}function W(e){n.onAbort&&n.onAbort(e),b(e="Aborted("+e+")"),k=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var V,j="data:application/octet-stream;base64,",q=e=>e.startsWith(j),Y=e=>e.startsWith("file://");function K(e){if(e==V&&g)return new Uint8Array(g);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function X(e){if(!g&&(l||c)){if("function"==typeof fetch&&!Y(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((()=>K(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>K(e)))}function Z(e,t,r){return X(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{b(`failed to asynchronously prepare wasm: ${e}`),W(e)}))}function J(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||q(t)||Y(t)||u||"function"!=typeof fetch?Z(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return b(`wasm streaming compile failed: ${e}`),b("falling back to ArrayBuffer instantiation"),Z(t,r,i)}))))}function Q(){var e={a:Ar};function t(e,t){return Ur=e.exports,y=Ur.C,C(),rt=Ur.G,z(Ur.D),H(),Ur}if(G(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){b(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return J(g,V,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?q(V="decoder-pro-simd.wasm")||(V=f(V)):V=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 ee=e=>{for(;e.length>0;)e.shift()(n)};function te(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,w[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=w[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,w[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=w[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(kr(this.get_type()))return x[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var re,ie,ne,se=(e,t,r)=>{throw new te(e).init(t,r),e},ae=(e,t,r,i,n)=>{},oe=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);re=e},de=e=>{for(var t="",r=e;S[r];)t+=re[S[r++]];return t},le={},ce={},ue={},he=e=>{throw new ie(e)},fe=e=>{throw new ne(e)},pe=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&fe("Mismatched type converter count");for(var n=0;n{ce.hasOwnProperty(e)?n[t]=ce[e]:(s.push(e),le.hasOwnProperty(e)||(le[e]=[]),le[e].push((()=>{n[t]=ce[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function me(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||he(`type "${i}" must have a positive integer typeid pointer`),ce.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;he(`Cannot register type '${i}' twice`)}if(ce[e]=t,delete ue[e],le.hasOwnProperty(e)){var n=le[e];delete le[e],n.forEach((e=>e()))}}function _e(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return me(e,t,r)}var ge,ye=8,ve=(e,t,r,i)=>{_e(e,{name:t=de(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:ye,readValueFromPointer:function(e){return this.fromWireType(S[e])},destructorFunction:null})},be=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),we=e=>{he(e.$$.ptrType.registeredClass.name+" instance already deleted")},Se=!1,Ee=e=>{},Ae=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Ue=e=>{e.count.value-=1,0===e.count.value&&Ae(e)},xe=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=xe(e,t,r.baseClass);return null===i?null:r.downcast(i)},Be={},Te=()=>Object.keys(Fe).length,ke=()=>{var e=[];for(var t in Fe)Fe.hasOwnProperty(t)&&e.push(Fe[t]);return e},Ce=[],De=()=>{for(;Ce.length;){var e=Ce.pop();e.$$.deleteScheduled=!1,e.delete()}},Pe=e=>{ge=e,Ce.length&&ge&&ge(De)},Le=()=>{n.getInheritedInstanceCount=Te,n.getLiveInheritedInstances=ke,n.flushPendingDeletes=De,n.setDelayFunction=Pe},Fe={},Ie=(e,t)=>{for(void 0===t&&he("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Re=(e,t)=>(t=Ie(e,t),Fe[t]),Me=(e,t)=>(t.ptrType&&t.ptr||fe("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&fe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},$e(Object.create(e,{$$:{value:t}})));function ze(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Re(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?Me(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Me(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=Be[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=xe(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?Me(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):Me(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var $e=e=>"undefined"==typeof FinalizationRegistry?($e=e=>e,e):(Se=new FinalizationRegistry((e=>{Ue(e.$$)})),$e=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Se.register(e,r,e)}return e},Ee=e=>Se.unregister(e),$e(e)),Ne=()=>{Object.assign(Oe.prototype,{isAliasOf(e){if(!(this instanceof Oe))return!1;if(!(e instanceof Oe))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||we(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=$e(Object.create(Object.getPrototypeOf(this),{$$:{value:be(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||we(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&he("Object already scheduled for deletion"),Ee(this),Ue(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||we(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&he("Object already scheduled for deletion"),Ce.push(this),1===Ce.length&&ge&&ge(De),this.$$.deleteScheduled=!0,this}})};function Oe(){}var Ge=(e,t)=>Object.defineProperty(t,"name",{value:e}),He=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||he(`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}},We=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&he(`Cannot register public name '${e}' twice`),He(n,e,e),n.hasOwnProperty(r)&&he(`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))},Ve=48,je=57,qe=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=Ve&&t<=je?`_${e}`:e};function Ye(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 Ke=(e,t,r)=>{for(;t!==r;)t.upcast||he(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Xe(e,t){if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),0;t.$$||he(`Cannot pass "${Pt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Ze(e,t){var r;if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||he(`Cannot pass "${Pt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&he(`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=Ke(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&he("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:he(`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,Tt.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:he("Unsupporting sharing policy")}return r}function Je(e,t){if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),0;t.$$||he(`Cannot pass "${Pt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&he(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Qe(e){return this.fromWireType(x[e>>2])}var et=()=>{Object.assign(tt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:ye,readValueFromPointer:Qe,deleteObject(e){null!==e&&e.delete()},fromWireType:ze})};function tt(e,t,r,i,n,s,a,o,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=Ze:i?(this.toWireType=Xe,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}var rt,it,nt=(e,t,r)=>{n.hasOwnProperty(e)||fe("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},st=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},at=[],ot=e=>{var t=at[e];return t||(e>=at.length&&(at.length=e+1),at[e]=t=rt.get(e)),t},dt=(e,t,r)=>e.includes("j")?st(e,t,r):ot(t).apply(null,r),lt=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),dt(e,t,r)}},ct=(e,t)=>{var r=(e=de(e)).includes("j")?lt(e,t):ot(t);return"function"!=typeof r&&he(`unknown function pointer with signature ${e}: ${t}`),r},ut=(e,t)=>{var r=Ge(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},ht=e=>{var t=Tr(e),r=de(t);return xr(t),r},ft=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||ce[t]||(ue[t]?ue[t].forEach(e):(r.push(t),i[t]=!0))})),new it(`${e}: `+r.map(ht).join([", "]))},pt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=de(c),s=ct(n,s),o&&(o=ct(a,o)),l&&(l=ct(d,l)),h=ct(u,h);var f=qe(c);We(f,(function(){ft(`Cannot construct ${c} due to unbound types`,[i])})),pe([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:Oe.prototype;var a=Ge(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Ye(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new tt(c,u,!0,!1,!1),m=new tt(c+"*",u,!1,!1,!1),_=new tt(c+" const*",u,!1,!0,!1);return Be[e]={pointerType:m,constPointerType:_},nt(f,a),[p,m,_]}))},mt=(e,t)=>{for(var r=[],i=0;i>2]);return r},_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=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 yt(e,t,r,i,n,s){var a=t.length;a<2&&he("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+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=mt(t,r);n=ct(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 ie(`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]=()=>{ft(`Cannot construct ${e.name} due to unbound types`,a)},pe([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=yt(r,i,null,n,s),[]))),[]}))},bt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},wt=(e,t,r,i,n,s,a,o,d)=>{var l=mt(r,i);t=de(t),t=bt(t),s=ct(n,s),pe([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){ft(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(He(c,t,i),c[t].overloadTable[r-2]=n),pe([],l,(function(n){var o=yt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function St(){Object.assign(Et.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)}})}function Et(){this.allocated=[void 0],this.freelist=[]}var At=new Et,Ut=e=>{e>=At.reserved&&0==--At.get(e).refcount&&At.free(e)},xt=()=>{for(var e=0,t=At.reserved;t{At.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),At.reserved=At.allocated.length,n.count_emval_handles=xt},Tt={toValue:e=>(e||he("Cannot use deleted val. handle = "+e),At.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 At.allocate({refcount:1,value:e})}}};function kt(e){return this.fromWireType(U[e>>2])}var Ct,Dt=(e,t)=>{_e(e,{name:t=de(t),fromWireType:e=>{var t=Tt.toValue(e);return Ut(e),t},toWireType:(e,t)=>Tt.toHandle(t),argPackAdvance:ye,readValueFromPointer:kt,destructorFunction:null})},Pt=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},Lt=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(B[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},Ft=(e,t,r)=>{_e(e,{name:t=de(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:ye,readValueFromPointer:Lt(t,r),destructorFunction:null})},It=(e,t,r)=>{switch(t){case 1:return r?e=>w[e>>0]:e=>S[e>>0];case 2:return r?e=>E[e>>1]:e=>A[e>>1];case 4:return r?e=>U[e>>2]:e=>x[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},Rt=(e,t,r,i,n)=>{t=de(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");_e(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:ye,readValueFromPointer:It(t,r,0!==i),destructorFunction:null})},Mt=(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(w.buffer,r,t)}_e(e,{name:r=de(r),fromWireType:n,argPackAdvance:ye,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},zt=(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)),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},$t=(e,t,r)=>zt(e,S,t,r),Nt=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},Ot="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,Gt=(e,t,r)=>{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&Ot)return Ot.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},Ht=(e,t)=>e?Gt(S,e,t):"",Wt=(e,t)=>{var r="std::string"===(t=de(t));_e(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==S[o]){var d=Ht(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)$t(t,a,i+1);else if(n)for(var o=0;o255&&(xr(a),he("String has UTF-16 code units that do not fit in 8 bits")),S[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&A[i];)++i;if((r=i<<1)-e>32&&Vt)return Vt.decode(S.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=E[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},qt=(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 E[t>>1]=0,t-i},Yt=e=>2*e.length,Kt=(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},Xt=(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},Zt=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Jt=(e,t,r)=>{var i,n,s,a,o;r=de(r),2===t?(i=jt,n=qt,a=Yt,s=()=>A,o=1):4===t&&(i=Kt,n=Xt,a=Zt,s=()=>x,o=2),_e(e,{name:r,fromWireType:e=>{for(var r,n=x[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return xr(e),r},toWireType:(e,i)=>{"string"!=typeof i&&he(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=Br(4+s+t);return x[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(xr,d),d},argPackAdvance:ye,readValueFromPointer:kt,destructorFunction(e){xr(e)}})},Qt=(e,t)=>{_e(e,{isVoid:!0,name:t=de(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},er={},tr=e=>{var t=er[e];return void 0===t?de(e):t},rr=[],ir=(e,t,r,i,n)=>(e=rr[e])(t=Tt.toValue(t),t[r=tr(r)],i,n),nr=e=>{var t=rr.length;return rr.push(e),t},sr=(e,t)=>{var r=ce[e];return void 0===r&&he(t+" has unknown type "+ht(e)),r},ar=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},or=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(x[t>>2]=Tt.toHandle(i)),n},dr=(e,t,r)=>{var i=ar(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],c=0;ce.name)).join(", ")}) => ${n.name}>`;return nr(Ge(h,u))},lr=e=>{e>4&&(At.get(e).refcount+=1)},cr=e=>Tt.toHandle(tr(e)),ur=()=>Tt.toHandle({}),hr=e=>Tt.toHandle(Ht(e)),fr=e=>{var t=Tt.toValue(e);_t(t),Ut(e)},pr=(e,t,r)=>{e=Tt.toValue(e),t=Tt.toValue(t),r=Tt.toValue(r),e[t]=r},mr=(e,t)=>{var r=(e=sr(e,"_emval_take_value")).readValueFromPointer(t);return Tt.toHandle(r)},_r=()=>{W("")};Ct=()=>performance.now();var gr=(e,t,r)=>S.copyWithin(e,t,t+r),yr=e=>{W("OOM")},vr=e=>{S.length,yr()},br=[null,[],[]],wr=(e,t)=>{var r=br[e];0===t||10===t?((1===e?v:b)(Gt(r,0)),r.length=0):r.push(t)},Sr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=x[t+4>>2];t+=8;for(var d=0;d>2]=n,0};oe(),ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},ne=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Ne(),Le(),et(),it=n.UnboundTypeError=ut(Error,"UnboundTypeError"),St(),Bt();var Er,Ar={o:se,r:ae,x:ve,q:pt,p:vt,h:wt,w:Dt,k:Ft,b:Rt,a:Mt,l:Wt,i:Jt,y:Qt,g:ir,c:Ut,f:dr,z:lr,m:cr,B:ur,v:hr,e:fr,n:pr,A:mr,j:_r,d:Ct,u:gr,s:vr,t:Sr},Ur=Q(),xr=e=>(xr=Ur.E)(e),Br=e=>(Br=Ur.F)(e),Tr=e=>(Tr=Ur.H)(e),kr=e=>(kr=Ur.I)(e);function Cr(){function e(){Er||(Er=!0,n.calledRun=!0,k||(I(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),R()))}N>0||(F(),N>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=Ur.J)(e,t,r,i,s),n.___start_em_js=143452,n.___stop_em_js=143509,O=function e(){Er||Cr(),Er||(O=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return Cr(),e.ready}),a=(()=>{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 async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};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-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,a,o,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.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,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,x,B,T,k,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=x=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=T=new Float32Array(e),n.HEAPF64=k=new Float64Array(e)}var L=[],F=[],I=[];function R(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)$(n.preRun.shift());ne(L)}function M(){n.noFSInit||ke.init.initialized||ke.init(),ke.ignorePermissions=!1,ne(F)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(I)}function $(e){L.unshift(e)}function N(e){F.unshift(e)}function O(e){I.unshift(e)}var G=0,H=null;function W(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function V(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ni};function t(e,t){return si=e.exports,v=si.E,P(),Lt=si.H,N(si.F),V(),si}if(W(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(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_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ci(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var ae=(e,t,r)=>{throw new se(e).init(t,r),e},oe=e=>(x[oi()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ke.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;o{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},ke.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new ke.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new ke.ErrnoError(60);for(var s=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(ke.isBlkdev(r)||ke.isFIFO(r))throw new ke.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:ke.chrdev_stream_ops}});var n=ke.createNode(e,t,r,i);return ke.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):ke.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):ke.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):ke.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=ke.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,ke.isDir(e.mode)?t.size=4096:ke.isFile(e.mode)?t.size=e.usedBytes:ke.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw ke.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(ke.isDir(e.mode)){var i;try{i=ke.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ke.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=ke.lookupNode(e,t);for(var i in r.contents)throw new ke.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!ke.isLink(e.mode))throw new ke.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;a(e,(r=>{D(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&&W()},Ee=(e,t,r,i,n,s)=>{ke.createDataFile(e,t,r,i,n,s)},Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},xe=(e,t,r,i,n,s,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,n,d),s&&s(),V()}Ue(r,c,u,(()=>{a&&a(),V()}))||u(r)}W(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},Te=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},ke={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new ke.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=ke.root,n="/",s=0;s40)throw new ke.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(ke.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)%ke.nameTable.length},hashAddNode(e){var t=ke.hashName(e.parent.id,e.name);e.name_next=ke.nameTable[t],ke.nameTable[t]=e},hashRemoveNode(e){var t=ke.hashName(e.parent.id,e.name);if(ke.nameTable[t]===e)ke.nameTable[t]=e.name_next;else for(var r=ke.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=ke.mayLookup(e);if(r)throw new ke.ErrnoError(r,e);for(var i=ke.hashName(e.id,t),n=ke.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return ke.lookup(e,t)},createNode(e,t,r,i){var n=new ke.FSNode(e,t,r,i);return ke.hashAddNode(n),n},destroyNode(e){ke.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ke.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=ke.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{ke.lookupNode(e,t);return 20}catch(e){}return ke.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=ke.lookupNode(e,t)}catch(e){return e.errno}var n=ke.nodePermissions(e,"wx");if(n)return n;if(r){if(!ke.isDir(i.mode))return 54;if(ke.isRoot(i)||ke.getPath(i)===ke.cwd())return 10}else if(ke.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ke.isLink(e.mode)?32:ke.isDir(e.mode)&&("r"!==ke.flagsToPermissionString(t)||512&t)?31:ke.nodePermissions(e,ke.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=ke.MAX_OPEN_FDS;e++)if(!ke.streams[e])return e;throw new ke.ErrnoError(33)},getStreamChecked(e){var t=ke.getStream(e);if(!t)throw new ke.ErrnoError(8);return t},getStream:e=>ke.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return ke.FSStream||(ke.FSStream=function(){this.shared={}},ke.FSStream.prototype={},Object.defineProperties(ke.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new ke.FSStream,e),-1==t&&(t=ke.nextfd()),e.fd=t,ke.streams[t]=e,e},closeStream(e){ke.streams[e]=null},chrdev_stream_ops:{open(e){var t=ke.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new ke.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){ke.devices[e]={stream_ops:t}},getDevice:e=>ke.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),ke.syncFSRequests++,ke.syncFSRequests>1&&w(`warning: ${ke.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=ke.getMounts(ke.root.mount),i=0;function n(e){return ke.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&&ke.root)throw new ke.ErrnoError(10);if(!n&&!s){var a=ke.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,ke.isMountpoint(i))throw new ke.ErrnoError(10);if(!ke.isDir(i.mode))throw new ke.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,n?ke.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=ke.lookupPath(e,{follow_mount:!1});if(!ke.isMountpoint(t.node))throw new ke.ErrnoError(28);var r=t.node,i=r.mounted,n=ke.getMounts(i);Object.keys(ke.nameTable).forEach((e=>{for(var t=ke.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ke.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=ke.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new ke.ErrnoError(28);var s=ke.mayCreate(i,n);if(s)throw new ke.ErrnoError(s);if(!i.node_ops.mknod)throw new ke.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ke.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ke.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,ke.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new ke.ErrnoError(44);var r=ke.lookupPath(t,{parent:!0}).node;if(!r)throw new ke.ErrnoError(44);var i=de.basename(t),n=ke.mayCreate(r,i);if(n)throw new ke.ErrnoError(n);if(!r.node_ops.symlink)throw new ke.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=ke.lookupPath(e,{parent:!0}).node,i=ke.lookupPath(t,{parent:!0}).node,!r||!i)throw new ke.ErrnoError(44);if(r.mount!==i.mount)throw new ke.ErrnoError(75);var d,l=ke.lookupNode(r,a),c=ue.relative(e,s);if("."!==c.charAt(0))throw new ke.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new ke.ErrnoError(55);try{d=ke.lookupNode(i,o)}catch(e){}if(l!==d){var u=ke.isDir(l.mode),h=ke.mayDelete(r,a,u);if(h)throw new ke.ErrnoError(h);if(h=d?ke.mayDelete(i,o,u):ke.mayCreate(i,o))throw new ke.ErrnoError(h);if(!r.node_ops.rename)throw new ke.ErrnoError(63);if(ke.isMountpoint(l)||d&&ke.isMountpoint(d))throw new ke.ErrnoError(10);if(i!==r&&(h=ke.nodePermissions(r,"w")))throw new ke.ErrnoError(h);ke.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{ke.hashAddNode(l)}}},rmdir(e){var t=ke.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!0);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.rmdir)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.rmdir(t,r),ke.destroyNode(i)},readdir(e){var t=ke.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ke.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=ke.lookupPath(e,{parent:!0}).node;if(!t)throw new ke.ErrnoError(44);var r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!1);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.unlink)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.unlink(t,r),ke.destroyNode(i)},readlink(e){var t=ke.lookupPath(e).node;if(!t)throw new ke.ErrnoError(44);if(!t.node_ops.readlink)throw new ke.ErrnoError(28);return ue.resolve(ke.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=ke.lookupPath(e,{follow:!t}).node;if(!r)throw new ke.ErrnoError(44);if(!r.node_ops.getattr)throw new ke.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ke.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=ke.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new ke.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){ke.chmod(e,t,!0)},fchmod(e,t){var r=ke.getStreamChecked(e);ke.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=ke.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new ke.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){ke.chown(e,t,r,!0)},fchown(e,t,r){var i=ke.getStreamChecked(e);ke.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new ke.ErrnoError(28);var r;"string"==typeof e?r=ke.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new ke.ErrnoError(63);if(ke.isDir(r.mode))throw new ke.ErrnoError(31);if(!ke.isFile(r.mode))throw new ke.ErrnoError(28);var i=ke.nodePermissions(r,"w");if(i)throw new ke.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=ke.getStreamChecked(e);if(0==(2097155&r.flags))throw new ke.ErrnoError(28);ke.truncate(r.node,t)},utime(e,t,r){var i=ke.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new ke.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=ke.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new ke.ErrnoError(20)}else i=ke.mknod(e,r,0),s=!0;if(!i)throw new ke.ErrnoError(44);if(ke.isChrdev(i.mode)&&(t&=-513),65536&t&&!ke.isDir(i.mode))throw new ke.ErrnoError(54);if(!s){var a=ke.mayOpen(i,t);if(a)throw new ke.ErrnoError(a)}512&t&&!s&&ke.truncate(i,0),t&=-131713;var o=ke.createStream({node:i,path:ke.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!n.logReadFiles||1&t||(ke.readFiles||(ke.readFiles={}),e in ke.readFiles||(ke.readFiles[e]=1)),o},close(e){if(ke.isClosed(e))throw new ke.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ke.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(ke.isClosed(e))throw new ke.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ke.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ke.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 ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(1==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.read)throw new ke.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new ke.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 ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.write)throw new ke.ErrnoError(28);e.seekable&&1024&e.flags&&ke.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new ke.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(ke.isClosed(e))throw new ke.ErrnoError(8);if(t<0||r<=0)throw new ke.ErrnoError(28);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(!ke.isFile(e.node.mode)&&!ke.isDir(e.node.mode))throw new ke.ErrnoError(43);if(!e.stream_ops.allocate)throw new ke.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new ke.ErrnoError(2);if(1==(2097155&e.flags))throw new ke.ErrnoError(2);if(!e.stream_ops.mmap)throw new ke.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 ke.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=ke.open(e,t.flags),n=ke.stat(e).size,s=new Uint8Array(n);return ke.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),ke.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=ke.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);ke.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ke.write(i,t,0,t.byteLength,void 0,r.canOwn)}ke.close(i)},cwd:()=>ke.currentPath,chdir(e){var t=ke.lookupPath(e,{follow:!0});if(null===t.node)throw new ke.ErrnoError(44);if(!ke.isDir(t.node.mode))throw new ke.ErrnoError(54);var r=ke.nodePermissions(t.node,"x");if(r)throw new ke.ErrnoError(r);ke.currentPath=t.path},createDefaultDirectories(){ke.mkdir("/tmp"),ke.mkdir("/home"),ke.mkdir("/home/web_user")},createDefaultDevices(){ke.mkdir("/dev"),ke.registerDevice(ke.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ke.mkdev("/dev/null",ke.makedev(1,3)),ve.register(ke.makedev(5,0),ve.default_tty_ops),ve.register(ke.makedev(6,0),ve.default_tty1_ops),ke.mkdev("/dev/tty",ke.makedev(5,0)),ke.mkdev("/dev/tty1",ke.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);ke.createDevice("/dev","random",r),ke.createDevice("/dev","urandom",r),ke.mkdir("/dev/shm"),ke.mkdir("/dev/shm/tmp")},createSpecialDirectories(){ke.mkdir("/proc");var e=ke.mkdir("/proc/self");ke.mkdir("/proc/self/fd"),ke.mount({mount(){var t=ke.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=ke.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?ke.createDevice("/dev","stdin",n.stdin):ke.symlink("/dev/tty","/dev/stdin"),n.stdout?ke.createDevice("/dev","stdout",null,n.stdout):ke.symlink("/dev/tty","/dev/stdout"),n.stderr?ke.createDevice("/dev","stderr",null,n.stderr):ke.symlink("/dev/tty1","/dev/stderr"),ke.open("/dev/stdin",0),ke.open("/dev/stdout",1),ke.open("/dev/stderr",1)},ensureErrnoError(){ke.ErrnoError||(ke.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ke.ErrnoError.prototype=new Error,ke.ErrnoError.prototype.constructor=ke.ErrnoError,[44].forEach((e=>{ke.genericErrors[e]=new ke.ErrnoError(e),ke.genericErrors[e].stack=""})))},staticInit(){ke.ensureErrnoError(),ke.nameTable=new Array(4096),ke.mount(we,{},"/"),ke.createDefaultDirectories(),ke.createDefaultDevices(),ke.createSpecialDirectories(),ke.filesystems={MEMFS:we}},init(e,t,r){ke.init.initialized=!0,ke.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,ke.createStandardStreams()},quit(){ke.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=ke.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 c(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 ke.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(ke.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{ke.forceLoadFile(d);var s=be();if(!s)throw new ke.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=ke.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new ke.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(ke.getPath(e.node)))return-54;throw e}x[r>>2]=i.dev,x[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,x[r+12>>2]=i.uid,x[r+16>>2]=i.gid,x[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+24>>2]=K[0],x[r+28>>2]=K[1],x[r+32>>2]=4096,x[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+40>>2]=K[0],x[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+56>>2]=K[0],x[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+72>>2]=K[0],x[r+76>>2]=K[1],B[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+88>>2]=K[0],x[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!ke.isFile(t.node.mode))throw new ke.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);ke.msync(t,s,n,r,i)},varargs:void 0,get(){var e=x[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>ke.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;ke.streams[n];)n++;return ke.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}function Le(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return ke.open(t,r,n).fd}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}var Fe,Ie,Re,Me=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Fe=e},$e=e=>{for(var t="",r=e;E[r];)t+=Fe[E[r++]];return t},Ne={},Oe={},Ge={},He=e=>{throw new Ie(e)},We=e=>{throw new Re(e)},Ve=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&We("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),Ne.hasOwnProperty(e)||(Ne[e]=[]),Ne[e].push((()=>{n[t]=Oe[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],Ne.hasOwnProperty(e)){var n=Ne[e];delete Ne[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=$e(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},nt={},st=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=at,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||We("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&We("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=nt[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))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||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(n,e,e),n.hasOwnProperty(r)&&He(`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))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Ut(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 xt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Tt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=xt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,sr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function kt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,a,o,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=Tt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=kt,this.destructorFunction=null)}var Lt,Ft,It=(e,t,r)=>{n.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Rt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Mt=[],zt=e=>{var t=Mt[e];return t||(e>=Mt.length&&(Mt.length=e+1),Mt[e]=t=Lt.get(e)),t},$t=(e,t,r)=>e.includes("j")?Rt(e,t,r):zt(t).apply(null,r),Nt=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),$t(e,t,r)}},Ot=(e,t)=>{var r=(e=$e(e)).includes("j")?Nt(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=$e(t);return ai(t),r},Wt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new Ft(`${e}: `+r.map(Ht).join([", "]))},Vt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=$e(c),s=Ot(n,s),o&&(o=Ot(a,o)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=At(c);wt(f,(function(){Wt(`Cannot construct ${c} due to unbound types`,[i])})),Ve([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Ut(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},It(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var a=t.length;a<2&&He("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+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);n=Ot(i,n),Ve([],[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 Ie(`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]=()=>{Wt(`Cannot construct ${e.name} due to unbound types`,a)},Ve([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,n,s,a,o,d)=>{var l=jt(r,i);t=$e(t),t=Zt(t),s=Ot(n,s),Ve([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Wt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(bt(c,t,i),c[t].overloadTable[r-2]=n),Ve([],l,(function(n){var o=Kt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,n.count_emval_handles=ir},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function ar(e){return this.fromWireType(x[e>>2])}var or=(e,t)=>{qe(e,{name:t=$e(t),fromWireType:e=>{var t=sr.toValue(e);return rr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(T[e>>2])};case 8:return function(e){return this.fromWireType(k[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=$e(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>x[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,n)=>{t=$e(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=$e(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=$e(t));qe(e,{name:t,fromWireType(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==E[o]){var d=Ce(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)pr(t,a,i+1);else if(n)for(var o=0;o255&&(ai(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=x[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},wr=(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(x[t>>2]=a,(t+=4)+4>n)break}return x[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,n,s,a,o;r=$e(r),2===t?(i=gr,n=yr,a=vr,s=()=>U,o=1):4===t&&(i=br,n=wr,a=Sr,s=()=>B,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ai(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=li(4+s+t);return B[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(ai,d),d},argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction(e){ai(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=$e(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ur={},xr=e=>{var t=Ur[e];return void 0===t?$e(e):t},Br=[],Tr=(e,t,r,i,n)=>(e=Br[e])(t=sr.toValue(t),t[r=xr(r)],i,n),kr=e=>{var t=Br.length;return Br.push(e),t},Cr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Pr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(B[t>>2]=sr.toHandle(i)),n},Lr=(e,t,r)=>{var i=Dr(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],c=0;ce.name)).join(", ")}) => ${n.name}>`;return kr(vt(h,u))},Fr=e=>{var t=sr.toValue(e);qt(t),rr(e)},Ir=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Rr=()=>{j("")},Mr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),$r=e=>{j("OOM")},Nr=e=>{E.length,$r()},Or={},Gr=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:Gr()};for(var t in Or)void 0===Or[t]?delete e[t]:e[t]=Or[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Wr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Vr=(e,t)=>{var r=0;return Hr().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Wr(i,s),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return ke.close(t),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:ke.isDir(r.mode)?3:ke.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+8>>2]=K[0],x[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+16>>2]=K[0],x[t+20>>2]=K[1],0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=B[t+4>>2];t+=8;var d=ke.read(e,S,a,o,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,n){var s=Ir(t,r);try{if(isNaN(s))return 61;var a=De.getStreamFromFD(e);return ke.llseek(a,s,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[n>>2]=K[0],x[n+4>>2]=K[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=B[t+4>>2];t+=8;var d=ke.write(e,S,a,o,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Qr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Jr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ke.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return ke.isDir(this.mode)}},isDevice:{get:function(){return ke.isChrdev(this.mode)}}}),ke.FSNode=ei,ke.createPreloadedFile=xe,ke.staticInit(),ze(),Ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Re=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Ft=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Qt(),nr();var ii,ni={o:ae,A:Pe,s:Le,q:Me,C:Xe,D:Vt,y:Xt,h:Jt,B:or,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:Tr,g:rr,e:Lr,d:Fr,a:Rr,i:Mr,w:zr,r:Nr,u:Vr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},si=ie(),ai=e=>(ai=si.G)(e),oi=()=>(oi=si.I)(),di=e=>(di=si.J)(e),li=e=>(li=si.K)(e),ci=e=>(ci=si.M)(e);function ui(){function e(){ii||(ii=!0,n.calledRun=!0,C||(M(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(R(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,a,o,d)=>(n.dynCall_viiijj=si.N)(e,t,r,i,s,a,o,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=si.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=si.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=si.Q)(e,t,r,i,s),H=function e(){ii||ui(),ii||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ui(),t.ready}})(),o=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=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 c(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 u,h=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 f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(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 i={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")}},n=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}}(),s=p(),a=p(),d=p(),u=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 s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,a,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Vt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],jt=Vt,qt=Vt;function Yt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Kt(e){return Xt(e)&&e[1]===Tt}function Xt(e){return e[0]>>4===Oe}const Zt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Jt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,a=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Zt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Zt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Ot.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),a=s-3):(i=2,r=new Array(2),a=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=s):(i=5,a=s,r=new Array(4),s>=6?a=s-3:1===d&&(i=2,r=new Array(2),a=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=jt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class er{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Wt(t.subarray(i+3,i+3+n)),a=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}a=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let o=s.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=jt[a.sampling_freq_index],a.channel_config=n,a.other_data_present=d}let o=0;for(;;){let e=s.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function rr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 ir(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++;return{payload:e.subarray(i),type:n,size:s,uuid:a}}function nr(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 sr(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 ar(){return(new Date).getTime()}function or(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function dr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function lr(e){let t=0,r=dr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=dr(),a=s-r;a>=1e3&&(e(t/a*1e3),r=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){}})();function cr(e){return null==e}function ur(e){return!cr(e)}function hr(e){return"function"==typeof e}function fr(e){let t=null,r=31&e[0];return r!==Ve&&r!==je||(t=$e),t||(r=(126&e[0])>>1,r!==at&&r!==dt&&r!==ct||(t=Ne)),t}function pr(){return"undefined"!=typeof WritableStream}function mr(e){e.close()}function _r(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 gr(e){return e.ok&&e.status>=200&&e.status<=299}function yr(){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}(B)}function vr(e){return e[0]>>4===kt&&e[1]===Tt}function br(e){return!0===e||"true"===e}function wr(e){return!0!==e&&"true"!==e}function Sr(){return!!(Ot.Worker&&Ot.MediaSource&&"canConstructInDedicatedWorker"in Ot.MediaSource&&!0===Ot.MediaSource.canConstructInDedicatedWorker)}function Er(e,t){const r=rr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===et||r===rt||r===nt)||wr(t)&&r===qe)&&(i=!0)})),i}var Ar=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 Ur=Symbol(32),xr=Symbol(16),Br=Symbol(8);class Tr{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 Ar(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(Ur)}readU16(){return this.read(xr)}readU8(){return this.read(Br)}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===Ur){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===xr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Br){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}}Tr.U32=Ur,Tr.U16=xr,Tr.U8=Br;class kr{constructor(e){this.log=function(t){if(e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=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=Cr._ebsp2rbsp(e),r=new Wt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Cr.getProfileString(i),a=Cr.getLevelString(n),o=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,U=2*e,S=A/U}}let x=1;1===b&&1===w||(x=b/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*(f+1),C=16*(p+1)*(2-m);k-=(_+g)*B,C-=(y+v)*T;let D=Math.ceil(k*x);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Cr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:U,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,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=Cr._ebsp2rbsp(e),n=new Wt(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=Cr.getProfileString(s),d=Cr.getLevelString(a),l=1,c=420,u=[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&&(c=u[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=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=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);x=n.readBool(),B=t,T=2*e,U=B/T}}let k=1;1===E&&1===A||(k=E/A);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 P=16*(_+1),L=16*(g+1)*(2-y);P-=(v+b)*C,L-=(w+S)*D;let F=Math.ceil(P*k);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:c,chroma_format_string:Cr.getChromaFormatString(c),frame_rate:{fixed:x,fps:U,fps_den:T,fps_num:B},sar_ratio:{width:E,height:A},codec_size:{width:P,height:L},present_size:{width:F,height:L}}}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 Lr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Fr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Cr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,n&&(a[d]=252|s.chroma_format_idc,a[d+1]=248|s.bit_depth_luma-8,a[d+2]=248|s.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Ir(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}function Rr(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 Mr(e){return 31&e[0]}function zr(e){return e===Xe}function $r(e){return!function(e){return e===Ve||e===je}(e)&&!zr(e)}function Nr(e){return e===qe}function Or(e){if(0===e.length)return!1;const t=Mr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Qe||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Hr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Wr=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)},Vr=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"}};class jr{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 parseVPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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()}}static parseSPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=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&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(M=r.readBits(32),z=r.readBits(32),r.readBool()&&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=!0,a=1;n||(s=r.readBool());let o=!1;if(s?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Wr(e),r=new Wt(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()}})(t),a=(e=>{let t=Wr(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),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()&&(M=r.readBits(32),z=r.readBits(32),r.readBool()&&(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=Wr(e),r=new Wt(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}})(r);n=Object.assign(n,s,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|at,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|dt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|ct,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Zr(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}function Jr(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 Qr(e){return(126&e[0])>>1}function ei(e){return e===ht}function ti(e){return!function(e){return e>=32&&e<=40}(e)}function ri(e){return e>=16&&e<=21}function ii(e){if(0===e.length)return!1;const t=Qr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class si{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ai(e){return parseInt(e)===e}function oi(e){if(!ai(e.length))return!1;for(var t=0;t255)return!1;return!0}function di(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(!oi(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ai(e.length)&&oi(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function li(e){return new Uint8Array(e)}function ci(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 ui,hi={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("")}},fi=(ui="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ui[15&i])}return t.join("")}}),pi={16:10,24:12,32:14},mi=[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],_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ai=[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],Ui=[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],xi=[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],Bi=[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],Ti=[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],ki=[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 Ci(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^_i[a>>8&255]<<16^_i[255&a]<<8^_i[a>>24&255]^mi[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^_i[a>>16&255]<<16^_i[a>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Bi[a>>16&255]^Ti[a>>8&255]^ki[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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^vi[i[(n+1)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=li(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(_i[i[n]>>24&255]^a>>24),o[4*n+1]=255&(_i[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(_i[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(_i[255&i[(n+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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^Ei[i[(n+3)%4]>>16&255]^Ai[i[(n+2)%4]>>8&255]^Ui[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=li(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(gi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(gi[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(gi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(gi[255&i[(n+1)%4]]^a);return o};var Pi=function(e){if(!(this instanceof Pi))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Di(e)};Pi.prototype.encrypt=function(e){if((e=di(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=li(e.length),r=li(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)},Ri.prototype.setBytes=function(e){if(16!=(e=di(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ri.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Mi=function(e,t){if(!(this instanceof Mi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ri||(t=new Ri(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Di(e)};Mi.prototype.encrypt=function(e){for(var t=di(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=a<<24-(i+s)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,a=this.blockSize,o=s/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,a=0;a>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],U=e[t+14],x=e[t+15],B=s[0],T=s[1],k=s[2],C=s[3];B=l(B,T,k,C,a,7,o[0]),C=l(C,B,T,k,d,12,o[1]),k=l(k,C,B,T,f,17,o[2]),T=l(T,k,C,B,p,22,o[3]),B=l(B,T,k,C,m,7,o[4]),C=l(C,B,T,k,_,12,o[5]),k=l(k,C,B,T,g,17,o[6]),T=l(T,k,C,B,y,22,o[7]),B=l(B,T,k,C,v,7,o[8]),C=l(C,B,T,k,b,12,o[9]),k=l(k,C,B,T,w,17,o[10]),T=l(T,k,C,B,S,22,o[11]),B=l(B,T,k,C,E,7,o[12]),C=l(C,B,T,k,A,12,o[13]),k=l(k,C,B,T,U,17,o[14]),B=c(B,T=l(T,k,C,B,x,22,o[15]),k,C,d,5,o[16]),C=c(C,B,T,k,g,9,o[17]),k=c(k,C,B,T,S,14,o[18]),T=c(T,k,C,B,a,20,o[19]),B=c(B,T,k,C,_,5,o[20]),C=c(C,B,T,k,w,9,o[21]),k=c(k,C,B,T,x,14,o[22]),T=c(T,k,C,B,m,20,o[23]),B=c(B,T,k,C,b,5,o[24]),C=c(C,B,T,k,U,9,o[25]),k=c(k,C,B,T,p,14,o[26]),T=c(T,k,C,B,v,20,o[27]),B=c(B,T,k,C,A,5,o[28]),C=c(C,B,T,k,f,9,o[29]),k=c(k,C,B,T,y,14,o[30]),B=u(B,T=c(T,k,C,B,E,20,o[31]),k,C,_,4,o[32]),C=u(C,B,T,k,v,11,o[33]),k=u(k,C,B,T,S,16,o[34]),T=u(T,k,C,B,U,23,o[35]),B=u(B,T,k,C,d,4,o[36]),C=u(C,B,T,k,m,11,o[37]),k=u(k,C,B,T,y,16,o[38]),T=u(T,k,C,B,w,23,o[39]),B=u(B,T,k,C,A,4,o[40]),C=u(C,B,T,k,a,11,o[41]),k=u(k,C,B,T,p,16,o[42]),T=u(T,k,C,B,g,23,o[43]),B=u(B,T,k,C,b,4,o[44]),C=u(C,B,T,k,E,11,o[45]),k=u(k,C,B,T,x,16,o[46]),B=h(B,T=u(T,k,C,B,f,23,o[47]),k,C,a,6,o[48]),C=h(C,B,T,k,y,10,o[49]),k=h(k,C,B,T,U,15,o[50]),T=h(T,k,C,B,_,21,o[51]),B=h(B,T,k,C,E,6,o[52]),C=h(C,B,T,k,p,10,o[53]),k=h(k,C,B,T,w,15,o[54]),T=h(T,k,C,B,d,21,o[55]),B=h(B,T,k,C,v,6,o[56]),C=h(C,B,T,k,x,10,o[57]),k=h(k,C,B,T,g,15,o[58]),T=h(T,k,C,B,A,21,o[59]),B=h(B,T,k,C,m,6,o[60]),C=h(C,B,T,k,S,10,o[61]),k=h(k,C,B,T,f,15,o[62]),T=h(T,k,C,B,b,21,o[63]),s[0]=s[0]+B|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),a=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,a){var o=e+(t&r|~t&i)+n+a;return(o<>>32-s)+t}function c(e,t,r,i,n,s,a){var o=e+(t&i|r&~i)+n+a;return(o<>>32-s)+t}function u(e,t,r,i,n,s,a){var o=e+(t^r^i)+n+a;return(o<>>32-s)+t}function h(e,t,r,i,n,s,a){var o=e+(r^(t|~i))+n+a;return(o<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Ht((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=$i).lib,n=i.WordArray,s=i.Hasher,a=r.algo,o=[],d=a.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(n&s|~n&a):l<40?1859775393+(n^s^a):l<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,d=a,a=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(o[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=a.SHA256=s.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Ht((function(e,t){var r,i,n,s,a,o;e.exports=(i=(r=o=$i).lib.WordArray,n=r.algo,s=n.SHA256,a=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(a),r.HmacSHA224=s._createHmacHelper(a),o.SHA224)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,a=e.algo;function o(){return n.create.apply(n,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,U=u.high,x=u.low,B=h.high,T=h.low,k=f,C=p,D=m,P=_,L=g,F=y,I=v,R=b,M=w,z=S,$=E,N=A,O=U,G=x,H=B,W=T,V=0;V<80;V++){var j,q,Y=l[V];if(V<16)q=Y.high=0|e[t+2*V],j=Y.low=0|e[t+2*V+1];else{var K=l[V-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[V-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[V-7],ae=se.high,oe=se.low,de=l[V-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=M&$^~M&O,fe=z&N^~z&G,pe=k&D^k&L^D&L,me=C&P^C&F^P&F,_e=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(M>>>14|z<<18)^(M>>>18|z<<14)^(M<<23|z>>>9),ve=(z>>>14|M<<18)^(z>>>18|M<<14)^(z<<23|M>>>9),be=d[V],we=be.high,Se=be.low,Ee=H+ye+((ue=W+ve)>>>0>>0?1:0),Ae=ge+me;H=O,W=G,O=$,G=N,$=M,N=z,M=I+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=R+ue|0)>>>0>>0?1:0)|0,I=L,R=F,L=D,F=P,D=k,P=C,k=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+k+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

    >>0?1:0),y=s.low=y+F,s.high=g+L+(y>>>0>>0?1:0),b=a.low=b+R,a.high=v+I+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+M+(S>>>0>>0?1:0),A=c.low=A+N,c.high=E+$+(A>>>0>>0?1:0),x=u.low=x+G,u.high=U+O+(x>>>0>>0?1:0),T=h.low=T+W,h.high=B+H+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Ht((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=$i).x64,n=i.Word,s=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var o=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(T=r[n]).high^=a,T.low^=s}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(T=r[h+5*m]).high,p^=T.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(T=r[h+5*m]).high^=f,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var U=u[l[w]];U.high=f,U.low=p}var x=u[0],B=r[0];for(x.high=B.high,x.low=B.low,h=0;h<5;h++)for(m=0;m<5;m++){var T=r[w=h+5*m],k=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var P=c[o];T.high^=P.high,T.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,o)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,a,f,b,w,S,E,A,U,x,B,T=this._hash.words,k=u.words,C=h.words,D=o.words,P=d.words,L=l.words,F=c.words;for(S=s=T[0],E=a=T[1],A=f=T[2],U=b=T[3],x=w=T[4],r=0;r<80;r+=1)B=s+e[t+D[r]]|0,B+=r<16?p(a,f,b)+k[0]:r<32?m(a,f,b)+k[1]:r<48?_(a,f,b)+k[2]:r<64?g(a,f,b)+k[3]:y(a,f,b)+k[4],B=(B=v(B|=0,L[r]))+w|0,s=w,w=b,b=v(f,10),f=a,a=B,B=S+e[t+P[r]]|0,B+=r<16?y(E,A,U)+C[0]:r<32?g(E,A,U)+C[1]:r<48?_(E,A,U)+C[2]:r<64?m(E,A,U)+C[3]:p(E,A,U)+C[4],B=(B=v(B|=0,F[r]))+x|0,S=x,x=U,U=v(A,10),A=E,E=B;B=T[1]+f+U|0,T[1]=T[2]+b+x|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+a+A|0,T[0]=B},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,a=0;a<5;a++){var o=s[a];s[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Ht((function(e,t){var r,i,n;e.exports=(i=(r=$i).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),a=this._iKey=t.clone(),o=s.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),a=n.cfg;return m.create({ciphertext:s,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)a=l.create({keySize:t+r,hasher:n}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=s.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Ht((function(e,t){var r;e.exports=((r=$i).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,a=this._counter;s&&(a=this._counter=s.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Ht((function(e,t){var r;e.exports=((r=$i).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[a/r|0]<<24),s[a]=s[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^n[d])&c[d])>>>0];this._lBlock=a,this._rBlock=s^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var a=n%r,o=t[a>>>2]>>>24-a%4*8&255;s=(s+i[n]+o)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var a=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][n],a+=e.sbox[3][s],a}function l(e,t,r){let i,s=t,a=r;for(let t=0;t1;--t)s^=e.pbox[t],a=d(e,s)^a,i=s,s=a,a=i;return i=s,s=a,a=i,a^=e.pbox[1],s^=e.pbox[0],{left:s,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)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=e.slice(s+4+2,s+4+a);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}return e}function Gi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Ht((function(e,t){e.exports=$i}));var Hi=Ht((function(e,t){var r,n,s,a=(r=new Date,n=4,s={setLogLevel:function(e){n=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>=n&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);a.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+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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 r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.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)),a.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,s)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,o=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?a.info:a.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(a.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' 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?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+n+" 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)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 r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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=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())}})),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(),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(", ")+")"})),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,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})),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),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()))})),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&s)<<8|e.readUint8():a.property_index=127&s}}})),h.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:a.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(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()})),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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)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=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){a.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){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.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),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(),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}})),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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 n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}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,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},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>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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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))},g.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&&(a.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),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.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)&&(a.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*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 s=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+s),{offset:s,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-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 u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),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 h["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}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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"),n=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-(n.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.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,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),x.cts=e.samples[t].dts+a.sample_offsets[S]):x.cts=x.dts,o?(t==o.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+U==t+1&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+U==t&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return a.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+")"),d.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===s)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,o),n.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Wi(e){return e.reduce(((e,t)=>256*e+t))}function Vi(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]))}Hi.Log,Hi.MP4BoxStream,Hi.DataStream,Hi.MultiBufferStream,Hi.MPEG4DescriptorParser,Hi.BoxParser,Hi.XMLSubtitlein4Parser,Hi.Textin4Parser,Hi.ISOFile,Hi.createFile;class ji{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],Vi(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}}function qi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Yi=16,Ki=[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 Zi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Qi(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}function en(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("")}function tn(e,t){const r=31&t;return e<>>32-r}function rn(e){return(255&Ki[e>>>24&255])<<24|(255&Ki[e>>>16&255])<<16|(255&Ki[e>>>8&255])<<8|255&Ki[255&e]}function nn(e){return e^tn(e,2)^tn(e,10)^tn(e,18)^tn(e,24)}function sn(e){return e^tn(e,13)^tn(e,23)}function an(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]^=nn(rn(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=nn(rn(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=nn(rn(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=nn(rn(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 on(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Xi[r+0],t[r+0]=i[0]^=sn(rn(e)),e=i[2]^i[3]^i[0]^Xi[r+1],t[r+1]=i[1]^=sn(rn(e)),e=i[3]^i[0]^i[1]^Xi[r+2],t[r+2]=i[2]^=sn(rn(e)),e=i[0]^i[1]^i[2]^Xi[r+3],t[r+3]=i[3]^=sn(rn(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function dn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=Zi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Zi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Qi(e):Zi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Yi-e.length%Yi;for(let r=0;r=Yi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),a=5;for(;an){const t=new Uint8Array(s.length+e.length-a);t.set(s,0),t.set(e.slice(a),s.length),s=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=dn(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(a+4,a+4+u),0);const o=nr(qi(n,new Uint8Array(r))),l=new Uint8Array(s.length+o.length);l.set(s,0),l.set(o,s.length),s=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(o,s.length),r.set(t,s.length+4),s=r}a=a+4+d}return s}const un={init:0,findFirstStartCode:1,findSecondStartCode:2};class hn extends class{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(){i.off(e,n);for(var s=arguments.length,a=new Array(s),o=0;o1?r-1:0),n=1;n{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=un.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findFirstStartCode}}}}function fn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)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=fn(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}return e}function _n(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class gn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{hr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class yn{static init(){yn.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 yn.types)yn.types.hasOwnProperty(e)&&(yn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=yn.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 yn.box(yn.types.trak,yn.tkhd(e),yn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return yn.box(yn.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 yn.box(yn.types.mdia,yn.mdhd(e),yn.hdlr(e),yn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return yn.box(yn.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?yn.constants.HDLR_AUDIO:yn.constants.HDLR_VIDEO,yn.box(yn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?yn.box(yn.types.smhd,yn.constants.SMHD):yn.box(yn.types.vmhd,yn.constants.VMHD),yn.box(yn.types.minf,t,yn.dinf(),yn.stbl(e))}static dinf(){return yn.box(yn.types.dinf,yn.box(yn.types.dref,yn.constants.DREF))}static stbl(e){return yn.box(yn.types.stbl,yn.stsd(e),yn.box(yn.types.stts,yn.constants.STTS),yn.box(yn.types.stsc,yn.constants.STSC),yn.box(yn.types.stsz,yn.constants.STSZ),yn.box(yn.types.stco,yn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp3(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp4a(e)):"avc"===e.videoType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.avc1(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.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 yn.box(yn.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 yn.box(yn.types.mp4a,i,yn.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 yn.box(yn.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 yn.box(yn.types.avc1,n,yn.box(yn.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 yn.box(yn.types.hvc1,n,yn.box(yn.types.hvcC,t))}static mvex(e){return yn.box(yn.types.mvex,yn.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 yn.box(yn.types.trex,r)}static moof(e,t){return yn.box(yn.types.moof,yn.mfhd(e.sequenceNumber),yn.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 yn.box(yn.types.mfhd,t)}static traf(e,t){let r=e.id,i=yn.box(yn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=yn.box(yn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=yn.sdtp(e),a=yn.trun(e,s.byteLength+16+16+8+16+8+8);return yn.box(yn.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,yn.box(yn.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),yn.box(yn.types.trun,r)}static mdat(e){return yn.box(yn.types.mdat,e)}}yn.init();var vn,bn=Ht((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(vn=bn)&&vn.__esModule&&Object.prototype.hasOwnProperty.call(vn,"default")&&vn.default;const wn=[44100,48e3,32e3,0],Sn=[22050,24e3,16e3,0],En=[11025,12e3,8e3,0],An=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Un=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],xn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function Bn(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=En[a];break;case 2:d=Sn[a];break;case 3:d=wn[a]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),a=n-3):(i=2,t=new Array(2),a=n):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=n):(i=5,a=n,t=new Array(4),n>=6?a=n-3:1===s&&(i=2,t=new Array(2),a=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Gn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Vn{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function jn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const qn=new Array(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),Yn=new Array(2746333894,1453994832,1736282519,2993693404),Kn=new Array(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 Xn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Jn(e,t){return t+3>>19)^(i<<23|i>>>9)}function ts(e,t){var r=new Array(36);r[0]=Jn(t,0),r[1]=Jn(t,4),r[2]=Jn(t,8),r[3]=Jn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^rs(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function is(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Qn(e),n=Math.ceil(r.length/16),s=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let a=5;for(;as)break;let d=e[a+4],l=!1,c=2;if(i?(n&&(c=3),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=is(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-1-2024" '+(wr(false)?"and is Trial Version[试用版本]":""));const ss=[];ss.push(a({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][worker]:",e)}}),s({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support, using thread emulation"))})(e)||console.warn("JbPro[❌❌❌][worker]:",e)}})),Promise.all(ss).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=[],s=[],a=null,o=null,d=null,l=null,c=null,u=null,h=!1,f=null,S=null,E=!1,B=!1,Se=!!br(r),Ee=0,qe=0,Qe=!1,et=null,rt=null,nt=null,ht=[],Ut=null,xt=null,kt=0,Ot=0,Gt=null,Ht=null,Wt=0,Vt=0,jt=!1,Zt=!1,tr=!1,dr=null,Ar=null,Ur=!1,xr=!0,Br=0,Dr=0,Wr=()=>{const e=yr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(a={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){a.decoder=new VideoDecoder({output:function(e){if(hr(e.createImageBitmap))e.createImageBitmap().then((t=>{a.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ci.delay,ts:0},[r]),mr(e)}));else{a.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ci.delay,ts:0},[t]),mr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){a.reset(),a.decoder&&"closed"!==a.decoder.state&&(a.decoder.close(),a.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(a.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?mt:_t});a.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:R,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Re?(n=Pr(s),i={codec:n.codec,description:s}):t===Me&&(n=Yr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),a.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),a.isEmitInfo=!0,a.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),a.offscreenCanvasCtx=a.offscreenCanvas.getContext("2d"));try{a.decoder.configure(i),a.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){a.hasInit=!1,a.isEmitInfo=!1,a.offscreenCanvas=null,a.offscreenCanvasCtx=null}});let Vr=function(){if(Ur=!0,o)try{o.abort(),o=null,ci.debugLog("worker","abort success")}catch(e){o=null,ci.debugLog("worker","abort catch",e)}},Kr={init(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},destroy(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=Kr.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");Kr.handleVideoFrames(e)}else Kr.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=Kr.localDts;return Kr.localDts=Kr.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return Kr.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{const t=Mr(e);t===je||t===Ve?Kr.handleVideoH264Nalu(e):$r(t)&&i.push(e)})),1===i.length)Kr.handleVideoH264Nalu(i[0]);else if(Or(i)){const e=Mr(i[0]),t=Nr(e);Kr.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH264Nalu(e)}))}else if(Kr.streamType===Ne)if(ci._opt.nakedFlowH265DemuxUseNew){const t=Kr.handleAddNaluStartCode(e),r=Kr.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Qr(e);t===ct||t===dt||t===at?Kr.handleVideoH265Nalu(e):ti(t)&&i.push(e)})),1===i.length)Kr.handleVideoH265Nalu(i[0]);else if(ii(i)){const e=Qr(i[0]),t=ri(e);Kr.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH265Nalu(e)}))}else Qr(e)===ct?Kr.extractH265PPS(e):Kr.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{zr(Mr(e))?Kr.extractH264SEI(e):Kr.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{ei(Qr(e))?Kr.extractH265SEI(e):Kr.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.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=Mr(e);switch(t){case Ve:Kr.sps=e;break;case je:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Lr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if($r(t)){const r=Nr(t),i=Kr.getNaluDts(),n=Ir(e,r);Kr.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if(Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Lr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}},handleVideoH264NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Rr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Qr(e);switch(t){case at:Kr.vps=e;break;case dt:Kr.sps=e;break;case ct:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.vps&&Kr.sps&&Kr.pps){const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}if(ti(t)){const r=ri(t),i=Kr.getNaluDts(),n=Zr(e,r);Kr.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if(Kr.vps&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}},handleVideoH265NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Jr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!Kr.streamVideoType)for(let t of e)if(Kr.streamVideoType=fr(t),Kr.streamVideoType)break;Kr.streamVideoType?Kr.streamVideoType===$e?Kr.handleVideoH264Frames(e):Kr.streamVideoType===Ne&&Kr.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Mr(a);let o=!1,d=e===Ke;e!==Ye&&e!==Ke||(s=Kr.parseVideo264Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case je:Kr.pps=e;break;case Ve:Kr.sps=e;break;case Xe:n=e}if($r(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Fr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Fr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(i){const e=Kr.getNaluDts(),t=Rr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!1);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Qr(a);let o=!1,d=ri(e);ti(e)&&(s=Kr.parseVideo265Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ct:Kr.pps=e;break;case dt:Kr.sps=e;break;case at:Kr.vps=e;break;case pt:case ft:n=e}if(ti(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps&&Kr.vps){Kr.isSendSeqHeader=!0;const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps&&Kr.vps){const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(i){const e=Kr.getNaluDts(),t=Jr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!0);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{Kr.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Vn(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Vn(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},ai={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){ai.mp4Box=Hi.createFile(),ai.mp4Box.onReady=ai.onReady,ai.mp4Box.onError=ai.onError,ai.mp4Box.onSamples=ai.onSamples},initTransportDescarmber(){ai.transportDescarmber=new ji},_getSeqHeader(e){const t=ai.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Hi.DataStream(void 0,0,Hi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(ai.isHevc=!0,ci.isHevc=!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){ci.debugLog(ai.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){ai.videoTrackId=t.id;const e=ai._getSeqHeader(t);e&&(ci.debugLog(ai.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),ai.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){ai.audioTrackId=r.id;const e=r.audio||{},t=qt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");ai.mp4Box.setExtractionOptions(r.id);const n=Yt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(ai.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(n,0)}ai.mp4Box.start()},onError(e){ci.debugError(ai.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===ai.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&&ci.calcIframeIntervalTimestamp(i);let n=null;n=ai.isHevc?Jr(t,r):Rr(t,r),ci.decode(n,{type:oe,ts:i,isIFrame:r,cts:0})}ai.mp4Box.removeUsedSamples(e)}else if(e===ai.audioTrackId){if(ci._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),ci.decode(i,{type:ae,ts:r,isIFrame:!1,cts:0})}ai.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(ai.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);ai.transportDescarmber&&(t=ai.transportDescarmber.transport(t)),t.buffer.fileStart=ai.offset,ai.offset+=t.byteLength,ai.mp4Box.appendBuffer(t.buffer)},destroy(){ai.mp4Box&&(ai.mp4Box.stop(),ai.mp4Box.flush(),ai.mp4Box.destroy(),ai.mp4Box=null),ai.transportDescarmber&&(ai.transportDescarmber.destroy(),ai.transportDescarmber=null),ai.offset=0,ai.videoTrackId=null,ai.audioTrackId=null,ai.isHevc=!1}},oi={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);oi.extractNALu(t)},destroy(){oi.lastBuffer=new Uint8Array(0),oi.parsedOffset=0,oi.firstStartCodeOffset=0,oi.secondStartCodeOffset=0,oi.state="init",oi.hasInitVideoCodec=!1,oi.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(oi.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(oi.lastBuffer.length+e.length);for(t.set(oi.lastBuffer,0),t.set(new Uint8Array(e),oi.lastBuffer.length),oi.lastBuffer=t;;){if("init"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findFirstStartCode",oi.firstStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findSecondStartCode",oi.secondStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===oi.state){if(!(oi.lastBuffer.length-oi.parsedOffset>0))break;{let e,t,r=192&oi.lastBuffer[oi.parsedOffset];e=0==r?oi.secondStartCodeOffset-14:oi.secondStartCodeOffset;let i=0==(192&oi.lastBuffer[oi.firstStartCodeOffset+4]);if(i){if(oi.firstStartCodeOffset-14<0)return void ci.debugWarn(oi.LOG_NAME,"firstStartCodeOffset -14 is",oi.firstStartCodeOffset-14);oi.hasInitVideoCodec||(oi.hasInitVideoCodec=!0,ci.debugLog(oi.LOG_NAME,"setCodec"),hi.setCodec(ze,"")),t=oi.lastBuffer.subarray(oi.firstStartCodeOffset-14,e)}else t=oi.lastBuffer.subarray(oi.firstStartCodeOffset,e);let n=oi.getNaluDts();oi.hasInitVideoCodec?(postMessage({cmd:O,type:Be,value:t.byteLength}),postMessage({cmd:O,type:Te,value:n}),Ee=n,hi.decode(t,i?1:0,n)):ci.debugWarn(oi.LOG_NAME,"has not init video codec"),oi.lastBuffer=oi.lastBuffer.subarray(e),oi.firstStartCodeOffset=0==r?14:0,oi.parsedOffset=oi.firstStartCodeOffset+4,oi.state="findFirstStartCode"}}}},getNaluDts(){let e=oi.localDts;return oi.localDts=oi.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Hn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=_n(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==s),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==a||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===s||s===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[s]===Rn){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[s]){let r=188-c,i=di.pmt_.pid_stream_type[s];s!==di.pmt_.common_pids.h264&&s!==di.pmt_.common_pids.h265&&s!==di.pmt_.common_pids.adts_aac&&s!==di.pmt_.common_pids.loas_aac&&s!==di.pmt_.common_pids.ac3&&s!==di.pmt_.common_pids.eac3&&s!==di.pmt_.common_pids.opus&&s!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[s]&&!0!==di.pmt_.timed_id3_pids[s]&&!0!==di.pmt_.synchronous_klv_pids[s]&&!0!==di.pmt_.asynchronous_klv_pids[s]||di.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,a));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):di.clearSlices(s,i)}for(let o=1+a;o=s.expected_length&&di.clearSlices(s,i),o+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):s.total_length>=s.expected_length&&di.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let a=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new $n,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let o=di.pes_slice_queues_[i.pid];o.slices.push(n),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=n.byteLength,o.expected_length>0&&o.expected_length===o.total_length?di.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==n){if(n<3+o)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Tn:case kn:di.parseMP3Payload(c,r);break;case Cn:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):di.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Dn:di.parseADTSAACPayload(c,r);break;case Pn:di.parseLOASAACPayload(c,r);break;case Ln:case Fn:break;case In:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,s,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Mn:di.parseH264Payload(c,r,s,e.random_access_indicator);break;case zn:di.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Cn){let r,s=6;r=0!==n?n:t.byteLength-s;let a=t.subarray(s,s+r);di.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let a=null;if(1===n&&0===s)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=di.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),di.pat_=a,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=di._initPmt(),r.program_number=n,r.version_number=s,di.program_pmt_map_[n]=r;else if(r=di.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Xr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Fr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let n=di.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Qt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new er(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame(cr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ae};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new Wn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Yt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(n,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new On;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/di.timescale_);s.pts=e}else s.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===oe?di._doDecodeVideo({...e,payload:t}):e.type===ae&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Jr(t,e.isIFrame):Rr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:oe,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;br(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ae,ts:e.dts,isIFrame:!1,cts:0})}},li=null;Sr()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new gn,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!wr(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===bt,isStateClosed:()=>li.getState()===wt,isStateEnded:()=>li.getState()===vt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,St,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,At,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(wr(li.hasInit))if(r&&e[1]===Tt){const i=15&e[0];if(i===Me&&wr(ci._opt.supportMSEDecodeHevc))return void li.emitError(Fe.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:R,code:i});const n=new Uint8Array(e);postMessage({cmd:M,buffer:n,codecId:i},[n.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Re?r=Pr(e.slice(5)):t===Me&&(r=qr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Fe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(vr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Re?s=Pr(n):i===Me&&(s=Yr(n)),li.videoInfo.width=s.codecWidth,li.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),li.emitError(Fe.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const a={id:Ft,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},o=yn.generateInitSegment(a);li.isAvc=i===Re;let d=s.codec;return li.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:li.isAvc?gt:yt,postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),li._initSourceBuffer(),li.appendBuffer(o.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===We,s=r===Oe;if(wr(s||n))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Fe.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Kt(e)){if(o=Jt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!n)return!1;if(o=Bn(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;n&&wr(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=yn.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),wr(li.isAudioInitInfo)&&(Ar=r===Oe?i?16:8:0===i?8:16,postMessage({cmd:L,code:r}),postMessage({cmd:P,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:Ar}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=s,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Fe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),a=s.byteLength;if(0===a)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=o,d=!0);const l=o-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=yn.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendBuffer(n.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Ft,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=a,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=s,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=yn.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendAudioBuffer(n.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=It,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=n,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Fe.mediaSourceAudioInitTimeout)}),1e3)));if(wr(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(wr(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:n,end:t})}}else s=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:n,end:t})}}else sli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&wr(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&wr(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&wr(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&wr(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(wr(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Dt,_opt:Wr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Qe,wasmDecodeDelay:Ee-qe});postMessage({cmd:O,type:Ce,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ae)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Qe=!1,ci.delay=t-r):(Qe=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ae)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===oe&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ae?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===oe&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===oe&&a.decode?a.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===n.length)return;const t=e.ts,i=n[0],s=e.type===oe&&vr(e.payload);if(wr(r))s&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i));else{const r=i.ts-t,a=i.type===ae&&e.type===oe;(r<=20||a||s)&&(ci.debugLog("worker",`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 ${a} and isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===v,t=ci._opt.playType===b;if(Kr.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),a&&ci._opt.useWCS&&ci.useOffscreen()&&a.init(),wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(n.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${n.length}`);if(ci.dropping){for(r=n.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${n.length}`);!r.isIFrame&&n.length;)r=n.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;n.length;)r=n.shift(),ci.doDecode(r);else if(r=n[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),n.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:H})):(n.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;n.length;){if(r=n[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${n.length}`);break}n.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();et||(et=e);const r=e-et;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),et=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(wr(ci._opt.checkFirstIFrame)&&(Se=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;n.length&&(e=n.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Vr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Ur=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&wr(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,et=null,Qe=!1,Ee=0,qe=0,a&&(a.destroy&&a.destroy(),a=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Wr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),n=[],s=[],u&&(u.close(),u=null),f=null,S=null,E=!1,B=!1,Se=!1,jt=!1,Zt=!1,tr=!1,dr=null,ht=[],kt=0,Ot=0,rt=null,nt=null,Gt=null,Ht=null,Ar=null,Wt=0,Vt=0,Ut=null,xt=null,ci.fetchStatus=Dt,xr=!0,Kr.destroy(),ai.destroy(),oi.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===ae&&Kt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===oe&&t.isIFrame&&vr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===w)if(t.type===oe){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ae&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Xt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===oe){if(Wt>0){const e=t.ts-Ht,r=Wt+Wt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Wt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Vt}`),Ht-t.ts>A&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Wt=0),ci._opt.isDropSameTimestampGop&&wr(t.isIFrame)&&Se)){const e=ci.hasIframeInBufferList(),t=wr(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),br(ci._opt.checkFirstIFrame)&&br(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}Ht>0&&(Wt=t.ts-Ht),Vt=e.byteLength,Ht=t.ts}if(Se){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${n.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;n.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${n.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return n.forEach((t=>{t.type===oe&&(e+=1)})),e},hasIframeInBufferList:()=>n.some((e=>e.type===oe&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return n.forEach((e=>{e.type===oe&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return n.forEach((t=>{t.type===ae&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?Kr.lastBuf&&(e=Kr.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&ai.mp4Box&&(e=ai.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=lr((e=>{postMessage({cmd:O,type:Ue,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(ai.listenMp4Box(),ci._opt.isFmp4Private&&ai.initTransportDescarmber()),t.protocol===_){t.isFlv&&(u=new Tr(ci.demuxFlv())),o=new AbortController;const r=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(br(Ur))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Dt,void e.body.cancel();if(!gr(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Vr(),void postMessage({cmd:O,type:Fe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:ke}),pr())ci.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):br(Ur)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof e?(ci.fetchStatus=Pt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Lt,Vr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Lt,Vr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De}))):o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):br(Ur)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof n?(ci.fetchStatus=Pt,l(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ci.demuxFmp4(n):t.isMpeg4?ci.demuxMpeg4(n):t.isTs?ci.demuxTs(n):t.isNakedFlow&&ci.demuxNakedFlow(n),i()):ci.debugWarn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Bt?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(u=new Tr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:ke}),postMessage({cmd:O,type:Le})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),br(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:y,msg:e.code})):postMessage({cmd:O,type:De}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):br(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Fe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 de:if(a.byteLength>0){let e=a;br(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(a)),ci.decode(e,{type:ae,ts:s})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case le:if(a.byteLength>=6){const e=a[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(a,s);else{const e=15&a[0];let t=a[0]>>4===Ct;const i=e===Me;if(wr(t)&&br(Er(a,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&vr(a)&&null===ci.isHevc){const e=15&a[0];ci.isHevc=e===Me,dr=sr(a,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`)}t&&ci.calcIframeIntervalTimestamp(s),ci.isPlayer&&ci.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let n=r[0],o=ci.cryptoPayload(a,t);ci.decode(o,{type:oe,ts:s,isIFrame:t,cts:n})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case ce:postMessage({cmd:J,buffer:a},[a.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ae?ci._opt.hasAudio&&(postMessage({cmd:O,type:xe,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===oe&&ci._opt.hasVideo&&(postMessage({cmd:O,type:Be,value:e.byteLength}),postMessage({cmd:O,type:Te,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Oi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?ns(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):cn(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=mn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Oe&&(t=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,n=e[0]>>1&1;if(Ar=r===Oe?n?16:8:0===n?8:16,ui&&ui.setCodec||!wr(i))if(Kt(e)||r===Ge||r===He||r===We){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const n=r===Oe?e.slice(2):new Uint8Array(0);if(i){if(r===We)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,n);r===Oe&&postMessage({cmd:I,buffer:n},[n.buffer]),B=!0,r!==Oe&&(r===We?(ci.mp3Demuxer||(ci.mp3Demuxer=new hn(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(br(r)&&br(ci._opt.mseDecodeAudio))postMessage({cmd:N,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(B){if(Kt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===We?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Oe?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!wr(i))if(vr(e))if(r===Re||r===Me){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Re&&ci._opt.useSIMD){const e=Pr(t);if(e.codecWidth>U||e.codecHeight>U)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const n=new Uint8Array(e);E=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:R,code:r}),postMessage({cmd:M,buffer:n,codecId:r},[n.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,n){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,n,s);else if(br(r))postMessage({cmd:$,payload:e,isIFrame:n,ts:t,cts:s,delay:ci.delay},[e.buffer]);else if(E)if(!Se&&n&&(Se=!0),Se){if(n&&vr(e)){const t=15&e[0];let r={};t===Re?r=Pr(e.slice(5)):t===Me&&(r=qr(e)),r.codecWidth&&r.codecHeight&&f&&S&&(r.codecWidth!==f||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${f}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Zt=!0,postMessage({cmd:j,value:`width: ${f}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(Zt)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(tr)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(vr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${n.length}, need clear is ${e}`),e&&(n=[]),ci.isPlayer&&(ci.resetAllDelay(),br(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:H}))),br(ci._opt.checkFirstIFrame)&&wr(r)&&(Se=!1)},dropBuffer$2:function(){if(n.length>0){let e=n.findIndex((e=>br(e.isIFrame)&&e.type===oe));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:H});const t=n.length;n=n.slice(e);const r=n.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${n.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===n.length&&(ci.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 ae:ci.decode(new Uint8Array(e,5),{type:ae,ts:r});break;case oe:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ci._isEnhancedH265Header(n))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),vr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Me}ci.isPlayer&&ci.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=ci.cryptoPayload(i,e);ci.decode(a,{type:oe,ts:r,isIFrame:e,cts:n})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kr.dispatch(e)},demuxFmp4:function(e){ai.dispatch(e)},demuxMpeg4:function(e){oi.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=wr(d),n===Mt){if(i===Nt){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),dr=sr(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`),ci.decode(i,{type:oe,ts:t,isIFrame:!0,cts:0})}}}else if(n===zt){let r=e,n=0;const s=i===Nt;s&&ci.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0],r=Jr(e.slice(8),s),r=ci.cryptoPayload(r,s),ci.decode(r,{type:oe,ts:t,isIFrame:s,cts:n}))}else if(n===$t){const r=i===Nt;r&&ci.calcIframeIntervalTimestamp(t);let n=Jr(e.slice(5),r);n=ci.cryptoPayload(n,r),ci.decode(n,{type:oe,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Rt)===Rt},findSei:function(e,t){let r=4;ur(dr)&&(r=dr),rr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===pt||r===ft),n=wr(ci.isHevc)&&r===Xe;if(i||n){const r=ir(e,ci.isHevc);postMessage({cmd:Z,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Se&&e>0))return;null===rt?(rt=e,nt=ar()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===v&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${rt} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Pe,value:i}))},calcIframeIntervalTimestamp:function(e){null===Gt?Gt=e:Gt=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&br(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),jt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),jt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:R,code:e}),postMessage({cmd:k,w:t,h:r}),f=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:Ar}),Ot=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=f*S*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(Ut=null,qe=r,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,s);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:s,delay:ci.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=ci._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(kt){if(!(n>=(r=d-kt)))return kt+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...a[1])));ht[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,n-=r}for(kt=n;kt>=d;kt-=d)ht[0]=a[0].slice(o,o+=d),2==Ot&&(ht[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));kt&&(s[0]=a[0].slice(o),2==Ot&&(s[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===Ut&&(Ut=ar());const t=ar(),r=or(xt>0?2*xt:5e3,1e3,5e3),i=t-Ut;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${xt} and diff is ${i} and maxDiff is ${r}\n and replay`),tr=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){d?d.readyState===Ie?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),br(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,f=e,S=t,postMessage({cmd:k,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Ot=e,postMessage({cmd:P,sampleRate:t,channels:e,depth:Ar})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=ci._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(kt){if(!(n>=(r=d-kt)))return kt+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...a[1])));ht[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,n-=r}for(kt=n;kt>=d;kt-=d)ht[0]=a[0].slice(o,o+=d),2==Ot&&(ht[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));kt&&(s[0]=a[0].slice(o),2==Ot&&(s[1]=a[1].slice(o))),a=[]},draw:function(t,r,i,n){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const s=e.HEAPU8.subarray(r,r+Br),a=e.HEAPU8.subarray(i,i+Dr),o=e.HEAPU8.subarray(n,n+Dr),d=new Uint8Array(Br+Dr+Dr);if(d.set(s),d.set(a,Br),d.set(o,Br+Dr),Ut=null,qe=t,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:T}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case he:ci.pushBuffer(t.buffer,t.options);break;case fe:ci.decodeAudio(t.buffer,t.ts);break;case pe:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ge:ci.clearBuffer(t.needClear);break;case ye:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case me:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&wr(t.options.isVideoInited)&&(xr=t.options.isVideoInited),ci.close();break;case _e:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case ve:ci.sendWebsocketMessage(t.message);break;case be:li.$video.currentTime=Number(t.message);break;case we:ci.updatePlaybackIsPause(t.isPause)}}}(e[1],t)}))})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-simd.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_SIMD_WASM_URL&&""!=JESSIBUCA_PRO_SIMD_WASM_URL?JESSIBUCA_PRO_SIMD_WASM_URL:e};var s,a,o,d=Object.assign({},n),l="object"==typeof window,c="function"==typeof importScripts,u="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,h="";function f(e){return n.locateFile?n.locateFile(e,h):h+e}if(u){const{createRequire:e}=await import("module");var p=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),m=p("fs"),_=p("path");h=c?_.dirname(h)+"/":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.js",document.baseURI).href)),s=(e,t)=>(e=Y(e)?new URL(e):_.normalize(e),m.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=Y(e)?new URL(e):_.normalize(e),m.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(l||c)&&(c?h=self.location.href:"undefined"!=typeof document&&document.currentScript&&(h=document.currentScript.src),r&&(h=r),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},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)});var g,y,v=n.print||console.log.bind(console),b=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.quit&&n.quit,n.wasmBinary&&(g=n.wasmBinary),"object"!=typeof WebAssembly&&W("no native wasm support detected");var w,S,E,A,U,x,B,T,k=!1;function C(){var e=y.buffer;n.HEAP8=w=new Int8Array(e),n.HEAP16=E=new Int16Array(e),n.HEAPU8=S=new Uint8Array(e),n.HEAPU16=A=new Uint16Array(e),n.HEAP32=U=new Int32Array(e),n.HEAPU32=x=new Uint32Array(e),n.HEAPF32=B=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var D=[],P=[],L=[];function F(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)M(n.preRun.shift());ee(D)}function I(){ee(P)}function R(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)N(n.postRun.shift());ee(L)}function M(e){D.unshift(e)}function z(e){P.unshift(e)}function N(e){L.unshift(e)}var $=0,O=null;function G(e){$++,n.monitorRunDependencies&&n.monitorRunDependencies($)}function H(e){if($--,n.monitorRunDependencies&&n.monitorRunDependencies($),0==$&&O){var t=O;O=null,t()}}function W(e){n.onAbort&&n.onAbort(e),b(e="Aborted("+e+")"),k=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var V,j="data:application/octet-stream;base64,",q=e=>e.startsWith(j),Y=e=>e.startsWith("file://");function K(e){if(e==V&&g)return new Uint8Array(g);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function X(e){if(!g&&(l||c)){if("function"==typeof fetch&&!Y(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((()=>K(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>K(e)))}function Z(e,t,r){return X(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{b(`failed to asynchronously prepare wasm: ${e}`),W(e)}))}function J(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||q(t)||Y(t)||u||"function"!=typeof fetch?Z(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return b(`wasm streaming compile failed: ${e}`),b("falling back to ArrayBuffer instantiation"),Z(t,r,i)}))))}function Q(){var e={a:Ar};function t(e,t){return Ur=e.exports,y=Ur.C,C(),rt=Ur.G,z(Ur.D),H(),Ur}if(G(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){b(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return J(g,V,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?q(V="decoder-pro-simd.wasm")||(V=f(V)):V=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 ee=e=>{for(;e.length>0;)e.shift()(n)};function te(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,w[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=w[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,w[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=w[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(kr(this.get_type()))return x[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var re,ie,ne,se=(e,t,r)=>{throw new te(e).init(t,r),e},ae=(e,t,r,i,n)=>{},oe=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);re=e},de=e=>{for(var t="",r=e;S[r];)t+=re[S[r++]];return t},le={},ce={},ue={},he=e=>{throw new ie(e)},fe=e=>{throw new ne(e)},pe=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&fe("Mismatched type converter count");for(var n=0;n{ce.hasOwnProperty(e)?n[t]=ce[e]:(s.push(e),le.hasOwnProperty(e)||(le[e]=[]),le[e].push((()=>{n[t]=ce[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function me(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||he(`type "${i}" must have a positive integer typeid pointer`),ce.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;he(`Cannot register type '${i}' twice`)}if(ce[e]=t,delete ue[e],le.hasOwnProperty(e)){var n=le[e];delete le[e],n.forEach((e=>e()))}}function _e(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return me(e,t,r)}var ge,ye=8,ve=(e,t,r,i)=>{_e(e,{name:t=de(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:ye,readValueFromPointer:function(e){return this.fromWireType(S[e])},destructorFunction:null})},be=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),we=e=>{he(e.$$.ptrType.registeredClass.name+" instance already deleted")},Se=!1,Ee=e=>{},Ae=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Ue=e=>{e.count.value-=1,0===e.count.value&&Ae(e)},xe=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=xe(e,t,r.baseClass);return null===i?null:r.downcast(i)},Be={},Te=()=>Object.keys(Fe).length,ke=()=>{var e=[];for(var t in Fe)Fe.hasOwnProperty(t)&&e.push(Fe[t]);return e},Ce=[],De=()=>{for(;Ce.length;){var e=Ce.pop();e.$$.deleteScheduled=!1,e.delete()}},Pe=e=>{ge=e,Ce.length&&ge&&ge(De)},Le=()=>{n.getInheritedInstanceCount=Te,n.getLiveInheritedInstances=ke,n.flushPendingDeletes=De,n.setDelayFunction=Pe},Fe={},Ie=(e,t)=>{for(void 0===t&&he("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Re=(e,t)=>(t=Ie(e,t),Fe[t]),Me=(e,t)=>(t.ptrType&&t.ptr||fe("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&fe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ne(Object.create(e,{$$:{value:t}})));function ze(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Re(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?Me(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Me(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=Be[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=xe(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?Me(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):Me(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var Ne=e=>"undefined"==typeof FinalizationRegistry?(Ne=e=>e,e):(Se=new FinalizationRegistry((e=>{Ue(e.$$)})),Ne=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Se.register(e,r,e)}return e},Ee=e=>Se.unregister(e),Ne(e)),$e=()=>{Object.assign(Oe.prototype,{isAliasOf(e){if(!(this instanceof Oe))return!1;if(!(e instanceof Oe))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||we(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Ne(Object.create(Object.getPrototypeOf(this),{$$:{value:be(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||we(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&he("Object already scheduled for deletion"),Ee(this),Ue(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||we(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&he("Object already scheduled for deletion"),Ce.push(this),1===Ce.length&&ge&&ge(De),this.$$.deleteScheduled=!0,this}})};function Oe(){}var Ge=(e,t)=>Object.defineProperty(t,"name",{value:e}),He=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||he(`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}},We=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&he(`Cannot register public name '${e}' twice`),He(n,e,e),n.hasOwnProperty(r)&&he(`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))},Ve=48,je=57,qe=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=Ve&&t<=je?`_${e}`:e};function Ye(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 Ke=(e,t,r)=>{for(;t!==r;)t.upcast||he(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Xe(e,t){if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),0;t.$$||he(`Cannot pass "${Pt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Ze(e,t){var r;if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||he(`Cannot pass "${Pt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&he(`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=Ke(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&he("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:he(`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,Tt.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:he("Unsupporting sharing policy")}return r}function Je(e,t){if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),0;t.$$||he(`Cannot pass "${Pt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&he(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Qe(e){return this.fromWireType(x[e>>2])}var et=()=>{Object.assign(tt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:ye,readValueFromPointer:Qe,deleteObject(e){null!==e&&e.delete()},fromWireType:ze})};function tt(e,t,r,i,n,s,a,o,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=Ze:i?(this.toWireType=Xe,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}var rt,it,nt=(e,t,r)=>{n.hasOwnProperty(e)||fe("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},st=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},at=[],ot=e=>{var t=at[e];return t||(e>=at.length&&(at.length=e+1),at[e]=t=rt.get(e)),t},dt=(e,t,r)=>e.includes("j")?st(e,t,r):ot(t).apply(null,r),lt=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),dt(e,t,r)}},ct=(e,t)=>{var r=(e=de(e)).includes("j")?lt(e,t):ot(t);return"function"!=typeof r&&he(`unknown function pointer with signature ${e}: ${t}`),r},ut=(e,t)=>{var r=Ge(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},ht=e=>{var t=Tr(e),r=de(t);return xr(t),r},ft=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||ce[t]||(ue[t]?ue[t].forEach(e):(r.push(t),i[t]=!0))})),new it(`${e}: `+r.map(ht).join([", "]))},pt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=de(c),s=ct(n,s),o&&(o=ct(a,o)),l&&(l=ct(d,l)),h=ct(u,h);var f=qe(c);We(f,(function(){ft(`Cannot construct ${c} due to unbound types`,[i])})),pe([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:Oe.prototype;var a=Ge(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Ye(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new tt(c,u,!0,!1,!1),m=new tt(c+"*",u,!1,!1,!1),_=new tt(c+" const*",u,!1,!0,!1);return Be[e]={pointerType:m,constPointerType:_},nt(f,a),[p,m,_]}))},mt=(e,t)=>{for(var r=[],i=0;i>2]);return r},_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=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 yt(e,t,r,i,n,s){var a=t.length;a<2&&he("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+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=mt(t,r);n=ct(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 ie(`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]=()=>{ft(`Cannot construct ${e.name} due to unbound types`,a)},pe([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=yt(r,i,null,n,s),[]))),[]}))},bt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},wt=(e,t,r,i,n,s,a,o,d)=>{var l=mt(r,i);t=de(t),t=bt(t),s=ct(n,s),pe([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){ft(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(He(c,t,i),c[t].overloadTable[r-2]=n),pe([],l,(function(n){var o=yt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function St(){Object.assign(Et.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)}})}function Et(){this.allocated=[void 0],this.freelist=[]}var At=new Et,Ut=e=>{e>=At.reserved&&0==--At.get(e).refcount&&At.free(e)},xt=()=>{for(var e=0,t=At.reserved;t{At.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),At.reserved=At.allocated.length,n.count_emval_handles=xt},Tt={toValue:e=>(e||he("Cannot use deleted val. handle = "+e),At.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 At.allocate({refcount:1,value:e})}}};function kt(e){return this.fromWireType(U[e>>2])}var Ct,Dt=(e,t)=>{_e(e,{name:t=de(t),fromWireType:e=>{var t=Tt.toValue(e);return Ut(e),t},toWireType:(e,t)=>Tt.toHandle(t),argPackAdvance:ye,readValueFromPointer:kt,destructorFunction:null})},Pt=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},Lt=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(B[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},Ft=(e,t,r)=>{_e(e,{name:t=de(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:ye,readValueFromPointer:Lt(t,r),destructorFunction:null})},It=(e,t,r)=>{switch(t){case 1:return r?e=>w[e>>0]:e=>S[e>>0];case 2:return r?e=>E[e>>1]:e=>A[e>>1];case 4:return r?e=>U[e>>2]:e=>x[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},Rt=(e,t,r,i,n)=>{t=de(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");_e(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:ye,readValueFromPointer:It(t,r,0!==i),destructorFunction:null})},Mt=(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(w.buffer,r,t)}_e(e,{name:r=de(r),fromWireType:n,argPackAdvance:ye,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},zt=(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)),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},Nt=(e,t,r)=>zt(e,S,t,r),$t=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},Ot="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,Gt=(e,t,r)=>{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&Ot)return Ot.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},Ht=(e,t)=>e?Gt(S,e,t):"",Wt=(e,t)=>{var r="std::string"===(t=de(t));_e(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==S[o]){var d=Ht(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)Nt(t,a,i+1);else if(n)for(var o=0;o255&&(xr(a),he("String has UTF-16 code units that do not fit in 8 bits")),S[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&A[i];)++i;if((r=i<<1)-e>32&&Vt)return Vt.decode(S.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=E[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},qt=(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 E[t>>1]=0,t-i},Yt=e=>2*e.length,Kt=(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},Xt=(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},Zt=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Jt=(e,t,r)=>{var i,n,s,a,o;r=de(r),2===t?(i=jt,n=qt,a=Yt,s=()=>A,o=1):4===t&&(i=Kt,n=Xt,a=Zt,s=()=>x,o=2),_e(e,{name:r,fromWireType:e=>{for(var r,n=x[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return xr(e),r},toWireType:(e,i)=>{"string"!=typeof i&&he(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=Br(4+s+t);return x[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(xr,d),d},argPackAdvance:ye,readValueFromPointer:kt,destructorFunction(e){xr(e)}})},Qt=(e,t)=>{_e(e,{isVoid:!0,name:t=de(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},er={},tr=e=>{var t=er[e];return void 0===t?de(e):t},rr=[],ir=(e,t,r,i,n)=>(e=rr[e])(t=Tt.toValue(t),t[r=tr(r)],i,n),nr=e=>{var t=rr.length;return rr.push(e),t},sr=(e,t)=>{var r=ce[e];return void 0===r&&he(t+" has unknown type "+ht(e)),r},ar=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},or=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(x[t>>2]=Tt.toHandle(i)),n},dr=(e,t,r)=>{var i=ar(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],c=0;ce.name)).join(", ")}) => ${n.name}>`;return nr(Ge(h,u))},lr=e=>{e>4&&(At.get(e).refcount+=1)},cr=e=>Tt.toHandle(tr(e)),ur=()=>Tt.toHandle({}),hr=e=>Tt.toHandle(Ht(e)),fr=e=>{var t=Tt.toValue(e);_t(t),Ut(e)},pr=(e,t,r)=>{e=Tt.toValue(e),t=Tt.toValue(t),r=Tt.toValue(r),e[t]=r},mr=(e,t)=>{var r=(e=sr(e,"_emval_take_value")).readValueFromPointer(t);return Tt.toHandle(r)},_r=()=>{W("")};Ct=()=>performance.now();var gr=(e,t,r)=>S.copyWithin(e,t,t+r),yr=e=>{W("OOM")},vr=e=>{S.length,yr()},br=[null,[],[]],wr=(e,t)=>{var r=br[e];0===t||10===t?((1===e?v:b)(Gt(r,0)),r.length=0):r.push(t)},Sr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=x[t+4>>2];t+=8;for(var d=0;d>2]=n,0};oe(),ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},ne=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},$e(),Le(),et(),it=n.UnboundTypeError=ut(Error,"UnboundTypeError"),St(),Bt();var Er,Ar={o:se,r:ae,x:ve,q:pt,p:vt,h:wt,w:Dt,k:Ft,b:Rt,a:Mt,l:Wt,i:Jt,y:Qt,g:ir,c:Ut,f:dr,z:lr,m:cr,B:ur,v:hr,e:fr,n:pr,A:mr,j:_r,d:Ct,u:gr,s:vr,t:Sr},Ur=Q(),xr=e=>(xr=Ur.E)(e),Br=e=>(Br=Ur.F)(e),Tr=e=>(Tr=Ur.H)(e),kr=e=>(kr=Ur.I)(e);function Cr(){function e(){Er||(Er=!0,n.calledRun=!0,k||(I(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),R()))}$>0||(F(),$>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=Ur.J)(e,t,r,i,s),n.___start_em_js=143452,n.___stop_em_js=143509,O=function e(){Er||Cr(),Er||(O=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return Cr(),e.ready}),a=(()=>{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 async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};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-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,a,o,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.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,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,x,B,T,k,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=x=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=T=new Float32Array(e),n.HEAPF64=k=new Float64Array(e)}var L=[],F=[],I=[];function R(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(L)}function M(){n.noFSInit||ke.init.initialized||ke.init(),ke.ignorePermissions=!1,ne(F)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(I)}function N(e){L.unshift(e)}function $(e){F.unshift(e)}function O(e){I.unshift(e)}var G=0,H=null;function W(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function V(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ni};function t(e,t){return si=e.exports,v=si.E,P(),Lt=si.H,$(si.F),V(),si}if(W(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(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_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ci(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var ae=(e,t,r)=>{throw new se(e).init(t,r),e},oe=e=>(x[oi()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ke.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;o{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},ke.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new ke.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new ke.ErrnoError(60);for(var s=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(ke.isBlkdev(r)||ke.isFIFO(r))throw new ke.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:ke.chrdev_stream_ops}});var n=ke.createNode(e,t,r,i);return ke.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):ke.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):ke.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):ke.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=ke.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,ke.isDir(e.mode)?t.size=4096:ke.isFile(e.mode)?t.size=e.usedBytes:ke.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw ke.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(ke.isDir(e.mode)){var i;try{i=ke.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ke.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=ke.lookupNode(e,t);for(var i in r.contents)throw new ke.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!ke.isLink(e.mode))throw new ke.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;a(e,(r=>{D(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&&W()},Ee=(e,t,r,i,n,s)=>{ke.createDataFile(e,t,r,i,n,s)},Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},xe=(e,t,r,i,n,s,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,n,d),s&&s(),V()}Ue(r,c,u,(()=>{a&&a(),V()}))||u(r)}W(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},Te=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},ke={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new ke.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=ke.root,n="/",s=0;s40)throw new ke.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(ke.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)%ke.nameTable.length},hashAddNode(e){var t=ke.hashName(e.parent.id,e.name);e.name_next=ke.nameTable[t],ke.nameTable[t]=e},hashRemoveNode(e){var t=ke.hashName(e.parent.id,e.name);if(ke.nameTable[t]===e)ke.nameTable[t]=e.name_next;else for(var r=ke.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=ke.mayLookup(e);if(r)throw new ke.ErrnoError(r,e);for(var i=ke.hashName(e.id,t),n=ke.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return ke.lookup(e,t)},createNode(e,t,r,i){var n=new ke.FSNode(e,t,r,i);return ke.hashAddNode(n),n},destroyNode(e){ke.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ke.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=ke.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{ke.lookupNode(e,t);return 20}catch(e){}return ke.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=ke.lookupNode(e,t)}catch(e){return e.errno}var n=ke.nodePermissions(e,"wx");if(n)return n;if(r){if(!ke.isDir(i.mode))return 54;if(ke.isRoot(i)||ke.getPath(i)===ke.cwd())return 10}else if(ke.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ke.isLink(e.mode)?32:ke.isDir(e.mode)&&("r"!==ke.flagsToPermissionString(t)||512&t)?31:ke.nodePermissions(e,ke.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=ke.MAX_OPEN_FDS;e++)if(!ke.streams[e])return e;throw new ke.ErrnoError(33)},getStreamChecked(e){var t=ke.getStream(e);if(!t)throw new ke.ErrnoError(8);return t},getStream:e=>ke.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return ke.FSStream||(ke.FSStream=function(){this.shared={}},ke.FSStream.prototype={},Object.defineProperties(ke.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new ke.FSStream,e),-1==t&&(t=ke.nextfd()),e.fd=t,ke.streams[t]=e,e},closeStream(e){ke.streams[e]=null},chrdev_stream_ops:{open(e){var t=ke.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new ke.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){ke.devices[e]={stream_ops:t}},getDevice:e=>ke.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),ke.syncFSRequests++,ke.syncFSRequests>1&&w(`warning: ${ke.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=ke.getMounts(ke.root.mount),i=0;function n(e){return ke.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&&ke.root)throw new ke.ErrnoError(10);if(!n&&!s){var a=ke.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,ke.isMountpoint(i))throw new ke.ErrnoError(10);if(!ke.isDir(i.mode))throw new ke.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,n?ke.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=ke.lookupPath(e,{follow_mount:!1});if(!ke.isMountpoint(t.node))throw new ke.ErrnoError(28);var r=t.node,i=r.mounted,n=ke.getMounts(i);Object.keys(ke.nameTable).forEach((e=>{for(var t=ke.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ke.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=ke.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new ke.ErrnoError(28);var s=ke.mayCreate(i,n);if(s)throw new ke.ErrnoError(s);if(!i.node_ops.mknod)throw new ke.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ke.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ke.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,ke.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new ke.ErrnoError(44);var r=ke.lookupPath(t,{parent:!0}).node;if(!r)throw new ke.ErrnoError(44);var i=de.basename(t),n=ke.mayCreate(r,i);if(n)throw new ke.ErrnoError(n);if(!r.node_ops.symlink)throw new ke.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=ke.lookupPath(e,{parent:!0}).node,i=ke.lookupPath(t,{parent:!0}).node,!r||!i)throw new ke.ErrnoError(44);if(r.mount!==i.mount)throw new ke.ErrnoError(75);var d,l=ke.lookupNode(r,a),c=ue.relative(e,s);if("."!==c.charAt(0))throw new ke.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new ke.ErrnoError(55);try{d=ke.lookupNode(i,o)}catch(e){}if(l!==d){var u=ke.isDir(l.mode),h=ke.mayDelete(r,a,u);if(h)throw new ke.ErrnoError(h);if(h=d?ke.mayDelete(i,o,u):ke.mayCreate(i,o))throw new ke.ErrnoError(h);if(!r.node_ops.rename)throw new ke.ErrnoError(63);if(ke.isMountpoint(l)||d&&ke.isMountpoint(d))throw new ke.ErrnoError(10);if(i!==r&&(h=ke.nodePermissions(r,"w")))throw new ke.ErrnoError(h);ke.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{ke.hashAddNode(l)}}},rmdir(e){var t=ke.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!0);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.rmdir)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.rmdir(t,r),ke.destroyNode(i)},readdir(e){var t=ke.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ke.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=ke.lookupPath(e,{parent:!0}).node;if(!t)throw new ke.ErrnoError(44);var r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!1);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.unlink)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.unlink(t,r),ke.destroyNode(i)},readlink(e){var t=ke.lookupPath(e).node;if(!t)throw new ke.ErrnoError(44);if(!t.node_ops.readlink)throw new ke.ErrnoError(28);return ue.resolve(ke.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=ke.lookupPath(e,{follow:!t}).node;if(!r)throw new ke.ErrnoError(44);if(!r.node_ops.getattr)throw new ke.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ke.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=ke.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new ke.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){ke.chmod(e,t,!0)},fchmod(e,t){var r=ke.getStreamChecked(e);ke.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=ke.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new ke.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){ke.chown(e,t,r,!0)},fchown(e,t,r){var i=ke.getStreamChecked(e);ke.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new ke.ErrnoError(28);var r;"string"==typeof e?r=ke.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new ke.ErrnoError(63);if(ke.isDir(r.mode))throw new ke.ErrnoError(31);if(!ke.isFile(r.mode))throw new ke.ErrnoError(28);var i=ke.nodePermissions(r,"w");if(i)throw new ke.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=ke.getStreamChecked(e);if(0==(2097155&r.flags))throw new ke.ErrnoError(28);ke.truncate(r.node,t)},utime(e,t,r){var i=ke.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new ke.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=ke.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new ke.ErrnoError(20)}else i=ke.mknod(e,r,0),s=!0;if(!i)throw new ke.ErrnoError(44);if(ke.isChrdev(i.mode)&&(t&=-513),65536&t&&!ke.isDir(i.mode))throw new ke.ErrnoError(54);if(!s){var a=ke.mayOpen(i,t);if(a)throw new ke.ErrnoError(a)}512&t&&!s&&ke.truncate(i,0),t&=-131713;var o=ke.createStream({node:i,path:ke.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!n.logReadFiles||1&t||(ke.readFiles||(ke.readFiles={}),e in ke.readFiles||(ke.readFiles[e]=1)),o},close(e){if(ke.isClosed(e))throw new ke.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ke.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(ke.isClosed(e))throw new ke.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ke.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ke.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 ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(1==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.read)throw new ke.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new ke.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 ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.write)throw new ke.ErrnoError(28);e.seekable&&1024&e.flags&&ke.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new ke.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(ke.isClosed(e))throw new ke.ErrnoError(8);if(t<0||r<=0)throw new ke.ErrnoError(28);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(!ke.isFile(e.node.mode)&&!ke.isDir(e.node.mode))throw new ke.ErrnoError(43);if(!e.stream_ops.allocate)throw new ke.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new ke.ErrnoError(2);if(1==(2097155&e.flags))throw new ke.ErrnoError(2);if(!e.stream_ops.mmap)throw new ke.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 ke.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=ke.open(e,t.flags),n=ke.stat(e).size,s=new Uint8Array(n);return ke.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),ke.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=ke.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);ke.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ke.write(i,t,0,t.byteLength,void 0,r.canOwn)}ke.close(i)},cwd:()=>ke.currentPath,chdir(e){var t=ke.lookupPath(e,{follow:!0});if(null===t.node)throw new ke.ErrnoError(44);if(!ke.isDir(t.node.mode))throw new ke.ErrnoError(54);var r=ke.nodePermissions(t.node,"x");if(r)throw new ke.ErrnoError(r);ke.currentPath=t.path},createDefaultDirectories(){ke.mkdir("/tmp"),ke.mkdir("/home"),ke.mkdir("/home/web_user")},createDefaultDevices(){ke.mkdir("/dev"),ke.registerDevice(ke.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ke.mkdev("/dev/null",ke.makedev(1,3)),ve.register(ke.makedev(5,0),ve.default_tty_ops),ve.register(ke.makedev(6,0),ve.default_tty1_ops),ke.mkdev("/dev/tty",ke.makedev(5,0)),ke.mkdev("/dev/tty1",ke.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);ke.createDevice("/dev","random",r),ke.createDevice("/dev","urandom",r),ke.mkdir("/dev/shm"),ke.mkdir("/dev/shm/tmp")},createSpecialDirectories(){ke.mkdir("/proc");var e=ke.mkdir("/proc/self");ke.mkdir("/proc/self/fd"),ke.mount({mount(){var t=ke.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=ke.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?ke.createDevice("/dev","stdin",n.stdin):ke.symlink("/dev/tty","/dev/stdin"),n.stdout?ke.createDevice("/dev","stdout",null,n.stdout):ke.symlink("/dev/tty","/dev/stdout"),n.stderr?ke.createDevice("/dev","stderr",null,n.stderr):ke.symlink("/dev/tty1","/dev/stderr"),ke.open("/dev/stdin",0),ke.open("/dev/stdout",1),ke.open("/dev/stderr",1)},ensureErrnoError(){ke.ErrnoError||(ke.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ke.ErrnoError.prototype=new Error,ke.ErrnoError.prototype.constructor=ke.ErrnoError,[44].forEach((e=>{ke.genericErrors[e]=new ke.ErrnoError(e),ke.genericErrors[e].stack=""})))},staticInit(){ke.ensureErrnoError(),ke.nameTable=new Array(4096),ke.mount(we,{},"/"),ke.createDefaultDirectories(),ke.createDefaultDevices(),ke.createSpecialDirectories(),ke.filesystems={MEMFS:we}},init(e,t,r){ke.init.initialized=!0,ke.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,ke.createStandardStreams()},quit(){ke.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=ke.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 c(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 ke.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(ke.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{ke.forceLoadFile(d);var s=be();if(!s)throw new ke.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=ke.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new ke.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(ke.getPath(e.node)))return-54;throw e}x[r>>2]=i.dev,x[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,x[r+12>>2]=i.uid,x[r+16>>2]=i.gid,x[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+24>>2]=K[0],x[r+28>>2]=K[1],x[r+32>>2]=4096,x[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+40>>2]=K[0],x[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+56>>2]=K[0],x[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+72>>2]=K[0],x[r+76>>2]=K[1],B[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+88>>2]=K[0],x[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!ke.isFile(t.node.mode))throw new ke.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);ke.msync(t,s,n,r,i)},varargs:void 0,get(){var e=x[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>ke.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;ke.streams[n];)n++;return ke.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}function Le(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return ke.open(t,r,n).fd}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}var Fe,Ie,Re,Me=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Fe=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Fe[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Ie(e)},We=e=>{throw new Re(e)},Ve=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&We("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},nt={},st=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=at,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||We("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&We("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=nt[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))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||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(n,e,e),n.hasOwnProperty(r)&&He(`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))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Ut(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 xt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Tt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=xt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,sr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function kt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,a,o,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=Tt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=kt,this.destructorFunction=null)}var Lt,Ft,It=(e,t,r)=>{n.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Rt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Mt=[],zt=e=>{var t=Mt[e];return t||(e>=Mt.length&&(Mt.length=e+1),Mt[e]=t=Lt.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Rt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=Ne(t);return ai(t),r},Wt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new Ft(`${e}: `+r.map(Ht).join([", "]))},Vt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),o&&(o=Ot(a,o)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=At(c);wt(f,(function(){Wt(`Cannot construct ${c} due to unbound types`,[i])})),Ve([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Ut(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},It(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var a=t.length;a<2&&He("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+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);n=Ot(i,n),Ve([],[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 Ie(`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]=()=>{Wt(`Cannot construct ${e.name} due to unbound types`,a)},Ve([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,n,s,a,o,d)=>{var l=jt(r,i);t=Ne(t),t=Zt(t),s=Ot(n,s),Ve([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Wt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(bt(c,t,i),c[t].overloadTable[r-2]=n),Ve([],l,(function(n){var o=Kt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,n.count_emval_handles=ir},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function ar(e){return this.fromWireType(x[e>>2])}var or=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=sr.toValue(e);return rr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(T[e>>2])};case 8:return function(e){return this.fromWireType(k[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>x[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==E[o]){var d=Ce(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)pr(t,a,i+1);else if(n)for(var o=0;o255&&(ai(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=x[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},wr=(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(x[t>>2]=a,(t+=4)+4>n)break}return x[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,n,s,a,o;r=Ne(r),2===t?(i=gr,n=yr,a=vr,s=()=>U,o=1):4===t&&(i=br,n=wr,a=Sr,s=()=>B,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ai(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=li(4+s+t);return B[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(ai,d),d},argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction(e){ai(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ur={},xr=e=>{var t=Ur[e];return void 0===t?Ne(e):t},Br=[],Tr=(e,t,r,i,n)=>(e=Br[e])(t=sr.toValue(t),t[r=xr(r)],i,n),kr=e=>{var t=Br.length;return Br.push(e),t},Cr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Pr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(B[t>>2]=sr.toHandle(i)),n},Lr=(e,t,r)=>{var i=Dr(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],c=0;ce.name)).join(", ")}) => ${n.name}>`;return kr(vt(h,u))},Fr=e=>{var t=sr.toValue(e);qt(t),rr(e)},Ir=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Rr=()=>{j("")},Mr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),Nr=e=>{j("OOM")},$r=e=>{E.length,Nr()},Or={},Gr=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:Gr()};for(var t in Or)void 0===Or[t]?delete e[t]:e[t]=Or[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Wr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Vr=(e,t)=>{var r=0;return Hr().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Wr(i,s),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return ke.close(t),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:ke.isDir(r.mode)?3:ke.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+8>>2]=K[0],x[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+16>>2]=K[0],x[t+20>>2]=K[1],0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=B[t+4>>2];t+=8;var d=ke.read(e,S,a,o,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,n){var s=Ir(t,r);try{if(isNaN(s))return 61;var a=De.getStreamFromFD(e);return ke.llseek(a,s,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[n>>2]=K[0],x[n+4>>2]=K[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=B[t+4>>2];t+=8;var d=ke.write(e,S,a,o,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Qr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Jr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ke.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return ke.isDir(this.mode)}},isDevice:{get:function(){return ke.isChrdev(this.mode)}}}),ke.FSNode=ei,ke.createPreloadedFile=xe,ke.staticInit(),ze(),Ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Re=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Ft=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Qt(),nr();var ii,ni={o:ae,A:Pe,s:Le,q:Me,C:Xe,D:Vt,y:Xt,h:Jt,B:or,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:Tr,g:rr,e:Lr,d:Fr,a:Rr,i:Mr,w:zr,r:$r,u:Vr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},si=ie(),ai=e=>(ai=si.G)(e),oi=()=>(oi=si.I)(),di=e=>(di=si.J)(e),li=e=>(li=si.K)(e),ci=e=>(ci=si.M)(e);function ui(){function e(){ii||(ii=!0,n.calledRun=!0,C||(M(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(R(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,a,o,d)=>(n.dynCall_viiijj=si.N)(e,t,r,i,s,a,o,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=si.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=si.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=si.Q)(e,t,r,i,s),H=function e(){ii||ui(),ii||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ui(),t.ready}})(),o=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=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 c(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 u,h=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 f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(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 i={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")}},n=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}}(),s=p(),a=p(),d=p(),u=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 s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,a,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Vt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],jt=Vt,qt=Vt;function Yt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Kt(e){return Xt(e)&&e[1]===Tt}function Xt(e){return e[0]>>4===Oe}const Zt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Jt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,a=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Zt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Zt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Ot.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),a=s-3):(i=2,r=new Array(2),a=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=s):(i=5,a=s,r=new Array(4),s>=6?a=s-3:1===d&&(i=2,r=new Array(2),a=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=jt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class er{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Wt(t.subarray(i+3,i+3+n)),a=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}a=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let o=s.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=jt[a.sampling_freq_index],a.channel_config=n,a.other_data_present=d}let o=0;for(;;){let e=s.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function rr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 ir(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++;return{payload:e.subarray(i),type:n,size:s,uuid:a}}function nr(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 sr(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 ar(){return(new Date).getTime()}function or(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function dr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function lr(e){let t=0,r=dr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=dr(),a=s-r;a>=1e3&&(e(t/a*1e3),r=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){}})();function cr(e){return null==e}function ur(e){return!cr(e)}function hr(e){return"function"==typeof e}function fr(e){let t=null,r=31&e[0];return r!==Ve&&r!==je||(t=Ne),t||(r=(126&e[0])>>1,r!==at&&r!==dt&&r!==ct||(t=$e)),t}function pr(){return"undefined"!=typeof WritableStream}function mr(e){e.close()}function _r(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 gr(e){return e.ok&&e.status>=200&&e.status<=299}function yr(){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}(B)}function vr(e){return e[0]>>4===kt&&e[1]===Tt}function br(e){return!0===e||"true"===e}function wr(e){return!0!==e&&"true"!==e}function Sr(){return!!(Ot.Worker&&Ot.MediaSource&&"canConstructInDedicatedWorker"in Ot.MediaSource&&!0===Ot.MediaSource.canConstructInDedicatedWorker)}function Er(e,t){const r=rr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===et||r===rt||r===nt)||wr(t)&&r===qe)&&(i=!0)})),i}var Ar=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 Ur=Symbol(32),xr=Symbol(16),Br=Symbol(8);class Tr{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 Ar(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(Ur)}readU16(){return this.read(xr)}readU8(){return this.read(Br)}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===Ur){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===xr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Br){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}}Tr.U32=Ur,Tr.U16=xr,Tr.U8=Br;class kr{constructor(e){this.log=function(t){if(e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=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=Cr._ebsp2rbsp(e),r=new Wt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Cr.getProfileString(i),a=Cr.getLevelString(n),o=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,U=2*e,S=A/U}}let x=1;1===b&&1===w||(x=b/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*(f+1),C=16*(p+1)*(2-m);k-=(_+g)*B,C-=(y+v)*T;let D=Math.ceil(k*x);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Cr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:U,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,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=Cr._ebsp2rbsp(e),n=new Wt(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=Cr.getProfileString(s),d=Cr.getLevelString(a),l=1,c=420,u=[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&&(c=u[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=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=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);x=n.readBool(),B=t,T=2*e,U=B/T}}let k=1;1===E&&1===A||(k=E/A);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 P=16*(_+1),L=16*(g+1)*(2-y);P-=(v+b)*C,L-=(w+S)*D;let F=Math.ceil(P*k);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:c,chroma_format_string:Cr.getChromaFormatString(c),frame_rate:{fixed:x,fps:U,fps_den:T,fps_num:B},sar_ratio:{width:E,height:A},codec_size:{width:P,height:L},present_size:{width:F,height:L}}}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 Lr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Fr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Cr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,n&&(a[d]=252|s.chroma_format_idc,a[d+1]=248|s.bit_depth_luma-8,a[d+2]=248|s.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Ir(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}function Rr(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 Mr(e){return 31&e[0]}function zr(e){return e===Xe}function Nr(e){return!function(e){return e===Ve||e===je}(e)&&!zr(e)}function $r(e){return e===qe}function Or(e){if(0===e.length)return!1;const t=Mr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Qe||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Hr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Wr=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)},Vr=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"}};class jr{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 parseVPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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()}}static parseSPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=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&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(M=r.readBits(32),z=r.readBits(32),r.readBool()&&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=!0,a=1;n||(s=r.readBool());let o=!1;if(s?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Wr(e),r=new Wt(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()}})(t),a=(e=>{let t=Wr(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),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()&&(M=r.readBits(32),z=r.readBits(32),r.readBool()&&(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=Wr(e),r=new Wt(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}})(r);n=Object.assign(n,s,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|at,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|dt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|ct,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Zr(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}function Jr(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 Qr(e){return(126&e[0])>>1}function ei(e){return e===ht}function ti(e){return!function(e){return e>=32&&e<=40}(e)}function ri(e){return e>=16&&e<=21}function ii(e){if(0===e.length)return!1;const t=Qr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class si{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ai(e){return parseInt(e)===e}function oi(e){if(!ai(e.length))return!1;for(var t=0;t255)return!1;return!0}function di(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(!oi(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ai(e.length)&&oi(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function li(e){return new Uint8Array(e)}function ci(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 ui,hi={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("")}},fi=(ui="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ui[15&i])}return t.join("")}}),pi={16:10,24:12,32:14},mi=[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],_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ai=[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],Ui=[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],xi=[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],Bi=[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],Ti=[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],ki=[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 Ci(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^_i[a>>8&255]<<16^_i[255&a]<<8^_i[a>>24&255]^mi[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^_i[a>>16&255]<<16^_i[a>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Bi[a>>16&255]^Ti[a>>8&255]^ki[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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^vi[i[(n+1)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=li(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(_i[i[n]>>24&255]^a>>24),o[4*n+1]=255&(_i[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(_i[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(_i[255&i[(n+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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^Ei[i[(n+3)%4]>>16&255]^Ai[i[(n+2)%4]>>8&255]^Ui[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=li(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(gi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(gi[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(gi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(gi[255&i[(n+1)%4]]^a);return o};var Pi=function(e){if(!(this instanceof Pi))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Di(e)};Pi.prototype.encrypt=function(e){if((e=di(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=li(e.length),r=li(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)},Ri.prototype.setBytes=function(e){if(16!=(e=di(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ri.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Mi=function(e,t){if(!(this instanceof Mi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ri||(t=new Ri(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Di(e)};Mi.prototype.encrypt=function(e){for(var t=di(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=a<<24-(i+s)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,a=this.blockSize,o=s/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,a=0;a>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],U=e[t+14],x=e[t+15],B=s[0],T=s[1],k=s[2],C=s[3];B=l(B,T,k,C,a,7,o[0]),C=l(C,B,T,k,d,12,o[1]),k=l(k,C,B,T,f,17,o[2]),T=l(T,k,C,B,p,22,o[3]),B=l(B,T,k,C,m,7,o[4]),C=l(C,B,T,k,_,12,o[5]),k=l(k,C,B,T,g,17,o[6]),T=l(T,k,C,B,y,22,o[7]),B=l(B,T,k,C,v,7,o[8]),C=l(C,B,T,k,b,12,o[9]),k=l(k,C,B,T,w,17,o[10]),T=l(T,k,C,B,S,22,o[11]),B=l(B,T,k,C,E,7,o[12]),C=l(C,B,T,k,A,12,o[13]),k=l(k,C,B,T,U,17,o[14]),B=c(B,T=l(T,k,C,B,x,22,o[15]),k,C,d,5,o[16]),C=c(C,B,T,k,g,9,o[17]),k=c(k,C,B,T,S,14,o[18]),T=c(T,k,C,B,a,20,o[19]),B=c(B,T,k,C,_,5,o[20]),C=c(C,B,T,k,w,9,o[21]),k=c(k,C,B,T,x,14,o[22]),T=c(T,k,C,B,m,20,o[23]),B=c(B,T,k,C,b,5,o[24]),C=c(C,B,T,k,U,9,o[25]),k=c(k,C,B,T,p,14,o[26]),T=c(T,k,C,B,v,20,o[27]),B=c(B,T,k,C,A,5,o[28]),C=c(C,B,T,k,f,9,o[29]),k=c(k,C,B,T,y,14,o[30]),B=u(B,T=c(T,k,C,B,E,20,o[31]),k,C,_,4,o[32]),C=u(C,B,T,k,v,11,o[33]),k=u(k,C,B,T,S,16,o[34]),T=u(T,k,C,B,U,23,o[35]),B=u(B,T,k,C,d,4,o[36]),C=u(C,B,T,k,m,11,o[37]),k=u(k,C,B,T,y,16,o[38]),T=u(T,k,C,B,w,23,o[39]),B=u(B,T,k,C,A,4,o[40]),C=u(C,B,T,k,a,11,o[41]),k=u(k,C,B,T,p,16,o[42]),T=u(T,k,C,B,g,23,o[43]),B=u(B,T,k,C,b,4,o[44]),C=u(C,B,T,k,E,11,o[45]),k=u(k,C,B,T,x,16,o[46]),B=h(B,T=u(T,k,C,B,f,23,o[47]),k,C,a,6,o[48]),C=h(C,B,T,k,y,10,o[49]),k=h(k,C,B,T,U,15,o[50]),T=h(T,k,C,B,_,21,o[51]),B=h(B,T,k,C,E,6,o[52]),C=h(C,B,T,k,p,10,o[53]),k=h(k,C,B,T,w,15,o[54]),T=h(T,k,C,B,d,21,o[55]),B=h(B,T,k,C,v,6,o[56]),C=h(C,B,T,k,x,10,o[57]),k=h(k,C,B,T,g,15,o[58]),T=h(T,k,C,B,A,21,o[59]),B=h(B,T,k,C,m,6,o[60]),C=h(C,B,T,k,S,10,o[61]),k=h(k,C,B,T,f,15,o[62]),T=h(T,k,C,B,b,21,o[63]),s[0]=s[0]+B|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),a=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,a){var o=e+(t&r|~t&i)+n+a;return(o<>>32-s)+t}function c(e,t,r,i,n,s,a){var o=e+(t&i|r&~i)+n+a;return(o<>>32-s)+t}function u(e,t,r,i,n,s,a){var o=e+(t^r^i)+n+a;return(o<>>32-s)+t}function h(e,t,r,i,n,s,a){var o=e+(r^(t|~i))+n+a;return(o<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Ht((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Ni).lib,n=i.WordArray,s=i.Hasher,a=r.algo,o=[],d=a.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(n&s|~n&a):l<40?1859775393+(n^s^a):l<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,d=a,a=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(o[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=a.SHA256=s.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Ht((function(e,t){var r,i,n,s,a,o;e.exports=(i=(r=o=Ni).lib.WordArray,n=r.algo,s=n.SHA256,a=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(a),r.HmacSHA224=s._createHmacHelper(a),o.SHA224)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,a=e.algo;function o(){return n.create.apply(n,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,U=u.high,x=u.low,B=h.high,T=h.low,k=f,C=p,D=m,P=_,L=g,F=y,I=v,R=b,M=w,z=S,N=E,$=A,O=U,G=x,H=B,W=T,V=0;V<80;V++){var j,q,Y=l[V];if(V<16)q=Y.high=0|e[t+2*V],j=Y.low=0|e[t+2*V+1];else{var K=l[V-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[V-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[V-7],ae=se.high,oe=se.low,de=l[V-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=M&N^~M&O,fe=z&$^~z&G,pe=k&D^k&L^D&L,me=C&P^C&F^P&F,_e=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(M>>>14|z<<18)^(M>>>18|z<<14)^(M<<23|z>>>9),ve=(z>>>14|M<<18)^(z>>>18|M<<14)^(z<<23|M>>>9),be=d[V],we=be.high,Se=be.low,Ee=H+ye+((ue=W+ve)>>>0>>0?1:0),Ae=ge+me;H=O,W=G,O=N,G=$,N=M,$=z,M=I+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=R+ue|0)>>>0>>0?1:0)|0,I=L,R=F,L=D,F=P,D=k,P=C,k=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+k+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

    >>0?1:0),y=s.low=y+F,s.high=g+L+(y>>>0>>0?1:0),b=a.low=b+R,a.high=v+I+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+M+(S>>>0>>0?1:0),A=c.low=A+$,c.high=E+N+(A>>>0<$>>>0?1:0),x=u.low=x+G,u.high=U+O+(x>>>0>>0?1:0),T=h.low=T+W,h.high=B+H+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Ht((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Ni).x64,n=i.Word,s=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var o=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(T=r[n]).high^=a,T.low^=s}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(T=r[h+5*m]).high,p^=T.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(T=r[h+5*m]).high^=f,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var U=u[l[w]];U.high=f,U.low=p}var x=u[0],B=r[0];for(x.high=B.high,x.low=B.low,h=0;h<5;h++)for(m=0;m<5;m++){var T=r[w=h+5*m],k=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var P=c[o];T.high^=P.high,T.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,o)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,a,f,b,w,S,E,A,U,x,B,T=this._hash.words,k=u.words,C=h.words,D=o.words,P=d.words,L=l.words,F=c.words;for(S=s=T[0],E=a=T[1],A=f=T[2],U=b=T[3],x=w=T[4],r=0;r<80;r+=1)B=s+e[t+D[r]]|0,B+=r<16?p(a,f,b)+k[0]:r<32?m(a,f,b)+k[1]:r<48?_(a,f,b)+k[2]:r<64?g(a,f,b)+k[3]:y(a,f,b)+k[4],B=(B=v(B|=0,L[r]))+w|0,s=w,w=b,b=v(f,10),f=a,a=B,B=S+e[t+P[r]]|0,B+=r<16?y(E,A,U)+C[0]:r<32?g(E,A,U)+C[1]:r<48?_(E,A,U)+C[2]:r<64?m(E,A,U)+C[3]:p(E,A,U)+C[4],B=(B=v(B|=0,F[r]))+x|0,S=x,x=U,U=v(A,10),A=E,E=B;B=T[1]+f+U|0,T[1]=T[2]+b+x|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+a+A|0,T[0]=B},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,a=0;a<5;a++){var o=s[a];s[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Ht((function(e,t){var r,i,n;e.exports=(i=(r=Ni).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),a=this._iKey=t.clone(),o=s.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),a=n.cfg;return m.create({ciphertext:s,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)a=l.create({keySize:t+r,hasher:n}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=s.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Ht((function(e,t){var r;e.exports=((r=Ni).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,a=this._counter;s&&(a=this._counter=s.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[a/r|0]<<24),s[a]=s[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^n[d])&c[d])>>>0];this._lBlock=a,this._rBlock=s^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var a=n%r,o=t[a>>>2]>>>24-a%4*8&255;s=(s+i[n]+o)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var a=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][n],a+=e.sbox[3][s],a}function l(e,t,r){let i,s=t,a=r;for(let t=0;t1;--t)s^=e.pbox[t],a=d(e,s)^a,i=s,s=a,a=i;return i=s,s=a,a=i,a^=e.pbox[1],s^=e.pbox[0],{left:s,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)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=e.slice(s+4+2,s+4+a);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}return e}function Gi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Ht((function(e,t){e.exports=Ni}));var Hi=Ht((function(e,t){var r,n,s,a=(r=new Date,n=4,s={setLogLevel:function(e){n=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>=n&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);a.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+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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 r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.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)),a.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,s)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,o=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?a.info:a.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(a.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' 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?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+n+" 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)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 r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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=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())}})),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(),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(", ")+")"})),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,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})),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),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()))})),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&s)<<8|e.readUint8():a.property_index=127&s}}})),h.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:a.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(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()})),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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)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=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){a.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){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.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),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(),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}})),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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 n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}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,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},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>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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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))},g.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&&(a.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),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.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)&&(a.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*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 s=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+s),{offset:s,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-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 u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),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 h["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}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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"),n=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-(n.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.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,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),x.cts=e.samples[t].dts+a.sample_offsets[S]):x.cts=x.dts,o?(t==o.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+U==t+1&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+U==t&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return a.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+")"),d.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===s)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,o),n.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Wi(e){return e.reduce(((e,t)=>256*e+t))}function Vi(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]))}Hi.Log,Hi.MP4BoxStream,Hi.DataStream,Hi.MultiBufferStream,Hi.MPEG4DescriptorParser,Hi.BoxParser,Hi.XMLSubtitlein4Parser,Hi.Textin4Parser,Hi.ISOFile,Hi.createFile;class ji{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],Vi(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}}function qi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Yi=16,Ki=[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 Zi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Qi(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}function en(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("")}function tn(e,t){const r=31&t;return e<>>32-r}function rn(e){return(255&Ki[e>>>24&255])<<24|(255&Ki[e>>>16&255])<<16|(255&Ki[e>>>8&255])<<8|255&Ki[255&e]}function nn(e){return e^tn(e,2)^tn(e,10)^tn(e,18)^tn(e,24)}function sn(e){return e^tn(e,13)^tn(e,23)}function an(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]^=nn(rn(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=nn(rn(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=nn(rn(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=nn(rn(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 on(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Xi[r+0],t[r+0]=i[0]^=sn(rn(e)),e=i[2]^i[3]^i[0]^Xi[r+1],t[r+1]=i[1]^=sn(rn(e)),e=i[3]^i[0]^i[1]^Xi[r+2],t[r+2]=i[2]^=sn(rn(e)),e=i[0]^i[1]^i[2]^Xi[r+3],t[r+3]=i[3]^=sn(rn(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function dn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=Zi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Zi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Qi(e):Zi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Yi-e.length%Yi;for(let r=0;r=Yi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),a=5;for(;an){const t=new Uint8Array(s.length+e.length-a);t.set(s,0),t.set(e.slice(a),s.length),s=t;break}let l=e[a+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=dn(e.slice(a+4+u,a+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(a+4,a+4+u),0);const o=nr(qi(n,new Uint8Array(r))),l=new Uint8Array(s.length+o.length);l.set(s,0),l.set(o,s.length),s=l}else{const t=e.slice(a+4,a+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(o,s.length),r.set(t,s.length+4),s=r}a=a+4+d}return s}const un={init:0,findFirstStartCode:1,findSecondStartCode:2};class hn extends class{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(){i.off(e,n);for(var s=arguments.length,a=new Array(s),o=0;o1?r-1:0),n=1;n{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=un.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findFirstStartCode}}}}function fn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)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=fn(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}return e}function _n(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class gn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{hr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class yn{static init(){yn.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 yn.types)yn.types.hasOwnProperty(e)&&(yn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=yn.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 yn.box(yn.types.trak,yn.tkhd(e),yn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return yn.box(yn.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 yn.box(yn.types.mdia,yn.mdhd(e),yn.hdlr(e),yn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return yn.box(yn.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?yn.constants.HDLR_AUDIO:yn.constants.HDLR_VIDEO,yn.box(yn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?yn.box(yn.types.smhd,yn.constants.SMHD):yn.box(yn.types.vmhd,yn.constants.VMHD),yn.box(yn.types.minf,t,yn.dinf(),yn.stbl(e))}static dinf(){return yn.box(yn.types.dinf,yn.box(yn.types.dref,yn.constants.DREF))}static stbl(e){return yn.box(yn.types.stbl,yn.stsd(e),yn.box(yn.types.stts,yn.constants.STTS),yn.box(yn.types.stsc,yn.constants.STSC),yn.box(yn.types.stsz,yn.constants.STSZ),yn.box(yn.types.stco,yn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp3(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp4a(e)):"avc"===e.videoType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.avc1(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.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 yn.box(yn.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 yn.box(yn.types.mp4a,i,yn.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 yn.box(yn.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 yn.box(yn.types.avc1,n,yn.box(yn.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 yn.box(yn.types.hvc1,n,yn.box(yn.types.hvcC,t))}static mvex(e){return yn.box(yn.types.mvex,yn.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 yn.box(yn.types.trex,r)}static moof(e,t){return yn.box(yn.types.moof,yn.mfhd(e.sequenceNumber),yn.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 yn.box(yn.types.mfhd,t)}static traf(e,t){let r=e.id,i=yn.box(yn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=yn.box(yn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=yn.sdtp(e),a=yn.trun(e,s.byteLength+16+16+8+16+8+8);return yn.box(yn.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,yn.box(yn.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),yn.box(yn.types.trun,r)}static mdat(e){return yn.box(yn.types.mdat,e)}}yn.init();var vn,bn=Ht((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(vn=bn)&&vn.__esModule&&Object.prototype.hasOwnProperty.call(vn,"default")&&vn.default;const wn=[44100,48e3,32e3,0],Sn=[22050,24e3,16e3,0],En=[11025,12e3,8e3,0],An=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Un=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],xn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function Bn(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=En[a];break;case 2:d=Sn[a];break;case 3:d=wn[a]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),a=n-3):(i=2,t=new Array(2),a=n):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=n):(i=5,a=n,t=new Array(4),n>=6?a=n-3:1===s&&(i=2,t=new Array(2),a=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Gn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Vn{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function jn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const qn=new Array(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),Yn=new Array(2746333894,1453994832,1736282519,2993693404),Kn=new Array(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 Xn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Jn(e,t){return t+3>>19)^(i<<23|i>>>9)}function ts(e,t){var r=new Array(36);r[0]=Jn(t,0),r[1]=Jn(t,4),r[2]=Jn(t,8),r[3]=Jn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^rs(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function is(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Qn(e),n=Math.ceil(r.length/16),s=new Array(r.length),a=t.slice(),o=0;o3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let a=5;for(;as)break;let d=e[a+4],l=!1,c=2;if(i?(n&&(c=3),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=is(t,r,e.slice(a+4+c,a+4+o));e.set(i,a+4+c)}a=a+4+o}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-2-2024" '+(wr(false)?"and is Trial Version[试用版本]":""));const ss=[];ss.push(a({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][audio wasm]:",e)}}),s({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support, using thread emulation"))})(e)||console.warn("JbPro[❌❌❌][video wasm]:",e)}})),Promise.all(ss).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=[],s=[],a=null,o=null,d=null,l=null,c=null,u=null,h=!1,f=null,S=null,E=!1,B=!1,Se=!!br(r),Ee=0,qe=0,Qe=!1,et=null,rt=null,nt=null,ht=[],Ut=null,xt=null,kt=0,Ot=0,Gt=null,Ht=null,Wt=0,Vt=0,jt=!1,Zt=!1,tr=!1,dr=null,Ar=null,Ur=!1,xr=!0,Br=0,Dr=0,Wr=()=>{const e=yr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(a={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){a.decoder=new VideoDecoder({output:function(e){if(hr(e.createImageBitmap))e.createImageBitmap().then((t=>{a.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ci.delay,ts:0},[r]),mr(e)}));else{a.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ci.delay,ts:0},[t]),mr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){a.reset(),a.decoder&&"closed"!==a.decoder.state&&(a.decoder.close(),a.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(a.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?mt:_t});a.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:R,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Re?(n=Pr(s),i={codec:n.codec,description:s}):t===Me&&(n=Yr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),a.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:n.codecWidth,h:n.codecHeight}),a.isEmitInfo=!0,a.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),a.offscreenCanvasCtx=a.offscreenCanvas.getContext("2d"));try{a.decoder.configure(i),a.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){a.hasInit=!1,a.isEmitInfo=!1,a.offscreenCanvas=null,a.offscreenCanvasCtx=null}});let Vr=function(){if(Ur=!0,o)try{o.abort(),o=null,ci.debugLog("worker","abort success")}catch(e){o=null,ci.debugLog("worker","abort catch",e)}},Kr={init(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},destroy(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=Kr.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");Kr.handleVideoFrames(e)}else Kr.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=Kr.localDts;return Kr.localDts=Kr.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return Kr.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{const t=Mr(e);t===je||t===Ve?Kr.handleVideoH264Nalu(e):Nr(t)&&i.push(e)})),1===i.length)Kr.handleVideoH264Nalu(i[0]);else if(Or(i)){const e=Mr(i[0]),t=$r(e);Kr.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH264Nalu(e)}))}else if(Kr.streamType===$e)if(ci._opt.nakedFlowH265DemuxUseNew){const t=Kr.handleAddNaluStartCode(e),r=Kr.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Qr(e);t===ct||t===dt||t===at?Kr.handleVideoH265Nalu(e):ti(t)&&i.push(e)})),1===i.length)Kr.handleVideoH265Nalu(i[0]);else if(ii(i)){const e=Qr(i[0]),t=ri(e);Kr.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH265Nalu(e)}))}else Qr(e)===ct?Kr.extractH265PPS(e):Kr.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{zr(Mr(e))?Kr.extractH264SEI(e):Kr.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{ei(Qr(e))?Kr.extractH265SEI(e):Kr.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.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=Mr(e);switch(t){case Ve:Kr.sps=e;break;case je:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Lr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(Nr(t)){const r=$r(t),i=Kr.getNaluDts(),n=Ir(e,r);Kr.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if(Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Lr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}},handleVideoH264NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Rr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Qr(e);switch(t){case at:Kr.vps=e;break;case dt:Kr.sps=e;break;case ct:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.vps&&Kr.sps&&Kr.pps){const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}if(ti(t)){const r=ri(t),i=Kr.getNaluDts(),n=Zr(e,r);Kr.doDecode(n,{type:oe,ts:i,isIFrame:r,cts:0})}}else if(Kr.vps&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}},handleVideoH265NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Jr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:oe,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!Kr.streamVideoType)for(let t of e)if(Kr.streamVideoType=fr(t),Kr.streamVideoType)break;Kr.streamVideoType?Kr.streamVideoType===Ne?Kr.handleVideoH264Frames(e):Kr.streamVideoType===$e&&Kr.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Mr(a);let o=!1,d=e===Ke;e!==Ye&&e!==Ke||(s=Kr.parseVideo264Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case je:Kr.pps=e;break;case Ve:Kr.sps=e;break;case Xe:n=e}if(Nr(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Fr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Fr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(i){const e=Kr.getNaluDts(),t=Rr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!1);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let a of e){if(a.byteLength<4)continue;const e=Qr(a);let o=!1,d=ri(e);ti(e)&&(s=Kr.parseVideo265Header(a),o=!0),t.length&&n&&(s.isfms||!o)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(a),i=i||d,n=n||o}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ct:Kr.pps=e;break;case dt:Kr.sps=e;break;case at:Kr.vps=e;break;case pt:case ft:n=e}if(ti(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps&&Kr.vps){Kr.isSendSeqHeader=!0;const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps});ci.decode(e,{type:oe,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps&&Kr.vps){const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps}),t=Kr.localDts;ci.decode(e,{type:oe,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(i){const e=Kr.getNaluDts(),t=Jr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!0);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:oe,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{Kr.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Vn(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Vn(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},ai={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){ai.mp4Box=Hi.createFile(),ai.mp4Box.onReady=ai.onReady,ai.mp4Box.onError=ai.onError,ai.mp4Box.onSamples=ai.onSamples},initTransportDescarmber(){ai.transportDescarmber=new ji},_getSeqHeader(e){const t=ai.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Hi.DataStream(void 0,0,Hi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(ai.isHevc=!0,ci.isHevc=!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){ci.debugLog(ai.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){ai.videoTrackId=t.id;const e=ai._getSeqHeader(t);e&&(ci.debugLog(ai.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),ai.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){ai.audioTrackId=r.id;const e=r.audio||{},t=qt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");ai.mp4Box.setExtractionOptions(r.id);const n=Yt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(ai.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(n,0)}ai.mp4Box.start()},onError(e){ci.debugError(ai.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===ai.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&&ci.calcIframeIntervalTimestamp(i);let n=null;n=ai.isHevc?Jr(t,r):Rr(t,r),ci.decode(n,{type:oe,ts:i,isIFrame:r,cts:0})}ai.mp4Box.removeUsedSamples(e)}else if(e===ai.audioTrackId){if(ci._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),ci.decode(i,{type:ae,ts:r,isIFrame:!1,cts:0})}ai.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(ai.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);ai.transportDescarmber&&(t=ai.transportDescarmber.transport(t)),t.buffer.fileStart=ai.offset,ai.offset+=t.byteLength,ai.mp4Box.appendBuffer(t.buffer)},destroy(){ai.mp4Box&&(ai.mp4Box.stop(),ai.mp4Box.flush(),ai.mp4Box.destroy(),ai.mp4Box=null),ai.transportDescarmber&&(ai.transportDescarmber.destroy(),ai.transportDescarmber=null),ai.offset=0,ai.videoTrackId=null,ai.audioTrackId=null,ai.isHevc=!1}},oi={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);oi.extractNALu(t)},destroy(){oi.lastBuffer=new Uint8Array(0),oi.parsedOffset=0,oi.firstStartCodeOffset=0,oi.secondStartCodeOffset=0,oi.state="init",oi.hasInitVideoCodec=!1,oi.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(oi.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(oi.lastBuffer.length+e.length);for(t.set(oi.lastBuffer,0),t.set(new Uint8Array(e),oi.lastBuffer.length),oi.lastBuffer=t;;){if("init"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findFirstStartCode",oi.firstStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===oi.state){let e=!1;for(;oi.lastBuffer.length-oi.parsedOffset>=4;)if(0===oi.lastBuffer[oi.parsedOffset])if(0===oi.lastBuffer[oi.parsedOffset+1])if(1===oi.lastBuffer[oi.parsedOffset+2]){if(182===oi.lastBuffer[oi.parsedOffset+3]){oi.state="findSecondStartCode",oi.secondStartCodeOffset=oi.parsedOffset,oi.parsedOffset+=4,e=!0;break}oi.parsedOffset++}else oi.parsedOffset++;else oi.parsedOffset++;else oi.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===oi.state){if(!(oi.lastBuffer.length-oi.parsedOffset>0))break;{let e,t,r=192&oi.lastBuffer[oi.parsedOffset];e=0==r?oi.secondStartCodeOffset-14:oi.secondStartCodeOffset;let i=0==(192&oi.lastBuffer[oi.firstStartCodeOffset+4]);if(i){if(oi.firstStartCodeOffset-14<0)return void ci.debugWarn(oi.LOG_NAME,"firstStartCodeOffset -14 is",oi.firstStartCodeOffset-14);oi.hasInitVideoCodec||(oi.hasInitVideoCodec=!0,ci.debugLog(oi.LOG_NAME,"setCodec"),hi.setCodec(ze,"")),t=oi.lastBuffer.subarray(oi.firstStartCodeOffset-14,e)}else t=oi.lastBuffer.subarray(oi.firstStartCodeOffset,e);let n=oi.getNaluDts();oi.hasInitVideoCodec?(postMessage({cmd:O,type:Be,value:t.byteLength}),postMessage({cmd:O,type:Te,value:n}),Ee=n,hi.decode(t,i?1:0,n)):ci.debugWarn(oi.LOG_NAME,"has not init video codec"),oi.lastBuffer=oi.lastBuffer.subarray(e),oi.firstStartCodeOffset=0==r?14:0,oi.parsedOffset=oi.firstStartCodeOffset+4,oi.state="findFirstStartCode"}}}},getNaluDts(){let e=oi.localDts;return oi.localDts=oi.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Hn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=_n(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==s),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==a||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===s||s===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[s]===Rn){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[s]){let r=188-c,i=di.pmt_.pid_stream_type[s];s!==di.pmt_.common_pids.h264&&s!==di.pmt_.common_pids.h265&&s!==di.pmt_.common_pids.adts_aac&&s!==di.pmt_.common_pids.loas_aac&&s!==di.pmt_.common_pids.ac3&&s!==di.pmt_.common_pids.eac3&&s!==di.pmt_.common_pids.opus&&s!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[s]&&!0!==di.pmt_.timed_id3_pids[s]&&!0!==di.pmt_.synchronous_klv_pids[s]&&!0!==di.pmt_.asynchronous_klv_pids[s]||di.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,a));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):di.clearSlices(s,i)}for(let o=1+a;o=s.expected_length&&di.clearSlices(s,i),o+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):s.total_length>=s.expected_length&&di.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let a=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new Nn,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let o=di.pes_slice_queues_[i.pid];o.slices.push(n),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=n.byteLength,o.expected_length>0&&o.expected_length===o.total_length?di.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==n){if(n<3+o)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Tn:case kn:di.parseMP3Payload(c,r);break;case Cn:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):di.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Dn:di.parseADTSAACPayload(c,r);break;case Pn:di.parseLOASAACPayload(c,r);break;case Ln:case Fn:break;case In:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,s,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Mn:di.parseH264Payload(c,r,s,e.random_access_indicator);break;case zn:di.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Cn){let r,s=6;r=0!==n?n:t.byteLength-s;let a=t.subarray(s,s+r);di.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let a=null;if(1===n&&0===s)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=di.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),di.pat_=a,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=di._initPmt(),r.program_number=n,r.version_number=s,di.program_pmt_map_[n]=r;else if(r=di.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Xr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Fr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let n=di.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Qt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new er(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame(cr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ae};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new Wn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Yt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(n,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new On;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/di.timescale_);s.pts=e}else s.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===oe?di._doDecodeVideo({...e,payload:t}):e.type===ae&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Jr(t,e.isIFrame):Rr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:oe,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;br(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ae,ts:e.dts,isIFrame:!1,cts:0})}},li=null;Sr()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new gn,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!wr(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===bt,isStateClosed:()=>li.getState()===wt,isStateEnded:()=>li.getState()===vt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,St,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,At,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(wr(li.hasInit))if(r&&e[1]===Tt){const i=15&e[0];if(i===Me&&wr(ci._opt.supportMSEDecodeHevc))return void li.emitError(Fe.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:R,code:i});const n=new Uint8Array(e);postMessage({cmd:M,buffer:n,codecId:i},[n.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Re?r=Pr(e.slice(5)):t===Me&&(r=qr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Fe.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(vr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Re?s=Pr(n):i===Me&&(s=Yr(n)),li.videoInfo.width=s.codecWidth,li.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),li.emitError(Fe.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const a={id:Ft,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},o=yn.generateInitSegment(a);li.isAvc=i===Re;let d=s.codec;return li.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:li.isAvc?gt:yt,postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),li._initSourceBuffer(),li.appendBuffer(o.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===We,s=r===Oe;if(wr(s||n))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Fe.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Kt(e)){if(o=Jt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!n)return!1;if(o=Bn(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;n&&wr(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=yn.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),wr(li.isAudioInitInfo)&&(Ar=r===Oe?i?16:8:0===i?8:16,postMessage({cmd:L,code:r}),postMessage({cmd:P,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:Ar}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=s,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Fe.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Fe.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Fe.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),a=s.byteLength;if(0===a)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=o,d=!0);const l=o-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=yn.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendBuffer(n.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Ft,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=a,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=s,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=yn.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendAudioBuffer(n.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=It,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=n,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Fe.mediaSourceAudioInitTimeout)}),1e3)));if(wr(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(wr(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Fe.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Fe.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Fe.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:n,end:t})}}else s=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:n,end:t})}}else sli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&wr(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&wr(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&wr(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&wr(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(wr(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Dt,_opt:Wr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Qe,wasmDecodeDelay:Ee-qe});postMessage({cmd:O,type:Ce,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ae)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Qe=!1,ci.delay=t-r):(Qe=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===ae)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===oe&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ae?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===oe&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===oe&&a.decode?a.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===n.length)return;const t=e.ts,i=n[0],s=e.type===oe&&vr(e.payload);if(wr(r))s&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i));else{const r=i.ts-t,a=i.type===ae&&e.type===oe;(r<=20||a||s)&&(ci.debugLog("worker",`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 ${a} and isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===v,t=ci._opt.playType===b;if(Kr.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),a&&ci._opt.useWCS&&ci.useOffscreen()&&a.init(),wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(n.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${n.length}`);if(ci.dropping){for(r=n.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${n.length}`);!r.isIFrame&&n.length;)r=n.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;n.length;)r=n.shift(),ci.doDecode(r);else if(r=n[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),n.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:H})):(n.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;n.length;){if(r=n[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${n.length}`);break}n.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();et||(et=e);const r=e-et;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),et=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(wr(ci._opt.checkFirstIFrame)&&(Se=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;n.length&&(e=n.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Vr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Ur=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&wr(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,et=null,Qe=!1,Ee=0,qe=0,a&&(a.destroy&&a.destroy(),a=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Wr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),n=[],s=[],u&&(u.close(),u=null),f=null,S=null,E=!1,B=!1,Se=!1,jt=!1,Zt=!1,tr=!1,dr=null,ht=[],kt=0,Ot=0,rt=null,nt=null,Gt=null,Ht=null,Ar=null,Wt=0,Vt=0,Ut=null,xt=null,ci.fetchStatus=Dt,xr=!0,Kr.destroy(),ai.destroy(),oi.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===ae&&Kt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===oe&&t.isIFrame&&vr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===w)if(t.type===oe){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ae&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Xt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===oe){if(Wt>0){const e=t.ts-Ht,r=Wt+Wt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Wt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Vt}`),Ht-t.ts>A&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Wt=0),ci._opt.isDropSameTimestampGop&&wr(t.isIFrame)&&Se)){const e=ci.hasIframeInBufferList(),t=wr(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),br(ci._opt.checkFirstIFrame)&&br(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}Ht>0&&(Wt=t.ts-Ht),Vt=e.byteLength,Ht=t.ts}if(Se){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${n.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;n.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${n.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return n.forEach((t=>{t.type===oe&&(e+=1)})),e},hasIframeInBufferList:()=>n.some((e=>e.type===oe&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return n.forEach((e=>{e.type===oe&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return n.forEach((t=>{t.type===ae&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?Kr.lastBuf&&(e=Kr.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&ai.mp4Box&&(e=ai.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=lr((e=>{postMessage({cmd:O,type:Ue,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(ai.listenMp4Box(),ci._opt.isFmp4Private&&ai.initTransportDescarmber()),t.protocol===_){t.isFlv&&(u=new Tr(ci.demuxFlv())),o=new AbortController;const r=Object.assign({signal:o.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(br(Ur))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Dt,void e.body.cancel();if(!gr(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Vr(),void postMessage({cmd:O,type:Fe.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:ke}),pr())ci.writableStream=new WritableStream({write:e=>o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):br(Ur)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof e?(ci.fetchStatus=Pt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Lt,Vr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De})},abort:e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Lt,Vr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De}))):o&&o.signal&&o.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):br(Ur)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof n?(ci.fetchStatus=Pt,l(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ci.demuxFmp4(n):t.isMpeg4?ci.demuxMpeg4(n):t.isTs?ci.demuxTs(n):t.isNakedFlow&&ci.demuxNakedFlow(n),i()):ci.debugWarn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(o&&o.signal&&o.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{o&&o.signal&&o.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Bt?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Fe.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(u=new Tr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:ke}),postMessage({cmd:O,type:Le})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),br(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:y,msg:e.code})):postMessage({cmd:O,type:De}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):br(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Fe.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 de:if(a.byteLength>0){let e=a;br(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(a)),ci.decode(e,{type:ae,ts:s})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case le:if(a.byteLength>=6){const e=a[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(a,s);else{const e=15&a[0];let t=a[0]>>4===Ct;const i=e===Me;if(wr(t)&&br(Er(a,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&vr(a)&&null===ci.isHevc){const e=15&a[0];ci.isHevc=e===Me,dr=sr(a,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`)}t&&ci.calcIframeIntervalTimestamp(s),ci.isPlayer&&ci.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let n=r[0],o=ci.cryptoPayload(a,t);ci.decode(o,{type:oe,ts:s,isIFrame:t,cts:n})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case ce:postMessage({cmd:J,buffer:a},[a.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ae?ci._opt.hasAudio&&(postMessage({cmd:O,type:xe,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===oe&&ci._opt.hasVideo&&(postMessage({cmd:O,type:Be,value:e.byteLength}),postMessage({cmd:O,type:Te,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Oi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?ns(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):cn(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=mn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Oe&&(t=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,n=e[0]>>1&1;if(Ar=r===Oe?n?16:8:0===n?8:16,ui&&ui.setCodec||!wr(i))if(Kt(e)||r===Ge||r===He||r===We){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const n=r===Oe?e.slice(2):new Uint8Array(0);if(i){if(r===We)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,n);r===Oe&&postMessage({cmd:I,buffer:n},[n.buffer]),B=!0,r!==Oe&&(r===We?(ci.mp3Demuxer||(ci.mp3Demuxer=new hn(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(br(r)&&br(ci._opt.mseDecodeAudio))postMessage({cmd:$,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(B){if(Kt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===We?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Oe?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!wr(i))if(vr(e))if(r===Re||r===Me){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Re&&ci._opt.useSIMD){const e=Pr(t);if(e.codecWidth>U||e.codecHeight>U)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const n=new Uint8Array(e);E=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:R,code:r}),postMessage({cmd:M,buffer:n,codecId:r},[n.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,n){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,n,s);else if(br(r))postMessage({cmd:N,payload:e,isIFrame:n,ts:t,cts:s,delay:ci.delay},[e.buffer]);else if(E)if(!Se&&n&&(Se=!0),Se){if(n&&vr(e)){const t=15&e[0];let r={};t===Re?r=Pr(e.slice(5)):t===Me&&(r=qr(e)),r.codecWidth&&r.codecHeight&&f&&S&&(r.codecWidth!==f||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${f}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Zt=!0,postMessage({cmd:j,value:`width: ${f}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(Zt)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(tr)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(vr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${n.length}, need clear is ${e}`),e&&(n=[]),ci.isPlayer&&(ci.resetAllDelay(),br(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:H}))),br(ci._opt.checkFirstIFrame)&&wr(r)&&(Se=!1)},dropBuffer$2:function(){if(n.length>0){let e=n.findIndex((e=>br(e.isIFrame)&&e.type===oe));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:H});const t=n.length;n=n.slice(e);const r=n.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${n.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===n.length&&(ci.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 ae:ci.decode(new Uint8Array(e,5),{type:ae,ts:r});break;case oe:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ci._isEnhancedH265Header(n))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),vr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Me}ci.isPlayer&&ci.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=ci.cryptoPayload(i,e);ci.decode(a,{type:oe,ts:r,isIFrame:e,cts:n})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kr.dispatch(e)},demuxFmp4:function(e){ai.dispatch(e)},demuxMpeg4:function(e){oi.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=wr(d),n===Mt){if(i===$t){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),dr=sr(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`),ci.decode(i,{type:oe,ts:t,isIFrame:!0,cts:0})}}}else if(n===zt){let r=e,n=0;const s=i===$t;s&&ci.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0],r=Jr(e.slice(8),s),r=ci.cryptoPayload(r,s),ci.decode(r,{type:oe,ts:t,isIFrame:s,cts:n}))}else if(n===Nt){const r=i===$t;r&&ci.calcIframeIntervalTimestamp(t);let n=Jr(e.slice(5),r);n=ci.cryptoPayload(n,r),ci.decode(n,{type:oe,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Rt)===Rt},findSei:function(e,t){let r=4;ur(dr)&&(r=dr),rr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===pt||r===ft),n=wr(ci.isHevc)&&r===Xe;if(i||n){const r=ir(e,ci.isHevc);postMessage({cmd:Z,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Se&&e>0))return;null===rt?(rt=e,nt=ar()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===v&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${rt} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Pe,value:i}))},calcIframeIntervalTimestamp:function(e){null===Gt?Gt=e:Gt=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&br(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),jt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),jt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:R,code:e}),postMessage({cmd:k,w:t,h:r}),f=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:Ar}),Ot=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=f*S*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(Ut=null,qe=r,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,s);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:s,delay:ci.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=ci._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(kt){if(!(n>=(r=d-kt)))return kt+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...a[1])));ht[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,n-=r}for(kt=n;kt>=d;kt-=d)ht[0]=a[0].slice(o,o+=d),2==Ot&&(ht[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));kt&&(s[0]=a[0].slice(o),2==Ot&&(s[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===Ut&&(Ut=ar());const t=ar(),r=or(xt>0?2*xt:5e3,1e3,5e3),i=t-Ut;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${xt} and diff is ${i} and maxDiff is ${r}\n and replay`),tr=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){d?d.readyState===Ie?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),br(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,f=e,S=t,postMessage({cmd:k,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Ot=e,postMessage({cmd:P,sampleRate:t,channels:e,depth:Ar})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,a=[],o=0,d=ci._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(kt){if(!(n>=(r=d-kt)))return kt+=n,s[0]=Float32Array.of(...s[0],...a[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...a[1])));ht[0]=Float32Array.of(...s[0],...a[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,n-=r}for(kt=n;kt>=d;kt-=d)ht[0]=a[0].slice(o,o+=d),2==Ot&&(ht[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));kt&&(s[0]=a[0].slice(o),2==Ot&&(s[1]=a[1].slice(o))),a=[]},draw:function(t,r,i,n){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const s=e.HEAPU8.subarray(r,r+Br),a=e.HEAPU8.subarray(i,i+Dr),o=e.HEAPU8.subarray(n,n+Dr),d=new Uint8Array(Br+Dr+Dr);if(d.set(s),d.set(a,Br),d.set(o,Br+Dr),Ut=null,qe=t,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:T}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case he:ci.pushBuffer(t.buffer,t.options);break;case fe:ci.decodeAudio(t.buffer,t.ts);break;case pe:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ge:ci.clearBuffer(t.needClear);break;case ye:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case me:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&wr(t.options.isVideoInited)&&(xr=t.options.isVideoInited),ci.close();break;case _e:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case ve:ci.sendWebsocketMessage(t.message);break;case be:li.$video.currentTime=Number(t.message);break;case we:ci.updatePlaybackIsPause(t.isPause)}}}(e[1],t)}))})); diff --git a/demo/public/pro/js/decoder-pro.js b/demo/public/pro/js/decoder-pro.js index 1d047d16..9911bd86 100644 --- a/demo/public/pro/js/decoder-pro.js +++ b/demo/public/pro/js/decoder-pro.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="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,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_WASM_URL&&""!=JESSIBUCA_PRO_WASM_URL?JESSIBUCA_PRO_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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.js",document.baseURI).href)),s=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(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,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,x,B,k,T,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=x=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=k=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var F=[],L=[],I=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(F)}function R(){n.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,ne(L)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(I)}function N(e){F.unshift(e)}function $(e){L.unshift(e)}function O(e){I.unshift(e)}var G=0,H=null;function W(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function V(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ni};function t(e,t){return si=e.exports,v=si.E,P(),Ft=si.I,$(si.F),V(),si}if(W(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro.wasm")||(q=p(q)):q=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).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(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_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ci(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var oe=(e,t,r)=>{throw new se(e).init(t,r),e},ae=e=>(x[di()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var s=0,o=0;oye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var n=Te.createNode(e,t,r,i);return Te.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):Te.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):Te.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):Te.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=Te.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,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Te.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{D(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&&W()},Ee=(e,t,r,i,n,s)=>{Te.createDataFile(e,t,r,i,n,s)},Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},xe=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Ee(e,t,r,i,n,d),s&&s(),V()}Ue(r,c,u,(()=>{o&&o(),V()}))||u(r)}W(),"string"==typeof r?Se(r,(e=>u(e)),o):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,n="/",s=0;s40)throw new Te.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(Te.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)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),n=Te.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Te.lookup(e,t)},createNode(e,t,r,i){var n=new Te.FSNode(e,t,r,i);return Te.hashAddNode(n),n},destroyNode(e){Te.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.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=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return Te.lookupNode(e,t),20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var n=Te.nodePermissions(e,"wx");if(n)return n;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.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),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function n(e){return Te.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&&Te.root)throw new Te.ErrnoError(10);if(!n&&!s){var o=Te.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Te.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,n=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Te.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=Te.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new Te.ErrnoError(28);var s=Te.mayCreate(i,n);if(s)throw new Te.ErrnoError(s);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.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,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),n=Te.mayCreate(r,i);if(n)throw new Te.ErrnoError(n);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),o=de.basename(e),a=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,o),c=ue.relative(e,s);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,a)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,o,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,a,u):Te.mayCreate(i,a))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!0);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!1);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?Te.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var n;if(!(n="string"==typeof e?Te.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;if(!(r="string"==typeof e?Te.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),s=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!s){var o=Te.mayOpen(i,t);if(o)throw new Te.ErrnoError(o)}512&t&&!s&&Te.truncate(i,0),t&=-131713;var a=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),a},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Te.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(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Te.open(e,t.flags),n=Te.stat(e).size,s=new Uint8Array(n);return Te.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);Te.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?Te.createDevice("/dev","stdin",n.stdin):Te.symlink("/dev/tty","/dev/stdin"),n.stdout?Te.createDevice("/dev","stdout",null,n.stdout):Te.symlink("/dev/tty","/dev/stdout"),n.stderr?Te.createDevice("/dev","stderr",null,n.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=Te.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 c(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 Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(Te.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{Te.forceLoadFile(d);var s=be();if(!s)throw new Te.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;if(i=-100===e?Te.cwd():De.getStreamFromFD(e).path,0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}x[r>>2]=i.dev,x[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,x[r+12>>2]=i.uid,x[r+16>>2]=i.gid,x[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+24>>2]=K[0],x[r+28>>2]=K[1],x[r+32>>2]=4096,x[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+40>>2]=K[0],x[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+56>>2]=K[0],x[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(o/1e3)>>>0,(Y=Math.floor(o/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+72>>2]=K[0],x[r+76>>2]=K[1],B[r+80>>2]=o%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+88>>2]=K[0],x[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);Te.msync(t,s,n,r,i)},varargs:void 0,get(){var e=x[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;Te.streams[n];)n++;return Te.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:return n=De.getp(),A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ae(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return Te.open(t,r,n).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Le,Ie,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Le=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Le[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Ie(e)},We=e=>{throw new Me(e)},Ve=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&We("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},nt={},st=()=>Object.keys(ut).length,ot=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},at=[],dt=()=>{for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,at.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=ot,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||We("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&We("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(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?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))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||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),at.push(this),1===at.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(n,e,e),n.hasOwnProperty(r)&&He(`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))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Ut(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=[]}var xt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=xt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,sr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,o,a,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,Lt,It=(e,t,r)=>{n.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=vt(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},Ht=e=>{var t=li(e),r=Ne(t);return oi(t),r},Wt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new Lt(`${e}: `+r.map(Ht).join([", "]))},Vt=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),a&&(a=Ot(o,a)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=At(c);wt(f,(function(){Wt(`Cannot construct ${c} due to unbound types`,[i])})),Ve([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var o=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new Ut(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},It(f,o),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var o=t.length;o<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=jt(t,r);n=Ot(i,n),Ve([],[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 Ie(`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]=()=>{Wt(`Cannot construct ${e.name} due to unbound types`,o)},Ve([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,n,s,o,a,d)=>{var l=jt(r,i);t=Ne(t),t=Zt(t),s=Ot(n,s),Ve([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Wt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(bt(c,t,i),c[t].overloadTable[r-2]=n),Ve([],l,(function(n){var a=Kt(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,n.count_emval_handles=ir},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function or(e){return this.fromWireType(x[e>>2])}var ar=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=sr.toValue(e);return rr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:or,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>x[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(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==E[a]){var d=Ce(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)pr(t,o,i+1);else if(n)for(var a=0;a255&&(oi(o),He("String has UTF-16 code units that do not fit in 8 bits")),E[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=x[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},wr=(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)),x[t>>2]=o,(t+=4)+4>n)break}return x[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,n,s,o,a;r=Ne(r),2===t?(i=gr,n=yr,o=vr,s=()=>U,a=1):4===t&&(i=br,n=wr,o=Sr,s=()=>B,a=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return oi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=ai(4+s+t);return B[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(oi,d),d},argPackAdvance:Ke,readValueFromPointer:or,destructorFunction(e){oi(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ur={},xr=e=>{var t=Ur[e];return void 0===t?Ne(e):t},Br=[],kr=(e,t,r,i,n)=>(e=Br[e])(t=sr.toValue(t),t[r=xr(r)],i,n),Tr=e=>{var t=Br.length;return Br.push(e),t},Cr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Pr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(B[t>>2]=sr.toHandle(i)),n},Fr=(e,t,r)=>{var i=Dr(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",o=0,a=[];0===r&&a.push("obj");for(var d=["retType"],l=[n],c=0;ce.name)).join(", ")}) => ${n.name}>`;return Tr(vt(h,u))},Lr=e=>{var t=sr.toValue(e);qt(t),rr(e)},Ir=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),Nr=e=>{j("OOM")},$r=e=>{E.length,Nr()},Or={},Gr=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:Gr()};for(var t in Or)void 0===Or[t]?delete e[t]:e[t]=Or[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Wr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Vr=(e,t)=>{var r=0;return Hr().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Wr(i,s),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+8>>2]=K[0],x[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+16>>2]=K[0],x[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.read(e,S,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,n){var s=Ir(t,r);try{if(isNaN(s))return 61;var o=De.getStreamFromFD(e);return Te.llseek(o,s,i),K=[o.position>>>0,(Y=o.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[n>>2]=K[0],x[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.write(e,S,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Qr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Jr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=ei,Te.createPreloadedFile=xe,Te.staticInit(),ze(),Ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Lt=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Qt(),nr();var ii,ni={o:oe,A:Pe,s:Fe,q:Re,C:Xe,D:Vt,y:Xt,h:Jt,B:ar,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,g:kr,d:rr,f:Fr,e:Lr,a:Mr,i:Rr,w:zr,r:$r,u:Vr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},si=ie(),oi=e=>(oi=si.G)(e),ai=e=>(ai=si.H)(e),di=()=>(di=si.J)(),li=e=>(li=si.K)(e),ci=e=>(ci=si.M)(e);function ui(){function e(){ii||(ii=!0,n.calledRun=!0,C||(R(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>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=si.N)(e,t,r,i,s),n._ff_h264_cabac_tables=74396,H=function e(){ii||ui(),ii||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ui(),e.ready}),o=(()=>{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 async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};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-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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.js",document.baseURI).href)),s=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(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,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,x,B,k,T,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=x=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=k=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var F=[],L=[],I=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(F)}function R(){n.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,ne(L)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(I)}function N(e){F.unshift(e)}function $(e){L.unshift(e)}function O(e){I.unshift(e)}var G=0,H=null;function W(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function V(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ni};function t(e,t){return si=e.exports,v=si.E,P(),Ft=si.H,$(si.F),V(),si}if(W(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(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_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ci(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var oe=(e,t,r)=>{throw new se(e).init(t,r),e},ae=e=>(x[ai()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var s=0,o=0;oye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var n=Te.createNode(e,t,r,i);return Te.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):Te.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):Te.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):Te.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=Te.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,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Te.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{D(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&&W()},Ee=(e,t,r,i,n,s)=>{Te.createDataFile(e,t,r,i,n,s)},Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},xe=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Ee(e,t,r,i,n,d),s&&s(),V()}Ue(r,c,u,(()=>{o&&o(),V()}))||u(r)}W(),"string"==typeof r?Se(r,(e=>u(e)),o):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,n="/",s=0;s40)throw new Te.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(Te.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)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),n=Te.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Te.lookup(e,t)},createNode(e,t,r,i){var n=new Te.FSNode(e,t,r,i);return Te.hashAddNode(n),n},destroyNode(e){Te.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.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=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{Te.lookupNode(e,t);return 20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var n=Te.nodePermissions(e,"wx");if(n)return n;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.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),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function n(e){return Te.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&&Te.root)throw new Te.ErrnoError(10);if(!n&&!s){var o=Te.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Te.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,n=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Te.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=Te.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new Te.ErrnoError(28);var s=Te.mayCreate(i,n);if(s)throw new Te.ErrnoError(s);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.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,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),n=Te.mayCreate(r,i);if(n)throw new Te.ErrnoError(n);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),o=de.basename(e),a=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,o),c=ue.relative(e,s);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,a)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,o,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,a,u):Te.mayCreate(i,a))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!0);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!1);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=Te.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=Te.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new Te.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;"string"==typeof e?r=Te.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),s=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!s){var o=Te.mayOpen(i,t);if(o)throw new Te.ErrnoError(o)}512&t&&!s&&Te.truncate(i,0),t&=-131713;var a=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),a},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Te.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(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Te.open(e,t.flags),n=Te.stat(e).size,s=new Uint8Array(n);return Te.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);Te.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?Te.createDevice("/dev","stdin",n.stdin):Te.symlink("/dev/tty","/dev/stdin"),n.stdout?Te.createDevice("/dev","stdout",null,n.stdout):Te.symlink("/dev/tty","/dev/stdout"),n.stderr?Te.createDevice("/dev","stderr",null,n.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=Te.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 c(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 Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(Te.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{Te.forceLoadFile(d);var s=be();if(!s)throw new Te.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=Te.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}x[r>>2]=i.dev,x[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,x[r+12>>2]=i.uid,x[r+16>>2]=i.gid,x[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+24>>2]=K[0],x[r+28>>2]=K[1],x[r+32>>2]=4096,x[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+40>>2]=K[0],x[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+56>>2]=K[0],x[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(o/1e3)>>>0,(Y=Math.floor(o/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+72>>2]=K[0],x[r+76>>2]=K[1],B[r+80>>2]=o%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+88>>2]=K[0],x[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);Te.msync(t,s,n,r,i)},varargs:void 0,get(){var e=x[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;Te.streams[n];)n++;return Te.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ae(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return Te.open(t,r,n).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Le,Ie,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Le=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Le[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Ie(e)},We=e=>{throw new Me(e)},Ve=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&We("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},nt={},st=()=>Object.keys(ut).length,ot=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},at=[],dt=()=>{for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,at.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=ot,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||We("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&We("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(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?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))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||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),at.push(this),1===at.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(n,e,e),n.hasOwnProperty(r)&&He(`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))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Ut(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=[]}var xt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=xt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,sr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,o,a,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,Lt,It=(e,t,r)=>{n.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=Ne(t);return oi(t),r},Wt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new Lt(`${e}: `+r.map(Ht).join([", "]))},Vt=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),a&&(a=Ot(o,a)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=At(c);wt(f,(function(){Wt(`Cannot construct ${c} due to unbound types`,[i])})),Ve([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var o=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new Ut(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},It(f,o),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var o=t.length;o<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=jt(t,r);n=Ot(i,n),Ve([],[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 Ie(`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]=()=>{Wt(`Cannot construct ${e.name} due to unbound types`,o)},Ve([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,n,s,o,a,d)=>{var l=jt(r,i);t=Ne(t),t=Zt(t),s=Ot(n,s),Ve([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Wt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(bt(c,t,i),c[t].overloadTable[r-2]=n),Ve([],l,(function(n){var a=Kt(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,n.count_emval_handles=ir},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function or(e){return this.fromWireType(x[e>>2])}var ar=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=sr.toValue(e);return rr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:or,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>x[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(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==E[a]){var d=Ce(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)pr(t,o,i+1);else if(n)for(var a=0;a255&&(oi(o),He("String has UTF-16 code units that do not fit in 8 bits")),E[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=x[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},wr=(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(x[t>>2]=o,(t+=4)+4>n)break}return x[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,n,s,o,a;r=Ne(r),2===t?(i=gr,n=yr,o=vr,s=()=>U,a=1):4===t&&(i=br,n=wr,o=Sr,s=()=>B,a=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return oi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=li(4+s+t);return B[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(oi,d),d},argPackAdvance:Ke,readValueFromPointer:or,destructorFunction(e){oi(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ur={},xr=e=>{var t=Ur[e];return void 0===t?Ne(e):t},Br=[],kr=(e,t,r,i,n)=>(e=Br[e])(t=sr.toValue(t),t[r=xr(r)],i,n),Tr=e=>{var t=Br.length;return Br.push(e),t},Cr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Pr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(B[t>>2]=sr.toHandle(i)),n},Fr=(e,t,r)=>{var i=Dr(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",o=0,a=[];0===r&&a.push("obj");for(var d=["retType"],l=[n],c=0;ce.name)).join(", ")}) => ${n.name}>`;return Tr(vt(h,u))},Lr=e=>{var t=sr.toValue(e);qt(t),rr(e)},Ir=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),Nr=e=>{j("OOM")},$r=e=>{E.length,Nr()},Or={},Gr=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:Gr()};for(var t in Or)void 0===Or[t]?delete e[t]:e[t]=Or[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Wr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Vr=(e,t)=>{var r=0;return Hr().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Wr(i,s),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+8>>2]=K[0],x[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+16>>2]=K[0],x[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.read(e,S,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,n){var s=Ir(t,r);try{if(isNaN(s))return 61;var o=De.getStreamFromFD(e);return Te.llseek(o,s,i),K=[o.position>>>0,(Y=o.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[n>>2]=K[0],x[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.write(e,S,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Qr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Jr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=ei,Te.createPreloadedFile=xe,Te.staticInit(),ze(),Ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Lt=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Qt(),nr();var ii,ni={o:oe,A:Pe,s:Fe,q:Re,C:Xe,D:Vt,y:Xt,h:Jt,B:ar,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:kr,g:rr,e:Fr,d:Lr,a:Mr,i:Rr,w:zr,r:$r,u:Vr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},si=ie(),oi=e=>(oi=si.G)(e),ai=()=>(ai=si.I)(),di=e=>(di=si.J)(e),li=e=>(li=si.K)(e),ci=e=>(ci=si.M)(e);function ui(){function e(){ii||(ii=!0,n.calledRun=!0,C||(R(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,o,a,d)=>(n.dynCall_viiijj=si.N)(e,t,r,i,s,o,a,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=si.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=si.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=si.Q)(e,t,r,i,s),H=function e(){ii||ui(),ii||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ui(),t.ready}})(),a=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=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 c(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 u,h=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 f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(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 i={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")}},n=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}}(),s=p(),o=p(),d=p(),u=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 s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,o,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Vt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],jt=Vt,qt=Vt;function Yt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Kt(e){return Xt(e)&&e[1]===kt}function Xt(e){return e[0]>>4===Oe}const Zt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Jt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,o=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Zt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let a=Zt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(o=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Ot.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),o=s-3):(i=2,r=new Array(2),o=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),o=s):(i=5,o=s,r=new Array(4),s>=6?o=s-3:1===d&&(i=2,r=new Array(2),o=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&o)>>>1,r[2]=(1&o)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:a,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],o=(192&e[r+2])>>>6,a=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=o+1,t.sampling_freq_index=a,t.sampling_frequency=jt[a],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class er{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Wt(t.subarray(i+3,i+3+n)),o=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}o=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let a=s.readBits(3);if(0!==a){console.error(`frameLengthType = ${a}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),o={},o.audio_object_type=r,o.sampling_freq_index=i,o.sampling_frequency=jt[o.sampling_freq_index],o.channel_config=n,o.other_data_present=d}let a=0;for(;;){let e=s.readByte();if(a+=e,255!==e)break}let d=new Uint8Array(a);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function rr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 ir(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++;return{payload:e.subarray(i),type:n,size:s,uuid:o}}function nr(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 sr(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 or(){return(new Date).getTime()}function ar(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function dr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function lr(e){let t=0,r=dr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=dr(),o=s-r;o>=1e3&&(e(t/o*1e3),r=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){}})();function cr(e){return null==e}function ur(e){return!cr(e)}function hr(e){return"function"==typeof e}function fr(e){let t=null,r=31&e[0];return r!==Ve&&r!==je||(t=Ne),t||(r=(126&e[0])>>1,r!==ot&&r!==dt&&r!==ct||(t=$e)),t}function pr(){return"undefined"!=typeof WritableStream}function mr(e){e.close()}function _r(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 gr(e){return e.ok&&e.status>=200&&e.status<=299}function yr(){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}(B)}function vr(e){return e[0]>>4===Tt&&e[1]===kt}function br(e){return!0===e||"true"===e}function wr(e){return!0!==e&&"true"!==e}function Sr(){return!!(Ot.Worker&&Ot.MediaSource&&"canConstructInDedicatedWorker"in Ot.MediaSource&&!0===Ot.MediaSource.canConstructInDedicatedWorker)}function Er(e,t){const r=rr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===et||r===rt||r===nt)||wr(t)&&r===qe)&&(i=!0)})),i}var Ar=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 Ur=Symbol(32),xr=Symbol(16),Br=Symbol(8);class kr{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 Ar(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(Ur)}readU16(){return this.read(xr)}readU8(){return this.read(Br)}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===Ur){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===xr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Br){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}}kr.U32=Ur,kr.U16=xr,kr.U8=Br;class Tr{constructor(e){this.log=function(t){if(e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=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=Cr._ebsp2rbsp(e),r=new Wt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Cr.getProfileString(i),o=Cr.getLevelString(n),a=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,U=2*e,S=A/U}}let x=1;1===b&&1===w||(x=b/w);let B=0,k=0;if(0===a)B=1,k=2-m;else{B=3===a?1:2,k=(1===a?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*B,C-=(y+v)*k;let D=Math.ceil(T*x);return r.destroy(),r=null,{profile_string:s,level_string:o,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Cr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:U,fps_num:A},sar_ratio:{width:b,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=Cr._ebsp2rbsp(e),n=new Wt(i);n.readByte();let s=n.readByte();n.readByte();let o=n.readByte();n.readUEG();let a=Cr.getProfileString(s),d=Cr.getLevelString(o),l=1,c=420,u=[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&&(c=u[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=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=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);x=n.readBool(),B=t,k=2*e,U=B/k}}let T=1;1===E&&1===A||(T=E/A);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 P=16*(_+1),F=16*(g+1)*(2-y);P-=(v+b)*C,F-=(w+S)*D;let L=Math.ceil(P*T);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:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Cr.getChromaFormatString(c),frame_rate:{fixed:x,fps:U,fps_den:k,fps_num:B},sar_ratio:{width:E,height:A},codec_size:{width:P,height:F},present_size:{width:L,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 Fr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Lr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Cr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let o=new Uint8Array(i);o[0]=1,o[1]=t[1],o[2]=t[2],o[3]=t[3],o[4]=255,o[5]=225;let a=t.byteLength;o[6]=a>>>8,o[7]=255&a;let d=8;o.set(t,8),d+=a,o[d]=1;let l=r.byteLength;o[d+1]=l>>>8,o[d+2]=255&l,o.set(r,d+3),d+=3+l,n&&(o[d]=252|s.chroma_format_idc,o[d+1]=248|s.bit_depth_luma-8,o[d+2]=248|s.bit_depth_chroma-8,o[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+o.byteLength);return u.set(c,0),u.set(o,c.length),u}function Ir(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}function Mr(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 Rr(e){return 31&e[0]}function zr(e){return e===Xe}function Nr(e){return!function(e){return e===Ve||e===je}(e)&&!zr(e)}function $r(e){return e===qe}function Or(e){if(0===e.length)return!1;const t=Rr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Qe||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Hr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Wr=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)},Vr=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"}};class jr{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 parseVPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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()}}static parseSPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(L=t[e-1],I=i[e-1]):255===e&&(L=r.readBits(16),I=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&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&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();M=n;let s=!0,o=1;n||(s=r.readBool());let a=!1;if(s?r.readUEG():a=r.readBool(),a||(o=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Wr(e),r=new Wt(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()}})(t),o=(e=>{let t=Wr(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(L=t[e-1],I=i[e-1]):255===e&&(L=r.readBits(16),I=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),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()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(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();M=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=Wr(e),r=new Wt(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}})(r);n=Object.assign(n,s,o,a);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|ot,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|dt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|ct,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Zr(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}function Jr(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 Qr(e){return(126&e[0])>>1}function ei(e){return e===ht}function ti(e){return!function(e){return e>=32&&e<=40}(e)}function ri(e){return e>=16&&e<=21}function ii(e){if(0===e.length)return!1;const t=Qr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class si{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function oi(e){return parseInt(e)===e}function ai(e){if(!oi(e.length))return!1;for(var t=0;t255)return!1;return!0}function di(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(!ai(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(oi(e.length)&&ai(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function li(e){return new Uint8Array(e)}function ci(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 ui,hi={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("")}},fi=(ui="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ui[15&i])}return t.join("")}}),pi={16:10,24:12,32:14},mi=[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],_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ai=[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],Ui=[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],xi=[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],Bi=[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],ki=[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],Ti=[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 Ci(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^_i[o>>8&255]<<16^_i[255&o]<<8^_i[o>>24&255]^mi[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^_i[o>>16&255]<<16^_i[o>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Bi[o>>16&255]^ki[o>>8&255]^Ti[255&o]},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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^vi[i[(n+1)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var o,a=li(16);for(n=0;n<4;n++)o=this._Ke[t][n],a[4*n]=255&(_i[i[n]>>24&255]^o>>24),a[4*n+1]=255&(_i[i[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(_i[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(_i[255&i[(n+3)%4]]^o);return a},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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^Ei[i[(n+3)%4]>>16&255]^Ai[i[(n+2)%4]>>8&255]^Ui[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var o,a=li(16);for(n=0;n<4;n++)o=this._Kd[t][n],a[4*n]=255&(gi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(gi[i[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(gi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(gi[255&i[(n+1)%4]]^o);return a};var Pi=function(e){if(!(this instanceof Pi))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Di(e)};Pi.prototype.encrypt=function(e){if((e=di(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=li(e.length),r=li(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)},Mi.prototype.setBytes=function(e){if(16!=(e=di(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Mi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Ri=function(e,t){if(!(this instanceof Ri))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Mi||(t=new Mi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Di(e)};Ri.prototype.encrypt=function(e){for(var t=di(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=o<<24-(i+s)%4*8}else for(var a=0;a>>2]=r[a>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=a.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,o=this.blockSize,a=s/(4*o),d=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,o=0;o>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,a=0;a<4&&s+.75*a>>6*(3-a)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,d=0;d<4&&o+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var o=0;o>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,o=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],U=e[t+14],x=e[t+15],B=s[0],k=s[1],T=s[2],C=s[3];B=l(B,k,T,C,o,7,a[0]),C=l(C,B,k,T,d,12,a[1]),T=l(T,C,B,k,f,17,a[2]),k=l(k,T,C,B,p,22,a[3]),B=l(B,k,T,C,m,7,a[4]),C=l(C,B,k,T,_,12,a[5]),T=l(T,C,B,k,g,17,a[6]),k=l(k,T,C,B,y,22,a[7]),B=l(B,k,T,C,v,7,a[8]),C=l(C,B,k,T,b,12,a[9]),T=l(T,C,B,k,w,17,a[10]),k=l(k,T,C,B,S,22,a[11]),B=l(B,k,T,C,E,7,a[12]),C=l(C,B,k,T,A,12,a[13]),T=l(T,C,B,k,U,17,a[14]),B=c(B,k=l(k,T,C,B,x,22,a[15]),T,C,d,5,a[16]),C=c(C,B,k,T,g,9,a[17]),T=c(T,C,B,k,S,14,a[18]),k=c(k,T,C,B,o,20,a[19]),B=c(B,k,T,C,_,5,a[20]),C=c(C,B,k,T,w,9,a[21]),T=c(T,C,B,k,x,14,a[22]),k=c(k,T,C,B,m,20,a[23]),B=c(B,k,T,C,b,5,a[24]),C=c(C,B,k,T,U,9,a[25]),T=c(T,C,B,k,p,14,a[26]),k=c(k,T,C,B,v,20,a[27]),B=c(B,k,T,C,A,5,a[28]),C=c(C,B,k,T,f,9,a[29]),T=c(T,C,B,k,y,14,a[30]),B=u(B,k=c(k,T,C,B,E,20,a[31]),T,C,_,4,a[32]),C=u(C,B,k,T,v,11,a[33]),T=u(T,C,B,k,S,16,a[34]),k=u(k,T,C,B,U,23,a[35]),B=u(B,k,T,C,d,4,a[36]),C=u(C,B,k,T,m,11,a[37]),T=u(T,C,B,k,y,16,a[38]),k=u(k,T,C,B,w,23,a[39]),B=u(B,k,T,C,A,4,a[40]),C=u(C,B,k,T,o,11,a[41]),T=u(T,C,B,k,p,16,a[42]),k=u(k,T,C,B,g,23,a[43]),B=u(B,k,T,C,b,4,a[44]),C=u(C,B,k,T,E,11,a[45]),T=u(T,C,B,k,x,16,a[46]),B=h(B,k=u(k,T,C,B,f,23,a[47]),T,C,o,6,a[48]),C=h(C,B,k,T,y,10,a[49]),T=h(T,C,B,k,U,15,a[50]),k=h(k,T,C,B,_,21,a[51]),B=h(B,k,T,C,E,6,a[52]),C=h(C,B,k,T,p,10,a[53]),T=h(T,C,B,k,w,15,a[54]),k=h(k,T,C,B,d,21,a[55]),B=h(B,k,T,C,v,6,a[56]),C=h(C,B,k,T,x,10,a[57]),T=h(T,C,B,k,g,15,a[58]),k=h(k,T,C,B,A,21,a[59]),B=h(B,k,T,C,m,6,a[60]),C=h(C,B,k,T,S,10,a[61]),T=h(T,C,B,k,f,15,a[62]),k=h(k,T,C,B,b,21,a[63]),s[0]=s[0]+B|0,s[1]=s[1]+k|0,s[2]=s[2]+T|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),o=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,d=a.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return a},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,o){var a=e+(t&r|~t&i)+n+o;return(a<>>32-s)+t}function c(e,t,r,i,n,s,o){var a=e+(t&i|r&~i)+n+o;return(a<>>32-s)+t}function u(e,t,r,i,n,s,o){var a=e+(t^r^i)+n+o;return(a<>>32-s)+t}function h(e,t,r,i,n,s,o){var a=e+(r^(t|~i))+n+o;return(a<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Ht((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Ni).lib,n=i.WordArray,s=i.Hasher,o=r.algo,a=[],d=o.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],d=r[4],l=0;l<80;l++){if(l<16)a[l]=0|e[t+l];else{var c=a[l-3]^a[l-8]^a[l-14]^a[l-16];a[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+a[l];u+=l<20?1518500249+(n&s|~n&o):l<40?1859775393+(n^s^o):l<60?(n&s|n&o|s&o)-1894007588:(n^s^o)-899497514,d=o,o=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(a[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=o.SHA256=s.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&c^~a&u)+d[f]+l[f];h=u,u=c,c=a,a=o+b|0,o=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+a|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Ht((function(e,t){var r,i,n,s,o,a;e.exports=(i=(r=a=Ni).lib.WordArray,n=r.algo,s=n.SHA256,o=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(o),r.HmacSHA224=s._createHmacHelper(o),a.SHA224)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,o=e.algo;function a(){return n.create.apply(n,arguments)}var d=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=a()}();var c=o.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=o.high,b=o.low,w=a.high,S=a.low,E=c.high,A=c.low,U=u.high,x=u.low,B=h.high,k=h.low,T=f,C=p,D=m,P=_,F=g,L=y,I=v,M=b,R=w,z=S,N=E,$=A,O=U,G=x,H=B,W=k,V=0;V<80;V++){var j,q,Y=l[V];if(V<16)q=Y.high=0|e[t+2*V],j=Y.low=0|e[t+2*V+1];else{var K=l[V-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[V-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[V-7],oe=se.high,ae=se.low,de=l[V-16],le=de.high,ce=de.low;q=(q=(q=J+oe+((j=Q+ae)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&O,fe=z&$^~z&G,pe=T&D^T&F^D&F,me=C&P^C&L^P&L,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[V],we=be.high,Se=be.low,Ee=H+ye+((ue=W+ve)>>>0>>0?1:0),Ae=ge+me;H=O,W=G,O=N,G=$,N=R,$=z,R=I+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,I=F,M=L,F=D,L=P,D=T,P=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

    >>0?1:0),y=s.low=y+L,s.high=g+F+(y>>>0>>0?1:0),b=o.low=b+M,o.high=v+I+(b>>>0>>0?1:0),S=a.low=S+z,a.high=w+R+(S>>>0>>0?1:0),A=c.low=A+$,c.high=E+N+(A>>>0<$>>>0?1:0),x=u.low=x+G,u.high=U+O+(x>>>0>>0?1:0),k=h.low=k+W,h.high=B+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Ht((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Ni).x64,n=i.Word,s=i.WordArray,o=r.algo,a=o.SHA512,d=o.SHA384=a.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=a._createHelper(d),r.HmacSHA384=a._createHmacHelper(d),l.SHA384)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.x64.Word,a=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var a=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),(k=r[n]).high^=o,k.low^=s}for(var a=0;a<24;a++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(k=r[h+5*m]).high,p^=k.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[h+5*m]).high^=f,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var U=u[l[w]];U.high=f,U.low=p}var x=u[0],B=r[0];for(x.high=B.high,x.low=B.low,h=0;h<5;h++)for(m=0;m<5;m++){var k=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var P=c[a];k.high^=P.high,k.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var o=this._state,a=this.cfg.outputLength/8,d=a/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,a)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=o.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,o,f,b,w,S,E,A,U,x,B,k=this._hash.words,T=u.words,C=h.words,D=a.words,P=d.words,F=l.words,L=c.words;for(S=s=k[0],E=o=k[1],A=f=k[2],U=b=k[3],x=w=k[4],r=0;r<80;r+=1)B=s+e[t+D[r]]|0,B+=r<16?p(o,f,b)+T[0]:r<32?m(o,f,b)+T[1]:r<48?_(o,f,b)+T[2]:r<64?g(o,f,b)+T[3]:y(o,f,b)+T[4],B=(B=v(B|=0,F[r]))+w|0,s=w,w=b,b=v(f,10),f=o,o=B,B=S+e[t+P[r]]|0,B+=r<16?y(E,A,U)+C[0]:r<32?g(E,A,U)+C[1]:r<48?_(E,A,U)+C[2]:r<64?m(E,A,U)+C[3]:p(E,A,U)+C[4],B=(B=v(B|=0,L[r]))+x|0,S=x,x=U,U=v(A,10),A=E,E=B;B=k[1]+f+U|0,k[1]=k[2]+b+x|0,k[2]=k[3]+w+S|0,k[3]=k[4]+s+E|0,k[4]=k[0]+o+A|0,k[0]=B},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,o=0;o<5;o++){var a=s[o];s[o]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Ht((function(e,t){var r,i,n;e.exports=(i=(r=Ni).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),o=this._iKey=t.clone(),a=s.words,d=o.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),o=n.cfg;return m.create({ciphertext:s,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)o=l.create({keySize:t+r,hasher:n}).compute(e,i);else var o=l.create({keySize:t+r}).compute(e,i);var a=s.create(o.words.slice(t),4*r);return o.sigBytes=4*t,m.create({key:o,iv:a,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Ht((function(e,t){var r;e.exports=((r=Ni).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var o=0;o>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,o=this._counter;s&&(o=this._counter=s.slice(0),this._iv=void 0),i(o);var a=o.slice(0);r.encryptBlock(a,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Ht((function(e,t){var r;e.exports=((r=Ni).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],o=[],a=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;o[r]=y<<24|y>>>8,a[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],o=0;o6&&o%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[o/r|0]<<24),s[o]=s[o-r]^l);for(var a=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,o,a){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^o[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^o[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^o[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^o[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(a[l>>>24]<<24|a[c>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[f++],_=(a[c>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&l])^r[f++],g=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[l>>>8&255]<<8|a[255&c])^r[f++],y=(a[h>>>24]<<24|a[l>>>16&255]<<16|a[c>>>8&255]<<8|a[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=o[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(a[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(a[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,o=this._rBlock,a=0,d=0;d<8;d++)a|=l[d][((o^n[d])&c[d])>>>0];this._lBlock=o,this._rBlock=s^a}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var o=n%r,a=t[o>>>2]>>>24-o%4*8&255;s=(s+i[n]+a)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var o=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(o)}(),r.RC4)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=t._createHelper(a)}(),r.Rabbit)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=t._createHelper(a)}(),r.RabbitLegacy)})),Ht((function(e,t){var r;e.exports=(r=Ni,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],o=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var a={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,o=e.sbox[0][r]+e.sbox[1][i];return o^=e.sbox[2][n],o+=e.sbox[3][s],o}function l(e,t,r){let i,s=t,o=r;for(let t=0;t1;--t)s^=e.pbox[t],o=d(e,s)^o,i=s,s=o,o=i;return i=s,s=o,o=i,o^=e.pbox[1],s^=e.pbox[0],{left:s,right:o}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=o[t][r]}let i=0;for(let o=0;o=r&&(i=0);let a=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=e.slice(s+4+2,s+4+o);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const a=n.decrypt(i);n=null,e.set(a,s+4+2)}s=s+4+o}return e}function Gi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new zi.ModeOfOperation.ctr(t,new zi.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Ht((function(e,t){e.exports=Ni}));var Hi=Ht((function(e,t){var r,n,s,o=(r=new Date,n=4,s={setLogLevel:function(e){n=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>=n&&console.debug("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);o.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+="["+o.getDurationString(e.start(i))+","+o.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=o;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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),o=new Uint8Array(r,i,n);s.set(o)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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,o.debug("MultiBufferStream","Stream ready for parsing"),!0):(o.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(o.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){o.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},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}o.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)),o.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,s)}}t&&(o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,a=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?o.info:o.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(o.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(o.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):0!==l&&a+l>e.getEndPosition()?(e.seek(a),o.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:a}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(o.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(o.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=a,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(o.info("BoxParser","'"+u+"' 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?(o.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(o.error("BoxParser","Parsing of box '"+u+"' read "+n+" 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)o.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 o.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else o.error("av1C reserved_1 parsing problem");else o.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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=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())}})),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(),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(", ")+")"})),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,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})),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),o.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?o.property_index=(127&s)<<8|e.readUint8():o.property_index=127&s}}})),h.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:o.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(o.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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)o.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){o.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){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){o.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),o.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}})),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var o=i.extract_bits(1);this.ptl_sublayer_present_mask|=o<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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 n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}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,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},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>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),o.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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&o.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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?(o.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(o.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(o.warn("ISOFile","Not ready to start parsing"),!1))},g.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&&(o.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),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(o.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),o.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)&&(o.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*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 s=r.samples[l].offset+r.samples[l].alreadyRead,o.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+o.getDurationString(e,a)+" and offset: "+s),{offset:s,time:e/a}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-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 u=new h.avcCBox;u.parse(new a(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new a(t.hevcDecoderConfigRecord)),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 h["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}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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"),n=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-(n.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.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,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,o?(t>=w&&(S++,w<0&&(w=0),w+=o.sample_counts[S]),x.cts=e.samples[t].dts+o.sample_offsets[S]):x.cts=x.dts,a?(t==a.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+U==t+1&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+U==t&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,o,a,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=o,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:a,p.offset=0===t&&0===r?b?w+_.data_offset:w:a,a=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return o.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+")"),d.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===s)return null;o.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var a=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=a))return o.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+a+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,a),n.alreadyRead+=a,r.alreadyRead+=a,t.usedBytes+=a,this.stream.logBufferLevel(),null;o.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Wi(e){return e.reduce(((e,t)=>256*e+t))}function Vi(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]))}Hi.Log,Hi.MP4BoxStream,Hi.DataStream,Hi.MultiBufferStream,Hi.MPEG4DescriptorParser,Hi.BoxParser,Hi.XMLSubtitlein4Parser,Hi.Textin4Parser,Hi.ISOFile,Hi.createFile;class ji{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],Vi(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}}function qi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Yi=16,Ki=[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 Zi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Qi(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}function en(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("")}function tn(e,t){const r=31&t;return e<>>32-r}function rn(e){return(255&Ki[e>>>24&255])<<24|(255&Ki[e>>>16&255])<<16|(255&Ki[e>>>8&255])<<8|255&Ki[255&e]}function nn(e){return e^tn(e,2)^tn(e,10)^tn(e,18)^tn(e,24)}function sn(e){return e^tn(e,13)^tn(e,23)}function on(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]^=nn(rn(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=nn(rn(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=nn(rn(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=nn(rn(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 an(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Xi[r+0],t[r+0]=i[0]^=sn(rn(e)),e=i[2]^i[3]^i[0]^Xi[r+1],t[r+1]=i[1]^=sn(rn(e)),e=i[3]^i[0]^i[1]^Xi[r+2],t[r+2]=i[2]^=sn(rn(e)),e=i[0]^i[1]^i[2]^Xi[r+3],t[r+3]=i[3]^=sn(rn(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function dn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:o="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=Zi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Zi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Qi(e):Zi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Yi-e.length%Yi;for(let r=0;r=Yi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),o=5;for(;on){const t=new Uint8Array(s.length+e.length-o);t.set(s,0),t.set(e.slice(o),s.length),s=t;break}let l=e[o+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=dn(e.slice(o+4+u,o+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(o+4,o+4+u),0);const a=nr(qi(n,new Uint8Array(r))),l=new Uint8Array(s.length+a.length);l.set(s,0),l.set(a,s.length),s=l}else{const t=e.slice(o+4,o+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(a,s.length),r.set(t,s.length+4),s=r}o=o+4+d}return s}const un={init:0,findFirstStartCode:1,findSecondStartCode:2};class hn extends class{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(){i.off(e,n);for(var s=arguments.length,o=new Array(s),a=0;a1?r-1:0),n=1;n{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=un.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==un.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=un.findFirstStartCode}}}}function fn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=fn(e.slice(s+4,s+4+o),t,r);e.set(i,s+4)}s=s+4+o}return e}function _n(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class gn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{hr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class yn{static init(){yn.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 yn.types)yn.types.hasOwnProperty(e)&&(yn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=yn.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 yn.box(yn.types.trak,yn.tkhd(e),yn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return yn.box(yn.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 yn.box(yn.types.mdia,yn.mdhd(e),yn.hdlr(e),yn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return yn.box(yn.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?yn.constants.HDLR_AUDIO:yn.constants.HDLR_VIDEO,yn.box(yn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?yn.box(yn.types.smhd,yn.constants.SMHD):yn.box(yn.types.vmhd,yn.constants.VMHD),yn.box(yn.types.minf,t,yn.dinf(),yn.stbl(e))}static dinf(){return yn.box(yn.types.dinf,yn.box(yn.types.dref,yn.constants.DREF))}static stbl(e){return yn.box(yn.types.stbl,yn.stsd(e),yn.box(yn.types.stts,yn.constants.STTS),yn.box(yn.types.stsc,yn.constants.STSC),yn.box(yn.types.stsz,yn.constants.STSZ),yn.box(yn.types.stco,yn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp3(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.mp4a(e)):"avc"===e.videoType?yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.avc1(e)):yn.box(yn.types.stsd,yn.constants.STSD_PREFIX,yn.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 yn.box(yn.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 yn.box(yn.types.mp4a,i,yn.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 yn.box(yn.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 yn.box(yn.types.avc1,n,yn.box(yn.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 yn.box(yn.types.hvc1,n,yn.box(yn.types.hvcC,t))}static mvex(e){return yn.box(yn.types.mvex,yn.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 yn.box(yn.types.trex,r)}static moof(e,t){return yn.box(yn.types.moof,yn.mfhd(e.sequenceNumber),yn.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 yn.box(yn.types.mfhd,t)}static traf(e,t){let r=e.id,i=yn.box(yn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=yn.box(yn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=yn.sdtp(e),o=yn.trun(e,s.byteLength+16+16+8+16+8+8);return yn.box(yn.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,yn.box(yn.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),yn.box(yn.types.trun,r)}static mdat(e){return yn.box(yn.types.mdat,e)}}yn.init();var vn,bn=Ht((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(vn=bn)&&vn.__esModule&&Object.prototype.hasOwnProperty.call(vn,"default")&&vn.default;const wn=[44100,48e3,32e3,0],Sn=[22050,24e3,16e3,0],En=[11025,12e3,8e3,0],An=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Un=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],xn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function Bn(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,o=(12&t[2])>>>2,a=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=En[o];break;case 2:d=Sn[o];break;case 3:d=wn[o]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),o=n-3):(i=2,t=new Array(2),o=n):-1!==a.indexOf("android")?(i=2,t=new Array(2),o=n):(i=5,o=n,t=new Array(4),n>=6?o=n-3:1===s&&(i=2,t=new Array(2),o=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&o)>>>1,t[2]=(1&o)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Gn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Vn{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function jn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const qn=new Array(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),Yn=new Array(2746333894,1453994832,1736282519,2993693404),Kn=new Array(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 Xn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Jn(e,t){return t+3>>19)^(i<<23|i>>>9)}function ts(e,t){var r=new Array(36);r[0]=Jn(t,0),r[1]=Jn(t,4),r[2]=Jn(t,8),r[3]=Jn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^rs(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function is(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=Qn(e),n=Math.ceil(r.length/16),s=new Array(r.length),o=t.slice(),a=0;a3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let o=5;for(;os)break;let d=e[o+4],l=!1,c=2;if(i?(n&&(c=3),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=is(t,r,e.slice(o+4+c,o+4+a));e.set(i,o+4+c)}o=o+4+a}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-1-2024" '+(wr(false)?"and is Trial Version[试用版本]":""));const ss=[];ss.push(o({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][worker]:",e)}}),s({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support, using thread emulation"))})(e)||console.warn("JbPro[❌❌❌][worker]",e)}})),Promise.all(ss).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=[],s=[],o=null,a=null,d=null,l=null,c=null,u=null,h=!1,f=null,S=null,E=!1,B=!1,Se=!!br(r),Ee=0,qe=0,Qe=!1,et=null,rt=null,nt=null,ht=[],Ut=null,xt=null,Tt=0,Ot=0,Gt=null,Ht=null,Wt=0,Vt=0,jt=!1,Zt=!1,tr=!1,dr=null,Ar=null,Ur=!1,xr=!0,Br=0,Dr=0,Wr=()=>{const e=yr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(o={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){o.decoder=new VideoDecoder({output:function(e){if(hr(e.createImageBitmap))e.createImageBitmap().then((t=>{o.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ci.delay,ts:0},[r]),mr(e)}));else{o.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ci.delay,ts:0},[t]),mr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){o.reset(),o.decoder&&"closed"!==o.decoder.state&&(o.decoder.close(),o.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(o.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?mt:_t});o.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Me?(n=Pr(s),i={codec:n.codec,description:s}):t===Re&&(n=Yr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),o.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:T,w:n.codecWidth,h:n.codecHeight}),o.isEmitInfo=!0,o.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),o.offscreenCanvasCtx=o.offscreenCanvas.getContext("2d"));try{o.decoder.configure(i),o.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){o.hasInit=!1,o.isEmitInfo=!1,o.offscreenCanvas=null,o.offscreenCanvasCtx=null}});let Vr=function(){if(Ur=!0,a)try{a.abort(),a=null,ci.debugLog("worker","abort success")}catch(e){a=null,ci.debugLog("worker","abort catch",e)}},Kr={init(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},destroy(){Kr.lastBuf=null,Kr.vps=null,Kr.sps=null,Kr.pps=null,Kr.streamType=null,Kr.localDts=0,Kr.pendingUnits={},Kr.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=Kr.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");Kr.handleVideoFrames(e)}else Kr.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=Kr.localDts;return Kr.localDts=Kr.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return Kr.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{const t=Rr(e);t===je||t===Ve?Kr.handleVideoH264Nalu(e):Nr(t)&&i.push(e)})),1===i.length)Kr.handleVideoH264Nalu(i[0]);else if(Or(i)){const e=Rr(i[0]),t=$r(e);Kr.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH264Nalu(e)}))}else if(Kr.streamType===$e)if(ci._opt.nakedFlowH265DemuxUseNew){const t=Kr.handleAddNaluStartCode(e),r=Kr.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Qr(e);t===ct||t===dt||t===ot?Kr.handleVideoH265Nalu(e):ti(t)&&i.push(e)})),1===i.length)Kr.handleVideoH265Nalu(i[0]);else if(ii(i)){const e=Qr(i[0]),t=ri(e);Kr.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Kr.handleVideoH265Nalu(e)}))}else Qr(e)===ct?Kr.extractH265PPS(e):Kr.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{zr(Rr(e))?Kr.extractH264SEI(e):Kr.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{ei(Qr(e))?Kr.extractH265SEI(e):Kr.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Kr.handleAddNaluStartCode(e);Kr.extractNALu(t).forEach((e=>{Kr.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=Rr(e);switch(t){case Ve:Kr.sps=e;break;case je:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Fr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(Nr(t)){const r=$r(t),i=Kr.getNaluDts(),n=Ir(e,r);Kr.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Fr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}},handleVideoH264NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Mr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=Qr(e);switch(t){case ot:Kr.vps=e;break;case dt:Kr.sps=e;break;case ct:Kr.pps=e}if(Kr.isSendSeqHeader){if(Kr.vps&&Kr.sps&&Kr.pps){const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}if(ti(t)){const r=ri(t),i=Kr.getNaluDts(),n=Zr(e,r);Kr.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}}else if(Kr.vps&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Xr({vps:Kr.vps,sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Kr.vps=null,Kr.sps=null,Kr.pps=null}},handleVideoH265NaluList(e,t,r){if(Kr.isSendSeqHeader){const i=Kr.getNaluDts(),n=Jr(e.reduce(((e,t)=>{const r=nr(e),i=nr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Kr.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!Kr.streamVideoType)for(let t of e)if(Kr.streamVideoType=fr(t),Kr.streamVideoType)break;Kr.streamVideoType?Kr.streamVideoType===Ne?Kr.handleVideoH264Frames(e):Kr.streamVideoType===$e&&Kr.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=Rr(o);let a=!1,d=e===Ke;e!==Ye&&e!==Ke||(s=Kr.parseVideo264Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case je:Kr.pps=e;break;case Ve:Kr.sps=e;break;case Xe:n=e}if(Nr(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps){Kr.isSendSeqHeader=!0;const e=Lr({sps:Kr.sps,pps:Kr.pps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps){const e=Lr({sps:Kr.sps,pps:Kr.pps}),t=Kr.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null}if(i){const e=Kr.getNaluDts(),t=Mr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!1);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;Kr.pendingUnits.units&&(t=Kr.pendingUnits.units,n=Kr.pendingUnits.vcl,i=Kr.pendingUnits.iFrame,Kr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=Qr(o);let a=!1,d=ri(e);ti(e)&&(s=Kr.parseVideo265Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(Kr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ct:Kr.pps=e;break;case dt:Kr.sps=e;break;case ot:Kr.vps=e;break;case pt:case ft:n=e}if(ti(t)){const t=nr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!Kr.isSendSeqHeader&&Kr.sps&&Kr.pps&&Kr.vps){Kr.isSendSeqHeader=!0;const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps});ci.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(Kr.isSendSeqHeader){if(Kr.sps&&Kr.pps&&Kr.vps){const e=Xr({sps:Kr.sps,pps:Kr.pps,vps:Kr.vps}),t=Kr.localDts;ci.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Kr.sps=null,Kr.pps=null,Kr.vps=null}if(i){const e=Kr.getNaluDts(),t=Jr(i,r);if(ci._opt.isEmitSEI&&n){const t=ir(n,!0);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}Kr.doDecode(t,{type:ae,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{Kr.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Vn(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Vn(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},oi={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){oi.mp4Box=Hi.createFile(),oi.mp4Box.onReady=oi.onReady,oi.mp4Box.onError=oi.onError,oi.mp4Box.onSamples=oi.onSamples},initTransportDescarmber(){oi.transportDescarmber=new ji},_getSeqHeader(e){const t=oi.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Hi.DataStream(void 0,0,Hi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(oi.isHevc=!0,ci.isHevc=!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){ci.debugLog(oi.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){oi.videoTrackId=t.id;const e=oi._getSeqHeader(t);e&&(ci.debugLog(oi.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),oi.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){oi.audioTrackId=r.id;const e=r.audio||{},t=qt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");oi.mp4Box.setExtractionOptions(r.id);const n=Yt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(oi.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(n,0)}oi.mp4Box.start()},onError(e){ci.debugError(oi.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===oi.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&&ci.calcIframeIntervalTimestamp(i);let n=null;n=oi.isHevc?Jr(t,r):Mr(t,r),ci.decode(n,{type:ae,ts:i,isIFrame:r,cts:0})}oi.mp4Box.removeUsedSamples(e)}else if(e===oi.audioTrackId){if(ci._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),ci.decode(i,{type:oe,ts:r,isIFrame:!1,cts:0})}oi.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(oi.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);oi.transportDescarmber&&(t=oi.transportDescarmber.transport(t)),t.buffer.fileStart=oi.offset,oi.offset+=t.byteLength,oi.mp4Box.appendBuffer(t.buffer)},destroy(){oi.mp4Box&&(oi.mp4Box.stop(),oi.mp4Box.flush(),oi.mp4Box.destroy(),oi.mp4Box=null),oi.transportDescarmber&&(oi.transportDescarmber.destroy(),oi.transportDescarmber=null),oi.offset=0,oi.videoTrackId=null,oi.audioTrackId=null,oi.isHevc=!1}},ai={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);ai.extractNALu(t)},destroy(){ai.lastBuffer=new Uint8Array(0),ai.parsedOffset=0,ai.firstStartCodeOffset=0,ai.secondStartCodeOffset=0,ai.state="init",ai.hasInitVideoCodec=!1,ai.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(ai.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(ai.lastBuffer.length+e.length);for(t.set(ai.lastBuffer,0),t.set(new Uint8Array(e),ai.lastBuffer.length),ai.lastBuffer=t;;){if("init"===ai.state){let e=!1;for(;ai.lastBuffer.length-ai.parsedOffset>=4;)if(0===ai.lastBuffer[ai.parsedOffset])if(0===ai.lastBuffer[ai.parsedOffset+1])if(1===ai.lastBuffer[ai.parsedOffset+2]){if(182===ai.lastBuffer[ai.parsedOffset+3]){ai.state="findFirstStartCode",ai.firstStartCodeOffset=ai.parsedOffset,ai.parsedOffset+=4,e=!0;break}ai.parsedOffset++}else ai.parsedOffset++;else ai.parsedOffset++;else ai.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===ai.state){let e=!1;for(;ai.lastBuffer.length-ai.parsedOffset>=4;)if(0===ai.lastBuffer[ai.parsedOffset])if(0===ai.lastBuffer[ai.parsedOffset+1])if(1===ai.lastBuffer[ai.parsedOffset+2]){if(182===ai.lastBuffer[ai.parsedOffset+3]){ai.state="findSecondStartCode",ai.secondStartCodeOffset=ai.parsedOffset,ai.parsedOffset+=4,e=!0;break}ai.parsedOffset++}else ai.parsedOffset++;else ai.parsedOffset++;else ai.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===ai.state){if(!(ai.lastBuffer.length-ai.parsedOffset>0))break;{let e,t,r=192&ai.lastBuffer[ai.parsedOffset];e=0==r?ai.secondStartCodeOffset-14:ai.secondStartCodeOffset;let i=0==(192&ai.lastBuffer[ai.firstStartCodeOffset+4]);if(i){if(ai.firstStartCodeOffset-14<0)return void ci.debugWarn(ai.LOG_NAME,"firstStartCodeOffset -14 is",ai.firstStartCodeOffset-14);ai.hasInitVideoCodec||(ai.hasInitVideoCodec=!0,ci.debugLog(ai.LOG_NAME,"setCodec"),hi.setCodec(ze,"")),t=ai.lastBuffer.subarray(ai.firstStartCodeOffset-14,e)}else t=ai.lastBuffer.subarray(ai.firstStartCodeOffset,e);let n=ai.getNaluDts();ai.hasInitVideoCodec?(postMessage({cmd:O,type:Be,value:t.byteLength}),postMessage({cmd:O,type:ke,value:n}),Ee=n,hi.decode(t,i?1:0,n)):ci.debugWarn(ai.LOG_NAME,"has not init video codec"),ai.lastBuffer=ai.lastBuffer.subarray(e),ai.firstStartCodeOffset=0==r?14:0,ai.parsedOffset=ai.firstStartCodeOffset+4,ai.state="findFirstStartCode"}}}},getNaluDts(){let e=ai.localDts;return ai.localDts=ai.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Hn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=_n(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],o=(48&r[3])>>>4,a=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==s),l={},c=4;if(2==o||3==o){let e=r[4];if(e>0&&(d||3==o)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==o||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==o||3==o)if(0===s||s===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[s]===Mn){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[s]){let r=188-c,i=di.pmt_.pid_stream_type[s];s!==di.pmt_.common_pids.h264&&s!==di.pmt_.common_pids.h265&&s!==di.pmt_.common_pids.adts_aac&&s!==di.pmt_.common_pids.loas_aac&&s!==di.pmt_.common_pids.ac3&&s!==di.pmt_.common_pids.eac3&&s!==di.pmt_.common_pids.opus&&s!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[s]&&!0!==di.pmt_.timed_id3_pids[s]&&!0!==di.pmt_.synchronous_klv_pids[s]&&!0!==di.pmt_.asynchronous_klv_pids[s]||di.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let o=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,o));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):di.clearSlices(s,i)}for(let a=1+o;a=s.expected_length&&di.clearSlices(s,i),a+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):s.total_length>=s.expected_length&&di.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let o=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new Nn,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let a=di.pes_slice_queues_[i.pid];a.slices.push(n),i.payload_unit_start_indicator&&(a.expected_length=0===o?0:o+6),a.total_length+=n.byteLength,a.expected_length>0&&a.expected_length===a.total_length?di.emitPESSlices(a,i):a.expected_length>0&&a.expected_length>>6,a=t[8];2!==o&&3!==o||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===o?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+a;if(0!==n){if(n<3+a)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-a}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case kn:case Tn:di.parseMP3Payload(c,r);break;case Cn:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):di.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Dn:di.parseADTSAACPayload(c,r);break;case Pn:di.parseLOASAACPayload(c,r);break;case Fn:case Ln:break;case In:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,s,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Rn:di.parseH264Payload(c,r,s,e.random_access_indicator);break;case zn:di.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Cn){let r,s=6;r=0!==n?n:t.byteLength-s;let o=t.subarray(s,s+r);di.parsePESPrivateDataPayload(o,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let o=null;if(1===n&&0===s)o={version_number:0,network_pid:0,program_pmt_pid:{}},o.version_number=i;else if(o=di.pat_,null==o)return;let a=r-5-4,d=-1,l=-1;for(let t=8;t<8+a;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?o.network_pid=i:(o.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(o)}`),di.pat_=o,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,o=1&e[5],a=e[6];if(e[7],1===o&&0===a)r=di._initPmt(),r.program_number=n,r.version_number=s,di.program_pmt_map_[n]=r;else if(r=di.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Xr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Lr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let n=di.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Qt(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame());){r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new er(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame(cr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=o,r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,o=(6&e[1])>>1;e[2];let a=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[a];break;case 2:l=i[a];break;case 3:l=r[a]}switch(o){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:oe};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new Wn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Yt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(n,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new On;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/di.timescale_);s.pts=e}else s.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?di._doDecodeVideo({...e,payload:t}):e.type===oe&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Jr(t,e.isIFrame):Mr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;br(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:oe,ts:e.dts,isIFrame:!1,cts:0})}},li=null;Sr()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new gn,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!wr(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===bt,isStateClosed:()=>li.getState()===wt,isStateEnded:()=>li.getState()===vt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,St,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,At,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(wr(li.hasInit))if(r&&e[1]===kt){const i=15&e[0];if(i===Re&&wr(ci._opt.supportMSEDecodeHevc))return void li.emitError(Le.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Me?r=Pr(e.slice(5)):t===Re&&(r=qr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Le.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(vr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Me?s=Pr(n):i===Re&&(s=Yr(n)),li.videoInfo.width=s.codecWidth,li.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),li.emitError(Le.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const o={id:Lt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},a=yn.generateInitSegment(o);li.isAvc=i===Me;let d=s.codec;return li.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:li.isAvc?gt:yt,postMessage({cmd:T,w:s.codecWidth,h:s.codecHeight}),li._initSourceBuffer(),li.appendBuffer(a.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===We,s=r===Oe;if(wr(s||n))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Le.mediaSourceAudioG711NotSupport),!1;const o={id:It,type:"audio",timescale:1e3};let a={};if(Kt(e)){if(a=Jt(e.slice(2)),!a)return!1;o.audioSampleRate=a.sampleRate,o.channelCount=a.channelCount,o.config=a.config,o.refSampleDuration=1024/o.audioSampleRate*o.timescale}else{if(!n)return!1;if(a=Bn(e),!a)return!1;o.audioSampleRate=a.samplingRate,o.channelCount=a.channelCount,o.refSampleDuration=1152/o.audioSampleRate*o.timescale}o.codec=a.codec,o.duration=0;let d="mp4",l=a.codec,c=null;n&&wr(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=yn.generateInitSegment(o);let u=`${o.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),wr(li.isAudioInitInfo)&&(Ar=r===Oe?i?16:8:0===i?8:16,postMessage({cmd:F,code:r}),postMessage({cmd:P,sampleRate:o.audioSampleRate,channels:o.channelCount,depth:Ar}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=s,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Le.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Le.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Le.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Le.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Le.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),o=s.byteLength;if(0===o)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let a=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=a,d=!0);const l=a-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${a} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=yn.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendBuffer(n.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Lt,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=o,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=s,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(yn.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=yn.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendAudioBuffer(n.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=It,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=n,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Le.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Le.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),wr(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&wr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Le.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Le.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Le.mediaSourceAudioInitTimeout)}),1e3)));if(wr(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Le.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Le.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Le.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(wr(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Le.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Le.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Le.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:n,end:t})}}else s=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:n,end:t})}}else sli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&wr(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&wr(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&wr(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&wr(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(wr(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Dt,_opt:Wr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Qe,wasmDecodeDelay:Ee-qe});postMessage({cmd:O,type:Ce,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===oe)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Qe=!1,ci.delay=t-r):(Qe=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!Se)return-1;if(t===oe)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Qe=!1,t=r-i):(Qe=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===ae&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===oe?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===ae&&o.decode?o.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===n.length)return;const t=e.ts,i=n[0],s=e.type===ae&&vr(e.payload);if(wr(r))s&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i));else{const r=i.ts-t,o=i.type===oe&&e.type===ae;(r<=20||o||s)&&(ci.debugLog("worker",`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 ${o} and isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===v,t=ci._opt.playType===b;if(Kr.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),o&&ci._opt.useWCS&&ci.useOffscreen()&&o.init(),wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(n.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${n.length}`);if(ci.dropping){for(r=n.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${n.length}`);!r.isIFrame&&n.length;)r=n.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;n.length;)r=n.shift(),ci.doDecode(r);else if(r=n[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),n.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:H})):(n.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;n.length;){if(r=n[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${n.length}`);break}n.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();et||(et=e);const r=e-et;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),et=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(wr(ci._opt.checkFirstIFrame)&&(Se=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;n.length&&(e=n.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Vr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Ur=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&wr(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,et=null,Qe=!1,Ee=0,qe=0,o&&(o.destroy&&o.destroy(),o=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Wr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),n=[],s=[],u&&(u.close(),u=null),f=null,S=null,E=!1,B=!1,Se=!1,jt=!1,Zt=!1,tr=!1,dr=null,ht=[],Tt=0,Ot=0,rt=null,nt=null,Gt=null,Ht=null,Ar=null,Wt=0,Vt=0,Ut=null,xt=null,ci.fetchStatus=Dt,xr=!0,Kr.destroy(),oi.destroy(),ai.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===oe&&Kt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&vr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===w)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===oe&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Xt(r)?r.slice(2):r.slice(1);postMessage({cmd:L,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===ae){if(Wt>0){const e=t.ts-Ht,r=Wt+Wt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Wt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Vt}`),Ht-t.ts>A&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Wt=0),ci._opt.isDropSameTimestampGop&&wr(t.isIFrame)&&Se)){const e=ci.hasIframeInBufferList(),t=wr(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),br(ci._opt.checkFirstIFrame)&&br(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}Ht>0&&(Wt=t.ts-Ht),Vt=e.byteLength,Ht=t.ts}if(Se){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${n.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;n.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${n.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return n.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>n.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return n.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return n.forEach((t=>{t.type===oe&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?Kr.lastBuf&&(e=Kr.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&oi.mp4Box&&(e=oi.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=lr((e=>{postMessage({cmd:O,type:Ue,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(oi.listenMp4Box(),ci._opt.isFmp4Private&&oi.initTransportDescarmber()),t.protocol===_){t.isFlv&&(u=new kr(ci.demuxFlv())),a=new AbortController;const r=Object.assign({signal:a.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(br(Ur))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Dt,void e.body.cancel();if(!gr(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Vr(),void postMessage({cmd:O,type:Le.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:Te}),pr())ci.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Ft)):br(Ur)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Ft,void Vr()):void("string"!=typeof e?(ci.fetchStatus=Pt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Ft,Vr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Ft);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Le.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Ft,Vr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:g,msg:"fetch done"})):postMessage({cmd:O,type:De}))):a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Ft)):br(Ur)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Ft,void Vr()):void("string"!=typeof n?(ci.fetchStatus=Pt,l(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ci.demuxFmp4(n):t.isMpeg4?ci.demuxMpeg4(n):t.isTs?ci.demuxTs(n):t.isNakedFlow&&ci.demuxNakedFlow(n),i()):ci.debugWarn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Ft);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Le.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Bt?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Le.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(u=new kr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:Te}),postMessage({cmd:O,type:Fe})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),br(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ae,value:y,msg:e.code})):postMessage({cmd:O,type:De}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):br(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Le.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 de:if(o.byteLength>0){let e=o;br(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(o)),ci.decode(e,{type:oe,ts:s})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${o.byteLength} and return`);break;case le:if(o.byteLength>=6){const e=o[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(o,s);else{const e=15&o[0];let t=o[0]>>4===Ct;const i=e===Re;if(wr(t)&&br(Er(o,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&vr(o)&&null===ci.isHevc){const e=15&o[0];ci.isHevc=e===Re,dr=sr(o,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`)}t&&ci.calcIframeIntervalTimestamp(s),ci.isPlayer&&ci.calcNetworkDelay(s),r[0]=o[4],r[1]=o[3],r[2]=o[2],r[3]=0;let n=r[0],a=ci.cryptoPayload(o,t);ci.decode(a,{type:ae,ts:s,isIFrame:t,cts:n})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${o.byteLength} and return`);break;case ce:postMessage({cmd:J,buffer:o},[o.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===oe?ci._opt.hasAudio&&(postMessage({cmd:O,type:xe,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&ci._opt.hasVideo&&(postMessage({cmd:O,type:Be,value:e.byteLength}),postMessage({cmd:O,type:ke,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Oi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?ns(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):cn(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=mn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Oe&&(t=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,n=e[0]>>1&1;if(Ar=r===Oe?n?16:8:0===n?8:16,ui&&ui.setCodec||!wr(i))if(Kt(e)||r===Ge||r===He||r===We){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const n=r===Oe?e.slice(2):new Uint8Array(0);if(i){if(r===We)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,n);r===Oe&&postMessage({cmd:I,buffer:n},[n.buffer]),B=!0,r!==Oe&&(r===We?(ci.mp3Demuxer||(ci.mp3Demuxer=new hn(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(br(r)&&br(ci._opt.mseDecodeAudio))postMessage({cmd:$,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(B){if(Kt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===We?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Oe?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!wr(i))if(vr(e))if(r===Me||r===Re){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Me&&ci._opt.useSIMD){const e=Pr(t);if(e.codecWidth>U||e.codecHeight>U)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const n=new Uint8Array(e);E=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:M,code:r}),postMessage({cmd:R,buffer:n,codecId:r},[n.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,n){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,n,s);else if(br(r))postMessage({cmd:N,payload:e,isIFrame:n,ts:t,cts:s,delay:ci.delay},[e.buffer]);else if(E)if(!Se&&n&&(Se=!0),Se){if(n&&vr(e)){const t=15&e[0];let r={};t===Me?r=Pr(e.slice(5)):t===Re&&(r=qr(e)),r.codecWidth&&r.codecHeight&&f&&S&&(r.codecWidth!==f||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${f}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Zt=!0,postMessage({cmd:j,value:`width: ${f}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(Zt)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(tr)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(vr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${n.length}, need clear is ${e}`),e&&(n=[]),ci.isPlayer&&(ci.resetAllDelay(),br(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:H}))),br(ci._opt.checkFirstIFrame)&&wr(r)&&(Se=!1)},dropBuffer$2:function(){if(n.length>0){let e=n.findIndex((e=>br(e.isIFrame)&&e.type===ae));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:H});const t=n.length;n=n.slice(e);const r=n.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${n.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===n.length&&(ci.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 oe:ci.decode(new Uint8Array(e,5),{type:oe,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ci._isEnhancedH265Header(n))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),vr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Re}ci.isPlayer&&ci.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],o=ci.cryptoPayload(i,e);ci.decode(o,{type:ae,ts:r,isIFrame:e,cts:n})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Kr.dispatch(e)},demuxFmp4:function(e){oi.dispatch(e)},demuxMpeg4:function(e){ai.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=wr(d),n===Rt){if(i===$t){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),dr=sr(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${dr}`),ci.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(n===zt){let r=e,n=0;const s=i===$t;s&&ci.calcIframeIntervalTimestamp(t),d||(a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0],r=Jr(e.slice(8),s),r=ci.cryptoPayload(r,s),ci.decode(r,{type:ae,ts:t,isIFrame:s,cts:n}))}else if(n===Nt){const r=i===$t;r&&ci.calcIframeIntervalTimestamp(t);let n=Jr(e.slice(5),r);n=ci.cryptoPayload(n,r),ci.decode(n,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Mt)===Mt},findSei:function(e,t){let r=4;ur(dr)&&(r=dr),rr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===pt||r===ft),n=wr(ci.isHevc)&&r===Xe;if(i||n){const r=ir(e,ci.isHevc);postMessage({cmd:Z,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(Se&&e>0))return;null===rt?(rt=e,nt=or()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===v&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${rt} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Pe,value:i}))},calcIframeIntervalTimestamp:function(e){null===Gt?Gt=e:Gt=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&br(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){wr(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),jt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),jt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:T,w:t,h:r}),f=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:F,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:Ar}),Ot=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=f*S*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(Ut=null,qe=r,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,s);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:s,delay:ci.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(Tt){if(!(n>=(r=d-Tt)))return Tt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...o[1])));ht[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),a=r,n-=r}for(Tt=n;Tt>=d;Tt-=d)ht[0]=o[0].slice(a,a+=d),2==Ot&&(ht[1]=o[1].slice(a-d,a)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));Tt&&(s[0]=o[0].slice(a),2==Ot&&(s[1]=o[1].slice(a))),o=[]},errorInfo:function(e){null===Ut&&(Ut=or());const t=or(),r=ar(xt>0?2*xt:5e3,1e3,5e3),i=t-Ut;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${xt} and diff is ${i} and maxDiff is ${r}\n and replay`),tr=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){d?d.readyState===Ie?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),br(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,f=e,S=t,postMessage({cmd:T,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Ot=e,postMessage({cmd:P,sampleRate:t,channels:e,depth:Ar})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(Tt){if(!(n>=(r=d-Tt)))return Tt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==Ot&&(s[1]=Float32Array.of(...s[1],...o[1])));ht[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==Ot&&(ht[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer))),a=r,n-=r}for(Tt=n;Tt>=d;Tt-=d)ht[0]=o[0].slice(a,a+=d),2==Ot&&(ht[1]=o[1].slice(a-d,a)),postMessage({cmd:D,buffer:ht,ts:i},ht.map((e=>e.buffer)));Tt&&(s[0]=o[0].slice(a),2==Ot&&(s[1]=o[1].slice(a))),o=[]},draw:function(t,r,i,n){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const s=e.HEAPU8.subarray(r,r+Br),o=e.HEAPU8.subarray(i,i+Dr),a=e.HEAPU8.subarray(n,n+Dr),d=new Uint8Array(Br+Dr+Dr);if(d.set(s),d.set(o,Br),d.set(a,Br+Dr),Ut=null,qe=t,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:k}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case he:ci.pushBuffer(t.buffer,t.options);break;case fe:ci.decodeAudio(t.buffer,t.ts);break;case pe:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ge:ci.clearBuffer(t.needClear);break;case ye:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case me:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&wr(t.options.isVideoInited)&&(xr=t.options.isVideoInited),ci.close();break;case _e:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case ve:ci.sendWebsocketMessage(t.message);break;case be:li.$video.currentTime=Number(t.message);break;case we:ci.updatePlaybackIsPause(t.isPause)}}}(e[1],t)}))})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="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,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_WASM_URL&&""!=JESSIBUCA_PRO_WASM_URL?JESSIBUCA_PRO_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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.js",document.baseURI).href)),s=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(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,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,x,B,k,T,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=x=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=k=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var F=[],L=[],I=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(F)}function R(){n.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,ne(L)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(I)}function N(e){F.unshift(e)}function $(e){L.unshift(e)}function O(e){I.unshift(e)}var G=0,H=null;function W(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function V(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ni};function t(e,t){return si=e.exports,v=si.E,P(),Ft=si.I,$(si.F),V(),si}if(W(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro.wasm")||(q=p(q)):q=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).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(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_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ci(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var oe=(e,t,r)=>{throw new se(e).init(t,r),e},ae=e=>(x[di()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var s=0,o=0;oye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var n=Te.createNode(e,t,r,i);return Te.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):Te.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):Te.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):Te.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=Te.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,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Te.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{D(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&&W()},Ee=(e,t,r,i,n,s)=>{Te.createDataFile(e,t,r,i,n,s)},Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},xe=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Ee(e,t,r,i,n,d),s&&s(),V()}Ue(r,c,u,(()=>{o&&o(),V()}))||u(r)}W(),"string"==typeof r?Se(r,(e=>u(e)),o):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,n="/",s=0;s40)throw new Te.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(Te.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)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),n=Te.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Te.lookup(e,t)},createNode(e,t,r,i){var n=new Te.FSNode(e,t,r,i);return Te.hashAddNode(n),n},destroyNode(e){Te.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.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=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{return Te.lookupNode(e,t),20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var n=Te.nodePermissions(e,"wx");if(n)return n;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.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),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function n(e){return Te.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&&Te.root)throw new Te.ErrnoError(10);if(!n&&!s){var o=Te.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Te.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,n=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Te.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=Te.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new Te.ErrnoError(28);var s=Te.mayCreate(i,n);if(s)throw new Te.ErrnoError(s);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.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,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),n=Te.mayCreate(r,i);if(n)throw new Te.ErrnoError(n);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),o=de.basename(e),a=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,o),c=ue.relative(e,s);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,a)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,o,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,a,u):Te.mayCreate(i,a))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!0);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!1);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;if(!(i="string"==typeof e?Te.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var n;if(!(n="string"==typeof e?Te.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;if(!(r="string"==typeof e?Te.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),s=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!s){var o=Te.mayOpen(i,t);if(o)throw new Te.ErrnoError(o)}512&t&&!s&&Te.truncate(i,0),t&=-131713;var a=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),a},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Te.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(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Te.open(e,t.flags),n=Te.stat(e).size,s=new Uint8Array(n);return Te.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);Te.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?Te.createDevice("/dev","stdin",n.stdin):Te.symlink("/dev/tty","/dev/stdin"),n.stdout?Te.createDevice("/dev","stdout",null,n.stdout):Te.symlink("/dev/tty","/dev/stdout"),n.stderr?Te.createDevice("/dev","stderr",null,n.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=Te.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 c(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 Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(Te.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{Te.forceLoadFile(d);var s=be();if(!s)throw new Te.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;if(i=-100===e?Te.cwd():De.getStreamFromFD(e).path,0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}x[r>>2]=i.dev,x[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,x[r+12>>2]=i.uid,x[r+16>>2]=i.gid,x[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+24>>2]=K[0],x[r+28>>2]=K[1],x[r+32>>2]=4096,x[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+40>>2]=K[0],x[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+56>>2]=K[0],x[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(o/1e3)>>>0,(Y=Math.floor(o/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+72>>2]=K[0],x[r+76>>2]=K[1],B[r+80>>2]=o%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+88>>2]=K[0],x[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);Te.msync(t,s,n,r,i)},varargs:void 0,get(){var e=x[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;Te.streams[n];)n++;return Te.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:return n=De.getp(),A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ae(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return Te.open(t,r,n).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Le,Ie,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Le=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Le[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Ie(e)},We=e=>{throw new Me(e)},Ve=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&We("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},nt={},st=()=>Object.keys(ut).length,ot=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},at=[],dt=()=>{for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,at.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=ot,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||We("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&We("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(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?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))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||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),at.push(this),1===at.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(n,e,e),n.hasOwnProperty(r)&&He(`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))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Ut(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=[]}var xt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=xt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,sr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,o,a,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,Lt,It=(e,t,r)=>{n.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=vt(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},Ht=e=>{var t=li(e),r=Ne(t);return oi(t),r},Wt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new Lt(`${e}: `+r.map(Ht).join([", "]))},Vt=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),a&&(a=Ot(o,a)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=At(c);wt(f,(function(){Wt(`Cannot construct ${c} due to unbound types`,[i])})),Ve([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var o=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new Ut(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},It(f,o),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var o=t.length;o<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=jt(t,r);n=Ot(i,n),Ve([],[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 Ie(`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]=()=>{Wt(`Cannot construct ${e.name} due to unbound types`,o)},Ve([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,n,s,o,a,d)=>{var l=jt(r,i);t=Ne(t),t=Zt(t),s=Ot(n,s),Ve([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Wt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(bt(c,t,i),c[t].overloadTable[r-2]=n),Ve([],l,(function(n){var a=Kt(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,n.count_emval_handles=ir},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function or(e){return this.fromWireType(x[e>>2])}var ar=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=sr.toValue(e);return rr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:or,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>x[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(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==E[a]){var d=Ce(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)pr(t,o,i+1);else if(n)for(var a=0;a255&&(oi(o),He("String has UTF-16 code units that do not fit in 8 bits")),E[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=x[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},wr=(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)),x[t>>2]=o,(t+=4)+4>n)break}return x[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,n,s,o,a;r=Ne(r),2===t?(i=gr,n=yr,o=vr,s=()=>U,a=1):4===t&&(i=br,n=wr,o=Sr,s=()=>B,a=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return oi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=ai(4+s+t);return B[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(oi,d),d},argPackAdvance:Ke,readValueFromPointer:or,destructorFunction(e){oi(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ur={},xr=e=>{var t=Ur[e];return void 0===t?Ne(e):t},Br=[],kr=(e,t,r,i,n)=>(e=Br[e])(t=sr.toValue(t),t[r=xr(r)],i,n),Tr=e=>{var t=Br.length;return Br.push(e),t},Cr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Pr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(B[t>>2]=sr.toHandle(i)),n},Fr=(e,t,r)=>{var i=Dr(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",o=0,a=[];0===r&&a.push("obj");for(var d=["retType"],l=[n],c=0;ce.name)).join(", ")}) => ${n.name}>`;return Tr(vt(h,u))},Lr=e=>{var t=sr.toValue(e);qt(t),rr(e)},Ir=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),Nr=e=>{j("OOM")},$r=e=>{E.length,Nr()},Or={},Gr=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:Gr()};for(var t in Or)void 0===Or[t]?delete e[t]:e[t]=Or[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Wr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Vr=(e,t)=>{var r=0;return Hr().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Wr(i,s),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+8>>2]=K[0],x[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+16>>2]=K[0],x[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.read(e,S,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,n){var s=Ir(t,r);try{if(isNaN(s))return 61;var o=De.getStreamFromFD(e);return Te.llseek(o,s,i),K=[o.position>>>0,(Y=o.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[n>>2]=K[0],x[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.write(e,S,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Qr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Jr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=ei,Te.createPreloadedFile=xe,Te.staticInit(),ze(),Ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Lt=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Qt(),nr();var ii,ni={o:oe,A:Pe,s:Fe,q:Re,C:Xe,D:Vt,y:Xt,h:Jt,B:ar,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,g:kr,d:rr,f:Fr,e:Lr,a:Mr,i:Rr,w:zr,r:$r,u:Vr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},si=ie(),oi=e=>(oi=si.G)(e),ai=e=>(ai=si.H)(e),di=()=>(di=si.J)(),li=e=>(li=si.K)(e),ci=e=>(ci=si.M)(e);function ui(){function e(){ii||(ii=!0,n.calledRun=!0,C||(R(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>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=si.N)(e,t,r,i,s),n._ff_h264_cabac_tables=74396,H=function e(){ii||ui(),ii||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ui(),e.ready}),o=(()=>{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 async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};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-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,o,a,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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.js",document.baseURI).href)),s=(e,t)=>(e=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),a=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(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,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,x,B,k,T,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=x=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=k=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var F=[],L=[],I=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)N(n.preRun.shift());ne(F)}function R(){n.noFSInit||Te.init.initialized||Te.init(),Te.ignorePermissions=!1,ne(L)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(I)}function N(e){F.unshift(e)}function $(e){L.unshift(e)}function O(e){I.unshift(e)}var G=0,H=null;function W(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function V(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(o)return new Promise(((t,r)=>{o(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ni};function t(e,t){return si=e.exports,v=si.E,P(),Ft=si.H,$(si.F),V(),si}if(W(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(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_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ci(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var oe=(e,t,r)=>{throw new se(e).init(t,r),e},ae=e=>(x[ai()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Te.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;a{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},Te.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new Te.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new Te.ErrnoError(60);for(var s=0,o=0;oye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(Te.isBlkdev(r)||Te.isFIFO(r))throw new Te.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:Te.chrdev_stream_ops}});var n=Te.createNode(e,t,r,i);return Te.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):Te.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):Te.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):Te.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=Te.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,Te.isDir(e.mode)?t.size=4096:Te.isFile(e.mode)?t.size=e.usedBytes:Te.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw Te.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(Te.isDir(e.mode)){var i;try{i=Te.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Te.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=Te.lookupNode(e,t);for(var i in r.contents)throw new Te.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!Te.isLink(e.mode))throw new Te.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;o(e,(r=>{D(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&&W()},Ee=(e,t,r,i,n,s)=>{Te.createDataFile(e,t,r,i,n,s)},Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},xe=(e,t,r,i,n,s,o,a,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),a||Ee(e,t,r,i,n,d),s&&s(),V()}Ue(r,c,u,(()=>{o&&o(),V()}))||u(r)}W(),"string"==typeof r?Se(r,(e=>u(e)),o):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},ke=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},Te={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new Te.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=Te.root,n="/",s=0;s40)throw new Te.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(Te.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)%Te.nameTable.length},hashAddNode(e){var t=Te.hashName(e.parent.id,e.name);e.name_next=Te.nameTable[t],Te.nameTable[t]=e},hashRemoveNode(e){var t=Te.hashName(e.parent.id,e.name);if(Te.nameTable[t]===e)Te.nameTable[t]=e.name_next;else for(var r=Te.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=Te.mayLookup(e);if(r)throw new Te.ErrnoError(r,e);for(var i=Te.hashName(e.id,t),n=Te.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Te.lookup(e,t)},createNode(e,t,r,i){var n=new Te.FSNode(e,t,r,i);return Te.hashAddNode(n),n},destroyNode(e){Te.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>Te.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=Te.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{Te.lookupNode(e,t);return 20}catch(e){}return Te.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=Te.lookupNode(e,t)}catch(e){return e.errno}var n=Te.nodePermissions(e,"wx");if(n)return n;if(r){if(!Te.isDir(i.mode))return 54;if(Te.isRoot(i)||Te.getPath(i)===Te.cwd())return 10}else if(Te.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Te.isLink(e.mode)?32:Te.isDir(e.mode)&&("r"!==Te.flagsToPermissionString(t)||512&t)?31:Te.nodePermissions(e,Te.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=Te.MAX_OPEN_FDS;e++)if(!Te.streams[e])return e;throw new Te.ErrnoError(33)},getStreamChecked(e){var t=Te.getStream(e);if(!t)throw new Te.ErrnoError(8);return t},getStream:e=>Te.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return Te.FSStream||(Te.FSStream=function(){this.shared={}},Te.FSStream.prototype={},Object.defineProperties(Te.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new Te.FSStream,e),-1==t&&(t=Te.nextfd()),e.fd=t,Te.streams[t]=e,e},closeStream(e){Te.streams[e]=null},chrdev_stream_ops:{open(e){var t=Te.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new Te.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){Te.devices[e]={stream_ops:t}},getDevice:e=>Te.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),Te.syncFSRequests++,Te.syncFSRequests>1&&w(`warning: ${Te.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=Te.getMounts(Te.root.mount),i=0;function n(e){return Te.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&&Te.root)throw new Te.ErrnoError(10);if(!n&&!s){var o=Te.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Te.isMountpoint(i))throw new Te.ErrnoError(10);if(!Te.isDir(i.mode))throw new Te.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Te.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount(e){var t=Te.lookupPath(e,{follow_mount:!1});if(!Te.isMountpoint(t.node))throw new Te.ErrnoError(28);var r=t.node,i=r.mounted,n=Te.getMounts(i);Object.keys(Te.nameTable).forEach((e=>{for(var t=Te.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Te.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=Te.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new Te.ErrnoError(28);var s=Te.mayCreate(i,n);if(s)throw new Te.ErrnoError(s);if(!i.node_ops.mknod)throw new Te.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Te.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Te.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,Te.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new Te.ErrnoError(44);var r=Te.lookupPath(t,{parent:!0}).node;if(!r)throw new Te.ErrnoError(44);var i=de.basename(t),n=Te.mayCreate(r,i);if(n)throw new Te.ErrnoError(n);if(!r.node_ops.symlink)throw new Te.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),o=de.basename(e),a=de.basename(t);if(r=Te.lookupPath(e,{parent:!0}).node,i=Te.lookupPath(t,{parent:!0}).node,!r||!i)throw new Te.ErrnoError(44);if(r.mount!==i.mount)throw new Te.ErrnoError(75);var d,l=Te.lookupNode(r,o),c=ue.relative(e,s);if("."!==c.charAt(0))throw new Te.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new Te.ErrnoError(55);try{d=Te.lookupNode(i,a)}catch(e){}if(l!==d){var u=Te.isDir(l.mode),h=Te.mayDelete(r,o,u);if(h)throw new Te.ErrnoError(h);if(h=d?Te.mayDelete(i,a,u):Te.mayCreate(i,a))throw new Te.ErrnoError(h);if(!r.node_ops.rename)throw new Te.ErrnoError(63);if(Te.isMountpoint(l)||d&&Te.isMountpoint(d))throw new Te.ErrnoError(10);if(i!==r&&(h=Te.nodePermissions(r,"w")))throw new Te.ErrnoError(h);Te.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Te.hashAddNode(l)}}},rmdir(e){var t=Te.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!0);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.rmdir)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.rmdir(t,r),Te.destroyNode(i)},readdir(e){var t=Te.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Te.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=Te.lookupPath(e,{parent:!0}).node;if(!t)throw new Te.ErrnoError(44);var r=de.basename(e),i=Te.lookupNode(t,r),n=Te.mayDelete(t,r,!1);if(n)throw new Te.ErrnoError(n);if(!t.node_ops.unlink)throw new Te.ErrnoError(63);if(Te.isMountpoint(i))throw new Te.ErrnoError(10);t.node_ops.unlink(t,r),Te.destroyNode(i)},readlink(e){var t=Te.lookupPath(e).node;if(!t)throw new Te.ErrnoError(44);if(!t.node_ops.readlink)throw new Te.ErrnoError(28);return ue.resolve(Te.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=Te.lookupPath(e,{follow:!t}).node;if(!r)throw new Te.ErrnoError(44);if(!r.node_ops.getattr)throw new Te.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Te.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=Te.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new Te.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){Te.chmod(e,t,!0)},fchmod(e,t){var r=Te.getStreamChecked(e);Te.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=Te.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new Te.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){Te.chown(e,t,r,!0)},fchown(e,t,r){var i=Te.getStreamChecked(e);Te.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new Te.ErrnoError(28);var r;"string"==typeof e?r=Te.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new Te.ErrnoError(63);if(Te.isDir(r.mode))throw new Te.ErrnoError(31);if(!Te.isFile(r.mode))throw new Te.ErrnoError(28);var i=Te.nodePermissions(r,"w");if(i)throw new Te.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=Te.getStreamChecked(e);if(0==(2097155&r.flags))throw new Te.ErrnoError(28);Te.truncate(r.node,t)},utime(e,t,r){var i=Te.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new Te.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=Te.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new Te.ErrnoError(20)}else i=Te.mknod(e,r,0),s=!0;if(!i)throw new Te.ErrnoError(44);if(Te.isChrdev(i.mode)&&(t&=-513),65536&t&&!Te.isDir(i.mode))throw new Te.ErrnoError(54);if(!s){var o=Te.mayOpen(i,t);if(o)throw new Te.ErrnoError(o)}512&t&&!s&&Te.truncate(i,0),t&=-131713;var a=Te.createStream({node:i,path:Te.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!n.logReadFiles||1&t||(Te.readFiles||(Te.readFiles={}),e in Te.readFiles||(Te.readFiles[e]=1)),a},close(e){if(Te.isClosed(e))throw new Te.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Te.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(Te.isClosed(e))throw new Te.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Te.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(1==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.read)throw new Te.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Te.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 Te.ErrnoError(28);if(Te.isClosed(e))throw new Te.ErrnoError(8);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(Te.isDir(e.node.mode))throw new Te.ErrnoError(31);if(!e.stream_ops.write)throw new Te.ErrnoError(28);e.seekable&&1024&e.flags&&Te.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Te.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(Te.isClosed(e))throw new Te.ErrnoError(8);if(t<0||r<=0)throw new Te.ErrnoError(28);if(0==(2097155&e.flags))throw new Te.ErrnoError(8);if(!Te.isFile(e.node.mode)&&!Te.isDir(e.node.mode))throw new Te.ErrnoError(43);if(!e.stream_ops.allocate)throw new Te.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new Te.ErrnoError(2);if(1==(2097155&e.flags))throw new Te.ErrnoError(2);if(!e.stream_ops.mmap)throw new Te.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 Te.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Te.open(e,t.flags),n=Te.stat(e).size,s=new Uint8Array(n);return Te.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),Te.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Te.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);Te.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Te.write(i,t,0,t.byteLength,void 0,r.canOwn)}Te.close(i)},cwd:()=>Te.currentPath,chdir(e){var t=Te.lookupPath(e,{follow:!0});if(null===t.node)throw new Te.ErrnoError(44);if(!Te.isDir(t.node.mode))throw new Te.ErrnoError(54);var r=Te.nodePermissions(t.node,"x");if(r)throw new Te.ErrnoError(r);Te.currentPath=t.path},createDefaultDirectories(){Te.mkdir("/tmp"),Te.mkdir("/home"),Te.mkdir("/home/web_user")},createDefaultDevices(){Te.mkdir("/dev"),Te.registerDevice(Te.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Te.mkdev("/dev/null",Te.makedev(1,3)),ve.register(Te.makedev(5,0),ve.default_tty_ops),ve.register(Te.makedev(6,0),ve.default_tty1_ops),Te.mkdev("/dev/tty",Te.makedev(5,0)),Te.mkdev("/dev/tty1",Te.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);Te.createDevice("/dev","random",r),Te.createDevice("/dev","urandom",r),Te.mkdir("/dev/shm"),Te.mkdir("/dev/shm/tmp")},createSpecialDirectories(){Te.mkdir("/proc");var e=Te.mkdir("/proc/self");Te.mkdir("/proc/self/fd"),Te.mount({mount(){var t=Te.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=Te.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?Te.createDevice("/dev","stdin",n.stdin):Te.symlink("/dev/tty","/dev/stdin"),n.stdout?Te.createDevice("/dev","stdout",null,n.stdout):Te.symlink("/dev/tty","/dev/stdout"),n.stderr?Te.createDevice("/dev","stderr",null,n.stderr):Te.symlink("/dev/tty1","/dev/stderr"),Te.open("/dev/stdin",0),Te.open("/dev/stdout",1),Te.open("/dev/stderr",1)},ensureErrnoError(){Te.ErrnoError||(Te.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Te.ErrnoError.prototype=new Error,Te.ErrnoError.prototype.constructor=Te.ErrnoError,[44].forEach((e=>{Te.genericErrors[e]=new Te.ErrnoError(e),Te.genericErrors[e].stack=""})))},staticInit(){Te.ensureErrnoError(),Te.nameTable=new Array(4096),Te.mount(we,{},"/"),Te.createDefaultDirectories(),Te.createDefaultDevices(),Te.createSpecialDirectories(),Te.filesystems={MEMFS:we}},init(e,t,r){Te.init.initialized=!0,Te.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,Te.createStandardStreams()},quit(){Te.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=Te.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 c(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 Te.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(Te.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{Te.forceLoadFile(d);var s=be();if(!s)throw new Te.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=Te.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new Te.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(Te.getPath(e.node)))return-54;throw e}x[r>>2]=i.dev,x[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,x[r+12>>2]=i.uid,x[r+16>>2]=i.gid,x[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+24>>2]=K[0],x[r+28>>2]=K[1],x[r+32>>2]=4096,x[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),o=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+40>>2]=K[0],x[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+56>>2]=K[0],x[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(o/1e3)>>>0,(Y=Math.floor(o/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+72>>2]=K[0],x[r+76>>2]=K[1],B[r+80>>2]=o%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+88>>2]=K[0],x[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!Te.isFile(t.node.mode))throw new Te.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);Te.msync(t,s,n,r,i)},varargs:void 0,get(){var e=x[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>Te.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;Te.streams[n];)n++;return Te.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return ae(28),-1}}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}function Fe(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return Te.open(t,r,n).fd}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return-e.errno}}var Le,Ie,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Le=e},Ne=e=>{for(var t="",r=e;E[r];)t+=Le[E[r++]];return t},$e={},Oe={},Ge={},He=e=>{throw new Ie(e)},We=e=>{throw new Me(e)},Ve=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&We("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),$e.hasOwnProperty(e)||($e[e]=[]),$e[e].push((()=>{n[t]=Oe[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=Ne(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},nt={},st=()=>Object.keys(ut).length,ot=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},at=[],dt=()=>{for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,at.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=ot,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||We("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&We("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(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?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))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||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),at.push(this),1===at.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(n,e,e),n.hasOwnProperty(r)&&He(`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))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Ut(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=[]}var xt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function kt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=xt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,sr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function Tt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,o,a,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=kt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}var Ft,Lt,It=(e,t,r)=>{n.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Ft.get(e)),t},Nt=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),$t=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Nt(e,t,r)}},Ot=(e,t)=>{var r=(e=Ne(e)).includes("j")?$t(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=Ne(t);return oi(t),r},Wt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new Lt(`${e}: `+r.map(Ht).join([", "]))},Vt=(e,t,r,i,n,s,o,a,d,l,c,u,h)=>{c=Ne(c),s=Ot(n,s),a&&(a=Ot(o,a)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=At(c);wt(f,(function(){Wt(`Cannot construct ${c} due to unbound types`,[i])})),Ve([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var o=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:o}});o.prototype=d;var u=new Ut(c,o,d,h,r,s,a,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},It(f,o),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var o=t.length;o<2&&He("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=a?1:2;l{var o=jt(t,r);n=Ot(i,n),Ve([],[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 Ie(`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]=()=>{Wt(`Cannot construct ${e.name} due to unbound types`,o)},Ve([],o,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,n,s,o,a,d)=>{var l=jt(r,i);t=Ne(t),t=Zt(t),s=Ot(n,s),Ve([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Wt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(bt(c,t,i),c[t].overloadTable[r-2]=n),Ve([],l,(function(n){var a=Kt(i,n,e,s,o,d);return void 0===c[t].overloadTable?(a.argCount=r-2,c[t]=a):c[t].overloadTable[r-2]=a,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,n.count_emval_handles=ir},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function or(e){return this.fromWireType(x[e>>2])}var ar=(e,t)=>{qe(e,{name:t=Ne(t),fromWireType:e=>{var t=sr.toValue(e);return rr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:or,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(k[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=Ne(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>x[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,n)=>{t=Ne(t);var s=e=>e;if(0===i){var o=32-8*r;s=e=>e<>>o}var a=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:a?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=Ne(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=Ne(t));qe(e,{name:t,fromWireType(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==E[a]){var d=Ce(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)pr(t,o,i+1);else if(n)for(var a=0;a255&&(oi(o),He("String has UTF-16 code units that do not fit in 8 bits")),E[o+a]=d}else for(a=0;a{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=x[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},wr=(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(x[t>>2]=o,(t+=4)+4>n)break}return x[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,n,s,o,a;r=Ne(r),2===t?(i=gr,n=yr,o=vr,s=()=>U,a=1):4===t&&(i=br,n=wr,o=Sr,s=()=>B,a=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return oi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=o(i),d=li(4+s+t);return B[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(oi,d),d},argPackAdvance:Ke,readValueFromPointer:or,destructorFunction(e){oi(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=Ne(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ur={},xr=e=>{var t=Ur[e];return void 0===t?Ne(e):t},Br=[],kr=(e,t,r,i,n)=>(e=Br[e])(t=sr.toValue(t),t[r=xr(r)],i,n),Tr=e=>{var t=Br.length;return Br.push(e),t},Cr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Pr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(B[t>>2]=sr.toHandle(i)),n},Fr=(e,t,r)=>{var i=Dr(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",o=0,a=[];0===r&&a.push("obj");for(var d=["retType"],l=[n],c=0;ce.name)).join(", ")}) => ${n.name}>`;return Tr(vt(h,u))},Lr=e=>{var t=sr.toValue(e);qt(t),rr(e)},Ir=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),Nr=e=>{j("OOM")},$r=e=>{E.length,Nr()},Or={},Gr=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:Gr()};for(var t in Or)void 0===Or[t]?delete e[t]:e[t]=Or[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Wr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Vr=(e,t)=>{var r=0;return Hr().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Wr(i,s),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return Te.close(t),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:Te.isDir(r.mode)?3:Te.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+8>>2]=K[0],x[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+16>>2]=K[0],x[t+20>>2]=K[1],0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.read(e,S,o,a,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,n){var s=Ir(t,r);try{if(isNaN(s))return 61;var o=De.getStreamFromFD(e);return Te.llseek(o,s,i),K=[o.position>>>0,(Y=o.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[n>>2]=K[0],x[n+4>>2]=K[1],o.getdents&&0===s&&0===i&&(o.getdents=null),0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var n=0,s=0;s>2],a=B[t+4>>2];t+=8;var d=Te.write(e,S,o,a,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Qr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Jr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===Te||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Te.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return Te.isDir(this.mode)}},isDevice:{get:function(){return Te.isChrdev(this.mode)}}}),Te.FSNode=ei,Te.createPreloadedFile=xe,Te.staticInit(),ze(),Ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Lt=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Qt(),nr();var ii,ni={o:oe,A:Pe,s:Fe,q:Re,C:Xe,D:Vt,y:Xt,h:Jt,B:ar,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:kr,g:rr,e:Fr,d:Lr,a:Mr,i:Rr,w:zr,r:$r,u:Vr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},si=ie(),oi=e=>(oi=si.G)(e),ai=()=>(ai=si.I)(),di=e=>(di=si.J)(e),li=e=>(li=si.K)(e),ci=e=>(ci=si.M)(e);function ui(){function e(){ii||(ii=!0,n.calledRun=!0,C||(R(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,o,a,d)=>(n.dynCall_viiijj=si.N)(e,t,r,i,s,o,a,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=si.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=si.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=si.Q)(e,t,r,i,s),H=function e(){ii||ui(),ii||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ui(),t.ready}})(),a=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=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 c(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 u,h=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 f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(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 i={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")}},n=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}}(),s=p(),o=p(),d=p(),u=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 s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,o,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const jt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],qt=jt,Yt=jt;function Kt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Xt(e){return Zt(e)&&e[1]===Tt}function Zt(e){return e[0]>>4===Ge}const Jt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Qt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,o=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Jt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let a=Jt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(o=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Gt.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),o=s-3):(i=2,r=new Array(2),o=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),o=s):(i=5,o=s,r=new Array(4),s>=6?o=s-3:1===d&&(i=2,r=new Array(2),o=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&o)>>>1,r[2]=(1&o)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:a,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class er{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],o=(192&e[r+2])>>>6,a=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=o+1,t.sampling_freq_index=a,t.sampling_frequency=qt[a],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class tr{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Vt(t.subarray(i+3,i+3+n)),o=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}o=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let a=s.readBits(3);if(0!==a){console.error(`frameLengthType = ${a}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),o={},o.audio_object_type=r,o.sampling_freq_index=i,o.sampling_frequency=qt[o.sampling_freq_index],o.channel_config=n,o.other_data_present=d}let a=0;for(;;){let e=s.readByte();if(a+=e,255!==e)break}let d=new Uint8Array(a);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function ir(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 nr(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++;return{payload:e.subarray(i),type:n,size:s,uuid:o}}function sr(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 or(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 ar(){return(new Date).getTime()}function dr(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function lr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function cr(e){let t=0,r=lr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=lr(),o=s-r;o>=1e3&&(e(t/o*1e3),r=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){}})();function ur(e){return null==e}function hr(e){return!ur(e)}function fr(e){return"function"==typeof e}function pr(e){let t=null,r=31&e[0];return r!==je&&r!==qe||(t=$e),t||(r=(126&e[0])>>1,r!==at&&r!==lt&&r!==ut||(t=Oe)),t}function mr(){return"undefined"!=typeof WritableStream}function _r(e){e.close()}function gr(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 yr(e){return e.ok&&e.status>=200&&e.status<=299}function vr(){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}(B)}function br(e){return e[0]>>4===Ct&&e[1]===Tt}function wr(e){return!0===e||"true"===e}function Sr(e){return!0!==e&&"true"!==e}function Er(){return!!(Gt.Worker&&Gt.MediaSource&&"canConstructInDedicatedWorker"in Gt.MediaSource&&!0===Gt.MediaSource.canConstructInDedicatedWorker)}function Ar(e,t){const r=ir(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===tt||r===it||r===st)||Sr(t)&&r===Ye)&&(i=!0)})),i}var Ur=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 xr=Symbol(32),Br=Symbol(16),kr=Symbol(8);class Tr{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 Ur(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(xr)}readU16(){return this.read(Br)}readU8(){return this.read(kr)}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===xr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Br){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===kr){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}}Tr.U32=xr,Tr.U16=Br,Tr.U8=kr;class Cr{constructor(e){this.log=function(t){if(e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=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=Dr._ebsp2rbsp(e),r=new Vt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Dr.getProfileString(i),o=Dr.getLevelString(n),a=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,U=2*e,S=A/U}}let x=1;1===b&&1===w||(x=b/w);let B=0,k=0;if(0===a)B=1,k=2-m;else{B=3===a?1:2,k=(1===a?2:1)*(2-m)}let T=16*(f+1),C=16*(p+1)*(2-m);T-=(_+g)*B,C-=(y+v)*k;let D=Math.ceil(T*x);return r.destroy(),r=null,{profile_string:s,level_string:o,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Dr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:U,fps_num:A},sar_ratio:{width:b,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=Dr._ebsp2rbsp(e),n=new Vt(i);n.readByte();let s=n.readByte();n.readByte();let o=n.readByte();n.readUEG();let a=Dr.getProfileString(s),d=Dr.getLevelString(o),l=1,c=420,u=[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&&(c=u[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=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=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);x=n.readBool(),B=t,k=2*e,U=B/k}}let T=1;1===E&&1===A||(T=E/A);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 P=16*(_+1),F=16*(g+1)*(2-y);P-=(v+b)*C,F-=(w+S)*D;let L=Math.ceil(P*T);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:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Dr.getChromaFormatString(c),frame_rate:{fixed:x,fps:U,fps_den:k,fps_num:B},sar_ratio:{width:E,height:A},codec_size:{width:P,height:F},present_size:{width:L,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 Lr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Ir(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Dr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let o=new Uint8Array(i);o[0]=1,o[1]=t[1],o[2]=t[2],o[3]=t[3],o[4]=255,o[5]=225;let a=t.byteLength;o[6]=a>>>8,o[7]=255&a;let d=8;o.set(t,8),d+=a,o[d]=1;let l=r.byteLength;o[d+1]=l>>>8,o[d+2]=255&l,o.set(r,d+3),d+=3+l,n&&(o[d]=252|s.chroma_format_idc,o[d+1]=248|s.bit_depth_luma-8,o[d+2]=248|s.bit_depth_chroma-8,o[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+o.byteLength);return u.set(c,0),u.set(o,c.length),u}function Mr(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}function Rr(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 zr(e){return 31&e[0]}function Nr(e){return e===Ze}function $r(e){return!function(e){return e===je||e===qe}(e)&&!Nr(e)}function Or(e){return e===Ye}function Gr(e){if(0===e.length)return!1;const t=zr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=et||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Wr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Vr=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)},jr=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"}};class qr{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 parseVPS(e){let t=qr._ebsp2rbsp(e),r=new Vt(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()}}static parseSPS(e){let t=qr._ebsp2rbsp(e),r=new Vt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(L=t[e-1],I=i[e-1]):255===e&&(L=r.readBits(16),I=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&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&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();M=n;let s=!0,o=1;n||(s=r.readBool());let a=!1;if(s?r.readUEG():a=r.readBool(),a||(o=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Vr(e),r=new Vt(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()}})(t),o=(e=>{let t=Vr(e),r=new Vt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(L=t[e-1],I=i[e-1]):255===e&&(L=r.readBits(16),I=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),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()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(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();M=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=Vr(e),r=new Vt(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}})(r);n=Object.assign(n,s,o,a);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|at,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|lt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|ut,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Jr(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}function Qr(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 ei(e){return(126&e[0])>>1}function ti(e){return e===ft}function ri(e){return!function(e){return e>=32&&e<=40}(e)}function ii(e){return e>=16&&e<=21}function ni(e){if(0===e.length)return!1;const t=ei(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class oi{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ai(e){return parseInt(e)===e}function di(e){if(!ai(e.length))return!1;for(var t=0;t255)return!1;return!0}function li(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(!di(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ai(e.length)&&di(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function ci(e){return new Uint8Array(e)}function ui(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 hi,fi={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("")}},pi=(hi="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+hi[15&i])}return t.join("")}}),mi={16:10,24:12,32:14},_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ei=[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],Ai=[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],Ui=[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],xi=[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],Bi=[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],ki=[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],Ti=[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],Ci=[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 Di(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^gi[o>>8&255]<<16^gi[255&o]<<8^gi[o>>24&255]^_i[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^gi[o>>16&255]<<16^gi[o>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^ki[o>>16&255]^Ti[o>>8&255]^Ci[255&o]},Pi.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=Di(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^bi[i[(n+1)%4]>>16&255]^wi[i[(n+2)%4]>>8&255]^Si[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var o,a=ci(16);for(n=0;n<4;n++)o=this._Ke[t][n],a[4*n]=255&(gi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(gi[i[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(gi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(gi[255&i[(n+3)%4]]^o);return a},Pi.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=Di(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^Ai[i[(n+3)%4]>>16&255]^Ui[i[(n+2)%4]>>8&255]^xi[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var o,a=ci(16);for(n=0;n<4;n++)o=this._Kd[t][n],a[4*n]=255&(yi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(yi[i[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(yi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(yi[255&i[(n+1)%4]]^o);return a};var Fi=function(e){if(!(this instanceof Fi))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Pi(e)};Fi.prototype.encrypt=function(e){if((e=li(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=ci(e.length),r=ci(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)},Ri.prototype.setBytes=function(e){if(16!=(e=li(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ri.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var zi=function(e,t){if(!(this instanceof zi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ri||(t=new Ri(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Pi(e)};zi.prototype.encrypt=function(e){for(var t=li(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=o<<24-(i+s)%4*8}else for(var a=0;a>>2]=r[a>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=a.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,o=this.blockSize,a=s/(4*o),d=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,o=0;o>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,a=0;a<4&&s+.75*a>>6*(3-a)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,d=0;d<4&&o+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var o=0;o>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,o=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],U=e[t+14],x=e[t+15],B=s[0],k=s[1],T=s[2],C=s[3];B=l(B,k,T,C,o,7,a[0]),C=l(C,B,k,T,d,12,a[1]),T=l(T,C,B,k,f,17,a[2]),k=l(k,T,C,B,p,22,a[3]),B=l(B,k,T,C,m,7,a[4]),C=l(C,B,k,T,_,12,a[5]),T=l(T,C,B,k,g,17,a[6]),k=l(k,T,C,B,y,22,a[7]),B=l(B,k,T,C,v,7,a[8]),C=l(C,B,k,T,b,12,a[9]),T=l(T,C,B,k,w,17,a[10]),k=l(k,T,C,B,S,22,a[11]),B=l(B,k,T,C,E,7,a[12]),C=l(C,B,k,T,A,12,a[13]),T=l(T,C,B,k,U,17,a[14]),B=c(B,k=l(k,T,C,B,x,22,a[15]),T,C,d,5,a[16]),C=c(C,B,k,T,g,9,a[17]),T=c(T,C,B,k,S,14,a[18]),k=c(k,T,C,B,o,20,a[19]),B=c(B,k,T,C,_,5,a[20]),C=c(C,B,k,T,w,9,a[21]),T=c(T,C,B,k,x,14,a[22]),k=c(k,T,C,B,m,20,a[23]),B=c(B,k,T,C,b,5,a[24]),C=c(C,B,k,T,U,9,a[25]),T=c(T,C,B,k,p,14,a[26]),k=c(k,T,C,B,v,20,a[27]),B=c(B,k,T,C,A,5,a[28]),C=c(C,B,k,T,f,9,a[29]),T=c(T,C,B,k,y,14,a[30]),B=u(B,k=c(k,T,C,B,E,20,a[31]),T,C,_,4,a[32]),C=u(C,B,k,T,v,11,a[33]),T=u(T,C,B,k,S,16,a[34]),k=u(k,T,C,B,U,23,a[35]),B=u(B,k,T,C,d,4,a[36]),C=u(C,B,k,T,m,11,a[37]),T=u(T,C,B,k,y,16,a[38]),k=u(k,T,C,B,w,23,a[39]),B=u(B,k,T,C,A,4,a[40]),C=u(C,B,k,T,o,11,a[41]),T=u(T,C,B,k,p,16,a[42]),k=u(k,T,C,B,g,23,a[43]),B=u(B,k,T,C,b,4,a[44]),C=u(C,B,k,T,E,11,a[45]),T=u(T,C,B,k,x,16,a[46]),B=h(B,k=u(k,T,C,B,f,23,a[47]),T,C,o,6,a[48]),C=h(C,B,k,T,y,10,a[49]),T=h(T,C,B,k,U,15,a[50]),k=h(k,T,C,B,_,21,a[51]),B=h(B,k,T,C,E,6,a[52]),C=h(C,B,k,T,p,10,a[53]),T=h(T,C,B,k,w,15,a[54]),k=h(k,T,C,B,d,21,a[55]),B=h(B,k,T,C,v,6,a[56]),C=h(C,B,k,T,x,10,a[57]),T=h(T,C,B,k,g,15,a[58]),k=h(k,T,C,B,A,21,a[59]),B=h(B,k,T,C,m,6,a[60]),C=h(C,B,k,T,S,10,a[61]),T=h(T,C,B,k,f,15,a[62]),k=h(k,T,C,B,b,21,a[63]),s[0]=s[0]+B|0,s[1]=s[1]+k|0,s[2]=s[2]+T|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),o=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,d=a.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return a},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,o){var a=e+(t&r|~t&i)+n+o;return(a<>>32-s)+t}function c(e,t,r,i,n,s,o){var a=e+(t&i|r&~i)+n+o;return(a<>>32-s)+t}function u(e,t,r,i,n,s,o){var a=e+(t^r^i)+n+o;return(a<>>32-s)+t}function h(e,t,r,i,n,s,o){var a=e+(r^(t|~i))+n+o;return(a<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Wt((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=$i).lib,n=i.WordArray,s=i.Hasher,o=r.algo,a=[],d=o.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],d=r[4],l=0;l<80;l++){if(l<16)a[l]=0|e[t+l];else{var c=a[l-3]^a[l-8]^a[l-14]^a[l-16];a[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+a[l];u+=l<20?1518500249+(n&s|~n&o):l<40?1859775393+(n^s^o):l<60?(n&s|n&o|s&o)-1894007588:(n^s^o)-899497514,d=o,o=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Wt((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(a[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=o.SHA256=s.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&c^~a&u)+d[f]+l[f];h=u,u=c,c=a,a=o+b|0,o=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+a|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Wt((function(e,t){var r,i,n,s,o,a;e.exports=(i=(r=a=$i).lib.WordArray,n=r.algo,s=n.SHA256,o=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(o),r.HmacSHA224=s._createHmacHelper(o),a.SHA224)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,o=e.algo;function a(){return n.create.apply(n,arguments)}var d=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=a()}();var c=o.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=o.high,b=o.low,w=a.high,S=a.low,E=c.high,A=c.low,U=u.high,x=u.low,B=h.high,k=h.low,T=f,C=p,D=m,P=_,F=g,L=y,I=v,M=b,R=w,z=S,N=E,$=A,O=U,G=x,H=B,W=k,V=0;V<80;V++){var j,q,Y=l[V];if(V<16)q=Y.high=0|e[t+2*V],j=Y.low=0|e[t+2*V+1];else{var K=l[V-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[V-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[V-7],oe=se.high,ae=se.low,de=l[V-16],le=de.high,ce=de.low;q=(q=(q=J+oe+((j=Q+ae)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&O,fe=z&$^~z&G,pe=T&D^T&F^D&F,me=C&P^C&L^P&L,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[V],we=be.high,Se=be.low,Ee=H+ye+((ue=W+ve)>>>0>>0?1:0),Ae=ge+me;H=O,W=G,O=N,G=$,N=R,$=z,R=I+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,I=F,M=L,F=D,L=P,D=T,P=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+T+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

    >>0?1:0),y=s.low=y+L,s.high=g+F+(y>>>0>>0?1:0),b=o.low=b+M,o.high=v+I+(b>>>0>>0?1:0),S=a.low=S+z,a.high=w+R+(S>>>0>>0?1:0),A=c.low=A+$,c.high=E+N+(A>>>0<$>>>0?1:0),x=u.low=x+G,u.high=U+O+(x>>>0>>0?1:0),k=h.low=k+W,h.high=B+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Wt((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=$i).x64,n=i.Word,s=i.WordArray,o=r.algo,a=o.SHA512,d=o.SHA384=a.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=a._createHelper(d),r.HmacSHA384=a._createHmacHelper(d),l.SHA384)})),Wt((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.x64.Word,a=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var a=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),(k=r[n]).high^=o,k.low^=s}for(var a=0;a<24;a++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(k=r[h+5*m]).high,p^=k.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[h+5*m]).high^=f,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var U=u[l[w]];U.high=f,U.low=p}var x=u[0],B=r[0];for(x.high=B.high,x.low=B.low,h=0;h<5;h++)for(m=0;m<5;m++){var k=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var P=c[a];k.high^=P.high,k.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var o=this._state,a=this.cfg.outputLength/8,d=a/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,a)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Wt((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=o.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,o,f,b,w,S,E,A,U,x,B,k=this._hash.words,T=u.words,C=h.words,D=a.words,P=d.words,F=l.words,L=c.words;for(S=s=k[0],E=o=k[1],A=f=k[2],U=b=k[3],x=w=k[4],r=0;r<80;r+=1)B=s+e[t+D[r]]|0,B+=r<16?p(o,f,b)+T[0]:r<32?m(o,f,b)+T[1]:r<48?_(o,f,b)+T[2]:r<64?g(o,f,b)+T[3]:y(o,f,b)+T[4],B=(B=v(B|=0,F[r]))+w|0,s=w,w=b,b=v(f,10),f=o,o=B,B=S+e[t+P[r]]|0,B+=r<16?y(E,A,U)+C[0]:r<32?g(E,A,U)+C[1]:r<48?_(E,A,U)+C[2]:r<64?m(E,A,U)+C[3]:p(E,A,U)+C[4],B=(B=v(B|=0,L[r]))+x|0,S=x,x=U,U=v(A,10),A=E,E=B;B=k[1]+f+U|0,k[1]=k[2]+b+x|0,k[2]=k[3]+w+S|0,k[3]=k[4]+s+E|0,k[4]=k[0]+o+A|0,k[0]=B},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,o=0;o<5;o++){var a=s[o];s[o]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Wt((function(e,t){var r,i,n;e.exports=(i=(r=$i).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),o=this._iKey=t.clone(),a=s.words,d=o.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),o=n.cfg;return m.create({ciphertext:s,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)o=l.create({keySize:t+r,hasher:n}).compute(e,i);else var o=l.create({keySize:t+r}).compute(e,i);var a=s.create(o.words.slice(t),4*r);return o.sigBytes=4*t,m.create({key:o,iv:a,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Wt((function(e,t){var r;e.exports=((r=$i).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var o=0;o>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,o=this._counter;s&&(o=this._counter=s.slice(0),this._iv=void 0),i(o);var a=o.slice(0);r.encryptBlock(a,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Wt((function(e,t){var r;e.exports=((r=$i).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Wt((function(e,t){var r;e.exports=((r=$i).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Wt((function(e,t){var r;e.exports=((r=$i).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Wt((function(e,t){var r;e.exports=((r=$i).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Wt((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],o=[],a=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;o[r]=y<<24|y>>>8,a[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],o=0;o6&&o%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[o/r|0]<<24),s[o]=s[o-r]^l);for(var a=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,o,a){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^o[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^o[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^o[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^o[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(a[l>>>24]<<24|a[c>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[f++],_=(a[c>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&l])^r[f++],g=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[l>>>8&255]<<8|a[255&c])^r[f++],y=(a[h>>>24]<<24|a[l>>>16&255]<<16|a[c>>>8&255]<<8|a[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=o[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(a[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(a[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,o=this._rBlock,a=0,d=0;d<8;d++)a|=l[d][((o^n[d])&c[d])>>>0];this._lBlock=o,this._rBlock=s^a}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var o=n%r,a=t[o>>>2]>>>24-o%4*8&255;s=(s+i[n]+a)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var o=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(o)}(),r.RC4)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=t._createHelper(a)}(),r.Rabbit)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=t._createHelper(a)}(),r.RabbitLegacy)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],o=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var a={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,o=e.sbox[0][r]+e.sbox[1][i];return o^=e.sbox[2][n],o+=e.sbox[3][s],o}function l(e,t,r){let i,s=t,o=r;for(let t=0;t1;--t)s^=e.pbox[t],o=d(e,s)^o,i=s,s=o,o=i;return i=s,s=o,o=i,o^=e.pbox[1],s^=e.pbox[0],{left:s,right:o}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=o[t][r]}let i=0;for(let o=0;o=r&&(i=0);let a=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=e.slice(s+4+2,s+4+o);let n=new Ni.ModeOfOperation.ctr(t,new Ni.Counter(r));const a=n.decrypt(i);n=null,e.set(a,s+4+2)}s=s+4+o}return e}function Hi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Ni.ModeOfOperation.ctr(t,new Ni.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Wt((function(e,t){e.exports=$i}));var Wi=Wt((function(e,t){var r,n,s,o=(r=new Date,n=4,s={setLogLevel:function(e){n=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>=n&&console.debug("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);o.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+="["+o.getDurationString(e.start(i))+","+o.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=o;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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),o=new Uint8Array(r,i,n);s.set(o)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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,o.debug("MultiBufferStream","Stream ready for parsing"),!0):(o.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(o.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){o.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},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}o.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)),o.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,s)}}t&&(o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,a=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?o.info:o.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(o.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(o.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):0!==l&&a+l>e.getEndPosition()?(e.seek(a),o.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:a}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(o.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(o.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=a,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(o.info("BoxParser","'"+u+"' 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?(o.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(o.error("BoxParser","Parsing of box '"+u+"' read "+n+" 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)o.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 o.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else o.error("av1C reserved_1 parsing problem");else o.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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=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())}})),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(),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(", ")+")"})),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,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})),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),o.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?o.property_index=(127&s)<<8|e.readUint8():o.property_index=127&s}}})),h.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:o.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(o.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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)o.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){o.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){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){o.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),o.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}})),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var o=i.extract_bits(1);this.ptl_sublayer_present_mask|=o<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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 n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}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,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},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>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),o.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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&o.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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?(o.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(o.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(o.warn("ISOFile","Not ready to start parsing"),!1))},g.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&&(o.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),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(o.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),o.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)&&(o.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*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 s=r.samples[l].offset+r.samples[l].alreadyRead,o.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+o.getDurationString(e,a)+" and offset: "+s),{offset:s,time:e/a}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-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 u=new h.avcCBox;u.parse(new a(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new a(t.hevcDecoderConfigRecord)),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 h["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}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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"),n=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-(n.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.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,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,o?(t>=w&&(S++,w<0&&(w=0),w+=o.sample_counts[S]),x.cts=e.samples[t].dts+o.sample_offsets[S]):x.cts=x.dts,a?(t==a.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+U==t+1&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+U==t&&(x.subsamples=l.entries[A].subsamples,U+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,o,a,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=o,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:a,p.offset=0===t&&0===r?b?w+_.data_offset:w:a,a=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return o.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+")"),d.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===s)return null;o.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var a=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=a))return o.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+a+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,a),n.alreadyRead+=a,r.alreadyRead+=a,t.usedBytes+=a,this.stream.logBufferLevel(),null;o.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Vi(e){return e.reduce(((e,t)=>256*e+t))}function ji(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]))}Wi.Log,Wi.MP4BoxStream,Wi.DataStream,Wi.MultiBufferStream,Wi.MPEG4DescriptorParser,Wi.BoxParser,Wi.XMLSubtitlein4Parser,Wi.Textin4Parser,Wi.ISOFile,Wi.createFile;class qi{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],ji(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}}function Yi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Ki=16,Xi=[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],Zi=[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 Ji(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function en(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}function tn(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("")}function rn(e,t){const r=31&t;return e<>>32-r}function nn(e){return(255&Xi[e>>>24&255])<<24|(255&Xi[e>>>16&255])<<16|(255&Xi[e>>>8&255])<<8|255&Xi[255&e]}function sn(e){return e^rn(e,2)^rn(e,10)^rn(e,18)^rn(e,24)}function on(e){return e^rn(e,13)^rn(e,23)}function an(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]^=sn(nn(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=sn(nn(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=sn(nn(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=sn(nn(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 dn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Zi[r+0],t[r+0]=i[0]^=on(nn(e)),e=i[2]^i[3]^i[0]^Zi[r+1],t[r+1]=i[1]^=on(nn(e)),e=i[3]^i[0]^i[1]^Zi[r+2],t[r+2]=i[2]^=on(nn(e)),e=i[0]^i[1]^i[2]^Zi[r+3],t[r+3]=i[3]^=on(nn(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function ln(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:o="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=Ji(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Ji(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?en(e):Ji(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Ki-e.length%Ki;for(let r=0;r=Ki;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),o=5;for(;on){const t=new Uint8Array(s.length+e.length-o);t.set(s,0),t.set(e.slice(o),s.length),s=t;break}let l=e[o+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=ln(e.slice(o+4+u,o+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(o+4,o+4+u),0);const a=sr(Yi(n,new Uint8Array(r))),l=new Uint8Array(s.length+a.length);l.set(s,0),l.set(a,s.length),s=l}else{const t=e.slice(o+4,o+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(a,s.length),r.set(t,s.length+4),s=r}o=o+4+d}return s}const hn={init:0,findFirstStartCode:1,findSecondStartCode:2};class fn extends class{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(){i.off(e,n);for(var s=arguments.length,o=new Array(s),a=0;a1?r-1:0),n=1;n{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=hn.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==hn.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=hn.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==hn.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=hn.findFirstStartCode}}}}function pn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=pn(e.slice(s+4,s+4+o),t,r);e.set(i,s+4)}s=s+4+o}return e}function gn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class yn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{fr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class vn{static init(){vn.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 vn.types)vn.types.hasOwnProperty(e)&&(vn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=vn.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 vn.box(vn.types.trak,vn.tkhd(e),vn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return vn.box(vn.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 vn.box(vn.types.mdia,vn.mdhd(e),vn.hdlr(e),vn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return vn.box(vn.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?vn.constants.HDLR_AUDIO:vn.constants.HDLR_VIDEO,vn.box(vn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?vn.box(vn.types.smhd,vn.constants.SMHD):vn.box(vn.types.vmhd,vn.constants.VMHD),vn.box(vn.types.minf,t,vn.dinf(),vn.stbl(e))}static dinf(){return vn.box(vn.types.dinf,vn.box(vn.types.dref,vn.constants.DREF))}static stbl(e){return vn.box(vn.types.stbl,vn.stsd(e),vn.box(vn.types.stts,vn.constants.STTS),vn.box(vn.types.stsc,vn.constants.STSC),vn.box(vn.types.stsz,vn.constants.STSZ),vn.box(vn.types.stco,vn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?vn.box(vn.types.stsd,vn.constants.STSD_PREFIX,vn.mp3(e)):vn.box(vn.types.stsd,vn.constants.STSD_PREFIX,vn.mp4a(e)):"avc"===e.videoType?vn.box(vn.types.stsd,vn.constants.STSD_PREFIX,vn.avc1(e)):vn.box(vn.types.stsd,vn.constants.STSD_PREFIX,vn.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 vn.box(vn.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 vn.box(vn.types.mp4a,i,vn.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 vn.box(vn.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 vn.box(vn.types.avc1,n,vn.box(vn.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 vn.box(vn.types.hvc1,n,vn.box(vn.types.hvcC,t))}static mvex(e){return vn.box(vn.types.mvex,vn.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 vn.box(vn.types.trex,r)}static moof(e,t){return vn.box(vn.types.moof,vn.mfhd(e.sequenceNumber),vn.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 vn.box(vn.types.mfhd,t)}static traf(e,t){let r=e.id,i=vn.box(vn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=vn.box(vn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=vn.sdtp(e),o=vn.trun(e,s.byteLength+16+16+8+16+8+8);return vn.box(vn.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,vn.box(vn.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),vn.box(vn.types.trun,r)}static mdat(e){return vn.box(vn.types.mdat,e)}}vn.init();var bn,wn=Wt((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(bn=wn)&&bn.__esModule&&Object.prototype.hasOwnProperty.call(bn,"default")&&bn.default;const Sn=[44100,48e3,32e3,0],En=[22050,24e3,16e3,0],An=[11025,12e3,8e3,0],Un=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],xn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Bn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function kn(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,o=(12&t[2])>>>2,a=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=An[o];break;case 2:d=En[o];break;case 3:d=Sn[o]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),o=n-3):(i=2,t=new Array(2),o=n):-1!==a.indexOf("android")?(i=2,t=new Array(2),o=n):(i=5,o=n,t=new Array(4),n>=6?o=n-3:1===s&&(i=2,t=new Array(2),o=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&o)>>>1,t[2]=(1&o)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Hn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class jn{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function qn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Yn=new Array(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),Kn=new Array(2746333894,1453994832,1736282519,2993693404),Xn=new Array(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 Zn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Qn(e,t){return t+3>>19)^(i<<23|i>>>9)}function rs(e,t){var r=new Array(36);r[0]=Qn(t,0),r[1]=Qn(t,4),r[2]=Qn(t,8),r[3]=Qn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^is(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function ns(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=es(e),n=Math.ceil(r.length/16),s=new Array(r.length),o=t.slice(),a=0;a3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let o=5;for(;os)break;let d=e[o+4],l=!1,c=2;if(i?(n&&(c=3),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=ns(t,r,e.slice(o+4+c,o+4+a));e.set(i,o+4+c)}o=o+4+a}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-2-2024" '+(Sr(false)?"and is Trial Version[试用版本]":""));const os=[];os.push(o({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][audio wasm]:",e)}}),s({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support, using thread emulation"))})(e)||(console.warn("JbPro[❌❌❌][video wasm]",e),Sr(function(e){let t=!0;return e&&-1!==e.indexOf("failed to asynchronously prepare wasm")&&(t=!1),t}(e))&&postMessage({cmd:oe}))}})),Promise.all(os).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=[],s=[],o=null,a=null,d=null,l=null,c=null,u=null,h=!1,f=null,S=null,E=!1,B=!1,oe=!!wr(r),Ee=0,Ae=0,Ye=!1,et=null,tt=null,it=null,st=[],ft=null,xt=null,Bt=0,Ct=0,Gt=null,Ht=null,Wt=0,Vt=0,jt=!1,qt=!1,Jt=!1,rr=null,lr=null,Ur=!1,xr=!0,Br=0,kr=0,Pr=()=>{const e=vr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(o={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){o.decoder=new VideoDecoder({output:function(e){if(fr(e.createImageBitmap))e.createImageBitmap().then((t=>{o.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ci.delay,ts:0},[r]),_r(e)}));else{o.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ci.delay,ts:0},[t]),_r(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){o.reset(),o.decoder&&"closed"!==o.decoder.state&&(o.decoder.close(),o.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(o.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?_t:gt});o.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Re?(n=Fr(s),i={codec:n.codec,description:s}):t===ze&&(n=Kr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),o.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:T,w:n.codecWidth,h:n.codecHeight}),o.isEmitInfo=!0,o.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),o.offscreenCanvasCtx=o.offscreenCanvas.getContext("2d"));try{o.decoder.configure(i),o.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){o.hasInit=!1,o.isEmitInfo=!1,o.offscreenCanvas=null,o.offscreenCanvasCtx=null}});let Vr=function(){if(Ur=!0,a)try{a.abort(),a=null,ci.debugLog("worker","abort success")}catch(e){a=null,ci.debugLog("worker","abort catch",e)}},jr={init(){jr.lastBuf=null,jr.vps=null,jr.sps=null,jr.pps=null,jr.streamType=null,jr.localDts=0,jr.pendingUnits={},jr.isSendSeqHeader=!1},destroy(){jr.lastBuf=null,jr.vps=null,jr.sps=null,jr.pps=null,jr.streamType=null,jr.localDts=0,jr.pendingUnits={},jr.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=jr.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");jr.handleVideoFrames(e)}else jr.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=jr.localDts;return jr.localDts=jr.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return jr.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{const t=zr(e);t===qe||t===je?jr.handleVideoH264Nalu(e):$r(t)&&i.push(e)})),1===i.length)jr.handleVideoH264Nalu(i[0]);else if(Gr(i)){const e=zr(i[0]),t=Or(e);jr.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{jr.handleVideoH264Nalu(e)}))}else if(jr.streamType===Oe)if(ci._opt.nakedFlowH265DemuxUseNew){const t=jr.handleAddNaluStartCode(e),r=jr.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=ei(e);t===ut||t===lt||t===at?jr.handleVideoH265Nalu(e):ri(t)&&i.push(e)})),1===i.length)jr.handleVideoH265Nalu(i[0]);else if(ni(i)){const e=ei(i[0]),t=ii(e);jr.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{jr.handleVideoH265Nalu(e)}))}else ei(e)===ut?jr.extractH265PPS(e):jr.handleVideoH265Nalu(e)},extractH264PPS(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{Nr(zr(e))?jr.extractH264SEI(e):jr.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{ti(ei(e))?jr.extractH265SEI(e):jr.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{jr.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{jr.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=zr(e);switch(t){case je:jr.sps=e;break;case qe:jr.pps=e}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps){const e=Lr({sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:de,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if($r(t)){const r=Or(t),i=jr.getNaluDts(),n=Mr(e,r);jr.doDecode(n,{type:de,ts:i,isIFrame:r,cts:0})}}else if(jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Lr({sps:jr.sps,pps:jr.pps});ci.decode(e,{type:de,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}},handleVideoH264NaluList(e,t,r){if(jr.isSendSeqHeader){const i=jr.getNaluDts(),n=Rr(e.reduce(((e,t)=>{const r=sr(e),i=sr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);jr.doDecode(n,{type:de,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=ei(e);switch(t){case at:jr.vps=e;break;case lt:jr.sps=e;break;case ut:jr.pps=e}if(jr.isSendSeqHeader){if(jr.vps&&jr.sps&&jr.pps){const e=Zr({vps:jr.vps,sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:de,ts:t,isIFrame:!0,cts:0}),jr.vps=null,jr.sps=null,jr.pps=null}if(ri(t)){const r=ii(t),i=jr.getNaluDts(),n=Jr(e,r);jr.doDecode(n,{type:de,ts:i,isIFrame:r,cts:0})}}else if(jr.vps&&jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Zr({vps:jr.vps,sps:jr.sps,pps:jr.pps});ci.decode(e,{type:de,ts:0,isIFrame:!0,cts:0}),jr.vps=null,jr.sps=null,jr.pps=null}},handleVideoH265NaluList(e,t,r){if(jr.isSendSeqHeader){const i=jr.getNaluDts(),n=Qr(e.reduce(((e,t)=>{const r=sr(e),i=sr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);jr.doDecode(n,{type:de,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!jr.streamVideoType)for(let t of e)if(jr.streamVideoType=pr(t),jr.streamVideoType)break;jr.streamVideoType?jr.streamVideoType===$e?jr.handleVideoH264Frames(e):jr.streamVideoType===Oe&&jr.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;jr.pendingUnits.units&&(t=jr.pendingUnits.units,n=jr.pendingUnits.vcl,i=jr.pendingUnits.iFrame,jr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=zr(o);let a=!1,d=e===Xe;e!==Ke&&e!==Xe||(s=jr.parseVideo264Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(jr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case qe:jr.pps=e;break;case je:jr.sps=e;break;case Ze:n=e}if($r(t)){const t=sr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!jr.isSendSeqHeader&&jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Ir({sps:jr.sps,pps:jr.pps});ci.decode(e,{type:de,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps){const e=Ir({sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:de,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if(i){const e=jr.getNaluDts(),t=Rr(i,r);if(ci._opt.isEmitSEI&&n){const t=nr(n,!1);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}jr.doDecode(t,{type:de,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;jr.pendingUnits.units&&(t=jr.pendingUnits.units,n=jr.pendingUnits.vcl,i=jr.pendingUnits.iFrame,jr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=ei(o);let a=!1,d=ii(e);ri(e)&&(s=jr.parseVideo265Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(jr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ut:jr.pps=e;break;case lt:jr.sps=e;break;case at:jr.vps=e;break;case mt:case pt:n=e}if(ri(t)){const t=sr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!jr.isSendSeqHeader&&jr.sps&&jr.pps&&jr.vps){jr.isSendSeqHeader=!0;const e=Zr({sps:jr.sps,pps:jr.pps,vps:jr.vps});ci.decode(e,{type:de,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null,jr.vps=null}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps&&jr.vps){const e=Zr({sps:jr.sps,pps:jr.pps,vps:jr.vps}),t=jr.localDts;ci.decode(e,{type:de,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null,jr.vps=null}if(i){const e=jr.getNaluDts(),t=Qr(i,r);if(ci._opt.isEmitSEI&&n){const t=nr(n,!0);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}jr.doDecode(t,{type:de,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{jr.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new jn(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new jn(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},Xr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Xr.mp4Box=Wi.createFile(),Xr.mp4Box.onReady=Xr.onReady,Xr.mp4Box.onError=Xr.onError,Xr.mp4Box.onSamples=Xr.onSamples},initTransportDescarmber(){Xr.transportDescarmber=new qi},_getSeqHeader(e){const t=Xr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Wi.DataStream(void 0,0,Wi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Xr.isHevc=!0,ci.isHevc=!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){ci.debugLog(Xr.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Xr.videoTrackId=t.id;const e=Xr._getSeqHeader(t);e&&(ci.debugLog(Xr.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),Xr.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){Xr.audioTrackId=r.id;const e=r.audio||{},t=Yt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Xr.mp4Box.setExtractionOptions(r.id);const n=Kt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(Xr.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(n,0)}Xr.mp4Box.start()},onError(e){ci.debugError(Xr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Xr.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&&ci.calcIframeIntervalTimestamp(i);let n=null;n=Xr.isHevc?Qr(t,r):Rr(t,r),ci.decode(n,{type:de,ts:i,isIFrame:r,cts:0})}Xr.mp4Box.removeUsedSamples(e)}else if(e===Xr.audioTrackId){if(ci._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),ci.decode(i,{type:ae,ts:r,isIFrame:!1,cts:0})}Xr.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(Xr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Xr.transportDescarmber&&(t=Xr.transportDescarmber.transport(t)),t.buffer.fileStart=Xr.offset,Xr.offset+=t.byteLength,Xr.mp4Box.appendBuffer(t.buffer)},destroy(){Xr.mp4Box&&(Xr.mp4Box.stop(),Xr.mp4Box.flush(),Xr.mp4Box.destroy(),Xr.mp4Box=null),Xr.transportDescarmber&&(Xr.transportDescarmber.destroy(),Xr.transportDescarmber=null),Xr.offset=0,Xr.videoTrackId=null,Xr.audioTrackId=null,Xr.isHevc=!1}},ai={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);ai.extractNALu(t)},destroy(){ai.lastBuffer=new Uint8Array(0),ai.parsedOffset=0,ai.firstStartCodeOffset=0,ai.secondStartCodeOffset=0,ai.state="init",ai.hasInitVideoCodec=!1,ai.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(ai.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(ai.lastBuffer.length+e.length);for(t.set(ai.lastBuffer,0),t.set(new Uint8Array(e),ai.lastBuffer.length),ai.lastBuffer=t;;){if("init"===ai.state){let e=!1;for(;ai.lastBuffer.length-ai.parsedOffset>=4;)if(0===ai.lastBuffer[ai.parsedOffset])if(0===ai.lastBuffer[ai.parsedOffset+1])if(1===ai.lastBuffer[ai.parsedOffset+2]){if(182===ai.lastBuffer[ai.parsedOffset+3]){ai.state="findFirstStartCode",ai.firstStartCodeOffset=ai.parsedOffset,ai.parsedOffset+=4,e=!0;break}ai.parsedOffset++}else ai.parsedOffset++;else ai.parsedOffset++;else ai.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===ai.state){let e=!1;for(;ai.lastBuffer.length-ai.parsedOffset>=4;)if(0===ai.lastBuffer[ai.parsedOffset])if(0===ai.lastBuffer[ai.parsedOffset+1])if(1===ai.lastBuffer[ai.parsedOffset+2]){if(182===ai.lastBuffer[ai.parsedOffset+3]){ai.state="findSecondStartCode",ai.secondStartCodeOffset=ai.parsedOffset,ai.parsedOffset+=4,e=!0;break}ai.parsedOffset++}else ai.parsedOffset++;else ai.parsedOffset++;else ai.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===ai.state){if(!(ai.lastBuffer.length-ai.parsedOffset>0))break;{let e,t,r=192&ai.lastBuffer[ai.parsedOffset];e=0==r?ai.secondStartCodeOffset-14:ai.secondStartCodeOffset;let i=0==(192&ai.lastBuffer[ai.firstStartCodeOffset+4]);if(i){if(ai.firstStartCodeOffset-14<0)return void ci.debugWarn(ai.LOG_NAME,"firstStartCodeOffset -14 is",ai.firstStartCodeOffset-14);ai.hasInitVideoCodec||(ai.hasInitVideoCodec=!0,ci.debugLog(ai.LOG_NAME,"setCodec"),hi.setCodec(Ne,"")),t=ai.lastBuffer.subarray(ai.firstStartCodeOffset-14,e)}else t=ai.lastBuffer.subarray(ai.firstStartCodeOffset,e);let n=ai.getNaluDts();ai.hasInitVideoCodec?(postMessage({cmd:O,type:ke,value:t.byteLength}),postMessage({cmd:O,type:Te,value:n}),Ee=n,hi.decode(t,i?1:0,n)):ci.debugWarn(ai.LOG_NAME,"has not init video codec"),ai.lastBuffer=ai.lastBuffer.subarray(e),ai.firstStartCodeOffset=0==r?14:0,ai.parsedOffset=ai.firstStartCodeOffset+4,ai.state="findFirstStartCode"}}}},getNaluDts(){let e=ai.localDts;return ai.localDts=ai.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Wn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=gn(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],o=(48&r[3])>>>4,a=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==s),l={},c=4;if(2==o||3==o){let e=r[4];if(e>0&&(d||3==o)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==o||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==o||3==o)if(0===s||s===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[s]===Rn){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[s]){let r=188-c,i=di.pmt_.pid_stream_type[s];s!==di.pmt_.common_pids.h264&&s!==di.pmt_.common_pids.h265&&s!==di.pmt_.common_pids.adts_aac&&s!==di.pmt_.common_pids.loas_aac&&s!==di.pmt_.common_pids.ac3&&s!==di.pmt_.common_pids.eac3&&s!==di.pmt_.common_pids.opus&&s!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[s]&&!0!==di.pmt_.timed_id3_pids[s]&&!0!==di.pmt_.synchronous_klv_pids[s]&&!0!==di.pmt_.asynchronous_klv_pids[s]||di.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let o=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,o));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):di.clearSlices(s,i)}for(let a=1+o;a=s.expected_length&&di.clearSlices(s,i),a+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):s.total_length>=s.expected_length&&di.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let o=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new $n,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let a=di.pes_slice_queues_[i.pid];a.slices.push(n),i.payload_unit_start_indicator&&(a.expected_length=0===o?0:o+6),a.total_length+=n.byteLength,a.expected_length>0&&a.expected_length===a.total_length?di.emitPESSlices(a,i):a.expected_length>0&&a.expected_length>>6,a=t[8];2!==o&&3!==o||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===o?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+a;if(0!==n){if(n<3+a)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-a}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Tn:case Cn:di.parseMP3Payload(c,r);break;case Dn:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):di.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Pn:di.parseADTSAACPayload(c,r);break;case Fn:di.parseLOASAACPayload(c,r);break;case Ln:case In:break;case Mn:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,s,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case zn:di.parseH264Payload(c,r,s,e.random_access_indicator);break;case Nn:di.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Dn){let r,s=6;r=0!==n?n:t.byteLength-s;let o=t.subarray(s,s+r);di.parsePESPrivateDataPayload(o,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let o=null;if(1===n&&0===s)o={version_number:0,network_pid:0,program_pmt_pid:{}},o.version_number=i;else if(o=di.pat_,null==o)return;let a=r-5-4,d=-1,l=-1;for(let t=8;t<8+a;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?o.network_pid=i:(o.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(o)}`),di.pat_=o,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,o=1&e[5],a=e[6];if(e[7],1===o&&0===a)r=di._initPmt(),r.program_number=n,r.version_number=s,di.program_pmt_map_[n]=r;else if(r=di.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Zr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Ir({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let n=di.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new er(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame());){r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new tr(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame(ur(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=o,r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,o=(6&e[1])>>1;e[2];let a=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[a];break;case 2:l=i[a];break;case 3:l=r[a]}switch(o){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ae};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new Vn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Kt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(n,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new Gn;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/di.timescale_);s.pts=e}else s.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===de?di._doDecodeVideo({...e,payload:t}):e.type===ae&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Qr(t,e.isIFrame):Rr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:de,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;wr(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ae,ts:e.dts,isIFrame:!1,cts:0})}},li=null;Er()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new yn,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!Sr(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===wt,isStateClosed:()=>li.getState()===St,isStateEnded:()=>li.getState()===bt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,At,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,Ut,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(Sr(li.hasInit))if(r&&e[1]===Tt){const i=15&e[0];if(i===ze&&Sr(ci._opt.supportMSEDecodeHevc))return void li.emitError(Ie.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Re?r=Fr(e.slice(5)):t===ze&&(r=Yr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Ie.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(br(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Re?s=Fr(n):i===ze&&(s=Kr(n)),li.videoInfo.width=s.codecWidth,li.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),li.emitError(Ie.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const o={id:It,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},a=vn.generateInitSegment(o);li.isAvc=i===Re;let d=s.codec;return li.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:li.isAvc?yt:vt,postMessage({cmd:T,w:s.codecWidth,h:s.codecHeight}),li._initSourceBuffer(),li.appendBuffer(a.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===Ve,s=r===Ge;if(Sr(s||n))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Ie.mediaSourceAudioG711NotSupport),!1;const o={id:Mt,type:"audio",timescale:1e3};let a={};if(Xt(e)){if(a=Qt(e.slice(2)),!a)return!1;o.audioSampleRate=a.sampleRate,o.channelCount=a.channelCount,o.config=a.config,o.refSampleDuration=1024/o.audioSampleRate*o.timescale}else{if(!n)return!1;if(a=kn(e),!a)return!1;o.audioSampleRate=a.samplingRate,o.channelCount=a.channelCount,o.refSampleDuration=1152/o.audioSampleRate*o.timescale}o.codec=a.codec,o.duration=0;let d="mp4",l=a.codec,c=null;n&&Sr(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=vn.generateInitSegment(o);let u=`${o.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),Sr(li.isAudioInitInfo)&&(lr=r===Ge?i?16:8:0===i?8:16,postMessage({cmd:F,code:r}),postMessage({cmd:P,sampleRate:o.audioSampleRate,channels:o.channelCount,depth:lr}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=s,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Ie.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Ie.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Ie.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Ie.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Ie.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),o=s.byteLength;if(0===o)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let a=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=a,d=!0);const l=a-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${a} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(vn.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=vn.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendBuffer(n.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=It,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=o,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=s,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(vn.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=vn.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendAudioBuffer(n.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=Mt,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=n,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),Sr(li.getSourceBufferUpdating())&&li.isStateOpen()&&Sr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),Sr(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&Sr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Ie.mediaSourceAudioInitTimeout)}),1e3)));if(Sr(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Ie.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Ie.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(Sr(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Ie.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Ie.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:n,end:t})}}else s=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:n,end:t})}}else sli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&Sr(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&Sr(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&Sr(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&Sr(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(Sr(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Pt,_opt:Pr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Ye,wasmDecodeDelay:Ee-Ae});postMessage({cmd:O,type:De,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!oe)return-1;if(t===ae)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Ye=!1,ci.delay=t-r):(Ye=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!oe)return-1;if(t===ae)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Ye=!1,t=r-i):(Ye=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===de&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ae?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===de&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===de&&o.decode?o.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===n.length)return;const t=e.ts,i=n[0],s=e.type===de&&br(e.payload);if(Sr(r))s&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i));else{const r=i.ts-t,o=i.type===ae&&e.type===de;(r<=20||o||s)&&(ci.debugLog("worker",`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 ${o} and isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===v,t=ci._opt.playType===b;if(jr.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),o&&ci._opt.useWCS&&ci.useOffscreen()&&o.init(),Sr(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(n.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${n.length}`);if(ci.dropping){for(r=n.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${n.length}`);!r.isIFrame&&n.length;)r=n.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;n.length;)r=n.shift(),ci.doDecode(r);else if(r=n[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),n.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:H})):(n.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;n.length;){if(r=n[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${n.length}`);break}n.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();et||(et=e);const r=e-et;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),et=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(Sr(ci._opt.checkFirstIFrame)&&(oe=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;n.length&&(e=n.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Vr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(Ur=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&Sr(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,et=null,Ye=!1,Ee=0,Ae=0,o&&(o.destroy&&o.destroy(),o=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Pr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),n=[],s=[],u&&(u.close(),u=null),f=null,S=null,E=!1,B=!1,oe=!1,jt=!1,qt=!1,Jt=!1,rr=null,st=[],Bt=0,Ct=0,tt=null,it=null,Gt=null,Ht=null,lr=null,Wt=0,Vt=0,ft=null,xt=null,ci.fetchStatus=Pt,xr=!0,jr.destroy(),Xr.destroy(),ai.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===ae&&Xt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===de&&t.isIFrame&&br(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===w)if(t.type===de){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ae&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Zt(r)?r.slice(2):r.slice(1);postMessage({cmd:L,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===de){if(Wt>0){const e=t.ts-Ht,r=Wt+Wt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Wt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Vt}`),Ht-t.ts>A&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Wt=0),ci._opt.isDropSameTimestampGop&&Sr(t.isIFrame)&&oe)){const e=ci.hasIframeInBufferList(),t=Sr(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),wr(ci._opt.checkFirstIFrame)&&wr(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}Ht>0&&(Wt=t.ts-Ht),Vt=e.byteLength,Ht=t.ts}if(oe){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${n.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;n.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${n.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return n.forEach((t=>{t.type===de&&(e+=1)})),e},hasIframeInBufferList:()=>n.some((e=>e.type===de&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return n.forEach((e=>{e.type===de&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return n.forEach((t=>{t.type===ae&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?jr.lastBuf&&(e=jr.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&Xr.mp4Box&&(e=Xr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=cr((e=>{postMessage({cmd:O,type:xe,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(Xr.listenMp4Box(),ci._opt.isFmp4Private&&Xr.initTransportDescarmber()),t.protocol===_){t.isFlv&&(u=new Tr(ci.demuxFlv())),a=new AbortController;const r=Object.assign({signal:a.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(wr(Ur))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Pt,void e.body.cancel();if(!yr(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Vr(),void postMessage({cmd:O,type:Ie.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:Ce}),mr())ci.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):wr(Ur)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof e?(ci.fetchStatus=Ft,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Lt,Vr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ue,value:g,msg:"fetch done"})):postMessage({cmd:O,type:Pe})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==kt?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Ie.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Lt,Vr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ue,value:g,msg:"fetch done"})):postMessage({cmd:O,type:Pe}))):a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt)):wr(Ur)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Lt,void Vr()):void("string"!=typeof n?(ci.fetchStatus=Ft,l(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ci.demuxFmp4(n):t.isMpeg4?ci.demuxMpeg4(n):t.isTs?ci.demuxTs(n):t.isNakedFlow&&ci.demuxNakedFlow(n),i()):ci.debugWarn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Lt);u&&(u.close(),u=null),e.name!==kt?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Ie.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==kt?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Ie.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(u=new Tr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:Ce}),postMessage({cmd:O,type:Le})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),wr(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:Ue,value:y,msg:e.code})):postMessage({cmd:O,type:Pe}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):wr(Ur)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Ie.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 le:if(o.byteLength>0){let e=o;wr(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(o)),ci.decode(e,{type:ae,ts:s})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${o.byteLength} and return`);break;case ce:if(o.byteLength>=6){const e=o[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(o,s);else{const e=15&o[0];let t=o[0]>>4===Dt;const i=e===ze;if(Sr(t)&&wr(Ar(o,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&br(o)&&null===ci.isHevc){const e=15&o[0];ci.isHevc=e===ze,rr=or(o,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${rr}`)}t&&ci.calcIframeIntervalTimestamp(s),ci.isPlayer&&ci.calcNetworkDelay(s),r[0]=o[4],r[1]=o[3],r[2]=o[2],r[3]=0;let n=r[0],a=ci.cryptoPayload(o,t);ci.decode(a,{type:de,ts:s,isIFrame:t,cts:n})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${o.byteLength} and return`);break;case ue:postMessage({cmd:J,buffer:o},[o.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ae?ci._opt.hasAudio&&(postMessage({cmd:O,type:Be,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===de&&ci._opt.hasVideo&&(postMessage({cmd:O,type:ke,value:e.byteLength}),postMessage({cmd:O,type:Te,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?ss(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):un(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=_n(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Ge&&(t=Hi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,n=e[0]>>1&1;if(lr=r===Ge?n?16:8:0===n?8:16,ui&&ui.setCodec||!Sr(i))if(Xt(e)||r===He||r===We||r===Ve){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const n=r===Ge?e.slice(2):new Uint8Array(0);if(i){if(r===Ve)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,n);r===Ge&&postMessage({cmd:I,buffer:n},[n.buffer]),B=!0,r!==Ge&&(r===Ve?(ci.mp3Demuxer||(ci.mp3Demuxer=new fn(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(wr(r)&&wr(ci._opt.mseDecodeAudio))postMessage({cmd:$,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(B){if(Xt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===Ve?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Ge?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!Sr(i))if(br(e))if(r===Re||r===ze){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Re&&ci._opt.useSIMD){const e=Fr(t);if(e.codecWidth>U||e.codecHeight>U)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const n=new Uint8Array(e);E=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:M,code:r}),postMessage({cmd:R,buffer:n,codecId:r},[n.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,n){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,n,s);else if(wr(r))postMessage({cmd:N,payload:e,isIFrame:n,ts:t,cts:s,delay:ci.delay},[e.buffer]);else if(E)if(!oe&&n&&(oe=!0),oe){if(n&&br(e)){const t=15&e[0];let r={};t===Re?r=Fr(e.slice(5)):t===ze&&(r=Yr(e)),r.codecWidth&&r.codecHeight&&f&&S&&(r.codecWidth!==f||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${f}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),qt=!0,postMessage({cmd:j,value:`width: ${f}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(qt)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(Jt)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(br(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${n.length}, need clear is ${e}`),e&&(n=[]),ci.isPlayer&&(ci.resetAllDelay(),wr(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:H}))),wr(ci._opt.checkFirstIFrame)&&Sr(r)&&(oe=!1)},dropBuffer$2:function(){if(n.length>0){let e=n.findIndex((e=>wr(e.isIFrame)&&e.type===de));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:H});const t=n.length;n=n.slice(e);const r=n.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${n.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===n.length&&(ci.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 ae:ci.decode(new Uint8Array(e,5),{type:ae,ts:r});break;case de:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ci._isEnhancedH265Header(n))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),br(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===ze}ci.isPlayer&&ci.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],o=ci.cryptoPayload(i,e);ci.decode(o,{type:de,ts:r,isIFrame:e,cts:n})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){jr.dispatch(e)},demuxFmp4:function(e){Xr.dispatch(e)},demuxMpeg4:function(e){ai.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=Sr(d),n===zt){if(i===Ot){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),rr=or(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${rr}`),ci.decode(i,{type:de,ts:t,isIFrame:!0,cts:0})}}}else if(n===Nt){let r=e,n=0;const s=i===Ot;s&&ci.calcIframeIntervalTimestamp(t),d||(a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0],r=Qr(e.slice(8),s),r=ci.cryptoPayload(r,s),ci.decode(r,{type:de,ts:t,isIFrame:s,cts:n}))}else if(n===$t){const r=i===Ot;r&&ci.calcIframeIntervalTimestamp(t);let n=Qr(e.slice(5),r);n=ci.cryptoPayload(n,r),ci.decode(n,{type:de,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Rt)===Rt},findSei:function(e,t){let r=4;hr(rr)&&(r=rr),ir(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===mt||r===pt),n=Sr(ci.isHevc)&&r===Ze;if(i||n){const r=nr(e,ci.isHevc);postMessage({cmd:Z,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(oe&&e>0))return;null===tt?(tt=e,it=ar()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===v&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${tt} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Fe,value:i}))},calcIframeIntervalTimestamp:function(e){null===Gt?Gt=e:Gt=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&wr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){Sr(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),jt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),jt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:T,w:t,h:r}),f=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:F,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:lr}),Ct=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=f*S*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(ft=null,Ae=r,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,s);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:s,delay:ci.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(Bt){if(!(n>=(r=d-Bt)))return Bt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==Ct&&(s[1]=Float32Array.of(...s[1],...o[1])));st[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==Ct&&(st[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer))),a=r,n-=r}for(Bt=n;Bt>=d;Bt-=d)st[0]=o[0].slice(a,a+=d),2==Ct&&(st[1]=o[1].slice(a-d,a)),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer)));Bt&&(s[0]=o[0].slice(a),2==Ct&&(s[1]=o[1].slice(a))),o=[]},errorInfo:function(e){null===ft&&(ft=ar());const t=ar(),r=dr(xt>0?2*xt:5e3,1e3,5e3),i=t-ft;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${xt} and diff is ${i} and maxDiff is ${r}\n and replay`),Jt=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){d?d.readyState===Me?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),wr(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,f=e,S=t,postMessage({cmd:T,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Ct=e,postMessage({cmd:P,sampleRate:t,channels:e,depth:lr})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(Bt){if(!(n>=(r=d-Bt)))return Bt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==Ct&&(s[1]=Float32Array.of(...s[1],...o[1])));st[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==Ct&&(st[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer))),a=r,n-=r}for(Bt=n;Bt>=d;Bt-=d)st[0]=o[0].slice(a,a+=d),2==Ct&&(st[1]=o[1].slice(a-d,a)),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer)));Bt&&(s[0]=o[0].slice(a),2==Ct&&(s[1]=o[1].slice(a))),o=[]},draw:function(t,r,i,n){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const s=e.HEAPU8.subarray(r,r+Br),o=e.HEAPU8.subarray(i,i+kr),a=e.HEAPU8.subarray(n,n+kr),d=new Uint8Array(Br+kr+kr);if(d.set(s),d.set(o,Br),d.set(a,Br+kr),ft=null,Ae=t,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:k}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case he:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case fe:ci.pushBuffer(t.buffer,t.options);break;case pe:ci.decodeAudio(t.buffer,t.ts);break;case me:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ye:ci.clearBuffer(t.needClear);break;case ve:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case _e:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&Sr(t.options.isVideoInited)&&(xr=t.options.isVideoInited),ci.close();break;case ge:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case be:ci.sendWebsocketMessage(t.message);break;case we:li.$video.currentTime=Number(t.message);break;case Se:ci.updatePlaybackIsPause(t.isPause)}}}(e[1],t)}))})); diff --git a/demo/public/pro/js/jessibuca-pro-demo.js b/demo/public/pro/js/jessibuca-pro-demo.js index 1937b9a7..c2a3639b 100644 --- a/demo/public/pro/js/jessibuca-pro-demo.js +++ b/demo/public/pro/js/jessibuca-pro-demo.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["jessibuca-demo"]=t(e.crypto$1)}(this,(function(t){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=s(t);const o=1,a=2,n=3,l=4,d=5,h=6,c=["","websocket","fetch","hls","webrtc","webTransport","aliyunRtc","ts"],u="fetch",p="hls",f="websocket",m="webrtc",g="webTransport",y="worker",A="aliyunRtc",b="player",v="playerAudio",_="playbackTF",S="mp4",E="webm",w="flv",T="flv",k="m7s",L="hls",C="webrtc",D="webTransport",x="nakedFlow",R="fmp4",P="mpeg4",I="aliyunRtc",B="ts",M={flv:"FLV",m7s:"M7S",hls:"HLS",fmp4:"FMP4",mpeg4:"MPEG4",webrtc:"Webrtc",webTransport:"WebTransport",nakedFlow:"裸流",aliyunRtc:"AliyunRtc",ts:"TS"},F="mse",U="wcs",O="offscreen",N="wasm",j="simd",G="mt",z="webrtc",W="hls",V="aliyunRtc",$="canvas",H="video",J="debug",q="warn",K="click",Y="mouseDownAndUp",Q={normal:"normal",simple:"simple"},X="normal",Z="small",ee=36e5,te="/crypto/",ie="jbprov",se=1e4,re={url:"",container:"",playbackConfig:{},fullscreenWatermarkConfig:{},playType:b,playbackForwardMaxRateDecodeIFrame:4,playbackForwardMaxRatePlayAudio:!1,playOptions:{},isLive:!0,isMulti:!0,isM7sCrypto:!1,supportHls265:!0,playFailedUseLastFrameShow:!0,playFailedAndPausedShowMessage:!0,pauseAndNextPlayUseLastFrameShow:!1,widthOrHeightChangeReplayDelayTime:0,isUseNewFullscreenWatermark:!0,websocket1006ErrorReplay:!0,websocket1006ErrorReplayDelayTime:1,streamErrorReplay:!1,streamErrorReplayDelayTime:1,streamEndReplay:!1,streamEndReplayDelayTime:1,networkDisconnectReplay:!0,loadingTimeoutRetryEndShowPlayBtn:!0,initDecoderWorkerTimeout:10,controlSize:X},oe={playType:b,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:!1,isNakedFlow:!1,isMpeg4:!1,isAliyunRtc:!1,isTs:!1,debug:!1,debugLevel:q,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,mseCorrectAudioTimeDuration:20,keepScreenOn:!0,isNotMute:!1,muted:!0,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,controlAutoHideDelayTime:5,hasControl:!1,controlSize:X,loadingIcon:!0,loadingIconStyle:{},loadingText:"",background:"",poster:"",backgroundLoadingShow:!0,loadingBackground:"",loadingBackgroundWidth:0,loadingBackgroundHeight:0,decoder:"decoder-pro.js",decoderOld:"decoder-pro-old.js",decoderAudio:"decoder-pro-audio.js",decoderHard:"decoder-pro-hard.js",decoderHardNotWasm:"decoder-pro-hard-not-wasm.js",wasmMp4RecorderDecoder:"jessibuca-pro-mp4-recorder-decoder.js",decoderWASM:"",isDecoderUseCDN:!1,url:"",rotate:0,mirrorRotate:"none",aspectRatio:"default",playbackConfig:{playList:[],fps:"",showControl:!0,controlType:Q.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:a,demuxType:T,useWasm:!1,useOldWasm:!1,useMSE:!1,useWCS:!1,useSIMD:!0,useMThreading:!1,wcsUseVideoRender:!0,wcsUseWebgl2Render:!1,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:!1,hardDecodingNotSupportAutoWasm:!0,webglAlignmentErrorReplay:!0,webglContextLostErrorReplay:!0,openWebglAlignment:!1,syncAudioAndVideo:!0,syncAudioAndVideoDiff:400,playbackDelayTime:1e3,playbackFps:25,playbackForwardMaxRateDecodeIFrame:4,playbackCurrentTimeMove:!0,useVideoRender:!0,useCanvasRender:!1,videoRenderType:"",networkDelayTimeoutReplay:!1,recordType:S,checkFirstIFrame:!0,nakedFlowFps:25,audioEngine:null,isShowRecordingUI:!0,isShowZoomingUI:!0,useFaceDetector:!1,useObjectDetector:!1,useImageDetector:!1,useOcclusionDetector:!1,ptzPositionConfig:{},ptzShowType:"vertical",ptzClickType:K,ptzStopEmitDelay:.3,ptzZoomShow:!1,ptzApertureShow:!1,ptzFocusShow:!1,ptzMoreArrowShow:!1,ptzCruiseShow:!1,ptzFogShow:!1,ptzWiperShow:!1,ptzSupportDraggable:!1,weiXinInAndroidAudioBufferSize:4800,isCryptoAudio:!1,isM7sCrypto:!1,isSm4Crypto:!1,isSm4CryptoH265V2:!1,isXorCrypto:!1,sm4CryptoKey:"",m7sCryptoKey:"",xorCryptoKey:"",cryptoKey:"",cryptoIV:"",cryptoKeyUrl:"",listenWindowResizeAuoResize:!0,orientationChangeResize:!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:!0,playFailedAndReplay:!0,showMessageConfig:{playIsNotPauseOrUrlIsNull:"播放地址不能为空",webglAlignmentError:"Webgl 渲染失败",webglContextLostError:"webgl 上下文丢失",mediaSourceH265NotSupport:"不支持硬解码H265",mseSourceBufferFull:"缓冲区已满",mediaSourceAppendBufferError:"初始化解码器失败",mseSourceBufferError:"解码失败",mseAddSourceBufferError:"初始化解码器失败",mseWorkerAddSourceBufferError:"初始化解码器失败",mediaSourceDecoderConfigurationError:"初始化解码器失败",mediaSourceTsIsMaxDiff:"流异常",mseWidthOrHeightChange:"流异常",mediaSourceAudioG711NotSupport:"硬解码不支持G711a/u音频格式",mediaSourceAudioInitTimeout:"初始化音频解码器失败",mediaSourceAudioNoDataTimeout:"等待音频数据超时",mediaSourceUseCanvasRenderPlayFailed:"MediaSource解码使用canvas渲染失败",mediaSourceBufferedIsZeroError:"流异常",webcodecsH265NotSupport:"不支持硬解码H265",webcodecsUnsupportedConfigurationError:"初始化解码器失败",webcodecsDecodeConfigureError:"初始化解码器失败",webcodecsDecodeError:"解码失败",webcodecsAudioInitTimeout:"初始化音频解码器失败",webcodecsAudioNoDataTimeout:"等待音频数据超时",wcsWidthOrHeightChange:"解码失败",wasmDecodeError:"解码失败",simdDecodeError:"解码失败",wasmWidthOrHeightChange:"流异常",wasmUseVideoRenderError:"video自动渲染失败",videoElementPlayingFailed:"video自动渲染失败",simdH264DecodeVideoWidthIsTooLarge:"不支持该分辨率的视频",networkDelayTimeout:"网络超时重播失败",fetchError:"请求失败",streamEnd:"请求结束",websocket1006Error:"流异常结束",websocketError:"请求失败",webrtcError:"请求失败",hlsError:"请求失败",decoderWorkerInitError:"初始化worker失败",decoderWorkerWasmError:"wasm解码失败",videoElementPlayingFailedForWebrtc:"video自动渲染失败",videoInfoError:"解析视频分辨率失败",webrtcStreamH265:"webrtc不支持H265",delayTimeout:"播放超时重播失败",loadingTimeout:"加载超时重播失败",loadingTimeoutRetryEnd:"加载超时重播失败",delayTimeoutRetryEnd:"播放超时重播失败",flvDemuxBufferSizeTooLarge:"FLV待解封装buffer过大",audioChannelError:"音频通道错误",aliyunRtcError:"请求失败",mseWaitVideoCanplayTimeout:"流异常",initDecoderWorkerTimeout:"初始化解码worker超时"},videoElementPlayingFailedReplay:!0,mp4RecordUseWasm:!0,mseAutoCleanupSourceBuffer:!0,mseAutoCleanupMaxBackwardDuration:30,mseAutoCleanupMinBackwardDuration:10,widthOrHeightChangeReplay:!0,simdH264DecodeVideoWidthIsTooLargeReplay:!0,mediaSourceAudioG711NotSupportReplay:!0,mediaSourceAudioInitTimeoutReplay:!0,mediaSourceAudioNoDataTimeoutReplay:!0,mediaSourceUseCanvasRenderPlayFailedReplay:!0,mediaSourceUseCanvasRenderPlayFailedReplayType:H,webcodecsAudioInitTimeoutReplay:!0,webcodecsAudioNoDataTimeoutReplay:!0,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:!0,wcsDecodeAudio:!0,nakedFlowH265DemuxUseNew:!0,nakedFlowDemuxUseNew:!0,extendDomConfig:{html:"",showBeforePlay:!1,showAfterLoading:!0},disableContextmenu:!1,mseDecoderUseWorker:!0,openMemoryLog:!1,mainThreadFetchUseWorker:!0,playFailedAndPausedShowPlayBtn:!0,mseCorrectionTimestamp:!0,flvDemuxBufferSizeTooLargeReplay:!1,flvDemuxBufferSizeTooLargeEmitFailed:!1,flvDemuxBufferSizeMaxLarge:1048576,isCheckInView:!1,hiddenControl:!1,androidMobileFullscreenRotate:!0,disableModule:{ptz:!1,record:!1,zoom:!1,watermark:!1,playback:!1},recordWebMSupportSeek:!1,wasmPlayAudioUseVideoRender:!1,mseWaitVideoCanplayTimeout:6,mseWaitVideoCanplayAutoWasm:!0,zoomMaxScale:5,zoomSupportGestureInMobile:!1,zoomSupportGestureInMobileSpeed:.2,drawingRectColor:"red",drawingRectLineWidth:1,drawingRectEndRemoveDom:!0,videoSEISyncPtsDiff:.2,initShowPlayBtn:!1,checkStreamEnd:!0},ae="init",ne="initVideo",le="render",de="playAudio",he="initAudio",ce="audioCode",ue="audioNalu",pe="audioAACSequenceHeader",fe="videoCode",me="videoCodec",ge="videoNalu",ye="videoPayload",Ae="audioPayload",be="workerFetch",ve="iframeIntervalTs",_e="isDropping",Se="workerEnd",Ee="playbackStreamVideoFps",we="wasmWidthOrHeightChange",Te="simdDecodeError",ke="simdH264DecodeVideoWidthIsTooLarge",Le="closeEnd",Ce="tempStream",De="videoSEI",xe="flvScriptData",Re="aacSequenceHeader",Pe="videoSequenceHeader",Ie="flvBufferData",Be="checkFirstIFrame",Me="mseHandle",Fe="mseFirstRenderTime",Ue="mseError",Oe=1,Ne=2,je=8,Ge=9,ze=18,We="init",Ve="decode",$e="audioDecode",He="videoDecode",Je="close",qe="updateConfig",Ke="clearBuffer",Ye="fetchStream",Qe="sendWsMessage",Xe="mseUpdateVideoTimestamp",Ze="playbackIsPause",et="fetch",tt="destroy",it="destroyEnd",st="buffer",rt="fetchError",ot="fetchClose",at="fetchSuccess",nt="fetch",lt="sendMessage",dt="destroy",ht="destroyEnd",ct="buffer",ut="websocketError",pt="websocketClose",ft="websocketOpen",mt={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",zooming:"zooming",drawingRect:"drawingRect",drawingRectInfo:"drawingRectInfo",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",recordCancel:"recordCancel",buffer:"buffer",videoFrame:"videoFrame",videoSEI:"videoSEI",videoSEISyncPts:"videoSEISyncPts",start:"start",metadata:"metadata",resize:"resize",volumechange:"volumechange",volume:"volume",destroy:"destroy",beforeDestroy:"beforeDestroy",streamEnd:"streamEnd",streamRate:"streamRate",streamAbps:"streamAbps",streamVbps:"streamVbps",streamDts:"streamDts",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",streamStats:"streamStats",streamEndInner:"streamEndInner",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceended:"mseSourceended",mseSourceStartStreaming:"mseSourceStartStreaming",mseSourceEndStreaming:"mseSourceEndStreaming",mseSourceBufferError:"mseSourceBufferError",mseAddSourceBufferError:"mseAddSourceBufferError",mseWorkerAddSourceBufferError:"mseWorkerAddSourceBufferError",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",playbackEnd:"playbackEnd",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",talkStreamClose:"talkStreamClose",talkStreamError:"talkStreamError",talkStreamInactive:"talkStreamInactive",talkStreamMsg:"talkStreamMsg",webrtcDisconnect:"webrtcDisconnect",webrtcFailed:"webrtcFailed",webrtcClosed:"webrtcClosed",webrtcChecking:"webrtcChecking",webrtcConnected:"webrtcConnected",webrtcCompleted:"webrtcCompleted",webrtcOnConnectionStateChange:"webrtcOnConnectionStateChange",webrtcOnIceConnectionStateChange:"webrtcOnIceConnectionStateChange",crashLog:"crashLog",focus:"focus",blur:"blur",inView:"inView",visibilityHiddenTimeout:"visibilityHiddenTimeout",websocketOpen:"websocketOpen",websocketClose:"websocketClose",websocketError:"websocketError",websocketMessage:"websocketMessage",aiObjectDetectorInfo:"aiObjectDetectorInfo",aiFaceDetectorInfo:"aiFaceDetectorInfo",aiOcclusionDetectResult:"aiOcclusionDetectResult",aiImageDetectResult:"aiImageDetectResult",playFailedAndPaused:"playFailedAndPaused",audioResumeState:"audioResumeState",webrtcStreamH265:"webrtcStreamH265",flvMetaData:"flvMetaData",talkFailedAndStop:"talkFailedAndStop",removeLoadingBgImage:"removeLoadingBgImage",memoryLog:"memoryLog",downloadMemoryLog:"downloadMemoryLog",pressureObserverCpu:"pressureObserverCpu",currentPts:"currentPts",online:"online",offline:"offline",networkState:"networkState",clickInitPlayer:"clickInitPlayer"},gt={load:mt.load,timeUpdate:mt.timeUpdate,videoInfo:mt.videoInfo,audioInfo:mt.audioInfo,error:mt.error,kBps:mt.kBps,start:mt.start,timeout:mt.timeout,loadingTimeout:mt.loadingTimeout,loadingTimeoutRetryEnd:mt.loadingTimeoutRetryEnd,delayTimeout:mt.delayTimeout,delayTimeoutRetryEnd:mt.delayTimeoutRetryEnd,fullscreen:"fullscreen",webFullscreen:mt.webFullscreen,play:mt.play,pause:mt.pause,mute:mt.mute,stats:mt.stats,performance:mt.performance,recordingTimestamp:mt.recordingTimestamp,recordStart:mt.recordStart,recordCreateError:mt.recordCreateError,recordEnd:mt.recordEnd,recordBlob:mt.recordBlob,recordCancel:mt.recordCancel,playToRenderTimes:mt.playToRenderTimes,playbackSeek:mt.playbackSeek,playbackStats:mt.playbackStats,playbackTimestamp:mt.playbackTimestamp,playbackPauseOrResume:mt.playbackPauseOrResume,playbackPreRateChange:mt.playbackPreRateChange,playbackRateChange:mt.playbackRateChange,playbackShowPrecisionChange:mt.playbackShowPrecisionChange,playbackEnd:mt.playbackEnd,ptz:mt.ptz,streamQualityChange:mt.streamQualityChange,zooming:mt.zooming,crashLog:mt.crashLog,focus:mt.focus,blur:mt.blur,visibilityHiddenTimeout:mt.visibilityHiddenTimeout,visibilityChange:mt.visibilityChange,websocketOpen:mt.websocketOpen,websocketClose:mt.websocketClose,networkDelayTimeout:mt.networkDelayTimeout,aiObjectDetectorInfo:mt.aiObjectDetectorInfo,aiFaceDetectorInfo:mt.aiFaceDetectorInfo,aiOcclusionDetectResult:mt.aiOcclusionDetectResult,aiImageDetectResult:mt.aiImageDetectResult,playFailedAndPaused:mt.playFailedAndPaused,streamEnd:mt.streamEnd,audioResumeState:mt.audioResumeState,videoSEI:mt.videoSEI,videoSEISyncPts:mt.videoSEISyncPts,flvMetaData:mt.flvMetaData,webrtcOnConnectionStateChange:mt.webrtcOnConnectionStateChange,webrtcOnIceConnectionStateChange:mt.webrtcOnIceConnectionStateChange,currentPts:mt.currentPts,videoSmooth:mt.videoSmooth,networkState:mt.networkState,volume:mt.volume,drawingRectInfo:mt.drawingRectInfo,clickInitPlayer:mt.clickInitPlayer},yt={talkStreamError:mt.talkStreamError,talkStreamClose:mt.talkStreamClose},At={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsDecodeError:"webcodecsDecodeError",webcodecsUnsupportedConfigurationError:"webcodecsUnsupportedConfigurationError",webcodecsDecodeConfigureError:"webcodecsDecodeConfigureError",webcodecsAudioInitTimeout:"webcodecsAudioInitTimeout",webcodecsAudioNoDataTimeout:"webcodecsAudioNoDataTimeout",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceAudioG711NotSupport:"mediaSourceAudioG711NotSupport",mediaSourceAudioInitTimeout:"mediaSourceAudioInitTimeout",mediaSourceAudioNoDataTimeout:"mediaSourceAudioNoDataTimeout",mediaSourceDecoderConfigurationError:"mediaSourceDecoderConfigurationError",mediaSourceFull:mt.mseSourceBufferFull,mseSourceBufferError:mt.mseSourceBufferError,mseAddSourceBufferError:mt.mseAddSourceBufferError,mseWorkerAddSourceBufferError:mt.mseWorkerAddSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceTsIsMaxDiff:"mediaSourceTsIsMaxDiff",mediaSourceUseCanvasRenderPlayFailed:"mediaSourceUseCanvasRenderPlayFailed",mediaSourceBufferedIsZeroError:"mediaSourceBufferedIsZeroError",wasmDecodeError:"wasmDecodeError",wasmUseVideoRenderError:"wasmUseVideoRenderError",simdH264DecodeVideoWidthIsTooLarge:"simdH264DecodeVideoWidthIsTooLarge",simdDecodeError:"simdDecodeError",hlsError:"hlsError",webrtcError:"webrtcError",webrtcClosed:mt.webrtcClosed,webrtcIceCandidateError:"webrtcIceCandidateError",webglAlignmentError:"webglAlignmentError",wasmWidthOrHeightChange:"wasmWidthOrHeightChange",mseWidthOrHeightChange:"mseWidthOrHeightChange",wcsWidthOrHeightChange:"wcsWidthOrHeightChange",widthOrHeightChange:"widthOrHeightChange",tallWebsocketClosedByError:"tallWebsocketClosedByError",flvDemuxBufferSizeTooLarge:mt.flvDemuxBufferSizeTooLarge,audioChannelError:"audioChannelError",webglContextLostError:"webglContextLostError",videoElementPlayingFailed:"videoElementPlayingFailed",videoElementPlayingFailedForWebrtc:"videoElementPlayingFailedForWebrtc",decoderWorkerInitError:"decoderWorkerInitError",decoderWorkerWasmError:"decoderWorkerWasmError",videoInfoError:"videoInfoError",streamEnd:mt.streamEnd,websocket1006Error:"websocket1006Error",delayTimeout:mt.delayTimeout,loadingTimeout:mt.loadingTimeout,networkDelayTimeout:mt.networkDelayTimeout,fullscreenError:"fullscreenError",aliyunRtcError:"aliyunRtcError",mseWaitVideoCanplayTimeout:"mseWaitVideoCanplayTimeout",initDecoderWorkerTimeout:"initDecoderWorkerTimeout",...yt},bt="notConnect",vt="open",_t="close",St="error",Et={download:"download",base64:"base64",blob:"blob"},wt="download",Tt="blob",kt={7:"H264(AVC)",12:"H265(HEVC)",99:"MPEG4"},Lt=7,Ct=12,Dt="H264(AVC)",xt="H265(HEVC)",Rt=10,Pt=7,It=2,Bt={AAC:"AAC",ALAW:"ALAW(g711a)",MULAW:"MULAW(g711u)",MP3:"MP3"},Mt={10:"AAC",7:"ALAW",8:"MULAW",2:"MP3"},Ft=7,Ut=8,Ot=5,Nt=1,jt=5,Gt=6,zt=7,Wt=8,Vt=14,$t=19,Ht=19,Jt=20,qt=20,Kt=21,Yt=21,Qt=32,Xt=32,Zt=33,ei=33,ti=34,ii=34,si=39,ri=39,oi=40,ai=0,ni=1,li=2,di="webcodecs",hi="webgl",ci="webgl2",ui="webgpu",pi="offscreen",fi="mse",mi="hls",gi="webrtc",yi="key",Ai="delta",bi='video/mp4; codecs="avc1.64002A"',vi='video/mp4; codecs="hev1.1.6.L123.b0"',_i='video/mp4;codecs="hev1.1.6.L120.90"',Si='video/mp4;codecs="hev1.2.4.L120.90"',Ei='video/mp4;codecs="hev1.3.E.L120.90"',wi='video/mp4;codecs="hev1.4.10.L120.90"',Ti="ended",ki="open",Li="closed",Ci=27,Di=38,xi=40,Ri="oneHour",Pi="halfHour",Ii="tenMin",Bi="fiveMin",Mi={oneHour:"one-hour",halfHour:"half-hour",tenMin:"ten-min",fiveMin:"five-min"},Fi=["oneHour","halfHour","tenMin","fiveMin"],Ui=["up","right","down","left","left-up","right-up","left-down","right-down"],Oi="stop",Ni="fiStop",ji="zoomExpand",Gi="zoomNarrow",zi="apertureFar",Wi="apertureNear",Vi="focusFar",$i="focusNear",Hi="cruiseStart",Ji="cruiseStop",qi="fogOpen",Ki="fogClose",Yi="wiperOpen",Qi="wiperClose",Xi={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"},Zi="sourceclose",es="sourceopen",ts="sourceended",is="startstreaming",ss="endstreaming",rs="qualitychange",os="canplay",as="waiting",ns="timeupdate",ls="ratechange",ds="loadedmetadata",hs="avc",cs="hevc",us="A key frame is required after configure() or flush()",ps="Cannot call 'decode' on a closed codec",fs="Unsupported configuration",ms="Decoder failure",gs="Decoding error",ys="Decoder error",As="HEVC decoding is not supported",bs="The user aborted a request",vs="AbortError",_s="AbortError",Ss="loading",Es="playing",ws="paused",Ts="destroy",ks=0,Ls=1,Cs="worklet",Ds="script",xs="active",Rs={name:"",index:0,icon:"",iconHover:"",iconTitle:"",activeIcon:"",activeIconHover:"",activeIconTitle:"",click:null,activeClick:null},Ps={content:"",click:null,index:0},Is=1,Bs="subtitle-segments",Ms="hls-manifest-loaded",Fs="hls-level-loaded",Us="demuxed-track",Os="flv-script-data",Ns="metadata-parsed",js="ttfb",Gs="load-retry",zs="load-start",Ws="speed",Vs="load-complete",$s="load-response-headers",Hs="sei",Js="sei-in-time",qs="switch-url-failed",Ks="switch-url-success",Ys="subtitle-playlist",Qs="stream-parsed",Xs="error",Zs=[0,160,240,320,480,640],er=[0,160,240,320,480,640],tr=["轻松","正常","较高","高"],ir="idle",sr="buffering",rr="complete",or={1:"MEDIA_ERR_ABORTED",2:"MEDIA_ERR_NETWORK",3:"MEDIA_ERR_DECODE",4:"MEDIA_ERR_SRC_NOT_SUPPORTED"},ar="video decoder initialization failed",nr="audio packet",lr="memory access out of bounds",dr=1,hr=2,cr=0,ur=1,pr=3,fr=16,mr="candidate-pair",gr="inbound-rtp",yr="local-candidate",Ar="remote-candidate",br="track",vr=9e4,_r=45e4,Sr=9e4,Er="ws1006",wr="mseDecodeError",Tr="wcsDecodeError",kr="ulaw",Lr="alaw",Cr="mp3",Dr=48e3,xr="created",Rr="loading",Pr="playing",Ir="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0;class Br{constructor(e){this.log=function(t){if(e._opt.debugLevel==J){const o=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var i=arguments.length,s=new Array(i>1?i-1:0),r=1;r1?i-1:0),r=1;r1?s-1:0),o=1;o32&&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 s=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-s;return this._current_word<<=s,this._current_word_bits_left-=s,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)}}const Nr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],jr=Nr,Gr=Nr;function zr(e){let{profile:t,sampleRate:i,channel:s}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|s<<3])}function Wr(e){return Vr(e)&&e[1]===ks}function Vr(e){return e[0]>>4===Rt}function $r(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 Hr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return 1024*t/e}const Jr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function qr(e){let t=new Uint8Array(e),i=null,s=0,r=0,o=0,a=null;if(s=r=t[0]>>>3,o=(7&t[0])<<1|t[1]>>>7,o<0||o>=Jr.length)return void console.error("Flv: AAC invalid sampling frequency index!");let n=Jr[o],l=(120&t[1])>>>3;if(l<0||l>=8)return void console.log("Flv: AAC invalid channel configuration");5===s&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let d=Ir.navigator.userAgent.toLowerCase();return-1!==d.indexOf("firefox")?o>=6?(s=5,i=new Array(4),a=o-3):(s=2,i=new Array(2),a=o):-1!==d.indexOf("android")?(s=2,i=new Array(2),a=o):(s=5,a=o,i=new Array(4),o>=6?a=o-3:1===l&&(s=2,i=new Array(2),a=o)),i[0]=s<<3,i[0]|=(15&o)>>>1,i[1]=(15&o)<<7,i[1]|=(15&l)<<3,5===s&&(i[1]|=(15&a)>>>1,i[2]=(1&a)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:n,channelCount:l,objectType:s,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+r}}class Kr{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,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}read_golomb(){let e;for(e=0;0==this.read(1)&&!this.iserro;e++);return(1<=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(8&e[i+1])>>>3,r=(6&e[i+1])>>>1,o=1&e[i+1],a=(192&e[i+2])>>>6,n=(60&e[i+2])>>>2,l=(1&e[i+2])<<2|(192&e[i+3])>>>6,d=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+d>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let h=1===o?7:9,c=d-h;i+=h;let u=this.findNextSyncwordOffset(i+c);if(this.current_syncword_offset_=u,0!==s&&1!==s||0!==r)continue;let p=e.subarray(i,i+c);t={},t.audio_object_type=a+1,t.sampling_freq_index=n,t.sampling_frequency=jr[n],t.channel_config=l,t.data=p}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class to{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let s=0;s<=t;s++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let s=this.current_syncword_offset_,r=(31&t[s+1])<<8|t[s+2];if(s+3+r>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let o=new Or(t.subarray(s+3,s+3+r)),a=null;if(o.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(s+3+r),o.destroy();continue}a=e}else{let e=o.readBool();if(e&&o.readBool()){console.error("audioMuxVersionA is Not Supported"),o.destroy();break}if(e&&this.getLATMValue(o),!o.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),o.destroy();break}if(0!==o.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),o.destroy();break}if(0!==o.readBits(4)){console.error("more than 2 numProgram Not Supported"),o.destroy();break}if(0!==o.readBits(3)){console.error("more than 2 numLayer Not Supported"),o.destroy();break}let t=e?this.getLATMValue(o):0,i=o.readBits(5);t-=5;let s=o.readBits(4);t-=4;let r=o.readBits(4);t-=4,o.readBits(3),t-=3,t>0&&o.readBits(t);let n=o.readBits(3);if(0!==n){console.error(`frameLengthType = ${n}. Only frameLengthType = 0 Supported`),o.destroy();break}o.readByte();let l=o.readBool();if(l)if(e)this.getLATMValue(o);else{let e=0;for(;;){e<<=8;let t=o.readBool();if(e+=o.readByte(),!t)break}console.log(e)}o.readBool()&&o.readByte(),a={},a.audio_object_type=i,a.sampling_freq_index=s,a.sampling_frequency=jr[a.sampling_freq_index],a.channel_config=r,a.other_data_present=l}let n=0;for(;;){let e=o.readByte();if(n+=e,255!==e)break}let l=new Uint8Array(n);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function so(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return[];const i=e.length,s=[];let r,o=0;for(;o+t>>=8),o+=t,r){if(o+r>i)break;s.push(e.subarray(o,o+r)),o+=r}return s}function ro(e,t){const i=e.length;let s=t?2:1,r=0,o=0,a="";for(;255===e[s];)r+=255,s++;for(r+=e[s++];255===e[s];)o+=255,s++;if(o+=e[s++],5===r&&i>s+16)for(let t=0;t<16;t++)a+=e[s].toString(16),s++;return{payload:e.subarray(s),type:r,size:o,uuid:a}}function oo(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 s=new Uint8Array(t+4);return s.set(i,0),s.set(e,4),s}function ao(){}function no(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let s=0;for(;!t&&s0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),s=t[0].replace("data:","").replace(";base64","");let r=i.length,o=new Uint8Array(r);for(;r--;)o[r]=i.charCodeAt(r);return new File([o],"file",{type:s})}function co(){return(new Date).getTime()}function uo(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function po(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{po(e,i,t[i])})),e.style[t]=i,e}function fo(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const s=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(s):s}function mo(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function go(e){let t=0,i=mo();return s=>{if(!Po(s))return;t+=s;const r=mo(),o=r-i;o>=1e3&&(e(t/o*1e3),i=r,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 yo='"9-1-2024"',Ao=!1;function bo(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function vo(){return!(bo()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))}function _o(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}function So(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function Eo(){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 s in i)if(i[s]){let i="";if("IE"===s){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"===s){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(s="360");const t=e.match(/chrome\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Firefox"===s){const t=e.match(/firefox\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Opera"===s){const t=e.match(/opera\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Safari"===s){const t=e.match(/version\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Edge"===s){const t=e.match(/edge\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("QQBrowser"===s){const t=e.match(/qqbrowser\/([\d.]+)/);t&&t.length>1&&(i=t[1])}t.type=s,t.version=parseInt(i)}return t}function wo(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function To(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function ko(e,t){if(0===arguments.length)return null;var i,s=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 r={y:i.getFullYear(),m:i.getMonth()+1,d:i.getDate(),h:i.getHours(),i:i.getMinutes(),s:i.getSeconds(),a:i.getDay()},o=s.replace(/{(y|m|d|h|i|s|a)+}/g,((e,t)=>{var i=r[t];return"a"===t?["一","二","三","四","五","六","日"][i-1]:(e.length>0&&i<10&&(i="0"+i),i||0)}));return o}function Lo(){return"VideoFrame"in window}function Co(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function Do(){return"xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function xo(e,t){let i,s,r=!1;return function o(){for(var a=arguments.length,n=new Array(a),l=0;l{r=!1,i&&(o.apply(s,i),i=null,s=null)}),t)}}function Ro(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 s=parseFloat(e);i=Math.floor(Math.log(s)/Math.log(1024));var r=s/Math.pow(1024,i);return(r=r.toFixed(2))+t[i]}function Po(e){return"[object Number]"===Object.prototype.toString.call(e)}function Io(){let e=!1;return"MediaSource"in Ir&&Ir.MediaSource&&(Ir.MediaSource.isTypeSupported(vi)||Ir.MediaSource.isTypeSupported(_i)||Ir.MediaSource.isTypeSupported(Si)||Ir.MediaSource.isTypeSupported(Ei)||Ir.MediaSource.isTypeSupported(wi))&&(e=!0),e}function Bo(){const e=Eo();return"chrome"===e.type.toLowerCase()&&e.version>=107}function Mo(){let e=!1;return"MediaStreamTrackGenerator"in window&&(e=!0),e}function Fo(){let e=!1;return"MediaStream"in window&&(e=!0),e}function Uo(e,t){let i=window.URL.createObjectURL(t),s=window.document.createElement("a");s.download=e,s.href=i;let r=window.document.createEvent("MouseEvents");r.initEvent("click",!0,!0),s.dispatchEvent(r),setTimeout((()=>{window.URL.revokeObjectURL(i)}),wo()?1e3:0)}function Oo(e){return null==e}function No(e){return!0===e||!1===e}function jo(e){return!Oo(e)}function Go(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||{}),s=Object.assign(t.text,e.text||{}),r=Object.assign(t.rect,e.rect||{}),o=Object.assign(t.line,e.line||{});return t=Object.assign(t,e,{image:i,text:s,rect:r,line:o}),t}function zo(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 Wo(e,t){return new Promise(((i,s)=>{let r=Go(t);if(!r.image.src&&!r.text.content)return i(e);let o=document.createElement("canvas");o.width=t.width,o.height=t.height;let a=o.getContext("2d");a.imageSmoothingEnabled=!0,a.imageSmoothingEnabled&&(a.imageSmoothingQuality="high");let n=0,l=0;Po(r.left)?n=r.left:Po(r.right)&&(n=o.width-r.right),Po(r.top)?l=r.top:Po(r.bottom)&&(l=o.height-r.bottom);const d=new Image;d.src=e,d.onload=()=>{if(a.drawImage(d,0,0),r.image&&r.image.src){const e=new Image;e.src=r.image.src,e.setAttribute("crossOrigin","Anonymous"),e.onload=()=>{n-=r.image.width,a.drawImage(e,n,l,r.image.width,r.image.height),i(o.toDataURL(t.format,t.quality))},e.onerror=e=>{s()}}else r.text&&r.text.content&&(a.font=r.text.fontSize+"px 宋体",a.fillStyle=r.text.color,a.textAlign="right",a.fillText(r.text.content,n,l),i(o.toDataURL(t.format,t.quality)))},d.onerror=e=>{s(e)}}))}function Vo(e){var t,i=0;if(0===e.length)return i;for(t=0;t{if(!t.copyright)return i(e);let r=document.createElement("canvas");r.width=t.width,r.height=t.height;let o=r.getContext("2d");o.imageSmoothingEnabled=!0,o.imageSmoothingEnabled&&(o.imageSmoothingQuality="high");const a=new Image;a.src=e,a.onload=()=>{o.drawImage(a,0,0);const e=Vo(t.copyright),s=o.getImageData(0,0,r.width,r.height);!function(e,t){for(var i=e.data,s=0,r=0;r<32;r++){var o=t>>r&1,a=254&i[s]|o;i[s]=a,s+=4}}(s,e),o.putImageData(s,0,0),i(r.toDataURL(t.format,t.quality))},a.onerror=e=>{s(e)}}))}function Ho(e){var t;if(e>-1){var i=Math.floor(e/3600),s=Math.floor(e/60)%60,r=e%60;t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",(r=Math.round(r))<10&&(t+="0"),t+=r.toFixed(0)}return t}function Jo(e,t){let i="";if(e>-1){const s=Math.floor(e/60)%60;let r=e%60;r=Math.round(r),i=s<10?"0"+s+":":s+":",r<10&&(i+="0"),i+=r,Oo(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function qo(e){let t="";if(e>-1){const i=Math.floor(e/60/60)%60;let s=Math.floor(e/60)%60,r=e%60;s=Math.round(s),t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",r<10&&(t+="0"),t+=r}return t}function Ko(e,t){const i=Math.floor(t/60)%60,s=Math.floor(t%60);return new Date(e).setHours(i,s,0,0)}function Yo(e,t){const i=Math.floor(t/60/60)%60,s=Math.floor(t/60)%60,r=t%60;return new Date(e).setHours(i,s,r,0)}function Qo(e){return(""+e).length}function Xo(e){return e&&0===Object.keys(e).length}function Zo(e){return!Xo(e)}function ea(e){return"string"==typeof e}const ta=()=>{const e=window.navigator.userAgent;return/MicroMessenger/i.test(e)},ia=()=>{const e=window.navigator.userAgent;return/Chrome/i.test(e)};function sa(e){const t=e||window.event;return t.target||t.srcElement}function ra(){return So()&&function(){const e=navigator.userAgent.toLowerCase();return/macintosh|mac os x/i.test(e)}()}function oa(e){return"function"==typeof e}function aa(e){if(bo()){let t=0,i=0;if(1===e.touches.length){let s=e.touches[0];t=s.clientX,i=s.clientY}return{posX:t,posY:i}}let t=0,i=0;const s=e||window.event;return s.pageX||s.pageY?(t=s.pageX,i=s.pageY):(s.clientX||s.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 la(e){let t=Ea(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)&&Ea(e.demuxUseWorker);return!!(Ea(t)&&e.useMSE&&e.mseDecodeAudio&&Ea(e.demuxUseWorker))||(!!(Ea(t)&&e.useWCS&&e.wcsDecodeAudio)||t)}function da(e){let t=null,i=31&e[0];return i!==Ft&&i!==Ut||(t=Dt),t||(i=(126&e[0])>>1,i!==Qt&&i!==Zt&&i!==ti||(t=xt)),t}function ha(e){e.close()}function ca(e){e.close()}function ua(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function pa(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 fa(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],s=null,r=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,r=2)}if(i)for(let o=r;o=1e3){e[o-1].ts-i.ts<1e3&&(s=o+1)}}}return s}function ma(e){for(var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(t),s=new Uint8Array(i.length),r=0;r>4===Ls&&e[1]===ks}function Sa(e){return!0===e||"true"===e}function Ea(e){return!0!==e&&"true"!==e}function wa(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function Ta(){return/iphone/i.test(navigator.userAgent)}function ka(){return window.performance&&window.performance.memory?window.performance.memory:null}function La(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}}function Ca(e){return e.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function Da(){let e=!1;return"requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e=!0),e}function xa(){let e=!1;return"PressureObserver"in window&&(e=!0),e}function Ra(e,t){const i=so(e.slice(5));let s=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===$t||i===Jt||i===Kt)||Ea(t)&&i===Ot)&&(s=!0)})),s}function Pa(){let e={down:"mousedown",move:"mousemove",up:"mouseup",click:"click"};return bo()&&(e={down:"touchstart",move:"touchmove",up:"touchend",click:"click"}),e}class Ia{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,s)));e.addEventListener(t,i,s);const r=()=>{oa(e.removeEventListener)&&e.removeEventListener(t,i,s)};return this.destroys.push(r),r}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class Ba{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(){s.off(e,r);for(var o=arguments.length,a=new Array(o),n=0;n1?i-1:0),r=1;r{delete i[e]})),void delete this.e;const s=i[e],r=[];if(s&&t)for(let e=0,i=s.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,s=i.createShader(e);return i.shaderSource(s,t),i.compileShader(s),i.getShaderParameter(s,i.COMPILE_STATUS)?s:(console.log("An error occurred compiling the shaders: "+i.getShaderInfoLog(s)),i.deleteShader(s),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 s=[];s=s.concat([0,1],[1,1],[1,0],[0,0]);const r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(s),e.STATIC_DRAW);const o=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,o);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{positions:i,position:t,texPosition:r,indices:o}}_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,s,r,o){let a=2*e/r-1,n=2*(o-t-s)/o-1,l=2*(e+i)/r-1,d=2*(o-t)/o-1;return[a,n,l,n,l,d,a,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,s,r){const o=this.gl;this._clear(),o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._ytexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,t,0,o.LUMINANCE,o.UNSIGNED_BYTE,i),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this._utexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,s),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this._vtexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,r),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}renderYUV(e,t,i){let s=i.slice(0,e*t),r=i.slice(e*t,e*t*5/4),o=i.slice(e*t*5/4,e*t*3/2);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,s),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,o),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}drawDom(e,t,i,s,r){const o=this.gl;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._rgbatexture),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,r),this._buffers.positions=this._calRect(i,s,r.width,r.height,e,t),this._drawScene(e,t,!1)}}const Wa=1,Va=2,$a=4;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.isDestroyed=!1,this._initPipeline().then((e=>{this.isDestroyed||(this.pipeline=e,this.matrixGroupInfo=this._initMatrixGroupInfo(),this.matrixGroupInfo&&(this.hasInited=!0))}))}destroy(){this.isDestroyed=!1,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 s=new Float32Array([0,1,1,1,1,0,0,0]),r=e.createBuffer({size:s.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(r,0,s);const o=new Uint16Array([0,1,2,0,2,3]),a=e.createBuffer({size:o.byteLength,usage:window.GPUBufferUsage.INDEX|window.GPUBufferUsage.COPY_DST});return e.queue.writeBuffer(a,0,o),{positionBuffer:i,texpositionBuffer:r,indexBuffer:a}}_initPipeline(){return new Promise(((e,t)=>{const i=this.gpu.device,s=this.gpu.format,r={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 pixelType: i32;\n @group(1) @binding(2) var yTexture: texture_2d;\n @group(1) @binding(3) var uTexture: texture_2d;\n @group(1) @binding(4) var vTexture: texture_2d;\n @group(1) @binding(5) var uvTexture: texture_2d;\n @group(1) @binding(6) var rgbaTexture: 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 if(pixelType == 1){\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 } else if (pixelType == 2) {\n\n var y : f32= textureSample(yTexture, mySampler, vTexturePosition).r;\n var u : f32 = textureSample(uvTexture, mySampler, vTexturePosition).r;\n var v : f32 = textureSample(uvTexture, mySampler, vTexturePosition).g;\n\n return vec4(y, u, v, 1.0)*YUV2RGB;\n } else {\n\n return textureSample(rgbaTexture, mySampler, vTexturePosition);\n }\n\n }\n\n "}),entryPoint:"main",targets:[{format:s}]},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}};i.createRenderPipelineAsync(r).then((t=>{e(t)})).catch((e=>{t(e)}))}))}_initMatrixGroupInfo(){if(!this.gpu)return null;const e=this.gpu.device,t=this.pipeline,i=Ua();ja(i,-1,1,-1,1,.1,100);const s=Ua();Oa(s);const r=Ua();!function(e,t,i,s){var r,o,a,n,l,d,h,c,u,p,f=t[0],m=t[1],g=t[2],y=s[0],A=s[1],b=s[2],v=i[0],_=i[1],S=i[2];Math.abs(f-v)Go(e)));this.configList=i,this._updateDom()}_resizeDomForVideo(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;let t=e.width,i=e.height;const s=this.player._opt,r=this.player.getShowVideoRect();let o=r.height,a=r.width;const n=s.rotate;let l=(a-t)/2,d=(o-i)/2;270!==n&&90!==n||(t=e.height,i=e.width);const h=a/t,c=o/i;let u=h>c?c:h;s.isResize||h!==c&&(u=h+","+c),s.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===s.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===s.mirrorRotate?p+=" rotateY(180deg)":"vertical"===s.mirrorRotate&&(p+=" rotateX(180deg)"),this.scale=-1!==(""+u).indexOf(",")?h:u,this.shadowRootInnerDom.style.transform=p,this.shadowRootInnerDom.style.left=l+"px",this.shadowRootInnerDom.style.top=d+"px",this.shadowRootInnerDom.style.width=e.width+"px",this.shadowRootInnerDom.style.height=e.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,i=this.player.getShowVideoRect();let s=i.width,r=i.height,o=e.width,a=e.height;const n=t.rotate;let l=(s-o)/2,d=(r-a)/2;270!==n&&90!==n||(o=e.height,a=e.width);const h=s/o,c=r/a;let u=h>c?c:h;t.isResize||h!==c&&(u=h+","+c),t.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===t.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===t.mirrorRotate?p+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(p+=" 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=p,this.shadowRootInnerDom.style.left=l+"px",this.shadowRootInnerDom.style.top=d+"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),i=this.player.getShowVideoRect();let s=i.width,r=i.height,o=this.player.getControlHeight();const a=e.width/e.height,n=t[0]/t[1];if(a>n){const t=n*e.height/e.width;this.shadowRootInnerDom.style.width=100*t+"%",this.shadowRootInnerDom.style.height=`calc(100% - ${o}px)`,this.shadowRootInnerDom.style.padding=`0 ${(s-s*t)/2}px`}else{const t=e.width/n/e.height;this.shadowRootInnerDom.style.width="100%",this.shadowRootInnerDom.style.height=`calc(${100*t}% - ${o}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,jo(e.left)&&(Po(e.left)?t.style.left=e.left+"px":t.style.left=e.left),jo(e.right)&&(Po(e.right)?t.style.right=e.right+"px":t.style.right=e.right),jo(e.top)&&(Po(e.top)?t.style.top=e.top+"px":t.style.top=e.top),jo(e.bottom)&&(Po(e.bottom)?t.style.bottom=e.bottom+"px":t.style.bottom=e.bottom),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 s=e.polygon.color,r=e.polygon.lineWidth;if(i=i.sort(((e,t)=>(e.index||0)-(t.index||0))),e.polygon.fill){const s=document.createElement("div");s.style.position="absolute",s.style.width="100%",s.style.height="100%";const r="polygon("+i.map((e=>`${e.x}px ${e.y}px`)).join(", ")+")";s.style.clipPath=r,s.style.backgroundColor=e.polygon.fill,e.polygon.fillOpacity&&(s.style.opacity=e.polygon.fillOpacity),t.appendChild(s)}i.forEach(((e,o)=>{const a=document.createElement("div");if(o===i.length-1){const o=i[0],n={x1:e.x,y1:e.y,x2:o.x,y2:o.y,color:s,lineWidth:r};return this.settingLine(a,n),void t.appendChild(a)}const n=i[o+1],l={x1:e.x,y1:e.y,x2:n.x,y2:n.y,color:s,lineWidth:r};this.settingLine(a,l),t.appendChild(a)}))}this.isDynamic&&(this.shadowRootDynamicDom=t),this.shadowRootInnerDom.appendChild(t)}}))}settingLine(e,t){const i=t.x1,s=t.y1,r=t.x2,o=t.y2;var a=Math.sqrt((i-r)**2+(s-o)**2),n=180*Math.atan2(o-s,r-i)/Math.PI;e.style.backgroundColor=t.color,e.style.width=a+"px",e.style.height=t.lineWidth+"px",e.style.position="absolute",e.style.top=s+"px",e.style.left=i+"px",e.style.transform="rotate("+n+"deg)",e.style.transformOrigin="0 0"}remove(){this._removeDom()}_removeDom(){this.shadowRootInnerDom&&(this.shadowRootInnerDom.innerHTML="")}}class qa extends Ba{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){jo(e.encTypeCode)&&(this.videoInfo.encType=kt[e.encTypeCode],this.videoInfo.encTypeCode=e.encTypeCode),jo(e.encType)&&(this.videoInfo.encType=e.encType),jo(e.width)&&(this.videoInfo.width=e.width),jo(e.height)&&(this.videoInfo.height=e.height),jo(this.videoInfo.encType)&&jo(this.videoInfo.height)&&jo(this.videoInfo.width)&&!this.init&&(this.player.emit(mt.videoInfo,this.videoInfo),this.init=!0)}getVideoInfo(){return this.videoInfo}clearView(){this.tempContentList=[],this.tempAiContentList=[]}resize(){if(this.player.debugLog("CommonVideo","resize()"),"default"===this.player._opt.aspectRatio||bo()?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.debugLog("CommonVideo","_resizeRatio()");const e=this.player._opt.aspectRatio.split(":").map(Number),t=this.player.getShowVideoRect();let i=t.width,s=t.height,r=this.player.getControlHeight();const o=this.videoInfo,a=o.width/o.height,n=e[0]/e[1];if(this.getType()===$&&(this.$videoElement.style.left="0",this.$videoElement.style.top="0",this.$videoElement.style.transform="none"),this.getType()===H&&this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit="fill"),a>n){const e=n*o.height/o.width;this.$videoElement.style.width=100*e+"%",this.$videoElement.style.height=`calc(100% - ${r}px)`,this.$videoElement.style.padding=`0 ${(i-i*e)/2}px`}else{const e=o.width/n/o.height;this.$videoElement.style.width="100%",this.$videoElement.style.height=`calc(${100*e}% - ${r}px)`,this.$videoElement.style.padding=(s-s*e)/2+"px 0"}}play(){}pause(){}setRate(e){}getType(){return""}getCanvasType(){return""}getCurrentTime(){return 0}getStreamFps(){return this.streamFps}isPlaying(){return!0}isVideoPlaying(){return this.isPlaying()}getPlaybackQuality(){return null}setStreamFps(e){this.player.debugLog("CommonVideo","setStreamFps",e),this.streamFps=e}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempContentList=e,this.doAddContentToWatermark()}addAiContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempAiContentList=e,this.doAddAiContentToWatermark()}doAddContentToWatermark(){if(this.tempContentList.length>0){this.contentWatermark||(this.contentWatermark=new Ja(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 Ja(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}getReadyStateInited(){return!0}screenshotByCurrentWatermark(){}initCanvasViewSize(){}bindMediaStream(){}}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 Ya(e,t,i){var s=new XMLHttpRequest;s.open("GET",e),s.responseType="blob",s.onload=function(){en(s.response,t,i)},s.onerror=function(){console.error("could not download file")},s.send()}function Qa(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function Xa(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 Za=Ka.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),en="object"!=typeof window||window!==Ka?function(){}:"download"in HTMLAnchorElement.prototype&&!Za?function(e,t,i){var s=Ka.URL||Ka.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?Qa(r.href)?Ya(e,t,i):Xa(r,r.target="_blank"):Xa(r)):(r.href=s.createObjectURL(e),setTimeout((function(){s.revokeObjectURL(r.href)}),4e4),setTimeout((function(){Xa(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(Qa(e))Ya(e,t,i);else{var s=document.createElement("a");s.href=e,s.target="_blank",setTimeout((function(){Xa(s)}))}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,s){if((s=s||open("","_blank"))&&(s.document.title=s.document.body.innerText="downloading..."),"string"==typeof e)return Ya(e,t,i);var r="application/octet-stream"===e.type,o=/constructor/i.test(Ka.HTMLElement)||Ka.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||r&&o||Za)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),s?s.location.href=e:location=e,s=null},n.readAsDataURL(e)}else{var l=Ka.URL||Ka.webkitURL,d=l.createObjectURL(e);s?s.location=d:location.href=d,s=null,setTimeout((function(){l.revokeObjectURL(d)}),4e4)}};function tn(e){return new Promise(((t,i)=>{navigator.gpu?navigator.gpu.requestAdapter().then((s=>{s?s.requestDevice().then((r=>{if(r){const o=e.getContext("webgpu");if(o){const e=navigator.gpu.getPreferredCanvasFormat();o.configure({device:r,format:e,alphaMode:"opaque"}),t({adapter:s,device:r,context:o,format:e})}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!!")}))}class sn{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 s=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(s,"\n varying highp vec2 uv;\n uniform sampler2D texture;\n void main(void) {\n gl_FragColor = texture2D(texture, uv);\n }\n "),t.compileShader(s),!t.getShaderParameter(s,t.COMPILE_STATUS))throw t.getShaderInfoLog(s);const r=t.createProgram();if(t.attachShader(r,i),t.attachShader(r,s),t.linkProgram(r),!t.getProgramParameter(r,t.LINK_STATUS))throw t.getProgramInfoLog(r);t.useProgram(r);const o=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),t.STATIC_DRAW);const a=t.getAttribLocation(r,"xy");t.vertexAttribPointer(a,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(a);const n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n),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=r,this.buffer=o,this.vertexShader=i,this.fragmentShader=s,this.texture=n}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,this.gl=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 rn extends qa{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.isWcsWebgpu=!1,this.bitmaprenderer=null,this.renderType=null,this.proxyDestroyList=[],this._initCanvasRender()}destroy(){super.destroy(),this.proxyDestroyList.length>0&&(this.proxyDestroyList.forEach((e=>{e&&e()})),this.proxyDestroyList=[]),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.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height),this.context2D=null),this.renderType=null,this.isWebglContextLost=!1,this.isWcsWebgpu=!1,this.isWcsWebgl2=!1,this.videoInfo={width:"",height:"",encType:""},this.$videoElement.width=0,this.$videoElement.height=0,this.player.$container.removeChild(this.$videoElement),this.$videoElement=null,this.init=!1,this.off()}_initContext2D(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.context2D=this.$videoElement.getContext("2d",e)}_initContextGl(){if(this.player.events,this.contextGl=no(this.$videoElement),!this.contextGl)throw this.player.debugError("CommonCanvasLoader","_initContextGl() createContextGL error"),new Error("CommonCanvasLoader and _initContextGl createContextGL error");this._bindContextGlEvents(),this.webglRender=new za(this.contextGl,this.player._opt.openWebglAlignment)}_initContextGl2(){if(this.contextGl=lo(this.$videoElement),this.contextGl){this._bindContextGlEvents(2);try{this.webglRender=new sn(this.$videoElement,this.contextGl)}catch(e){this.player.debugError("CommonCanvasLoader",`create webgl2Render error is ${e} and next use context2d.draw render`),this.contextGl=null,this.webglRender=null,this._initContext2D()}}else this.player.debugError("CommonCanvasLoader","_initContextGl2() createContextGL2 error")}_bindContextGlEvents(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const{proxy:t}=this.player.events,i=t(this.$videoElement,"webglcontextlost",(t=>{t.preventDefault(),this.player.debugError("canvasVideo","webglcontextlost error",t),this.isWebglContextLost=!0,this.webglRender&&(this.player.debugLog("CommonCanvasLoader","webglcontextlost error and destroy webglRender"),this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.player.debugLog("CommonCanvasLoader","webglcontextlost error and destroy webglRectRender"),this.webglRectRender.destroy(),this.webglRectRender=null),this.contextGl=null,setTimeout((()=>{if(this.player.debugLog("CommonCanvasLoader",`createContextGL() version ${e}`),1===e?this.contextGl=no(this.$videoElement):2===e&&(this.contextGl=lo(this.$videoElement)),this.player.debugLog("CommonCanvasLoader","createContextGL success"),this.contextGl&&this.contextGl.getContextAttributes){const t=this.contextGl.getContextAttributes();t&&t.stencil?(1===e?this.webglRender=new za(this.contextGl,this.player._opt.openWebglAlignment):2===e&&(this.webglRender=new sn(this.$videoElement,this.contextGl)),this.isWebglContextLost=!1,this.player.debugLog("CommonCanvasLoader","webglcontextlost error reset and getContextAttributes().stencil is true")):(this.player.debugError("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(At.webglContextLostError))}else this.player.debugError("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(At.webglContextLostError)}),500)})),s=t(this.$videoElement,"webglcontextrestored",(e=>{e.preventDefault(),this.player.debugLog("CommonCanvasLoader","webglcontextrestored ",e)}));this.proxyDestroyList.push(i,s)}_initContextGPU(){tn(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new Ha(e),this.player.debugLog("CommonCanvasLoader","webGPURender init success")):(this.player.debugWarn("CommonCanvasLoader","webGPURender init failed because context is null and next use webgl render"),this.renderType=hi,this._initContextGl()))})).catch((e=>{this.player.isDestroyedOrClosed()||(this.player.debugWarn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=hi,this._initContextGl())}))}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}screenshot(e,t,i,s){e=e||co(),s=s||Et.download;let r=.92;!Xi[t]&&Et[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=Xi[t]||Xi.png,a=this.$videoElement.toDataURL(o,r);if(s===Et.base64)return a;{const t=ho(a);if(s===Et.blob)return t;if(s===Et.download){const i=o.split("/")[1];en(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{ea(e)&&(e={filename:e}),(e=e||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||co(),e.format=e.format?Xi[e.format]:Xi.png,e.quality=Number(e.quality)||.92,e.type=e.type||Et.download;const s=this.$videoElement.toDataURL(e.format,e.quality);Wo(s,e).then((i=>{if(e.type===Et.base64)t(s);else{const s=ho(i);if(e.type===Et.blob)t(s);else if(e.type===Et.download){t();const i=e.format.split("/")[1];en(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(ea(e)){(e=(e={filename:e})||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||co(),e.format=e.format?Xi[e.format]:Xi.png,e.quality=Number(e.quality)||.92,e.type=e.type||Et.download;const s=this.$videoElement.toDataURL(e.format,e.quality);$o(s,e).then((i=>{if(e.type===Et.base64)t(s);else{const s=ho(i);if(e.type===Et.blob)t(s);else if(e.type===Et.download){t();const i=e.format.split("/")[1];en(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}}))}screenshotByCurrentWatermark(e){}render(){}clearView(){super.clearView()}play(){}pause(){}_resize(){this.player.debugLog("canvasVideo","_resize()");const e=this.player._opt,t=this.player.getShowVideoRect();let i=t.width,s=t.height,r=this.$videoElement.width,o=this.$videoElement.height;const a=e.rotate;let n=(i-r)/2,l=(s-o)/2;270!==a&&90!==a||(r=this.$videoElement.height,o=this.$videoElement.width);const d=i/r,h=s/o;let c=d>h?h:d;Ea(e.isResize)&&d!==h&&(c=d+","+h),e.isFullResize&&(c=d>h?d:h);let u="scale("+c+")";"none"===e.mirrorRotate&&a&&(u+=" rotate("+a+"deg)"),"level"===e.mirrorRotate?u+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(u+=" 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=u,this.$videoElement.style.left=n+"px",this.$videoElement.style.top=l+"px"}initFps(){}setStreamFps(e){}getStreamFps(){return 25}getType(){return $}getCanvasType(){let e=this.renderType===ui?ui:hi;return this.isWcsWebgl2?e=ci:this.isWcsWebgpu&&(e=ui),e}}class on extends rn{constructor(e){super(e),this.TAG_NAME="CanvasVideo",this.yuvList=[],this.tempTextCanvas=null,this.tempTextCanvasCtx=null,this.player.debugLog("CanvasVideo","init")}async 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.debugLog("CanvasVideoLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=di,this.player._opt.useWebGPU?tn(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new Ha(e),this.isWcsWebgpu=!0,this.player.debugLog(this.TAG_NAME,"webGPURender init success")):(this.player.debugWarn(this.TAG_NAME,"webGPURender init failed because context is null and next use webgl render"),this._initWebglRenderForWCS()))})).catch((()=>{this.player.isDestroyedOrClosed()||(this.player.debugWarn(this.TAG_NAME,`createWebGPUContext error is ${e} and next use webgl render`),this._initWebglRenderForWCS())})):this._initWebglRenderForWCS()):this.player._opt.useMSE&&this.player._opt.mseUseCanvasRender?(this.renderType=fi,this._initContext2D()):this.player.isOldHls()&&this.player._opt.useCanvasRender?(this.renderType=mi,this._initContext2D()):this.player.isWebrtcH264()&&this.player._opt.webrtcUseCanvasRender?(this.renderType=gi,this._initContext2D()):this._supportOffscreen()?(this.renderType=pi,this._bindOffscreen()):this.player._opt.useWebGPU?(this.renderType=ui,this._initContextGPU()):(this.renderType=hi,this._initContextGl())}_initWebglRenderForWCS(){this.player._opt.wcsUseWebgl2Render&&La()?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()}_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!==fi){const t={ts:e.ts||0,fps:!0};this.player.updateStats(t)}switch(this.renderType){case pi:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case hi:case ui:if(this.isWebglContextLost)return void this.player.debugWarn("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=co());const i=co();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=co());const i=co();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=co());const t=co();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(mt.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(mt.aiImageDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debugLog("CanvasVideoLoader",`doRender() and ai image detect result type is ${t.type} and drop`)}if(this.renderType===ui)try{if(!this.webGPURender)return void this.player.debugWarn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debugError("CanvasVideoLoader",`doRender webgpu render and error: ${e.toString()}`)}else if(this.renderType===hi)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debugError("CanvasVideoLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}break;case di:if(this.webGPURender)this.webGPURender.render(e.videoFrame),ha(e.videoFrame);else if(this.webglRender)this.webglRender.render(e.videoFrame),ha(e.videoFrame);else if(this.context2D)if(oa(e.videoFrame.createImageBitmap))try{e.videoFrame.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),ha(e.videoFrame)}))}catch(e){}else this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),ha(e.videoFrame);else this.player.debugWarn("CanvasVideoLoader","doRender() and webcodecs context is lost");break;case fi:case mi:case gi:this.context2D.drawImage(e.$video,0,0,this.$videoElement.width,this.$videoElement.height)}let t=e.ts||0;this.renderType===fi&&(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 pi:(function(e,t){const i=document.createElement("canvas");i.width=e,i.height=t;const s=window.createImageBitmap(i,0,0,e,t);return i.width=0,i.height=0,s})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case hi:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case ui:this.webGPURender.clear();break;case di:this.webGPURender?this.webGPURender.clear():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 fi:case mi:case gi: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(e){let{ctx:t,list:i}=e;t.save(),(i||[]).forEach((e=>{"text"===e.type?(t.font=`${e.fontSize||12}px Arial`,t.fillStyle=e.color||"green",t.fillText(e.text,e.x,e.y)):"rect"===e.type&&(t.strokeStyle=e.color||"green",t.lineWidth=e.lineWidth||2,t.strokeRect(e.x,e.y,e.width,e.height))})),t.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 r=e.width,o=e.height,a=(s=e.color||"#008000",[parseInt(s.substring(1,3),16)/255,parseInt(s.substring(3,5),16)/255,parseInt(s.substring(5,7),16)/255,1]),n=e.lineWidth||4;if(!r||!o)return;this.webglRectRender.drawBox({x:t,y:i,width:r,height:o,lineColor:a,lineWidth:n,canvasWidth:this.$videoElement.width,canvasHeight:this.$videoElement.height})}else if("text"===e.type){const s=e.text||"";if(!s)return;const r=e.fontSize||20,o=e.color||"#008000";this.tempTextCanvas||this._initTempTextCanvas(),this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvasCtx.font=`${r}px Arial`,this.tempTextCanvasCtx.fillStyle=o,this.tempTextCanvasCtx.textBaseline="top",this.tempTextCanvasCtx.fillText(s,0,0),this.webglRender.drawDom(this.$videoElement.width,this.$videoElement.height,t,i,this.tempTextCanvas)}var s}))}}class an extends qa{constructor(e){super(),this.player=e,this.TAG_NAME="Video";const t=document.createElement("video");t.muted=!0,t.disablePictureInPicture=!0,_o()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.$videoElement=t,this.$canvasElement=null,this.canvasContext=null,this.mediaStream=null,this.vwriter=null,this.awriter=null,this.trackGenerator=null,this.audioTrackGenerator=null,this.fixChromeVideoFlashBug(),this.fixMobileAutoFullscreen(),this.resize(),this.eventListenList=[],this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.progressProxyDestroy=null,this.checkVideoCanplayTimeout=null,this.visibilityChangePlayTimeout=null,this.pauseDelayTimeout=null,this.replayTimeout=null,this.detectAndFixStuckPlaybackStartTime=null;const i=Da();this.supportVideoFrameCallbackHandle=null;const{proxy:s}=this.player.events,r=s(this.$videoElement,"canplay",(()=>{this.player.debugLog("Video","canplay"),this.player.isDestroyedOrClosed()||(this.canplayReceived=!0,this._delayPlay?(this.clearCheckVideoCanplayTimeout(),this._play(),Da()?this.supportVideoFrameCallbackHandle||(this.player.debugLog("Video","support requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.debugWarn("Video","not support requestVideoFrameCallback and use timeupdate event to update stats")):this.$videoElement.paused&&(this.player.isMSEPlaybackRateChangePause?(this.player.debugLog("Video",`canplay and video is paused and isMSEPlaybackRateChangePause is ${this.player.isMSEPlaybackRateChangePause} so next try to play`),this.player.isMSEPlaybackRateChangePause=!1,this._play()):this.player.isMSECurrentMoreThanBufferedPause?(this.player.debugLog("Video",`canplay and video is paused and isMSECurrentMoreThanBufferedPause is ${this.player.isMSECurrentMoreThanBufferedPause} so next try to play`),this.player.isMSECurrentMoreThanBufferedPause=!1,this._play()):(this.player.debugWarn("Video","canplay and video is paused and try to play"),this._play())))})),o=s(this.$videoElement,"waiting",(()=>{this.player.debugLog("Video","waiting")})),a=s(this.$videoElement,"loadedmetadata",(()=>{this.player.debugLog("Video","loadedmetadata")})),n=s(this.$videoElement,"timeupdate",(t=>{if(!this.player.isDestroyedOrClosed()){if(Ea(i)){const t=parseInt(1e3*this.getCurrentTime(),10);if(e.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc())this.player.emit(mt.timeUpdate,t),e.handleRender(),e.updateStats({fps:!0,ts:t,dts:t}),this.player.updateCurrentPts(t);else if(Sa(this.player._opt.useMSE)&&Ea(this.player._opt.mseUseCanvasRender))if(this.player.mseDecoder){let e=parseInt(1e3*this.getCurrentTime(),10)+(this.player.mseDecoder.firstRenderTime||0);this.player.updateCurrentPts(e)}else if(this.player._opt.mseDecoderUseWorker){let e=parseInt(1e3*this.getCurrentTime(),10)+(this.player._mseWorkerData.firstRenderTime||0);this.player.updateCurrentPts(e)}this.doAddContentToWatermark()}this.player.isMseDecoderUseWorker()&&(this.player.decoderWorker.updateVideoTimestamp(this.getCurrentTime()),this._handleUpdatePlaybackRate())}})),l=s(this.$videoElement,"error",(e=>{if(!this.$videoElement.error)return void this.player.debugError(this.TAG_NAME,"on error",e);let t={};if(this.player.isUseMSE()&&(t=this.player.getMseMineType()),this.player.debugError("Video","Error Code "+this.$videoElement.error.code+" "+or[this.$videoElement.error.code]+"; Details: "+this.$videoElement.error.message+"; Video Info: "+JSON.stringify(this.videoInfo)+"; Mse Mine Type: "+t.video+"; "),this.player.isUseMSE()){this.$videoElement.error.code;const e=this.$videoElement.error.message;-1!==e.indexOf(ar)&&(this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc=!0),-1!==e.indexOf(nr)&&(this.player.isMSEAudioDecoderError=!0)}this.player.isHlsCanVideoPlay()})),d=s(this.$videoElement,"stalled",(()=>{this._detectAndFixStuckPlayback(!0)}));if(this.progressProxyDestroy=s(this.$videoElement,"progress",(()=>{this._detectAndFixStuckPlayback()})),this.eventListenList.push(r,o,n,l,a,d),this.player.isUseMSE()){const e=s(this.$videoElement,ls,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"ratechange and video is paused and sent isMSEPlaybackRateChangePause true"),this.player.isMSEPlaybackRateChangePause=!0)}));this.eventListenList.push(e),this.player.on(mt.visibilityChange,(e=>{e&&(this.visibilityChangePlayTimeout=setTimeout((()=>{if(this.clearVisibilityChangePlayTimeout(),this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getBufferMaxDelayTime()&&(this.player.debugLog(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.player.debugLog("Video","init")}async destroy(){if(super.destroy(),this.clearCheckVideoCanplayTimeout(),this.clearReplayTimeout(),this.clearVisibilityChangePlayTimeout(),this.clearPauseDelayTimeout(),this._cancelVideoFrameCallback(),this._removeProgressProxyDestroy(),this.eventListenList.length&&(this.eventListenList.forEach((e=>{e()})),this.eventListenList=[]),this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="none",e.style.transform="none"}if(this.$canvasElement&&(this.$canvasElement.height=0,this.$canvasElement.width=0,this.$canvasElement=null),this.canvasContext=null,this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),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.audioTrackGenerator&&(this.audioTrackGenerator.stop(),this.audioTrackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.awriter&&(await this.awriter.close(),this.awriter=null),this._delayPlay=!1,this.mediaStream&&(this.mediaStream.getTracks().forEach((e=>e.stop())),this.mediaStream=null),this.off(),this.player.debugLog("Video","destroy")}_createScreenShotCanvas(){const e=document.createElement("canvas");this.$canvasElement=e,this.canvasContext=e.getContext("2d"),this.canvasContext.imageSmoothingEnabled=!0,this.canvasContext.imageSmoothingEnabled&&(this.canvasContext.imageSmoothingQuality="high")}bindMediaStream(){if(this.player.canVideoTrackWritter()&&Mo()&&Fo()&&!this.mediaStream){this.player.debugLog(this.TAG_NAME,"bindMediaStream"),this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),this.player.useVideoPlayAudio()&&(this.audioTrackGenerator=new MediaStreamTrackGenerator({kind:"audio"}),this.awriter=this.audioTrackGenerator.writable.getWriter());const e=[this.trackGenerator];this.audioTrackGenerator&&e.push(this.audioTrackGenerator),this.mediaStream=new MediaStream(e),this.$videoElement.srcObject=this.mediaStream,this.vwriter=this.trackGenerator.writable.getWriter()}}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog("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=co(),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(mt.timeUpdate,e),Ea(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(mt.timeUpdate,i),Ea(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.videoInfo.encTypeCode||this.player.isOldHls()||(e.encTypeCode=Lt),this.updateVideoInfo(e)}this.player.updateStats({fps:!0,ts:i,dts:i}),this.player.updateCurrentPts(i),this.doAddContentToWatermark()}else if(Sa(this.player._opt.useMSE)&&Ea(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=wo(),t=_o();(e||t)&&(this.player.debugLog("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"))}_detectAndFixStuckPlayback(e){const t=this.$videoElement,i=t.buffered,s=t.readyState;if(this.player.debugLog(this.TAG_NAME,`_detectAndFixStuckPlayback() and isStalled is ${e} ,canplayReceived is ${this.canplayReceived} ,videoReadyState is ${s} and bufferedLength is ${i.length} and startTime is ${i.length>0?i.start(0):"null"} and currentTime is ${t.currentTime}`),e||Ea(this.canplayReceived)||s<2){if(i.length>0&&t.currentTime=1e3*this.player._opt.mseWaitVideoCanplayTimeout&&(this.player.debugWarn(this.TAG_NAME,`_detectAndFixStuckPlayback() and video is stuck and currentTime is ${t.currentTime} , diff is ${e} and timeout`),this.player.emit(At.mseWaitVideoCanplayTimeout,e))}}else this._removeProgressProxyDestroy()}_removeProgressProxyDestroy(){this.progressProxyDestroy&&(this.player.debugLog(this.TAG_NAME,"_removeProgressProxyDestroy()"),this.progressProxyDestroy(),this.progressProxyDestroy=null),this.detectAndFixStuckPlaybackStartTime=null}_isNeedAddBackDropFilter(){const e=Eo().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.debugLog("Video",`play and readyState: ${e}`),0===e)return this.player.debugLog("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()&&Ea(this.isPlaying())){const e=this._getBufferStore();this.player.debugWarn("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.debugLog("Video","_play success"),this.isPlaying()?(this.player.emit(mt.removeLoadingBgImage),this.isRetryPlayingTimes=0,this.isRetryPlaying=!1):this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100)})).catch((e=>{this.player.isDestroyedOrClosed()?this.player.debugLog("Video","_play error and player is isDestroyedOrClosed and return"):(this.player.debugLog("Video",`_play error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debugError("Video","_play error",e),this.isRetryPlaying=!1,this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100))}))}_replay(){if(!this.isPlaying()&&Ea(this.player.isDestroyedOrClosed())&&Ea(this.isRetryPlaying)){if(this.isRetryPlaying=!0,this.isRetryPlayingTimes>=3){let e="";return void(this.player.isWebrtcH264()?(e=`_replay(webrtc H264) then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error`,this.player.debugError("Video",e),this.player.emitError(At.videoElementPlayingFailedForWebrtc,e)):(e=`_replay then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error to use canvas render`,this.player.debugError("Video",e),this.player.emitError(At.videoElementPlayingFailed,e)))}this.player.debugWarn("Video",`_play then but not playing and retry play and isRetryPlayingTimes is ${this.isRetryPlayingTimes}`),this._play(),this.isRetryPlayingTimes++}else this.player.debugLog("Video",`_replay() and isPlaying is ${this.isPlaying()} and isRetryPlaying is ${this.isRetryPlaying} and isDestroyedOrClosed is ${this.player.isDestroyedOrClosed()} and return;`)}pause(e){this.player.debugLog(this.TAG_NAME,"pause and isNow is "+e),this.isPlaying()&&(e?(this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()):this.pauseDelayTimeout=setTimeout((()=>{this.clearPauseDelayTimeout(),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,s){if(!this._canScreenshot())return this.player.debugWarn("Video",`screenshot failed, video is not ready and stats is ${this._getVideoReadyState()}`),null;e=e||co(),s=s||Et.download;let r=.92;!Xi[t]&&Et[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=this.$videoElement;this.$canvasElement||this._createScreenShotCanvas();let a=this.$canvasElement;a.width=o.videoWidth,a.height=o.videoHeight,this.canvasContext.drawImage(o,0,0,a.width,a.height);const n=Xi[t]||Xi.png,l=a.toDataURL(n,r);if(this.canvasContext.clearRect(0,0,a.width,a.height),a.width=0,a.height=0,s===Et.base64)return l;{const t=ho(l);if(s===Et.blob)return t;if(s===Et.download){const i=n.split("/")[1];en(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{if(ea(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debugWarn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||co(),e.format=e.format?Xi[e.format]:Xi.png,e.quality=Number(e.quality)||.92,e.type=e.type||Et.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,Wo(o,e).then((i=>{if(e.type===Et.base64)t(o);else{const s=ho(i);if(e.type===Et.blob)t(s);else if(e.type===Et.download){t();const i=e.format.split("/")[1];en(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(ea(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debugWarn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||co(),e.format=e.format?Xi[e.format]:Xi.png,e.quality=Number(e.quality)||.92,e.type=e.type||Et.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,$o(o,e).then((i=>{if(e.type===Et.base64)t(o);else{const s=ho(i);if(e.type===Et.blob)t(s);else if(e.type===Et.download){t();const i=e.format.split("/")[1];en(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotByCurrentWatermark(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.debugWarn("Video","render() error, video is paused and readyState is "+e),4===e&&Ea(this.isRenderRetryPlaying)){if(this.isRenderRetryPlaying=!0,this.isRenderRetryPlayingTimes>3){const t="render() error, video is paused and readyState is "+e+", retry times is "+this.isRenderRetryPlayingTimes+", emit error and use canvas render";return this.player.debugError("Video",t),void this.player.emitError(At.videoElementPlayingFailed,t)}this.$videoElement.play().then((()=>{this.isRenderRetryPlayingTimes=0,this.isRenderRetryPlaying=!1,this.player.debugLog("Video","render() video is paused and replay success")})).catch((e=>{this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes++,this.player.debugLog("Video",`_play error render() error, video is paused and replay error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debugError("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),ha(e.videoFrame);else if(e.output){let s=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=co());const t=co();t-this.prevAiFaceDetectTime>this.player._opt.aiFaceDetectInterval&&(s=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=co());const t=co();t-this.prevAiObjectDetectTime>this.player._opt.aiObjectDetectInterval&&(s=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=co());const t=co();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.debugLog("Video","render() and ai occlusion detect result is true"),this.player.emit(mt.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(mt.aiImageDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debugLog("Video",`render() and ai image detect result type is ${t.type} and drop`)}try{const r=(t=s,i={format:"I420",codedWidth:this.videoInfo.width,codedHeight:this.videoInfo.height,timestamp:1e3*e.ts},new VideoFrame(t,i));this.vwriter.write(r),ha(r)}catch(e){this.player.debugError("Video","render error",e),this.player.emitError(At.wasmUseVideoRenderError,`code is ${e.code} and message is ${e.message}`)}}this.player.updateCurrentPts(e.ts||0),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}else this.player.debugWarn("Video","render and this.vwriter is null");var t,i}_resize(){this.player.debugLog("Video","_resize()");const e=this.player._opt,t=e.rotate,i=this.player.getShowVideoRect();let s=i.width,r=i.height;this.$videoElement.width=s,this.$videoElement.height=r,this.$videoElement.style.width=s+"px",this.$videoElement.style.height=r+"px",270!==t&&90!==t||(this.$videoElement.width=r,this.$videoElement.height=s,this.$videoElement.style.width=r+"px",this.$videoElement.style.height=s+"px");let o=(s-this.$videoElement.width)/2,a=(r-this.$videoElement.height)/2,n="contain";Ea(e.isResize)&&(n="fill"),e.isFullResize&&(n="none");let l="";"none"===e.mirrorRotate&&t&&(l+=" rotate("+t+"deg)"),"level"===e.mirrorRotate?l+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(l+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit=n),this.$videoElement.style.transform=l,this.$videoElement.style.padding="0",this.$videoElement.style.left=o+"px",this.$videoElement.style.top=a+"px"}getType(){return H}getCurrentTime(){return this.$videoElement.currentTime}isPlaying(){return this.$videoElement&&Ea(this.$videoElement.paused)&&Ea(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}isVideoPlaying(){return this.isPlaying()}_canScreenshot(){return this.$videoElement&&this.$videoElement.readyState>=1}getPlaybackQuality(){let e=null;if(this.$videoElement){if(oa(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:co()};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)}clearReplayTimeout(){this.replayTimeout&&(clearTimeout(this.replayTimeout),this.replayTimeout=null)}clearVisibilityChangePlayTimeout(){this.visibilityChangePlayTimeout&&(clearTimeout(this.visibilityChangePlayTimeout),this.visibilityChangePlayTimeout=null)}clearPauseDelayTimeout(){this.pauseDelayTimeout&&(clearTimeout(this.pauseDelayTimeout),this.pauseDelayTimeout=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,t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),r>o)this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debugWarn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(At.mediaSourceBufferedIsZeroError,"video.buffered is empty");if(s>1){const t=this._getPlaybackRate(i-s);e.playbackRate!==t&&(this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${t} `),e.playbackRate=t)}}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?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,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debugWarn(this.TAG_NAME,`checkVideoSourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debugWarn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}getBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}getReadyStateInited(){return this._getVideoReadyState()>=1}}class nn extends rn{constructor(e){super(e),this.TAG_NAME="CanvasPlaybackLoader",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(mt.playbackPause,(e=>{e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()})),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){this._stopSync(),this.clear(),this._firstTimestamp=null,this.playing=!1,this.playbackRate=1,this.fps=1,this.preFps=1,this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}_initCanvasRender(){this.player._opt.useWCS?(this.renderType=di,La()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useWebGPU?(this.renderType=ui,this._initContextGPU()):(this.renderType=hi,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),ha(e);else if(oa(e.createImageBitmap))try{e.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),ha(e)}))}catch(e){}else this.context2D.drawImage(e,0,0,this.$videoElement.width,this.$videoElement.height),ha(e);else if(this.getCanvasType()===hi)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debugError(this.TAG_NAME,`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}else if(this.getCanvasType()===ui)try{if(!this.webGPURender)return void this.player.debugWarn(this.TAG_NAME,"doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debugError(this.TAG_NAME,`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.debugLog(this.TAG_NAME,"initFps, has calc fps"):(this.preFps=uo(this.player.playback.fps,1,100),this.fps=this.preFps)}setFps(e){e!==this.fps?(e>100&&this.player.debugWarn(this.TAG_NAME,"setFps max",e),e<0&&this.player.debugWarn(this.TAG_NAME,"setFps min",e),this.fps=uo(e,1,100),this.player.debugLog(this.TAG_NAME,`setFps ${this.preFps} -> ${this.fps}`),this.player.playback.isUseFpsRender&&this._sync()):this.player.debugLog(this.TAG_NAME,`setFps, same fps ${e}`)}setStreamFps(e){this.player.debugLog(this.TAG_NAME,"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.debugWarn(this.TAG_NAME,`buffer size is ${this.bufferSize}`),this._doPlay()),this.bufferList.push(t),!this._hasCalcFps){const e=fa(this.bufferList);null!==e&&e!==this.preFps&&(this.player.debugLog(this.TAG_NAME,`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.debugLog(this.TAG_NAME,"rate is",t),t<=1?this.setFps(this.preFps):(this.setFps(this.fps+Math.floor(t*this.playbackRate)),this.player.debugWarn(this.TAG_NAME,"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&&ha(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 ln{constructor(e){return new(ln.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE?e.mseUseCanvasRender?on:an:e.isHls&&Ea(e.supportHls265)||e.isWebrtc&&Ea(e.isWebrtcH265)?e.useCanvasRender?on:an:e.isAliyunRtc?an:e.useWCS?e.playType===_?nn:!e.useOffscreen&&e.wcsUseVideoRender?an:on:e.playType===_?nn:e.wasmUseVideoRender&&!e.useOffscreen?an:on}}class dn extends Ba{constructor(e){super(),this.bufferList=[],this.player=e,this.$audio=null,this.scriptNode=null,this.workletProcessorNode=null,this.workletWorkerCloseTimeout=null,this.hasInitScriptNode=!1,this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:Dr}),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._prevVolume=null,this.playing=!1,this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1,this.hasAudio=!1,this.audioResumeStateTimeout=null,this.audioContextContextResumeLock=!1}async destroy(){return this.closeAudio(),this.resetInit(),this.clearAudioResumeStateTimeout(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.disconnect(),this.scriptNode.onaudioprocess=ao,this.scriptNode=null),await this._destroyWorklet(),this.workletProcessorNode&&(this.workletProcessorNode.disconnect(),this.workletProcessorNode.port.onmessage=ao,this.workletProcessorNode=null),this.audioBufferSourceNode&&(this.audioBufferSourceNode.stop(),this.audioBufferSourceNode=null),this.mediaStreamAudioDestinationNode&&(this.mediaStreamAudioDestinationNode.disconnect(),this.mediaStreamAudioDestinationNode=null),this.hasInitScriptNode=!1,this._prevVolume=null,this.audioContextContextResumeLock=!1,this.off(),!0}_destroyWorklet(){return new Promise(((e,t)=>{this.workletProcessorNode?(this.workletProcessorNode.port.postMessage({type:"destroy"}),this.workletWorkerCloseTimeout=setTimeout((()=>{this.player.debugLog(this.TAG_NAME,"send close and wait 10ms destroy directly"),this.workletWorkerCloseTimeout&&(clearTimeout(this.workletWorkerCloseTimeout),this.workletWorkerCloseTimeout=null),e()}),10)):e()}))}resetInit(){this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1}getAudioInfo(){return this.audioInfo}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encTypeCode=e.encTypeCode,this.audioInfo.encType=Mt[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(mt.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value||this.isStateSuspended()}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){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=uo(e,0,1),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(mt.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(mt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(mt.mute,!0),this.gainNode.gain.value=e,this.player.emit(mt.volumechange,this.player.volume),this.player.emit(mt.volume,this.player.volume),this._prevVolume=e))}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){if(e&&this.isStateSuspended()){if(this.audioContextContextResumeLock)return;this.audioContextContextResumeLock=!0,this.audioContext.resume().then((()=>{this.player.emit(mt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})})).finally((()=>{this.audioContextContextResumeLock=!1})),this.audioResumeStateTimeout=setTimeout((()=>{this.clearAudioResumeStateTimeout(),this.audioContextContextResumeLock=!1,this.isStateSuspended()&&this.player.emit(mt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})}),1e3)}}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 hn{constructor(e,t,i,s){this.player=e,this.audio=t,this.channel=i,this.bufferSize=s}destroy(){this.buffer=null,this.channel=null}extract(e,t){let i=this.provide(t);for(let t=0;t=a){try{for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:0;const s=2*(t=t||0);i>=0||(i=(e.length-s)/2);const r=2*i;this.ensureCapacity(i+this._frameCount);const o=this.endIndex;this.vector.set(e.subarray(s,s+r),o),this._frameCount+=i}putBuffer(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]: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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=2*t,s=this.startIndex;e.set(this._vector.subarray(s,s+i)),this.receive(t)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=this.startIndex+2*t,r=2*i;e.set(this._vector.subarray(s,s+r))}ensureCapacity(){const e=parseInt(2*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0));if(this._vector.length0&&void 0!==arguments[0]?arguments[0]:0;this.ensureCapacity(this._frameCount+e)}rewind(){this._position>0&&(this._vector.set(this._vector.subarray(this.startIndex,this.endIndex)),this._position=0)}}class un{constructor(e){e?(this._inputBuffer=new cn,this._outputBuffer=new cn):this._inputBuffer=this._outputBuffer=null}destroy(){this.clear(),this._outputBuffer&&(this._outputBuffer.destroy(),this._outputBuffer=null),this._inputBuffer&&(this._inputBuffer.destroy(),this._inputBuffer=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 pn extends un{constructor(e){super(e),this.reset(),this._rate=1}destroy(){super.destroy()}set rate(e){this._rate=e}reset(){this.slopeCount=0,this.prevSampleL=0,this.prevSampleR=0}clone(){const e=new pn;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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e)return 0;const t=this._inputBuffer.vector,i=this._inputBuffer.startIndex,s=this._outputBuffer.vector,r=this._outputBuffer.endIndex;let o=0,a=0;for(;this.slopeCount<1;)s[r+2*a]=(1-this.slopeCount)*this.prevSampleL+this.slopeCount*t[i],s[r+2*a+1]=(1-this.slopeCount)*this.prevSampleR+this.slopeCount*t[i+1],a+=1,this.slopeCount+=this._rate;if(this.slopeCount-=1,1!==e)e:for(;;){for(;this.slopeCount>1;)if(this.slopeCount-=1,o+=1,o>=e-1)break e;const n=i+2*o;s[r+2*a]=(1-this.slopeCount)*t[n]+this.slopeCount*t[n+2],s[r+2*a+1]=(1-this.slopeCount)*t[n+1]+this.slopeCount*t[n+3],a+=1,this.slopeCount+=this._rate}return this.prevSampleL=t[i+2*e-2],this.prevSampleR=t[i+2*e-1],a}}const fn=function(){};class mn extends class{constructor(e){this._pipe=e}destroy(){}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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;for(;this.outputBuffer.frameCount2&&void 0!==arguments[2]?arguments[2]:fn;super(t),this.callback=i,this.sourceSound=e,this.historyBufferSize=22050,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}destroy(){this.clear(),this.sourceSound.destroy(),this.sourceSound=null,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}get position(){return this._position}set position(e){if(e>this._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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]: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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.fillOutputBuffer(this.outputBufferPosition+t);const i=Math.min(t,this.outputBuffer.frameCount-this.outputBufferPosition);this.outputBuffer.extract(e,this.outputBufferPosition,i);const s=this.outputBufferPosition+i;return this.outputBufferPosition=Math.min(this.historyBufferSize,s),this.outputBuffer.receive(Math.max(s-this.historyBufferSize,0)),this._position+=i,i}handleSampleData(e){this.extract(e.data,4096)}clear(){super.clear(),this.outputBufferPosition=0}}const gn=[[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 An extends un{constructor(e){super(e),this._quickSeek=!0,this.midBufferDirty=!1,this.midBuffer=null,this.refMidBuffer=null,this.overlapLength=0,this.autoSeqSetting=!0,this.autoSeekSetting=!0,this._tempo=1,this.setParameters(44100,0,0,8)}destroy(){this.clear(),super.destroy()}clear(){super.clear(),this.clearMidBuffer(),this.refMidBuffer=null}clearMidBuffer(){this.midBufferDirty&&(this.midBufferDirty=!1),this.midBuffer=null}setParameters(e,t,i,s){e>0&&(this.sampleRate=e),s>0&&(this.overlapMs=s),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(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;e=this.sampleRate*t/1e3,e=e<16?16:e,e-=e%8,this.overlapLength=e,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 An;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,s=0;for(this.preCalculateCorrelationReferenceStereo(),e=0,t=Number.MIN_VALUE;st&&(t=i,e=s);return e}seekBestOverlapPositionStereoQuick(){let e,t,i,s,r,o=0;for(this.preCalculateCorrelationReferenceStereo(),t=Number.MIN_VALUE,e=0,s=0,r=0;o<4;o+=1){let a=0;for(;gn[o][a]&&(r=s+gn[o][a],!(r>=this.seekLength));)i=this.calculateCrossCorrelationStereo(2*r,this.refMidBuffer),i>t&&(t=i,e=r),a+=1;s=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 s=this._inputBuffer.startIndex+2*(e+this.seekWindowLength-this.overlapLength);this.midBuffer.set(this._inputBuffer.vector.subarray(s,s+2*this.overlapLength)),this.skipFract+=this.nominalSkip,i=Math.floor(this.skipFract),this.skipFract-=i,this._inputBuffer.receive(i)}}}const bn=function(e,t){return(e>t?e-t:t-e)>1e-10};class vn{constructor(){this.transposer=new pn(!1),this.stretch=new An(!1),this._inputBuffer=new cn,this._intermediateBuffer=new cn,this._outputBuffer=new cn,this._rate=0,this._tempo=0,this.virtualPitch=1,this.virtualRate=1,this.virtualTempo=1,this.calculateEffectiveRateAndTempo()}destroy(){this.clear(),this._inputBuffer.destroy(),this._intermediateBuffer.destroy(),this._outputBuffer.destroy(),this._inputBuffer=null,this._intermediateBuffer=null,this._outputBuffer=null}clear(){this.transposer.clear(),this.stretch.clear()}clone(){const e=new vn;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,bn(this._tempo,e)&&(this.stretch.tempo=this._tempo),bn(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 _n{constructor(e,t,i){this.player=e,this.audio=t,this.soundTouch=new vn,this.soundTouch.tempo=1,this.soundTouch.rate=1,this.filter=new mn(i,this.soundTouch)}destroy(){this.filter&&(this.filter.destroy(),this.filter=null),this.soundTouch&&(this.soundTouch.destroy(),this.soundTouch=null)}setRate(e){e!==this.soundTouch.rate&&(this.soundTouch.tempo=e)}provide(e){let t=new Float32Array(2*e),i=this.filter.extract(t,e),s=new Float32Array(i),r=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=Ds,this.player.debugLog("AudioContext","destroy"),!0}isAudioPlaying(){return this.$audio&&Ea(this.$audio.paused)&&Ea(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.debugLog("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.debugLog("AudioContext",`play and readyState: ${e}`),!(0!==e||ta()&&wo()))return this.player.debugWarn("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.debugLog("AudioContext","_audioElementPlay success"),setTimeout((()=>{this.isAudioPlaying()||(this.player.debugWarn("AudioContext","play failed and retry play"),this._audioElementPlay())}),100),this.isAudioPlaying()&&(this.player.debugLog("AudioContext","play success and remove document click event listener"),document.removeEventListener("click",this._audioElementPlay.bind(this)))})).catch((e=>{this.player.debugError("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===xs}getBufferListDuration(){return this.bufferList.length*this.oneBufferDuration}isMoreThanMinBufferDuration(){return this.getBufferListDuration()>=100*this.playbackRate}initProcessor(){this.processor=new hn(this.player,this,this.audioInfo.channels,this.audioBufferSize),this.rateProcessor=new _n(this.player,this,this.processor)}getAutoAudioEngineType(){let e=this.player._opt.audioEngine||Ds;const t=()=>{e=ta()&&_o()?xs:(wo()&&this.player._opt.supportLockScreenPlayAudio||ua()&&this.supportAudioWorklet(),Ds)};return this.player._opt.audioEngine?this.player._opt.audioEngine===Cs&&ua()&&this.supportAudioWorklet()?e=Ds:this.player._opt.audioEngine===xs?e=xs:this.player._opt.audioEngine===Ds?e=Ds:t():t(),e}getAudioBufferSizeByType(){const e=this.engineType;this.player._opt.hasVideo;const t=this.player._opt.weiXinInAndroidAudioBufferSize;return e===Cs?1024:e===xs?t||4800:1024}supportAudioWorklet(){return this.audioContext&&this.audioContext.audioWorklet&&"function"==typeof this.audioContext.audioWorklet.addModule}initScriptNode(){this.playing=!0,this.hasInitScriptNode||(this.initProcessor(),this.engineType===Cs?this.initWorkletScriptNode():this.engineType===xs?this.initIntervalScriptNode():this.engineType===Ds&&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||Ea(this.playing)||this.isMute)return void(this.playing&&Ea(this.isMute)&&this.player.debugLog("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 s=t[0][0],r=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.debugLog("AudioContext","initWorkletScriptNode() player is destroyed");if(!this.audioContext)return void this.player.debugWarn("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.debugError("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.debugError("AudioContext","workletProcessorNode is null")})})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(this.workletUrl),this.workletUrl=null,this.clearWorkletUrlTimeout=null}),se)}tierDownToProcessScript(){this.player.debugLog("AudioContext","tierDownToProcessScript"),this.engineType=Ds,this.audioBufferSize=this.getAudioBufferSizeByType(),this.initProcessScriptNode(),this.audioElementPlay()}handleScriptNodeCallback(e,t){let i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t=t||ao;let r=e.length;s&&(i=e,r=this.audioBufferSize);const o=this.audioInfo.channels;if(this.playing&&this.isMoreThanMinBufferDuration()){if(this.player._opt,this.player.openSyncAudioAndVideo()&&Sa(this.player.visibility)){this.calcPlaybackRateBySync();const r=this.player.getAudioSyncVideoDiff();if(r>this.player._opt.syncAudioAndVideoDiff){const a=this.player.getCurrentVideoAndAudio();return this.player.debugWarn("AudioContext",`audioSyncVideoOption more than diff :${r},\n and video is ${a.video} ,\n and audio is ${a.audio} , waiting and bufferList is ${this.bufferList.length}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t()}}let a=this._provide(r);if(0===a.size)return Ea(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debugWarn("AudioContext",`bufferList size is ${this.bufferList.length} outputBufferLength is ${r},and bufferItem.size is 0, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t();a&&a.ts&&(this.player.audioTimestamp=a.ts),s?i.port.postMessage({message:"data",buffer:a}):this.fillScriptNodeOutputBuffer(e,o,a),t()}else 0===this.bufferList.length&&this.playing&&Ea(this.isMute)&&Ea(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debugWarn("AudioContext",`bufferList size is 0 and outputBufferLength is ${r}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),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),s=e.getChannelData(1);i?0===i.size?(t.fill(0),s.fill(0)):(t.set(i.left),s.set(i.right)):(t.fill(0),s.fill(0))}}play(e,t){this.isMute||(this.hasInitScriptNode?(this.hasAudio=!0,this.player.latestAudioTimestamp=t,this.bufferList.push({buffer:e,ts:t}),Ea(this.player.openSyncAudioAndVideo())&&this.calcPlaybackRateByBuffer()):this.player.debugWarn("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.debugWarn("AudioContext",`bufferList length ${this.bufferList.length} more than ${e}, and drop`),void this.clear();const t=this.player.getAudioSyncVideoDiff();if(this.getEngineType()===xs){if(t<-this.player._opt.syncAudioAndVideoDiff){this.player.debugWarn("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.debugLog("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.debugLog("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.debugLog("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 s=Math.floor(t/this.oneBufferDuration),r=Math.floor(i/this.oneBufferDuration);if(this.bufferList.length>r)return this.player.debugWarn("AudioContext",`bufferList length ${this.bufferList.length} more than ${r}, and drop`),void this.clear();this.getEngineType()!==xs&&(this.bufferList.length>s?(e=this.defaultPlaybackRate+.2,this.player.debugLog("AudioContext",`bufferList length ${this.bufferList.length} more than ${s}, speed up, playbackRate is ${e}`)):this.bufferList.length0?this.player.emit(mt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(mt.mute,!0),this.$video.volume=e,this.player.emit(mt.volumechange,this.player.volume),this.player.emit(mt.volume,this.player.volume),this._prevVolume=e))}clear(){}play(e,t){const i=this.player.video.awriter;if(i)if(e.close)try{i.write(e),ca(e)}catch(e){this.player.debugError("Video","play audio error",e)}else try{const s=function(e,t){const i={...t,format:"f32-planar",data:new Float32Array(0)};if(i.numberOfFrames=e[0].length,1===e.length)i.data=new Float32Array(e[0]);else if(2===e.length){const t=new Float32Array(e[0].length+e[1].length);t.set(e[0],0),t.set(e[1],e[0].length),i.data=t}return new AudioData(i)}(e,{sampleRate:Dr,numberOfChannels:this.audioInfo.channels,timestamp:1e3*t});i.write(s),ca(s)}catch(e){this.player.debugError("Video","play audio error",e)}else this.player.debugWarn("Audio","play and this.awriter is null")}pause(){}resume(){}getEngineType(){return"audio"}isPlaybackRateSpeed(){return!1}setRate(){}initScriptNode(){}initScriptNodeDelay(){}audioEnabled(){this.mute(!1)}getAudioBufferSize(){return 2048}}class wn extends Sn{constructor(e){super(e),this.delayTimeout=null,this.player.on(mt.playbackPause,(e=>{this.listenPlaybackPause(e)})),this.player.debugLog("AudioPlaybackContext","init")}async destroy(){return this.delayTimeout&&(clearTimeout(this.delayTimeout),this.delayTimeout=null),await super.destroy(),this.player.debugLog("AudioPlaybackLoader","destroy"),!0}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.debugLog("AudioPlaybackContext","setRate",e),this.defaultPlaybackRate=e,this.updatePlaybackRate(e))}}class Tn extends Sn{constructor(e){super(e),this.TAG_NAME="AudioPlayerLoader",this.isAudioPlayer=!0,this.player.debugLog(this.TAG_NAME,"init")}async destroy(){return await super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy"),!0}play(e,t){Ea(this.playing)||super.play(e,t)}pause(){this.player.debugLog(this.TAG_NAME,"pause"),this.playing=!1,this.clear()}resume(){this.player.debugLog(this.TAG_NAME,"resume"),this.playing=!0}}class kn extends Ba{constructor(e){super(),this.TAG_NAME="AudioWebrtcPlayerLoader",this.$video=new Audio,this.player=e,this.init=!1,this._prevVolume=null,this.eventsDestroy=[],this._handleDocumentClickPlay=this._handleClickPlay.bind(this),this._initAudioEvents(),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){return this.resetInit(),this.off(),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this._prevVolume=null,this.$video&&(this.$video.pause(),this.$video.srcObject=null,this.$video=null),this.player.debugLog(this.TAG_NAME,"destroy"),!0}_initAudioEvents(){const{proxy:e}=this.player.events,t=e(this.$video,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t})}));this.eventsDestroy.push(t)}resetInit(){this.init=!1}_handleClickPlay(){this.$video&&(this.$video.play(),document.removeEventListener("click",this._handleDocumentClickPlay))}bindStream(e){this.$video.srcObject=e,this.$video.volume=1,this.$video.play().catch((e=>{this.player.debugWarn(this.TAG_NAME,"audio play error",e),document.addEventListener("click",this._handleDocumentClickPlay)}))}getEngineType(){return"audio"}get isPlaying(){return!0}get volume(){return Sa(this.$video.muted)?0:this.$video.volume}get isMute(){return 0===this.$video.volume||Sa(this.$video.muted)}mute(e){this.setVolume(e?0:this.player.lastVolume||.5)}setVolume(e){e=parseFloat(e),isNaN(e)||null===this.$video||(this.$video.muted&&(this.$video.muted=!1),e=uo(e,0,1),wo()&&(this.$video.muted=0===e),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(mt.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(mt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(mt.mute,!0),this.$video.volume=e,this.player.emit(mt.volumechange,this.player.volume),this.player.emit(mt.volume,this.player.volume),this._prevVolume=e))}pause(){}resume(){}audioEnabled(){this.mute(!1)}}class Ln{constructor(e){return new(Ln.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.playType===_?e.useMSE&&e.mseDecodeAudio?En:wn:e.playType===v?e.isWebrtc?kn:Tn:e.isHls&&Ea(e.supportHls265)||e.isWebrtc&&Ea(e.isWebrtcH265)||e.useMSE&&e.mseDecodeAudio||e.isAliyunRtc||e.useWCS&&e.wcsDecodeAudio||e.useWasm&&e.wasmPlayAudioUseVideoRender?En:Sn}}class Cn extends Ba{constructor(e){super(),this.player=e,this.playing=!1,this._requestAbort=!1,this._status=ir,this.writableStream=null,this.abortController=new AbortController,this.streamRate=go((t=>{e.emit(mt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("FetchStream","init")}async destroy(){return this.abort(),await this._closeWritableStream(),this.off(),this._status=ir,this.streamRate=null,this.stopStreamRateInterval(),this.player.debugLog("FetchStream","destroy"),!0}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}async _closeWritableStream(){if(this.writableStream&&Ea(this.writableStream.locked))try{await this.writableStream.close(),this.writableStream=null,this.player.debugLog("FetchStream","close writableStream success")}catch(e){this.player.debugLog("FetchStream","destroy and writableStream.close()",e)}}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player._times.streamStart=co();const s=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,s).then((e=>{if(this._requestAbort)return this._status=ir,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return this.player.debugError("FetchStream",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),this.abort(),void this.emit(At.fetchError,`fetch response status is ${e.status} and ok is ${e.ok}`);if(this.emit(mt.streamSuccess),this.startStreamRateInterval(),"undefined"!=typeof WritableStream)this.player.debugLog("FetchStream","use WritableStream() to read stream"),this.writableStream=new WritableStream({write:e=>this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debugLog("FetchStream","writableStream.write() and this.abortController.signal.aborted so return"),void(this._status=rr)):Sa(this._requestAbort)?(this.player.debugLog("FetchStream","writableStream.write() and this._requestAbort is true so return"),this._status=rr,void this.abort()):"string"!=typeof e?(this._status=sr,this.streamRate&&this.streamRate(e.byteLength),i.dispatch(e)):void this.player.debugWarn("FetchStream",`writableStream.write() and value is "${e}" string so return`),close:()=>{this._status=rr,i.close(),this.emit(mt.streamEnd,"fetch done")},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debugLog("FetchStream","writableStream.abort() and this.abortController.signal.aborted so return"),void(this._status=rr);i.close();const t=e.toString();-1===t.indexOf(bs)&&-1===t.indexOf(vs)&&e.name!==_s&&(this.abort(),this.emit(At.fetchError,e))}}),e.body.pipeTo(this.writableStream).catch((e=>{"AbortError"!==e.name&&this.player.debugLog("FetchStream","res.body.pipeTo() error",e.name,e.toString())}));else{this.player.debugLog("FetchStream","not support WritableStream and use getReader() to read stream");const t=e.body.getReader(),s=()=>{t.read().then((e=>{let{done:t,value:r}=e;return t?(this._status=rr,i.close(),void this.emit(mt.streamEnd,"fetch done")):this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debugLog("FetchStream","reader.read() and this.abortController.signal.aborted so return"),void(this._status=rr)):Sa(this._requestAbort)?(this.player.debugLog("FetchStream","reader.read() and this._requestAbort is true so return"),this._status=rr,void this.abort()):void("string"!=typeof r?(this._status=sr,this.streamRate&&this.streamRate(r.byteLength),i.dispatch(r),s()):this.player.debugWarn("FetchStream",`reader.read() and value is "${r}" string so return`))})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debugLog("FetchStream","reader.read().catch() and this.abortController.signal.aborted so return"),void(this._status=rr);i.close();const t=e.toString();-1===t.indexOf(bs)&&-1===t.indexOf(vs)&&e.name!==_s&&(this.abort(),this.emit(At.fetchError,e))}))};s()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(At.fetchError,e))}))}abort(){if(this._requestAbort=!0,this.abortController)try{this.abortController.abort(),this.abortController=null,this.player.debugLog("FetchStream","abortController.abort() success")}catch(e){this.abortController=null,this.player.debugLog("FetchStream","abortController.abort() error",e)}}getStreamType(){return u}}class Dn extends Ba{constructor(e){super(),this.TAG_NAME="FetchWorkerLoader",this.player=e,this.playing=!1,this.fetchWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.destroyResolve=null,this.decoderWorkerCloseTimeout=null,this.streamRate=go((t=>{e.emit(mt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initFetchWorker(),e.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.fetchWorker?(this.player.debugLog(this.TAG_NAME,"send destroy"),this.fetchWorker.postMessage({cmd:tt}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn(this.TAG_NAME,"send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)):(this._destroy(),setTimeout((()=>{e()}),0))}))}_destroy(){this.off(),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._stopStreamRateInterval(),this.streamRate=null,this.fetchWorker&&(this.fetchWorker.terminate(),this.fetchWorker.onmessage=null,this.fetchWorker=null),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.player.debugLog(this.TAG_NAME,"destroy")}_initFetchWorker(){const e=Ca(function(){function e(e){return!0===e||"true"===e}const t="The user aborted a request",i="AbortError",s="AbortError",r="fetch",o="destroy",a="destroyEnd",n="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(){var e;this.abort(),this.writableStream&&(!1===(e=this.writableStream.locked)||"false"===e)&&this.writableStream.close().catch((e=>{})),this.writableStream=null,this._status=c}fetchStream(r){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=Object.assign({signal:this.abortController.signal},{headers:o.headers||{}});fetch(r,a).then((r=>{if(this._requestAbort)return this._status=c,void r.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(r))return this.abort(),void postMessage({cmd:l,message:`fetch response status is ${r.status} and ok is ${r.ok}`});if(postMessage({cmd:h}),"undefined"!=typeof WritableStream)this.writableStream=new WritableStream({write:t=>{if(!(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted))return e(this._requestAbort)?(this._status=p,void this.abort()):void("string"!=typeof t&&(this._status=u,postMessage({cmd:n,buffer:t},[t.buffer])));this._status=p},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 r=e.toString();-1===r.indexOf(t)&&-1===r.indexOf(i)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}}),r.body.pipeTo(this.writableStream).catch((e=>{}));else{const o=r.body.getReader(),a=()=>{o.read().then((t=>{let{done:i,value:s}=t;return i?(this._status=p,void postMessage({cmd:d})):this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?void(this._status=p):e(this._requestAbort)?(this._status=p,void this.abort()):void("string"!=typeof s&&(this._status=u,postMessage({cmd:n,buffer:s},[s.buffer]),a()))})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=p);const r=e.toString();-1===r.indexOf(t)&&-1===r.indexOf(i)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}))};a()}})).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.abortController)try{this.abortController.abort(),this.abortController=null}catch(e){this.abortController=null}}};self.onmessage=t=>{const i=t.data;switch(i.cmd){case r:f.isChrome=e(i.isChrome),f.fetchStream(i.url,JSON.parse(i.options));break;case o:f.destroy(),f=null,postMessage({cmd:a})}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),se),s.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case st:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case at:this.emit(mt.streamSuccess),this._startStreamRateInterval();break;case ot:t.close(),this.emit(mt.streamEnd,"fetch done");break;case rt:t.close(),this.emit(At.fetchError,i.message);break;case it:this._destroy()}},this.fetchWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player._times.streamStart=co(),this.fetchWorker.postMessage({cmd:et,url:e,isChrome:ia(),options:JSON.stringify(t)})}getStreamType(){return u}}class xn extends Ba{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=bt,this.wsUrl=null,this.requestAbort=!1,this.socketDestroyFnList=[],this.streamRate=go((t=>{e.emit(mt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("WebsocketStream","init")}async destroy(){this._closeWebSocket(),this.stopStreamRateInterval(),this.wsUrl=null,this.off(),this.player.debugLog("WebsocketStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebSocket(e){const t=this.player,{events:{proxy:i},demux:s}=t,r=e.protocols||[];this.socket=new WebSocket(this.wsUrl,r),this.socket.binaryType="arraybuffer";const o=i(this.socket,"open",(()=>{this.player.debugLog("WebsocketStream","socket open"),this.socketStatus=vt,this.emit(mt.streamSuccess),this.player.emit(mt.websocketOpen),this.startStreamRateInterval()})),a=i(this.socket,"message",(e=>{"string"!=typeof e.data?(this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)):this.player.debugWarn("WebsocketStream",`websocket handle message message is "${e.data}" string so return`)})),n=i(this.socket,"close",(e=>{if(!this.player.isDestroyedOrClosed())return Sa(this.requestAbort)?(this.requestAbort=!1,void this.player.debugLog("WebsocketStream","socket close and requestAbort is true")):void(this.socketStatus!==St?(this.player.debugLog("WebsocketStream",`socket close and code is ${e.code}`),1006===e.code&&this.player.debugError("WebsocketStream",`socket close abnormally and code is ${e.code}`),s.close(),this.socketStatus=_t,this.player.emit(mt.websocketClose,e.code),this.emit(mt.streamEnd,e.code)):this.player.debugLog("WebsocketStream","socket close and status is error, so return"))})),l=i(this.socket,"error",(e=>{if(this.player.isDestroyedOrClosed())return;if(Sa(this.requestAbort))return this.requestAbort=!1,void this.player.debugLog("WebsocketStream","socket close and requestAbort is true");this.player.debugError("WebsocketStream","socket error",e),this.socketStatus=St;const t=e.isTrusted?"websocket user aborted":"websocket error";this.emit(At.websocketError,t),s.close(),this.player.debugLog("WebsocketStream","socket error:",t)}));this.socketDestroyFnList.push(o,a,n,l)}_closeWebSocket(){!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState?this.socket&&this.player.debugLog("WebsocketStream",`_closeWebSocket() socket is null or socket status is ${this.socket&&this.socket.readyState}`):(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socketDestroyFnList.forEach((e=>e())),this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.socketStatus=bt,this.streamRate=null}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debugWarn("WebsocketStream","websocket handle message demux is null so return")}fetchStream(e,t){this.player._times.streamStart=co(),this.wsUrl=e,this._createWebSocket(t)}sendMessage(e){this.socket?this.socketStatus===vt?this.socket.send(e):this.player.debugError("WebsocketStream",`websocket send message error and socket status is ${this.socketStatus}`):this.player.debugError("WebsocketStream","websocket send message socket is null")}getStreamType(){return f}}class Rn extends Ba{constructor(e){super(),this.player=e,this.TAG_NAME="WebsocketWorkerLoader",this.wsUrl=null,this.socketStatus=bt,this.websocketWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.destroyResolve=null,this.decoderWorkerCloseTimeout=null,this.streamRate=go((t=>{e.emit(mt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initWebsocketWorker(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.websocketWorker?(this.player.debugLog(this.TAG_NAME,"send destroy"),this._closeWebSocket(),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn(this.TAG_NAME,"send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),e()}),2e3)):(this._destroy(),e())}))}_destroy(){this.off(),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._stopStreamRateInterval(),this.streamRate=null,this.websocketWorker&&(this.websocketWorker.terminate(),this.websocketWorker.onmessage=null,this.websocketWorker=null),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.wsUrl=null,this.player.debugLog(this.TAG_NAME,"destroy")}_initWebsocketWorker(){const e=Ca(function(){function e(e){return!0===e||"true"===e}const t={fetch:"fetch",sendMessage:"sendMessage",destroy:"destroy",destroyEnd:"destroyEnd",buffer:"buffer",websocketError:"websocketError",websocketClose:"websocketClose",websocketOpen:"websocketOpen"};let i=new class{constructor(){this.socket=null,this.wsUrl=null,this.requestAbort=!1}destroy(){!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState||(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socket.onopen=null,this.socket.onclose=null,this.socket.onerror=null,this.socket.onmessage=null,this.socket=null}fetchStream(e,t){this.wsUrl=e,this._createWebSocket(t)}sendMessage(e){this.socket&&1===this.socket.readyState&&this.socket.send(e)}_createWebSocket(e){const t=e.protocols||[];this.socket=new WebSocket(this.wsUrl,t),this.socket.binaryType="arraybuffer",this.socket.onopen=this._handleWebsocketOpen.bind(this),this.socket.onclose=this._handleWebsocketClose.bind(this),this.socket.onerror=this._handleWebsocketError.bind(this),this.socket.onmessage=this._handleWebsocketMessage.bind(this)}_handleWebsocketOpen(){postMessage({cmd:t.websocketOpen})}_handleWebsocketClose(i){e(this.requestAbort)?this.requestAbort=!1:postMessage({cmd:t.websocketClose,code:i.code})}_handleWebsocketError(i){e(this.requestAbort)?this.requestAbort=!1:postMessage({cmd:t.websocketError,isTrusted:i.isTrusted})}_handleWebsocketMessage(e){if("string"==typeof e.data)return;const i=new Uint8Array(e.data);postMessage({cmd:t.buffer,buffer:i},[i.buffer])}};self.onmessage=e=>{const s=e.data;switch(s.cmd){case t.fetch:i.fetchStream(s.url,s.options);break;case t.destroy:i.destroy(),i=null,postMessage({cmd:t.destroyEnd});break;case t.send:i.sendMessage(s.message)}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),se),s.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case ct:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case ft:this.player.debugLog(this.TAG_NAME,"socket open"),this.socketStatus=vt,this.emit(mt.streamSuccess),this.player.emit(mt.websocketOpen),this._startStreamRateInterval();break;case pt:if(this.player.isDestroyedOrClosed())return;if(this.socketStatus===St)return void this.player.debugLog(this.TAG_NAME,"socket close and status is error, so return");this.player.debugLog(this.TAG_NAME,`socket close and code is ${i.code}`),1006===i.code&&this.player.debugError(this.TAG_NAME,`socket close abnormally and code is ${i.code}`),t.close(),this.socketStatus=_t,this.player.emit(mt.websocketClose,i.code),this.emit(mt.streamEnd,i.code);break;case ut:if(this.player.isDestroyedOrClosed())return;this.player.debugError(this.TAG_NAME,"socket error"),this.socketStatus=St;const e=i.isTrusted?"websocket user aborted":"websocket error";this.emit(At.websocketError,e),t.close(),this.player.debugLog(this.TAG_NAME,"socket error:",e);break;case ht:this._destroy()}},this.websocketWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_closeWebSocket(){this.websocketWorker&&this.websocketWorker.postMessage({cmd:dt})}fetchStream(e,t){this.player._times.streamStart=co(),this.wsUrl=e,this.websocketWorker&&this.websocketWorker.postMessage({cmd:nt,url:e,options:t})}sendMessage(e){this.websocketWorker&&this.websocketWorker.postMessage({cmd:lt,message:e})}getStreamType(){return f}}class Pn extends Ba{constructor(e){super(),this.player=e,e.debugLog("HlsStream","init")}async destroy(){return this.off(),this.player.debugLog("HlsStream","destroy"),!0}fetchStream(e){const{hlsDecoder:t,debug:i}=this.player;this.player._times.streamStart=co(),t.loadSource(e).then((()=>{this.player.debugLog("HlsStream","loadSource success"),this.emit(mt.streamSuccess)})).catch((e=>{this.emit(At.hlsError,e)}))}getStreamType(){return p}}class In extends Ba{constructor(e){super(),this.player=e,this.webrctUrl=null,e.debugLog("WebrtcStream","init")}async destroy(){return this.webrctUrl=null,this.off(),this.player.debugLog("WebrtcStream","destroy"),!0}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{webrtc:i,debug:s}=this.player;if(this.player._times.streamStart=co(),this.webrctUrl=e.replace("webrtc:",window.location.protocol),this.player.isWebrtcForM7S()&&-1===this.webrctUrl.indexOf("/webrtc/play")){const t=new URL(this.webrctUrl),i="/webrtc/play"+t.pathname;this.webrctUrl=t.origin+i+t.search,this.player.debugLog("WebrtcStream",`original url is ${e}, and new url is: ${this.webrctUrl}`)}i.loadSource(this.webrctUrl,t).then((()=>{this.player.debugLog("WebrtcStream","loadSource success"),this.emit(mt.streamSuccess)})).catch((e=>{this.player.debugError("WebrtcStream","loadSource error",e),this.emit(At.webrtcError,e)}))}getStreamType(){return m}}class Bn extends Ba{constructor(e){super(),this.player=e,this.transport=null,this.wtUrl=null,this.streamRate=go((t=>{e.emit(mt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("WebTransportLoader","init")}async destroy(){return this.abort(),this.off(),this.player.debugLog("WebTransportLoader","destroy"),!0}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:s}=e;try{this.transport=new WebTransport(this.wtUrl),this.transport.ready.then((()=>{this.emit(mt.streamSuccess),this.startStreamRateInterval(),this.transport.createBidirectionalStream().then((e=>{e.readable.pipeTo(new WritableStream(s.input))}))})).catch((e=>{this.player.debugWarn("WebTransportLoader","_createWebTransport-ready",e)}))}catch(e){this.player.debugWarn("WebTransportLoader","_createWebTransport",e)}}fetchStream(e){this.player._times.streamStart=co(),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 g}}class Mn extends Ba{constructor(e){super(),this.player=e,this.workUrl=null,e.debugLog("WorkerStream","init")}async destroy(){return this.workUrl=null,this.off(),this.player.debugLog("WorkerStream","destroy"),!0}sendMessage(e){this.player.decoderWorker.workerSendMessage(e)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.workUrl=e,this.player._times.streamStart=co(),this.player.decoderWorker.workerFetchStream(e,t)}getStreamType(){const e=this.player._opt.protocol;return y+" "+(e===a?u:f)}}class Fn extends Ba{constructor(e){super(),this.TAG_NAME="AliyunRtcLoader",this.player=e,e.debugLog(this.TAG_NAME,"init")}async destroy(){return this.off(),this.player.debugLog(this.TAG_NAME,"destroy"),!0}fetchStream(e){const{aliyunRtcDecoder:t}=this.player;this.player._times.streamStart=co(),t.loadSource(e).then((()=>{this.player.debugLog(this.TAG_NAME,"loadSource success"),this.emit(mt.streamSuccess)})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource error",e),this.emit(At.aliyunRtcError,e)}))}getStreamType(){return A}}class Un{constructor(e){return new(Un.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){const{protocol:t,useWasm:i,playType:s,useWCS:r,useMSE:c,demuxUseWorker:u,mainThreadFetchUseWorker:p}=e;return t===a?s===v?Mn:s===b?i&&!la(e)||u?Mn:p?Dn:Cn:r||c?u?Mn:p?Dn:Cn:Mn:t===o?s===v?Mn:s===b?i&&!la(e)||u?Mn:p?Rn:xn:r||c?u?Mn:p?Rn:xn:Mn:t===n?Pn:t===l?In:t===d?Bn:t===h?Fn:void 0}}var On=Fr((function(e){function t(e,r){if(!e)throw"First parameter is required.";r=new i(e,r=r||{type:"video"});var o=this;function a(t){t&&(r.initCallback=function(){t(),t=r.initCallback=null});var i=new s(e,r);(p=new i(e,r)).record(),u("recording"),r.disableLogs||console.log("Initialized recorderType:",p.constructor.name,"for output-type:",r.type)}function n(e){if(e=e||function(){},p){if("paused"===o.state)return o.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===o.state||r.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',o.state),r.disableLogs||console.log("Stopped recording "+r.type+" stream."),"gif"!==r.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]&&(o[e]=p[e])}));var i=p.blob;if(!i){if(!t)throw"Recording failed.";p.blob=i=t}if(i&&!r.disableLogs&&console.log(i.type,"->",y(i.size)),e){var s;try{s=h.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(o,s):e(s)}r.autoWriteToDisk&&d((function(e){var t={};t[r.type+"Blob"]=e,D.Store(t)}))}else"function"==typeof e.call?e.call(o,""):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 r.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 s=new FileReader;s.readAsDataURL(i),s.onload=function(t){e(t.target.result)}}else{var o=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);o.onmessage=function(t){e(t.data)},o.postMessage(i)}}function c(e){e=e||0,"paused"!==o.state?"stopped"!==o.state&&(e>=o.recordingDuration?n(o.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){o&&(o.state=e,"function"==typeof o.onStateChanged.call?o.onStateChanged.call(o,e):o.onStateChanged(e))}var p,f='It seems that recorder is destroyed or "startRecording" is not invoked for '+r.type+" recorder.";function m(){!0!==r.disableLogs&&console.warn(f)}var g={startRecording:function(t){return r.disableLogs||console.log("RecordRTC version: ",o.version),t&&(r=new i(e,t)),r.disableLogs||console.log("started recording "+r.type+" stream."),p?(p.clearRecordedData(),p.record(),u("recording"),o.recordingDuration&&c(),o):(a((function(){o.recordingDuration&&c()})),o)},stopRecording:n,pauseRecording:function(){p?"recording"===o.state?(u("paused"),p.pause(),r.disableLogs||console.log("Paused recording.")):r.disableLogs||console.warn("Unable to pause the recording. Recording state: ",o.state):m()},resumeRecording:function(){p?"paused"===o.state?(u("recording"),p.resume(),r.disableLogs||console.log("Resumed recording.")):r.disableLogs||console.warn("Unable to resume the recording. Recording state: ",o.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return o.recordingDuration=e,o.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){o.onRecordingStopped=e}}},clearRecordedData:function(){p?(p.clearRecordedData(),r.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(r.type,e):m()},setAdvertisementArray:function(e){r.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),f=!u&&!c&&!!navigator.webkitGetUserMedia||b()||-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 g=window.MediaStream;function y(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 s=t.split(".");t=s[0],i=s[1]}var r=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,r);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,r);var o=document.createElement("a");o.href=h.createObjectURL(e),o.download=r,o.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(o),"function"==typeof o.click?o.click():(o.target="_blank",o.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),h.revokeObjectURL(o.href)}function b(){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 v(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===g&&"undefined"!=typeof webkitMediaStream&&(g=webkitMediaStream),void 0!==g&&void 0===g.prototype.stop&&(g.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),t.invokeSaveAsDialog=A,t.getTracks=v,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,s=new EBML.Decoder,r=EBML.tools,o=new FileReader;o.onload=function(e){s.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var o=r.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([o,a],{type:"video/webm"});t(n)},o.readAsArrayBuffer(e)},t.bytesToSize=y,t.isElectron=b;var S={};function E(){if(p||m||c)return!0;var e,t,i=navigator.userAgent,s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10);return(f||u)&&(e=i.indexOf("Chrome"),s=i.substring(e+7)),-1!==(t=s.indexOf(";"))&&(s=s.substring(0,t)),-1!==(t=s.indexOf(" "))&&(s=s.substring(0,t)),r=parseInt(""+s,10),isNaN(r)&&(s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10)),r>=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 s;if(v(e,"video").length&&v(e,"audio").length)navigator.mozGetUserMedia?(s=new g).addTrack(v(e,"audio")[0]):s=new g(v(e,"audio")),e=s;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 r,o=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return r&&r.mimeType?r.mimeType:e.mimeType||"video/webm"}function l(){o=[],r=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return o},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],o=[];var s=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",s),r&&(r=null),f&&!E()&&(s="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&s.mimeType&&(MediaRecorder.isTypeSupported(s.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType),s.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{r=new MediaRecorder(e,s),t.mimeType=s.mimeType}catch(t){r=new MediaRecorder(e)}s.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in r&&!1===r.canRecordMimeType(s.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType)),r.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+y(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:n(s)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(o.push(e.data),a(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)});t.ondataavailable(r)}},r.onstart=function(){d.push("started")},r.onpause=function(){d.push("paused")},r.onresume=function(){d.push("resumed")},r.onstop=function(){d.push("stopped")},r.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 (",s.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&&r&&"inactive"===r.state)return delete t.timeslice,void r.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==r.state&&"stopped"!==r.state&&r.stop())},"number"==typeof t.timeSlice?(a(),r.start(t.timeSlice)):r.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,r&&(this.recordingCallback=e,"recording"===r.state&&r.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(o,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){r&&"recording"===r.state&&r.pause()},this.resume=function(){r&&"paused"===r.state&&r.resume()},this.clearRecordedData=function(){r&&"recording"===r.state&&i.stop(l),l()},this.getInternalRecorder=function(){return r},this.blob=null,this.getState=function(){return r&&r.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function s(){if(r&&!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(s,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function T(e,i){if(!v(e,"audio").length)throw"Your stream has no audio tracks.";var s,r=this,o=[],a=[],n=!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,s=e.numberOfAudioChannels,r=e.leftBuffers.slice(0),o=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,l=e.desiredSampRate;function d(e,t,i){var s=Math.round(e.length*(t/i)),r=[],o=Number((e.length-1)/(s-1));r[0]=e[0];for(var a=1;a96e3)&&(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 b=!1;function _(){o=[],a=[],l=0,E=!1,n=!1,b=!1,f=null,r.leftchannel=o,r.rightchannel=a,r.numberOfAudioChannels=d,r.desiredSampRate=c,r.sampleRate=A,r.recordingLength=l,w={left:[],right:[],recordingLength:0}}function S(){s&&(s.onaudioprocess=null,s.disconnect(),s=null),m&&(m.disconnect(),m=null),_()}this.pause=function(){b=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();b=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;s.onaudioprocess=function(e){if(!b)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),s.disconnect(),n=!1),n){E||(E=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),h=new Float32Array(t);if(o.push(h),2===d){var c=e.inputBuffer.getChannelData(1),p=new Float32Array(c);a.push(p)}l+=y,r.recordingLength=l,void 0!==i.timeSlice&&(w.recordingLength+=y,w.left.push(h),2===d&&w.right.push(p))}else m&&(m.disconnect(),m=null)},f.createMediaStreamDestination?s.connect(f.createMediaStreamDestination()):s.connect(f.destination),this.leftchannel=o,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=A,r.recordingLength=l;var w={left:[],right:[],recordingLength:0};function T(){n&&"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 s=new Blob([t],{type:"audio/wav"});i.ondataavailable(s),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 s,r,o,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&l&&l[2]&&(n=parseInt(l[2],10)),a&&n<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)s=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";s=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(o=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in s?e=s.captureStream(25):"mozCaptureStream"in s?e=s.mozCaptureStream(25):"webkitCaptureStream"in s&&(e=s.webkitCaptureStream(25));try{var a=new g;a.addTrack(v(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(r=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 s=p.frames.length;p.frames.forEach((function(e,i){var r=s-i;t.disableLogs||console.log(r+"/"+s+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(r,s);var o=e.image.toDataURL("image/webp",1);p.frames[i].image=o})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){o=!1;var s=this;i&&r?r.stop(e):this.getWebPImages((function(){p.compile((function(i){t.disableLogs||console.log("Recording finished!"),s.blob=i,s.blob.forEach&&(s.blob=new Blob([],{type:"video/webm"})),e&&e(s.blob),p.frames=[]}))}))};var d=!1;function h(){p.frames=[],o=!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:(s=document.createElement("canvas"),r=s.getContext("2d"),s.width=e.width,s.height=e.height,r.drawImage(e,0,0),s),duration:i}),void(o&&setTimeout(c,t.frameInterval))}var s,r;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}),o&&setTimeout(c,t.frameInterval)}})}this.pause=function(){d=!0,r instanceof w&&r.pause()},this.resume=function(){d=!1,r instanceof w?r.resume():o||this.record()},this.clearRecordedData=function(){o&&this.stop(h),h()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),p=new C.Video(100)}function L(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-l;return t?o?(l=(new Date).getTime(),setTimeout(i,100)):(l=(new Date).getTime(),n.paused&&n.play(),c.drawImage(n,0,0,h.width,h.height),d.frames.push({duration:t,image:h.toDataURL("image/webp")}),void(r||setTimeout(i,e,e))):setTimeout(i,e,e)}function s(e,t,i,s,r){var o=document.createElement("canvas");o.width=h.width,o.height=h.height;var a=o.getContext("2d"),n=[],l=-1===t,d=t&&t>0&&t<=e.length?t:e.length,c=0,u=0,p=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),m=i&&i>=0&&i<=1?i:0,g=s&&s>=0&&s<=1?s:0,y=!1;!function(e){var t=-1,i=e.length;!function s(){++t!==i?setTimeout((function(){e.functionToLoop(s,t)}),1):e.callback()}()}({length:d,functionToLoop:function(t,i){var s,r,o,d=function(){!y&&o-s<=o*g||(l&&(y=!0),n.push(e[i])),t()};if(y)d();else{var A=new Image;A.onload=function(){a.drawImage(A,0,0,h.width,h.height);var e=a.getImageData(0,0,h.width,h.height);s=0,r=e.data.length,o=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({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 s(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*o[0].width:o[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),r.height=o[0].height*n}else r.width=a.width||360,r.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),o.forEach((function(e,t){u(e,t)})),setTimeout(c,a.frameInterval)}}function u(e,t){if(!s){var i=0,r=0,a=e.width,n=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&&(n=e.stream.height),o.drawImage(e,i,r,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(o,i,r,a,n,t)}}function p(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function f(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=p(e);t.stream=e,i.push(t)}}))}void 0!==n?h.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(h.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){c()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var s=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var r=p(t);r.stream=t,i.push(r),s.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var o=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),o.connect(a.audioDestination),s.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(s)}))},this.releaseStreams=function(){i=[],s=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,o.clearRect(0,0,r.width,r.height),r.stream&&(r.stream.stop(),r.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),f(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){s=!1;var t=function(){var e;f(),"captureStream"in r?e=r.captureStream():"mozCaptureStream"in r?e=r.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),r.stream=t,t}(),i=function(){h.AudioContextConstructor||(h.AudioContextConstructor=new h.AudioContext);a.audioContext=h.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.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=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.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 P(e,t){e=e||[];var i,s,r=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 r;i=new R(e,t.elementClass||"multi-streams-mixer"),(r=[],e.forEach((function(e){v(e,"video").forEach((function(e){r.push(e)}))})),r).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()),(s=new w(i.getMixedStream(),t)).record()},this.stop=function(e){s&&s.stop((function(t){r.blob=t,e(t),r.clearRecordedData()}))},this.pause=function(){s&&s.pause()},this.resume=function(){s&&s.resume()},this.clearRecordedData=function(){s&&(s.clearRecordedData(),s=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(r){if(!r)throw"First parameter is required.";r instanceof Array||(r=[r]),e.concat(r),s&&i&&(i.appendStreams(r),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 I(e,t){var i,s,r;function o(){return new ReadableStream({start:function(s){var r=document.createElement("canvas"),o=document.createElement("video"),a=!0;o.srcObject=e,o.muted=!0,o.height=t.height,o.width=t.width,o.volume=0,o.onplaying=function(){r.width=t.width,r.height=t.height;var e=r.getContext("2d"),n=1e3/t.frameRate,l=setInterval((function(){if(i&&(clearInterval(l),s.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(o,0,0),"closed"!==s._controlledReadableStream.state)try{s.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},o.play()}})}function a(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){a(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."),(s=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),s.addEventListener("message",(function(e){"READY"===e.data?(s.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),o().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):s.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(r||n.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(){n=[],r=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){s?(s.addEventListener("message",(function(t){null===t.data&&(s.terminate(),s=null,e&&e())})),s.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],r=!1,this.blob=null},this.blob=null}t.DiskStorage=D,t.GifRecorder=x,t.MultiStreamRecorder=P,t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var s=this;s.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{s.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{s.recordRTC.stopRecording((function(i){s.blob=s.recordRTC.getBlob(),s.blob&&s.blob.size?e(i):t("Empty blob.",s.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{s.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{s.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{s.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(s.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(s.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(s.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(s.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(s.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},t.WebAssemblyRecorder=I}));class Nn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseSPS(e){let t=Nn._ebsp2rbsp(e),i=new Or(t);i.readByte();let s=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let o=Nn.getProfileString(s),a=Nn.getLevelString(r),n=1,l=420,d=[0,420,422,444],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)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(l=d[n]),h=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],_=s[e-1]):255===e&&(v=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(),w=t,T=2*e,S=w/T}}let k=1;1===v&&1===_||(k=v/_);let L=0,C=0;if(0===n)L=1,C=2-m;else{L=3===n?1:2,C=(1===n?2:1)*(2-m)}let D=16*(p+1),x=16*(f+1)*(2-m);D-=(g+y)*L,x-=(A+b)*C;let R=Math.ceil(D*k);return i.destroy(),i=null,{profile_string:o,level_string:a,bit_depth:h,ref_frames:u,chroma_format:l,chroma_format_string:Nn.getChromaFormatString(l),frame_rate:{fixed:E,fps:S,fps_den:T,fps_num:w},sar_ratio:{width:v,height:_},codec_size:{width:D,height:x},present_size:{width:R,height:x}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let s=t[e].toString(16);s.length<2&&(s="0"+s),i+=s}let s=Nn._ebsp2rbsp(e),r=new Or(s);r.readByte();let o=r.readByte();r.readByte();let a=r.readByte();r.readUEG();let n=Nn.getProfileString(o),l=Nn.getLevelString(a),d=1,h=420,c=[0,420,422,444],u=8,p=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(d=r.readUEG(),3===d&&r.readBits(1),d<=3&&(h=c[d]),u=r.readUEG()+8,p=r.readUEG()+8,r.readBits(1),r.readBool())){let e=3!==d?8:12;for(let t=0;t0&&e<16?(E=t[e-1],w=i[e-1]):255===e&&(E=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);k=r.readBool(),L=t,C=2*e,T=L/C}}let D=1;1===E&&1===w||(D=E/w);let x=0,R=0;if(0===d)x=1,R=2-A;else{x=3===d?1:2,R=(1===d?2:1)*(2-A)}let P=16*(g+1),I=16*(y+1)*(2-A);P-=(b+v)*x,I-=(_+S)*R;let B=Math.ceil(P*D);return r.destroy(),r=null,{codec_mimetype:i,profile_idc:o,level_idc:a,profile_string:n,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:Nn.getChromaFormatString(h),frame_rate:{fixed:k,fps:T,fps_den:C,fps_num:L},sar_ratio:{width:E,height:w},codec_size:{width:P,height:I},present_size:{width:B,height:I}}}static _skipScalingList(e,t){let i=8,s=8,r=0;for(let o=0;o=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,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}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]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.sps,4),t.sps=s}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.pps,4),t.pps=s}return t}function zn(e){let{sps:t,pps:i}=e,s=8+t.byteLength+1+2+i.byteLength,r=!1;const o=Nn.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(r=!0,s+=4);let a=new Uint8Array(s);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let n=t.byteLength;a[6]=n>>>8,a[7]=255&n;let l=8;a.set(t,8),l+=n,a[l]=1;let d=i.byteLength;a[l+1]=d>>>8,a[l+2]=255&d,a.set(i,l+3),l+=3+d,r&&(a[l]=252|o.chroma_format_idc,a[l+1]=248|o.bit_depth_luma-8,a[l+2]=248|o.bit_depth_chroma-8,a[l+3]=0,l+=4);const h=[23,0,0,0,0],c=new Uint8Array(h.length+a.byteLength);return c.set(h,0),c.set(a,h.length),c}function Wn(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function Vn(e){return 31&e[0]}function $n(e){return e===Gt}function Hn(e){return!function(e){return e===Ft||e===Ut}(e)&&!$n(e)}function Jn(e){return e===Ot}class qn{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H264 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=31&e[i],r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,s>=Vt||0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class Kn{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Yn=e=>{let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)},Qn=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"}};class Xn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseVPS(e){let t=Xn._ebsp2rbsp(e),i=new Or(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=Xn._ebsp2rbsp(e),i=new Or(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=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(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),S=[],E=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<=16?(B=t[e-1],M=s[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(),P=i.readBool(),P&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()){if(U=i.readBits(32),O=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool()){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();F=r;let o=!0,a=1;r||(o=i.readBool());let n=!1;if(o?i.readUEG():n=i.readBool(),n||(a=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 s=e[22],r=e.slice(23);for(let e=0;e0)for(let t=i;t<8;t++)e.read(2);s.sub_layer_profile_space=[],s.sub_layer_tier_flag=[],s.sub_layer_profile_idc=[],s.sub_layer_profile_compatibility_flag=[],s.sub_layer_progressive_source_flag=[],s.sub_layer_interlaced_source_flag=[],s.sub_layer_non_packed_constraint_flag=[],s.sub_layer_frame_only_constraint_flag=[],s.sub_layer_level_idc=[];for(let t=0;t{let t=Yn(e),i=new Or(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()}})(t),a=(e=>{let t=Yn(e),i=new Or(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=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(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),S=[],E=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(B=t[e-1],M=s[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(),P=i.readBool(),P&&(s+=i.readUEG(),r+=i.readUEG(),o+=i.readUEG(),a+=i.readUEG()),i.readBool()&&(U=i.readBits(32),O=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();F=r;let o=!1,a=1;r||(o=i.readBool());let n=!1;if(o?i.readSEG():n=i.readBool(),n||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=Yn(e),i=new Or(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 s=i.readBool(),r=i.readBool(),o=1;return r&&s?o=0:r?o=3:s&&(o=2),{parallelismType:o}})(i);r=Object.assign(r,o,a,n);let l=23+(5+t.byteLength)+(5+s.byteLength)+(5+i.byteLength),d=new Uint8Array(l);d[0]=1,d[1]=(3&r.general_profile_space)<<6|(r.general_tier_flag?1:0)<<5|31&r.general_profile_idc,d[2]=r.general_profile_compatibility_flags_1||0,d[3]=r.general_profile_compatibility_flags_2||0,d[4]=r.general_profile_compatibility_flags_3||0,d[5]=r.general_profile_compatibility_flags_4||0,d[6]=r.general_constraint_indicator_flags_1||0,d[7]=r.general_constraint_indicator_flags_2||0,d[8]=r.general_constraint_indicator_flags_3||0,d[9]=r.general_constraint_indicator_flags_4||0,d[10]=r.general_constraint_indicator_flags_5||0,d[11]=r.general_constraint_indicator_flags_6||0,d[12]=60,d[13]=240|(3840&r.min_spatial_segmentation_idc)>>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|Qt,d[24]=0,d[25]=1,d[26]=(65280&t.byteLength)>>8,d[27]=(255&t.byteLength)>>0,d.set(t,28),d[23+(5+t.byteLength)+0]=128|Zt,d[23+(5+t.byteLength)+1]=0,d[23+(5+t.byteLength)+2]=1,d[23+(5+t.byteLength)+3]=(65280&s.byteLength)>>8,d[23+(5+t.byteLength)+4]=(255&s.byteLength)>>0,d.set(s,23+(5+t.byteLength)+5),d[23+(5+t.byteLength+5+s.byteLength)+0]=128|ti,d[23+(5+t.byteLength+5+s.byteLength)+1]=0,d[23+(5+t.byteLength+5+s.byteLength)+2]=1,d[23+(5+t.byteLength+5+s.byteLength)+3]=(65280&i.byteLength)>>8,d[23+(5+t.byteLength+5+s.byteLength)+4]=(255&i.byteLength)>>0,d.set(i,23+(5+t.byteLength+5+s.byteLength)+5);const h=[28,0,0,0,0],c=new Uint8Array(h.length+d.byteLength);return c.set(h,0),c.set(d,h.length),c}function sl(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function rl(e){return(126&e[0])>>1}function ol(e){return!function(e){return e>=32&&e<=40}(e)}function al(e){return e>=16&&e<=21}class nl{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H265 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=e[i]>>1&63,r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class ll{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}class dl extends Ba{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===Lt}get isH265(){return this.codecId===Ct}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,s){}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 s=e.slice(5);if(this.codecId=t,this.metaInfo.avcc=s,t===Lt)i=Gn(s);else if(t===Ct){i=function(e){let t=23;const i=e[t];if((63&i)!==Qt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and vpsTag is ${i}`),{};t+=2,t+=1;const s=e[t+1]|e[t]<<8;t+=2;const r=e.slice(t,t+s);t+=s;const o=e[t];if((63&o)!==Zt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and sps tag is ${o}`),{};t+=2,t+=1;const a=e[t+1]|e[t]<<8;t+=2;const n=e.slice(t,t+a);t+=a;const l=e[t];if((63&l)!==ti)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([a>>>24&255,a>>>16&255,a>>>8&255,255&a]),u=new Uint8Array([d>>>24&255,d>>>16&255,d>>>8&255,255&d]),p=new Uint8Array([s>>>24&255,s>>>16&255,s>>>8&255,255&s]),f=new Uint8Array(a+4);f.set(c,0),f.set(n,4);const m=new Uint8Array(d+4);m.set(u,0),m.set(h,4);const g=new Uint8Array(s+4);return g.set(p,0),g.set(r,4),{sps:f,pps:m,vps:g}}(s);const t=Zn(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 s=null;t===Rt?(s=function(e){let t={},i=new Kr(e);return i.read(16),t.object_type=Yr(i),t.sample_rate=Qr(i,t),t.chan_config=i.read(4),t.chan_config{r.onload=function(e){i.decode(this.result).forEach((function(e){t.read(e)})),t.stop();const r=s.makeMetadataSeekable(t.metadatas,t.duration,t.cues),a=this.result.slice(t.metadataSize),n=new Blob([r,a],{type:"video/webm"});o(n)},r.readAsArrayBuffer(e)}))}startRecord(){const e={type:"video",mimeType:"video/webm;codecs=h264",timeSlice:1e3,onTimeStamp:e=>{this.player&&this.player.debugLog("RecorderRTC","record timestamp :"+e),null===this._startRecordingTimestamp&&(this._startRecordingTimestamp=e),this._recordingTimestamp=(e-this._startRecordingTimestamp)/1e3},ondataavailable:e=>{this.totalByteLength+=e.size,this.player&&this.player.debugLog("RecorderRTC","ondataavailable",e.size)},disableLogs:!this.player._opt.debug};try{let t=null;if(this.player.getRenderType()===$)t=this.player.video.$videoElement.captureStream(25),this.player.debugLog(this.TAG_NAME,"startRecord and render type is canvas and use captureStream");else if(this.player.video.mediaStream)t=this.player.video.mediaStream,this.player.debugLog(this.TAG_NAME,"startRecord and video mediaStream");else{if(Ea(this._startCanvasRender()))return void this.player.emitError(mt.recordCreateError,"startCanvasRender error");this.player.isOldHls()||this.player._opt.useMSE||this.player._opt.useWCS?t=this.canvasElement.captureStream(25):this.player.isWebrtcH264()?t=this.player.webrtc.videoStream:this.player.isAliyunRtc()&&(t=this.canvasElement.captureStream(25)),this.player.debugLog(this.TAG_NAME,"startRecord and use local canvas render video and captureStream")}if(!t)return this.player.debugError("RecorderRTC","startRecord error and can not create stream"),void this.player.emitError(mt.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 i=e.getAudioTracks()[0];i&&i.enabled&&t.addTrack(i)}}this.recorder=On(t,e)}catch(e){return this.player.debugError("RecorderRTC","startRecord error",e),void this.player.emitError(mt.recordCreateError,e)}this.recorder&&(this._isRecording=!0,this.player.emit(mt.recording,!0),this.recorder.startRecording(),this.player.debugLog("RecorderRTC","start recording"),this.player.emit(mt.recordStart),this.startRecordingInterval())}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(mt.recordingTimestamp,this._recordingTimestamp)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:wt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{this.recorder&&this._isRecording||s("recorder is not ready"),t&&this.setFileName(t),this.recorder.stopRecording((()=>{this.player.debugLog("RecorderRTC","stop recording");const t=(this.fileName||co())+"."+E;if(this.player._opt.recordWebMSupportSeek);else{if(e===Tt){const e=this.recorder.getBlob();i(e),this.player.emit(mt.recordBlob,e)}else i(),this.recorder.save(t);this.player.emit(mt.recordEnd),this._reset(),this.player.emit(mt.recording,!1)}}))}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.recorder||!this._isRecording)return e();this.recorder.stopRecording((()=>{this._reset(),this.player.emit(mt.recording,!1),this.player.emit(mt.recordCancel),e()}))}))}getToTalByteLength(){return this.totalByteLength}getTotalDuration(){return this.recordTime}getType(){return E}initMetaData(){}_startCanvasRender(){return this._initCanvasRender(),this.canvasElement?(Da()?(this.player.debugLog(this.TAG_NAME,"use video frame callback"),this.supportVideoFrameCallbackHandle=this.player.video.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):(this.player.debugLog(this.TAG_NAME,"use setInterval"),this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.canvasElementCtx&&this.canvasElementCtx.drawImage(this.player.video.$videoElement,0,0,this.canvasElement.width,this.canvasElement.height)}),40)),!0):(this.player.debugError(this.TAG_NAME,"canvasElement is null"),!1)}_initCanvasRender(){const e=this.player.getVideoInfo();!this.canvasElement&&e&&(this.canvasElement=document.createElement("canvas"),this.canvasElementCtx=this.canvasElement.getContext("2d"),e.width&&e.height&&(this.canvasElement.width=e.width,this.canvasElement.height=e.height))}_removeCanvasRender(){this.canvasElementCtx&&(this.canvasElementCtx.clearRect(0,0,this.canvasElement.width,this.canvasElement.height),this.canvasElementCtx=null),this.canvasElement&&(this.canvasElement.width=0,this.canvasElement.height=0,this.canvasElement=null)}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_stopSupportVideoFrameCallback(){this.supportVideoFrameCallbackHandle&&this.player.video.$videoElement&&(this.player.video.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null)}videoFrameCallback(){this.player.isDestroyedOrClosed()?this.player.debugLog(this.TAG_NAME,"videoFrameCallback() player is destroyed"):(this.canvasElementCtx&&this.canvasElementCtx.drawImage(this.player.video.$videoElement,0,0,this.canvasElement.width,this.canvasElement.height),this.supportVideoFrameCallbackHandle=this.player.video.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)))}}class cl{static init(){cl.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 cl.types)cl.types.hasOwnProperty(e)&&(cl.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=cl.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,s=Array.prototype.slice.call(arguments,1),r=s.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 o=8;for(let e=0;e=Math.pow(2,32)-1?(o=16,a=new Uint8Array(i+o),a.set(new Uint8Array([0,0,0,1]),0),a.set(cl.types.mdat,4),a.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)):(a=new Uint8Array(i+o),a[0]=i+8>>>24&255,a[1]=i+8>>>16&255,a[2]=i+8>>>8&255,a[3]=i+8&255,a.set(cl.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 cl.box(cl.types.trak,cl.tkhd(e),cl.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return"video"===e.type?cl.box(cl.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,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0])):"audio"===e.type?cl.box(cl.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,1,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])):void 0}static edts(e,t){return cl.box(cl.types.edts,cl.elst(e,t))}static elst(e,t){let i=0;for(let s=0;s>>24&255,i>>>16&255,i>>>8&255,255&i,255,255,255,255,0,1,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s,0,0,0,0,0,1,0,0]))}static mdia(e){return cl.box(cl.types.mdia,cl.mdhd(e),cl.hdlr(e),cl.minf(e))}static mdhd(e){let t=e.timescale/e.refSampleDuration,i=t*e.duration/e.timescale;return cl.box(cl.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="audio"===e.type?cl.constants.HDLR_AUDIO:cl.constants.HDLR_VIDEO,cl.box(cl.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?cl.box(cl.types.smhd,cl.constants.SMHD):cl.box(cl.types.vmhd,cl.constants.VMHD),cl.box(cl.types.minf,t,cl.dinf(),cl.stbl(e))}static dinf(){return cl.box(cl.types.dinf,cl.box(cl.types.dref,cl.constants.DREF))}static stbl(e){let t=e.samples,i=[{No:1,num:0,sampleDelte:1,chunkNo:1,duration:t[0].duration}],s=[t[0].duration],r=t.length;for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+8*t);r.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]),s),s+=8;return cl.box(cl.types.stts,r)}static stss(e){let t=[],i=e.length;for(let s=0;s>>24&255,s>>>16&255,s>>>8&255,255&s]),o=r.byteLength,a=new Uint8Array(o+4*s);a.set(r,0);for(let e=0;e>>24&255,t[e]>>>16&255,t[e]>>>8&255,255&t[e]]),o),o+=4;return cl.box(cl.types.stss,a)}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]),s=i.byteLength,r=new Uint8Array(s+12*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t,o>>>24&255,o>>>16&255,o>>>8&255,255&o,a>>>24&255,a>>>16&255,a>>>8&255,255&a]),s),s+=12}return cl.box(cl.types.stsc,r)}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]),s=i.byteLength,r=new Uint8Array(s+4*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t]),s),s+=4}return cl.box(cl.types.stsz,r)}static stco(e,t){let i=t[0].chunkOffset;return cl.box(cl.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?cl.box(cl.types.stsd,cl.constants.STSD_PREFIX,cl.mp3(e)):cl.box(cl.types.stsd,cl.constants.STSD_PREFIX,cl.mp4a(e)):"avc"===e.videoType?cl.box(cl.types.stsd,cl.constants.STSD_PREFIX,cl.avc1(e)):cl.box(cl.types.stsd,cl.constants.STSD_PREFIX,cl.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.sampleRate,s=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 cl.box(cl.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.sampleRate,s=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 cl.box(cl.types.mp4a,s,cl.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=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 cl.box(cl.types.esds,s)}static avc1(e){let t=e.avcc,i=e.codecWidth,s=e.codecHeight,r=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,s>>>8&255,255&s,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 cl.box(cl.types.avc1,r,cl.box(cl.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 cl.box(cl.types.hvc1,r,cl.box(cl.types.hvcC,t))}static mvex(e){return cl.box(cl.types.mvex,cl.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 cl.box(cl.types.trex,i)}static moof(e,t){return cl.box(cl.types.moof,cl.mfhd(e.sequenceNumber),cl.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 cl.box(cl.types.mfhd,t)}static traf(e,t){let i=e.id,s=cl.box(cl.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=cl.box(cl.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=cl.sdtp(e),a=cl.trun(e,o.byteLength+16+16+8+16+8+8);return cl.box(cl.types.traf,s,r,a,o)}static sdtp(e){let t=e.samples||[],i=t.length,s=new Uint8Array(4+i);for(let e=0;e>>24&255,s>>>16&255,s>>>8&255,255&s,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,s>>>24&255,s>>>16&255,s>>>8&255,255&s,r.isLeading<<2|r.dependsOn,r.isDependedOn<<6|r.hasRedundancy<<4|r.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12+16*e)}return cl.box(cl.types.trun,o)}static mdat(e){return cl.box(cl.types.mdat,e)}}cl.init();class ul extends dl{constructor(e){super(e),this.TAG_NAME="recorderMP4",this._reset(),e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this._reset(),this.player.debugLog(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(){this._isRecording=!0,this.player.emit(mt.recording,!0),this.player.debugLog(this.TAG_NAME,"start recording"),this.player.emit(mt.recordStart),this._startRecordingInterval()}_startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(mt.recordingTimestamp,this.getTotalDuration())}),1e3)}_formatFmp4Track(e,t,i,s){return{id:1,sequenceNumber:++this.sequenceNumber,size:e.byteLength,dts:i,cts:s,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,s){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,s)}handleAddAudioTrack(e,t){}_handleAddFmp4Track(e){if(!this.isRecording)return void this.player.debugError(this.TAG_NAME,"_handleAddFmp4Track, isRecording is false ");if((null===this.sps||null===this.pps)&&this.isH264)return void this.player.debugError(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.debugError(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 s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}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 s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}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 S}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:wt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debugError(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r={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},o={id:2,type:"audio",sequenceNumber:this.audioBufferList.length,samples:this.audioBufferList,...this.audioMetaInfo},a=[r];o.samples.length>0&&a.push(o),this.player.debugLog(this.TAG_NAME,`trackList length is ${a.length}`);const n=cl.generateInitSegment({timescale:1e3,duration:this.totalDuration},a,this.totalByteLength+this.totalAudioByteLength);this.player.debugLog(this.TAG_NAME,"stop recording");const l=new Blob([n],{type:"application/octet-stream"});if(e===Tt)i(l),this.player.emit(mt.recordBlob,l);else{i();Uo((this.fileName||co())+"."+S,l)}this._reset(),this.player.emit(mt.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(mt.recording,!1),this.player.emit(mt.recordCancel),e()}))}_getBufferTs(e){}}function pl(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=new s((0|e.byteLength)+(0|t.byteLength));return i.set(e,0),i.set(t,0|e.byteLength),i}),new s)}function fl(e){if((e=e.replace(/\s/g,"")).length%2!=0)return console.error("hexStringToUint8Array: invalid hexString length, must be even and bexString length is: ",e.length),null;const t=new Uint8Array(e.length/2);for(let i=0;i{this.player.emit(mt.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,je,i)}_setStartTime(e){null===this.startTime&&this._isRecording&&(this.startTime=e,this.player.debugLog(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 s=this._createFlvPacket(e,t,i),r=this._createFlvTag(s);this.totalByteLength+=r.byteLength,this.bufferList.push(r)}_createFlvTag(e){let t=11+e.header.length,i=new Uint8Array(t+4);i[0]=e.header.type;let s=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,s.setUint32(t,t),i.set(e.payload.subarray(0,e.header.length),11),i}_createFlvPacket(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return{header:{length:e?e.length:0,timestamp:i,type:t},payload:e}}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:wt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debugError(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r=new Uint8Array([70,76,86,1,0,0,0,0,9,0,0,0,0]);this.hasVideo&&(r[4]|=1),this.hasAudio&&(r[4]|=4);let o=[r];if(this.flvMetaData){const e=this._createFlvPacket(this.flvMetaData,ze),t=this._createFlvTag(e);o.push(t)}if(this.videoSequenceHeader){const e=this._createFlvPacket(this.videoSequenceHeader,Ge),t=this._createFlvTag(e);o.push(t)}if(this.aacSequenceHeader){const e=this._createFlvPacket(this.aacSequenceHeader,je),t=this._createFlvTag(e);o.push(t)}const a=function(e){const t=e[0].constructor;return e.reduce(((e,i)=>{const s=new t((0|e.byteLength)+(0|i.byteLength));return s.set(e,0),s.set(i,0|e.byteLength),s}),new t)}(o.concat(this.bufferList));this.player.debugLog(this.TAG_NAME,"stop recording");const n=new Blob([a],{type:"application/octet-stream"});if(e===Tt)i(n),this.player.emit(mt.recordBlob,n);else{i();Uo((this.fileName||co())+"."+w,n)}this._reset(),this.player.emit(mt.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(mt.recording,!1),this.player.emit(mt.recordCancel),e()}))}getTotalDuration(){let e=0;return null!==this.startTime&&null!==this.currentTime&&(e=this.currentTime-this.startTime),Math.round(e/1e3)}getType(){return w}getToTalByteLength(){return this.totalByteLength}}const gl={init:0,findFirstStartCode:1,findSecondStartCode:2};class yl extends Ba{constructor(e){super(),this.player=e,this.isDestroyed=!1,this.reset()}destroy(){this.isDestroyed=!1,this.off(),this.reset()}reset(){this.stats=gl.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==gl.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=gl.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==gl.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=gl.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==gl.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=gl.findFirstStartCode}}}}class Al extends dl{constructor(e){super(e),this.TAG_NAME="recorderWasmMP4",this._reset(),this.wasmMp4Recorder=null,this.mp3Demuxer=null,e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.mp3Demuxer&&(this.mp3Demuxer.destroy(),this.mp3Demuxer=null),this._reset(),this.player.debugLog(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 S}isWasmMp4(){return!0}getTotalDuration(){return this.totalDuration/1e3}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}startRecord(){const e=this.player,t=this.player.getAudioInfo(),i=this.player.getVideoInfo(),s={};if(this.codecId){const e={type:this.codecId,width:i.width,height:i.height,extraData:this.metaInfo.avcc};s.video=e,this.hasVideo=!0}if(t.encTypeCode){const e={type:t.encTypeCode,sampleRate:t.sampleRate,channels:t.channels,extraData:this.audioMetaInfo.extraData,depth:t.depth};this.audioCodeId=t.encTypeCode,s.audio=e,this.hasAudio=!0}this.wasmMp4Recorder=new window.JessibucaProMp4Recorder({debug:e._opt.debug,debugLevel:e._opt.debugLevel,debugUuid:e._opt.debugUuid,decoder:e._opt.wasmMp4RecorderDecoder}),this.wasmMp4Recorder.on("recordingTimestamp",(e=>{this._recordingTimestamp=e/1e3})),this.wasmMp4Recorder.startRecord(s).then((()=>{this._isRecording=!0,this.player.emit(mt.recording,!0),this.player.debugLog(this.TAG_NAME,"start recording"),this.player.emit(mt.recordStart),this.startRecordingInterval()})).catch((e=>{this.player.debugError(this.TAG_NAME,"startRecord error",e),this.player.emitError(mt.recordCreateError,e)}))}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(mt.recordingTimestamp,this.recordTime)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:wt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>this.isRecording?0===this.totalDuration?(this.player.debugError(this.TAG_NAME,"stop recording fail, totalDuration is 0 "),s("stop recording fail, totalDuration is 0 ")):(t&&this.setFileName(t),void this.wasmMp4Recorder.stopRecord().then((t=>{if(e===Tt)i(t),this.player.emit(mt.recordBlob,t);else{i();Uo((this.fileName||co())+"."+S,t)}})).catch((e=>{this.player.debugError(this.TAG_NAME,"stopRecord error",e),s(e)})).finally((()=>{this._reset(),this.player.emit(mt.recording,!1)}))):(this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false "))))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording||0===this.totalDuration)return e();this.wasmMp4Recorder.stopRecord().then((t=>{e()})).catch((e=>{this.player.debugError(this.TAG_NAME,"stopRecord error",e),t(e)})).finally((()=>{this._reset(),this.player.emit(mt.recording,!1),this.player.emit(mt.recordCancel)}))}))}handleAddAudioTrack(e,t){this.audioCodeId===It?(this.mp3Demuxer||(this.mp3Demuxer=new yl(this.player),this.mp3Demuxer.on("data",((e,t)=>{this._handleAddAudioTrack(e,t)}))),this.mp3Demuxer.dispatch(e,t)):this._handleAddAudioTrack(e,t)}_handleAddAudioTrack(e,t){Ea(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,s){Ea(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:s})}}class bl{constructor(e){return new(bl.getLoaderFactory(e,e._opt))(e)}static getLoaderFactory(e,t){if(e.isOldHls()||e.isWebrtcH264()||e.isAliyunRtc())return hl;if(t.recordType===S){if(t.useWasm||t.useMSE||t.useWCS)return window.JessibucaProMp4Recorder&&t.mp4RecordUseWasm?Al:ul}else if(t.recordType===w)return ml;return hl}}function vl(e,t,i){let s=e;if(t+i=128){t.push(String.fromCharCode(65535&e)),s+=2;continue}}}else if(i[s]<240){if(vl(i,s,2)){let e=(15&i[s])<<12|(63&i[s+1])<<6|63&i[s+2];if(e>=2048&&55296!=(63488&e)){t.push(String.fromCharCode(65535&e)),s+=3;continue}}}else if(i[s]<248&&vl(i,s,3)){let e=(7&i[s])<<18|(63&i[s+1])<<12|(63&i[s+2])<<6|63&i[s+3];if(e>65536&&e<1114112){e-=65536,t.push(String.fromCharCode(e>>>10|55296)),t.push(String.fromCharCode(1023&e|56320)),s+=4;continue}}t.push(String.fromCharCode(65533)),++s}return t.join("")}let Sl=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}();class El{static parseScriptData(e,t,i){let s={};try{let r=El.parseValue(e,t,i),o=El.parseValue(e,t+r.size,i-r.size);s[r.data]=o.data}catch(e){console.error("AMF",e.toString())}return s}static parseObject(e,t,i){let s=El.parseString(e,t,i),r=El.parseValue(e,t+s.size,i-s.size),o=r.objectEnd;return{data:{name:s.data,value:r.data},size:s.size+r.size,objectEnd:o}}static parseVariable(e,t,i){return El.parseObject(e,t,i)}static parseString(e,t,i){let s,r=new DataView(e,t,i).getUint16(0,!Sl);return s=r>0?_l(new Uint8Array(e,t+2,r)):"",{data:s,size:2+r}}static parseLongString(e,t,i){let s,r=new DataView(e,t,i).getUint32(0,!Sl);return s=r>0?_l(new Uint8Array(e,t+4,r)):"",{data:s,size:4+r}}static parseDate(e,t,i){let s=new DataView(e,t,i),r=s.getFloat64(0,!Sl);return r+=60*s.getInt16(8,!Sl)*1e3,{data:new Date(r),size:10}}static parseValue(e,t,i){let s,r=new DataView(e,t,i),o=1,a=r.getUint8(0),n=!1;try{switch(a){case 0:s=r.getFloat64(1,!Sl),o+=8;break;case 1:s=!!r.getUint8(1),o+=1;break;case 2:{let r=El.parseString(e,t+1,i-1);s=r.data,o+=r.size;break}case 3:{s={};let a=0;for(9==(16777215&r.getUint32(i-4,!Sl))&&(a=3);o{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),se)}this.decoderWorker=new Worker(t),this._initDecoderWorker(),this._listenPlaybackEvents(),e.debugLog("decoderWorker",`init and decoder url is ${t}`),e.on(mt.visibilityChange,(()=>{this.updateWorkConfig({key:"visibility",value:e.visibility})}))}destroy(){return new Promise(((e,t)=>{if(this.player.loaded)if(this.player.debugLog("decoderWorker","has loaded and post message to destroy"),this.decoderWorker){const t={};this.player.isMseDecoderUseWorker()&&(t.isVideoInited=this.player.isMseVideoStateInited()),this.decoderWorker.postMessage({cmd:Je,options:t}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn("decoderWorker","send close but not response and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)}else this.player.debugWarn("decoderWorker","has loaded but decoderWorker is null and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0);else this.player.debugLog("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.debugLog("decoderWorker","destroy"),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.isDestroyed=!0}_listenPlaybackEvents(){this.player.isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender()&&(this.player.debugLog(this.TAG_NAME,"listenPlaybackEvents"),this.player.on(mt.playbackPause,(e=>{this.updatePlaybackIsPause(e)})))}_initDecoderWorker(){this.player,this.decoderWorker.onerror=e=>{const t=e.filename||"",i=e.message||"",s=t&&(-1!==t.indexOf(".wasm")||-1!==t.indexOf("wasm://"));s&&-1!==i.indexOf(lr)?this.player.debugLog("decoderWorker",`onerror and ignore filename: ${t},message: ${i}`,e):(this.player.debugError("decoderWorker",`onerror filename: ${t},message: ${i}`,e),s?this.player.emitError(At.decoderWorkerWasmError,`filename: ${t},message: ${i}`):this.player.emitError(At.decoderWorkerInitError,`filename: ${t},message: ${i}`))},this.decoderWorker.onmessageerror=e=>{this.player.debugError("decoderWorker","onmessageerror",e)},this.decoderWorker.onmessage=e=>{const t=e.data;switch(t.cmd){case ae:this.player.debugLog("decoderWorker","onmessage:",ae),this.decoderWorker&&this._initWork(),this.player.loaded||this.player.emit(mt.load),this.player.emit(mt.decoderWorkerInit);break;case fe:this.player.debugLog("decoderWorker","onmessage:",fe,t.code),this.player._times.decodeStart||(this.player._times.decodeStart=co()),this.player.video.updateVideoInfo({encTypeCode:t.code});break;case me:this.player.debugLog("decoderWorker","onmessage:",me,t.codecId),this.player.recorder&&this.player.recorder.initMetaData(t.buffer,t.codecId),this.player.video.updateVideoInfo({encTypeCode:t.codecId});break;case ce:this.player.debugLog("decoderWorker","onmessage:",ce,t.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:t.code});break;case pe:this.player.debugLog("decoderWorker","onmessage:",pe),this.player.recorder&&this.player.recorder.initAudioAacExtraData(t.buffer);break;case ne:if(this.player.debugLog("decoderWorker","onmessage:",ne,`width:${t.w},height:${t.h}`),Oo(t.w)||Oo(t.h))return void this.player.emitError(At.videoInfoError,`video width ${t.w} or height ${t.h} is empty`);if(this.player.video.bindMediaStream(),this.player.video.updateVideoInfo({width:t.w,height:t.h}),!this.player._opt.openWebglAlignment&&t.w/2%4!=0&&this.player.getRenderType()===$)return void this.player.emitError(At.webglAlignmentError);this.player.video.initCanvasViewSize(),this.player._opt.playType===_&&(this.player.video.initFps(),this.player.video.initVideoDelay());break;case he:if(this.player.debugLog("decoderWorker","onmessage:",he,`channels:${t.channels},sampleRate:${t.sampleRate}`),t.channels>2)return void this.player.emitError(At.audioChannelError,`audio channel is ${t.channels}, max is 2`);this.player.audio&&(this.player.audio.updateAudioInfo(t),this.player._opt.playType===b?this.player.audio.initScriptNode():this.player._opt.playType===_&&this.player.audio.initScriptNodeDelay());break;case le:if(!this.player.video)return void this.player.debugWarn("decoderWorker","onmessage render but video is null");if(this.player.isPlayer()){if(Ea(this.player.video.getHasInit()))return void this.player.debugWarn("decoderWorker","onmessage render but video has not init");this.player.video.render(t),this.player.handleRender(),this.player.emit(mt.timeUpdate,t.ts),this.player.updateStats({dfps:!0,buf:t.delay}),this.player._times.videoStart||(this.player._times.videoStart=co(),this.player.handlePlayToRenderTimes())}else this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),Ea(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData(t):this.player.video.render$2(t)):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender&&this.player.video.pushData(t));break;case ge:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.handleAddNaluTrack(t.buffer,t.isIFrame,t.ts,t.cts);break;case ue:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.isWasmMp4()&&this.player.recorder.handleAddAudioTrack(t.buffer,t.ts);break;case ye:const{webcodecsDecoder:e,mseDecoder:i}=this.player;this.player.updateStats({buf:t.delay});const s=new Uint8Array(t.payload);this.player._opt.useWCS&&!this.player._opt.useOffscreen?e.decodeVideo(s,t.ts,t.isIFrame,t.cts):this.player._opt.useMSE&&i.decodeVideo(s,t.ts,t.isIFrame,t.cts);break;case Ae:if(this.player._opt.useMSE){const e=new Uint8Array(t.payload);this.player.mseDecoder.decodeAudio(e,t.ts,t.cts)}break;case de:if(!this.player.audio)return void this.player.debugWarn("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===b||this.player._opt.playType===_&&(Ea(this.player.playbackPause)||this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender))&&this.player.audio.play(t.buffer,t.ts));break;case be:if(t.type===mt.streamSuccess)this.player.stream?this.player.stream.emit(mt.streamSuccess):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream success but stream is null");else if(t.type===mt.streamRate)this.player.emit(mt.kBps,(t.value/1024).toFixed(2));else if(t.type===mt.streamEnd)this.player?(t.value===f&&this.player.emit(mt.websocketClose,t.msg),this.player.stream?this.player.stream.emit(mt.streamEnd,t.msg):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream end but player.stream is null")):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream end but player is null");else if(t.type===mt.streamEndInner)this.player.updateStreamEndInner();else if(t.type===At.websocketError)this.player&&this.player.stream?this.player.stream.emit(At.websocketError,t.value):this.player.debugWarn("decoderWorker","onmessage and workerFetch response websocket error but stream is null");else if(t.type===At.fetchError)this.player&&this.player.stream?this.player.stream.emit(At.fetchError,t.value):this.player.debugWarn("decoderWorker","onmessage and workerFetch response fetch error but stream is null");else if(t.type===mt.streamAbps)this.player.updateStats({abps:t.value});else if(t.type===mt.streamVbps)this.player._times.demuxStart||(this.player._times.demuxStart=co()),this.player.updateStats({vbps:t.value});else if(t.type===mt.streamDts)this.player.updateStats({dts:t.value});else if(t.type===mt.netBuf)this.player.updateStats({netBuf:t.value});else if(t.type===mt.networkDelayTimeout)this.player.emit(mt.networkDelayTimeout,t.value);else if(t.type===mt.streamStats){const e=JSON.parse(t.value);this.player.updateStats({workerStats:e})}else t.type===mt.websocketOpen&&this.player.emit(mt.websocketOpen);break;case ve:this.player&&(this.player.videoIframeIntervalTs=t.value);break;case _e:this.player&&this.player.updateStats({isDropping:!0});break;case Be:this.player.decoderCheckFirstIFrame();break;case Ee:this.player&&this.player.video&&this.player.video.setStreamFps(t.value);break;case ke:this.player.emitError(At.simdH264DecodeVideoWidthIsTooLarge,t.value);break;case we:this.player.emitError(At.wasmWidthOrHeightChange,t.value);break;case Te:this.player.emitError(At.simdDecodeError);break;case Se:this.player.debugLog("decoderWorker","onmessage:",Se),this.player.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload();break;case Le:this.player.debugLog("decoderWorker","onmessage:",Le),this._destroy();break;case Ce:this.player&&this.player.pushTempStream(t.buffer);break;case De:this.player&&this.player.emitVideoSei({ts:t.ts,data:new Uint8Array(t.buffer)});break;case xe:if(this.player){if(this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addMetaData(e)}const e=wl(new Uint8Array(t.buffer));e&&e.onMetaData&&this.player.updateMetaData(e.onMetaData)}break;case Re:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addAACSequenceHeader(e,t.ts)}break;case Pe:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addVideoSequenceHeader(e,t.ts)}break;case Ie:if(this.player&&this.player.isRecordTypeFlv()&&this.player.recording){const e=new Uint8Array(t.buffer);t.type===Ne?this.player.recorder.addVideo(e,t.ts):t.type===Oe&&this.player.recorder.addAudio(e,t.ts)}break;case Me:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Me),this.player.video.$videoElement.srcObject=t.mseHandle);break;case Fe:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Fe,t.value),this.player._mseWorkerData.firstRenderTime=Number(t.value));break;case Ue:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Ue,t.value,t.msg),this.player.emitError(t.value,t.msg));break;default:this.player[t.cmd]&&this.player[t.cmd](t)}}}_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||Dr,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,isSm4CryptoH265V2:this.player._opt.isSm4CryptoH265V2,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:ia(),isFirefox:So(),supportMSEDecodeHevc:Io(),isDropSameTimestampGop:this.player._opt.isDropSameTimestampGop,mseDecodeAudio:this.player._opt.mseDecodeAudio,wcsDecodeAudio:this.player._opt.wcsDecodeAudio,nakedFlowH265DemuxUseNew:this.player._opt.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:this.player._opt.mseDecoderUseWorker,mseAutoCleanupMinBackwardDuration:this.player._opt.mseAutoCleanupMinBackwardDuration,mseAutoCleanupMaxBackwardDuration:this.player._opt.mseAutoCleanupMaxBackwardDuration,mseCorrectTimeDuration:this.player._opt.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:this.player._opt.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:this.player._opt.nakedFlowDemuxUseNew,nakedFlowFps:this.player._opt.nakedFlowFps,checkStreamEnd:this.player._opt.checkStreamEnd};this.decoderWorker.postMessage({cmd:We,opt:JSON.stringify(e)}),this.player._opt.cryptoKey&&this.player._opt.cryptoKey.byteLength>0&&this.player._opt.cryptoIV&&this.player._opt.cryptoIV.byteLength>0&&(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===b?this.player.isUseHls265()?this._decodeVideoNoDelay(e,t,i):this._decodeVideo(e,t,i):this.player._opt.playType===_&&(this.player.isPlaybackOnlyDecodeIFrame()?i&&(this.player.debugLog("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 s={type:Ne,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:Ve,buffer:e,options:s},[e.buffer])}_decodeVideoNoDelay(e,t,i){this.decoderWorker.postMessage({cmd:He,buffer:e,ts:Math.max(t,0),isIFrame:i},[e.buffer])}decodeAudio(e,t){this.player._opt.playType===b?this.player._opt.useWCS||this.player._opt.useMSE||this.player.isUseHls265()?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t):this.player._opt.playType===_&&(this.player.isPlaybackOnlyDecodeIFrame()||(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:Ve,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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{_opt:i}=this.player;let s=[];t.protocols&&(s=t.protocols,delete t.protocols);const r={protocol:i.protocol,isFlv:i.isFlv,isFmp4:i.isFmp4,isMpeg4:i.isMpeg4,isNakedFlow:i.isNakedFlow,isTs:i.isTs,options:t};this.decoderWorker.postMessage({cmd:Ye,url:e,protocols:s,opt:JSON.stringify(r)})}clearWorkBuffer(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.decoderWorker.postMessage({cmd:Ke,needClear:e})}workerSendMessage(e){this.decoderWorker.postMessage({cmd:Qe,message:e})}updateVideoTimestamp(e){this.decoderWorker.postMessage({cmd:Xe,message:e})}updatePlaybackIsPause(e){this.decoderWorker.postMessage({cmd:Ze,isPause:e})}}var kl,Ll="application/json, text/javascript",Cl="text/html",Dl=/^(?:text|application)\/xml/i,xl=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Rl=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Pl=/^\s*$/,Il={},Bl={},Ml="",Fl={type:"GET",beforeSend:Ul,success:Ul,error:Ul,complete:Ul,context:null,xhr:function(){return new window.XMLHttpRequest},accepts:{json:Ll,xml:"application/xml, text/xml",html:Cl,text:"text/plain","*":"*/".concat("*")},crossDomain:!1,timeout:0,username:null,password:null,processData:!0,promise:Ul,contentType:"application/x-www-form-urlencoded; charset=UTF-8"};function Ul(){}var Ol=function(e,t){"object"==typeof e&&(t=e,e=void 0);var i=Hl({},t=t||{});for(var s in Fl)void 0===i[s]&&(i[s]=Fl[s]);try{var r={},o=new Promise((function(e,t){r.resolve=e,r.reject=t}));o.resolve=r.resolve,o.reject=r.reject,i.promise=o}catch(e){i.promise={resolve:Ul,reject:Ul}}var a=Rl.exec(window.location.href.toLowerCase())||[];i.url=((e||i.url||window.location.href)+"").replace(/#.*$/,"").replace(/^\/\//,a[1]+"//");var n=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=Wl(i.url,d)}return function(e){var t,i=e.jsonpCallback||"jsonp"+Kl(),s=window.document.createElement("script"),r={abort:function(){i in window&&(window[i]=Ul)}},o=window.document.getElementsByTagName("head")[0]||window.document.documentElement;function a(i){window.clearTimeout(t),r.abort(),Gl(i.type,r,i.type,e),n()}s.onerror=function(e){a(e)},window[i]=function(i){window.clearTimeout(t),Nl(i,r,e),n()},Vl(e),s.src=e.url.replace(/=\?/,"="+i),s.src=Wl(s.src,"_="+(new Date).getTime()),s.async=!0,e.scriptCharset&&(s.charset=e.scriptCharset);o.insertBefore(s,o.firstChild),e.timeout>0&&(t=window.setTimeout((function(){r.abort(),Gl("timeout",r,"timeout",e),n()}),e.timeout));function n(){s.clearAttributes?s.clearAttributes():s.onload=s.onreadystatechange=s.onerror=null,s.parentNode&&s.parentNode.removeChild(s),s=null,delete window[i]}return e.promise.abort=function(){r.abort()},e.promise.xhr=r,e.promise}(i)}Vl(i);var h=i.accepts[l]||i.accepts["*"],c={};/^([\w-]+:)\/\//.test(i.url)?RegExp.$1:window.location.protocol;var u,p=Fl.xhr();i.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest"),i.ifModified&&(Il[n]&&(c["If-Modified-Since"]=Il[n]),Bl[n]&&(c["If-None-Match"]=Bl[n])),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(n)?n.replace(m,"$1_="+Kl()):n+(/\?/.test(n)?"&":"?")+"_="+Kl()}i.headers=Hl(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(Ml=p.getAllResponseHeaders(),i.ifModified){var s=zl("Last-Modified");s&&(Il[n]=s),(s=zl("etag"))&&(Bl[n]=s)}l=l||function(e){return e&&(e===Cl?"html":e===Ll?"json":Dl.test(e)&&"xml")||"text"}(p.getResponseHeader("content-type")),e=p.responseText;try{"xml"===l?e=p.responseXML:"json"===l&&(e=Pl.test(e)?null:JSON.parse(e))}catch(e){t=e}t?Gl(t,"parseerror",p,i):Nl(e,p,i)}else Gl(null,"error",p,i)}};var g=!("async"in i)||i.async;if(p.open(i.type,i.url,g,i.username,i.password),i.xhrFields)for(var y in i.xhrFields)p[y]=i.xhrFields[y];for(var y in i.mimeType&&p.overrideMimeType&&p.overrideMimeType(i.mimeType),i.headers)void 0!==i.headers[y]&&p.setRequestHeader(y,i.headers[y]+"");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=Ul,p.abort(),Gl(null,"timeout",p,i)}),i.timeout)),p.send(i.data?i.data:null),i.promise.abort=function(){p.abort()},i.promise)};function Nl(e,t,i){var s=i.context,r="success";i.success.call(s,e,r,t),i.promise.resolve(e,r,t),jl(r,t,i)}function jl(e,t,i){var s=i.context;i.complete.call(s,t,e)}function Gl(e,t,i,s){var r=s.context;s.error.call(r,i,t,e),s.promise.reject(i,t,e),jl(t,i,s)}function zl(e){var t;if(!kl){for(kl={};t=xl.exec(Ml);)kl[t[1].toLowerCase()]=t[2];t=kl[e.toLowerCase()]}return null===t?null:t}function Wl(e,t){return(e+"&"+t).replace(/[&?]{1,2}/,"?")}function Vl(e){!Jl(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))},$l(i,e,t),i.join("&").replace("%20","+")}(e.data)),!e.data||e.type&&"GET"!==e.type.toUpperCase()||(e.url=Wl(e.url,e.data))}function $l(e,t,i,s){var r=function(e){return"[object Array]"===Object.prototype.toString.call(e)}(t);for(var o in t){var a=t[o];s&&(o=i?s:s+"["+(r?"":o)+"]"),!s&&r?e.add(a.name,a.value):(i?r(a):Jl(a))?$l(e,a,i,o):e.add(o,a)}}function Hl(e){for(var t=Array.prototype.slice,i=t.call(arguments,1),s=0,r=i.length;s255)return!1;return!0}function Xl(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(!Ql(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Yl(e.length)&&Ql(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Zl(e){return new Uint8Array(e)}function ed(e,t,i,s,r){null==s&&null==r||(e=e.slice?e.slice(s,r):Array.prototype.slice.call(e,s,r)),t.set(e,i)}Ol.get=function(e,t,i,s){return ql(t)&&(s=s||i,i=t,t=void 0),Ol({url:e,data:t,success:i,dataType:s})},Ol.post=function(e,t,i,s){return ql(t)&&(s=s||i,i=t,t=void 0),Ol({type:"POST",url:e,data:t,success:i,dataType:s})},Ol.getJSON=function(e,t,i){return ql(t)&&(i=t,t=void 0),Ol({url:e,data:t,success:i,dataType:"json"})},Ol.ajaxSetup=function(e,t){return t?Hl(Hl(e,Fl),t):Hl(Fl,e)};var td={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&s<224?(t.push(String.fromCharCode((31&s)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&s)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},id=function(){var e="0123456789abcdef";return{toBytes:function(e){for(var t=[],i=0;i>4]+e[15&r])}return i.join("")}}}(),sd={16:10,24:12,32:14},rd=[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],od=[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],ad=[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],nd=[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],ld=[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],dd=[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],hd=[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],cd=[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],ud=[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],pd=[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],fd=[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],md=[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],gd=[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],yd=[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],Ad=[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 bd(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=o[t],this._Kd[e-i][t%4]=o[t];for(var a,n=0,l=r;l>16&255]<<24^od[a>>8&255]<<16^od[255&a]<<8^od[a>>24&255]^rd[n]<<24,n+=1,8!=r)for(t=1;t>8&255]<<8^od[a>>16&255]<<16^od[a>>24&255]<<24;for(t=r/2+1;t>2,h=l%4,this._Ke[d][h]=o[t],this._Kd[e-d][h]=o[t++],l++}for(var d=1;d>24&255]^gd[a>>16&255]^yd[a>>8&255]^Ad[255&a]},vd.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],s=bd(e),r=0;r<4;r++)s[r]^=this._Ke[0][r];for(var o=1;o>24&255]^ld[s[(r+1)%4]>>16&255]^dd[s[(r+2)%4]>>8&255]^hd[255&s[(r+3)%4]]^this._Ke[o][r];s=i.slice()}var a,n=Zl(16);for(r=0;r<4;r++)a=this._Ke[t][r],n[4*r]=255&(od[s[r]>>24&255]^a>>24),n[4*r+1]=255&(od[s[(r+1)%4]>>16&255]^a>>16),n[4*r+2]=255&(od[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(od[255&s[(r+3)%4]]^a);return n},vd.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],s=bd(e),r=0;r<4;r++)s[r]^=this._Kd[0][r];for(var o=1;o>24&255]^ud[s[(r+3)%4]>>16&255]^pd[s[(r+2)%4]>>8&255]^fd[255&s[(r+1)%4]]^this._Kd[o][r];s=i.slice()}var a,n=Zl(16);for(r=0;r<4;r++)a=this._Kd[t][r],n[4*r]=255&(ad[s[r]>>24&255]^a>>24),n[4*r+1]=255&(ad[s[(r+3)%4]>>16&255]^a>>16),n[4*r+2]=255&(ad[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(ad[255&s[(r+1)%4]]^a);return n};var _d=function(e){if(!(this instanceof _d))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new vd(e)};_d.prototype.encrypt=function(e){if((e=Xl(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Zl(e.length),i=Zl(16),s=0;sNumber.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)},Td.prototype.setBytes=function(e){if(16!=(e=Xl(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Td.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var kd=function(e,t){if(!(this instanceof kd))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Td||(t=new Td(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new vd(e)};kd.prototype.encrypt=function(e){for(var t=Xl(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,s=0;s>>2]>>>24-o%4*8&255;t[s+o>>>2]|=a<<24-(s+o)%4*8}else for(var n=0;n>>2]=i[n>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,i=this.sigBytes;t[i>>>2]&=4294967295<<32-i%4*8,t.length=e.ceil(i/4)},clone:function(){var e=l.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],i=0;i>>2]>>>24-r%4*8&255;s.push((o>>>4).toString(16)),s.push((15&o).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new d.init(i,t/2)}},u=h.Latin1={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>24-r%4*8&255;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new d.init(i,t)}},p=h.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},f=n.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new d.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var i,s=this._data,r=s.words,o=s.sigBytes,a=this.blockSize,n=o/(4*a),l=(n=t?e.ceil(n):e.max((0|n)-this._minBufferSize,0))*a,h=e.min(4*l,o);if(l){for(var c=0;c>>2]|=e[r]<<24-r%4*8;t.call(this,s,i)}else t.apply(this,arguments)};s.prototype=e}}(),i.lib.WordArray)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(){var e=i,t=e.lib.WordArray,s=e.enc;function r(e){return e<<8&4278255360|e>>>8&16711935}s.Utf16=s.Utf16BE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>16-r%4*8&65535;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var i=e.length,s=[],r=0;r>>1]|=e.charCodeAt(r)<<16-r%2*16;return t.create(s,2*i)}},s.Utf16LE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],o=0;o>>2]>>>16-o%4*8&65535);s.push(String.fromCharCode(a))}return s.join("")},parse:function(e){for(var i=e.length,s=[],o=0;o>>1]|=r(e.charCodeAt(o)<<16-o%2*16);return t.create(s,2*i)}}}(),i.enc.Utf16)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(){var e=i,t=e.lib.WordArray;function s(e,i,s){for(var r=[],o=0,a=0;a>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64={stringify:function(e){var t=e.words,i=e.sigBytes,s=this._map;e.clamp();for(var r=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,n=0;n<4&&o+.75*n>>6*(3-n)&63));var l=s.charAt(64);if(l)for(;r.length%4;)r.push(l);return r.join("")},parse:function(e){var t=e.length,i=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var o=0;o>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var i=e.words,s=e.sigBytes,r=t?this._safe_map:this._map;e.clamp();for(var o=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(i[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|i[a+2>>>2]>>>24-(a+2)%4*8&255,l=0;l<4&&a+.75*l>>6*(3-l)&63));var d=r.charAt(64);if(d)for(;o.length%4;)o.push(d);return o.join("")},parse:function(e,t){void 0===t&&(t=!0);var i=e.length,r=t?this._safe_map:this._map,o=this._reverseMap;if(!o){o=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(r<<24|r>>>8)}var o=this._hash.words,a=e[t+0],l=e[t+1],p=e[t+2],f=e[t+3],m=e[t+4],g=e[t+5],y=e[t+6],A=e[t+7],b=e[t+8],v=e[t+9],_=e[t+10],S=e[t+11],E=e[t+12],w=e[t+13],T=e[t+14],k=e[t+15],L=o[0],C=o[1],D=o[2],x=o[3];L=d(L,C,D,x,a,7,n[0]),x=d(x,L,C,D,l,12,n[1]),D=d(D,x,L,C,p,17,n[2]),C=d(C,D,x,L,f,22,n[3]),L=d(L,C,D,x,m,7,n[4]),x=d(x,L,C,D,g,12,n[5]),D=d(D,x,L,C,y,17,n[6]),C=d(C,D,x,L,A,22,n[7]),L=d(L,C,D,x,b,7,n[8]),x=d(x,L,C,D,v,12,n[9]),D=d(D,x,L,C,_,17,n[10]),C=d(C,D,x,L,S,22,n[11]),L=d(L,C,D,x,E,7,n[12]),x=d(x,L,C,D,w,12,n[13]),D=d(D,x,L,C,T,17,n[14]),L=h(L,C=d(C,D,x,L,k,22,n[15]),D,x,l,5,n[16]),x=h(x,L,C,D,y,9,n[17]),D=h(D,x,L,C,S,14,n[18]),C=h(C,D,x,L,a,20,n[19]),L=h(L,C,D,x,g,5,n[20]),x=h(x,L,C,D,_,9,n[21]),D=h(D,x,L,C,k,14,n[22]),C=h(C,D,x,L,m,20,n[23]),L=h(L,C,D,x,v,5,n[24]),x=h(x,L,C,D,T,9,n[25]),D=h(D,x,L,C,f,14,n[26]),C=h(C,D,x,L,b,20,n[27]),L=h(L,C,D,x,w,5,n[28]),x=h(x,L,C,D,p,9,n[29]),D=h(D,x,L,C,A,14,n[30]),L=c(L,C=h(C,D,x,L,E,20,n[31]),D,x,g,4,n[32]),x=c(x,L,C,D,b,11,n[33]),D=c(D,x,L,C,S,16,n[34]),C=c(C,D,x,L,T,23,n[35]),L=c(L,C,D,x,l,4,n[36]),x=c(x,L,C,D,m,11,n[37]),D=c(D,x,L,C,A,16,n[38]),C=c(C,D,x,L,_,23,n[39]),L=c(L,C,D,x,w,4,n[40]),x=c(x,L,C,D,a,11,n[41]),D=c(D,x,L,C,f,16,n[42]),C=c(C,D,x,L,y,23,n[43]),L=c(L,C,D,x,v,4,n[44]),x=c(x,L,C,D,E,11,n[45]),D=c(D,x,L,C,k,16,n[46]),L=u(L,C=c(C,D,x,L,p,23,n[47]),D,x,a,6,n[48]),x=u(x,L,C,D,A,10,n[49]),D=u(D,x,L,C,T,15,n[50]),C=u(C,D,x,L,g,21,n[51]),L=u(L,C,D,x,E,6,n[52]),x=u(x,L,C,D,f,10,n[53]),D=u(D,x,L,C,_,15,n[54]),C=u(C,D,x,L,l,21,n[55]),L=u(L,C,D,x,b,6,n[56]),x=u(x,L,C,D,k,10,n[57]),D=u(D,x,L,C,y,15,n[58]),C=u(C,D,x,L,w,21,n[59]),L=u(L,C,D,x,m,6,n[60]),x=u(x,L,C,D,S,10,n[61]),D=u(D,x,L,C,p,15,n[62]),C=u(C,D,x,L,v,21,n[63]),o[0]=o[0]+L|0,o[1]=o[1]+C|0,o[2]=o[2]+D|0,o[3]=o[3]+x|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;i[r>>>5]|=128<<24-r%32;var o=e.floor(s/4294967296),a=s;i[15+(r+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),i[14+(r+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(i.length+1),this._process();for(var n=this._hash,l=n.words,d=0;d<4;d++){var h=l[d];l[d]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return n},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function d(e,t,i,s,r,o,a){var n=e+(t&i|~t&s)+r+a;return(n<>>32-o)+t}function h(e,t,i,s,r,o,a){var n=e+(t&s|i&~s)+r+a;return(n<>>32-o)+t}function c(e,t,i,s,r,o,a){var n=e+(t^i^s)+r+a;return(n<>>32-o)+t}function u(e,t,i,s,r,o,a){var n=e+(i^(t|~s))+r+a;return(n<>>32-o)+t}t.MD5=o._createHelper(l),t.HmacMD5=o._createHmacHelper(l)}(Math),i.MD5)})),Fr((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=Cd).lib,r=s.WordArray,o=s.Hasher,a=i.algo,n=[],l=a.SHA1=o.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],d=0;d<80;d++){if(d<16)n[d]=0|e[t+d];else{var h=n[d-3]^n[d-8]^n[d-14]^n[d-16];n[d]=h<<1|h>>>31}var c=(s<<5|s>>>27)+l+n[d];c+=d<20?1518500249+(r&o|~r&a):d<40?1859775393+(r^o^a):d<60?(r&o|r&a|o&a)-1894007588:(r^o^a)-899497514,l=a,a=o,o=r<<30|r>>>2,r=s,s=c}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+l|0},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=Math.floor(i/4294967296),t[15+(s+64>>>9<<4)]=i,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=o._createHelper(l),i.HmacSHA1=o._createHmacHelper(l),d.SHA1)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=[],l=[];!function(){function t(t){for(var i=e.sqrt(t),s=2;s<=i;s++)if(!(t%s))return!1;return!0}function i(e){return 4294967296*(e-(0|e))|0}for(var s=2,r=0;r<64;)t(s)&&(r<8&&(n[r]=i(e.pow(s,.5))),l[r]=i(e.pow(s,1/3)),r++),s++}();var d=[],h=a.SHA256=o.extend({_doReset:function(){this._hash=new r.init(n.slice(0))},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=0;p<64;p++){if(p<16)d[p]=0|e[t+p];else{var f=d[p-15],m=(f<<25|f>>>7)^(f<<14|f>>>18)^f>>>3,g=d[p-2],y=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;d[p]=m+d[p-7]+y+d[p-16]}var A=s&r^s&o^r&o,b=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),v=u+((n<<26|n>>>6)^(n<<21|n>>>11)^(n<<7|n>>>25))+(n&h^~n&c)+l[p]+d[p];u=c,c=h,h=n,n=a+v|0,a=o,o=r,r=s,s=v+(b+A)|0}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+n|0,i[5]=i[5]+h|0,i[6]=i[6]+c|0,i[7]=i[7]+u|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;return i[r>>>5]|=128<<24-r%32,i[14+(r+64>>>9<<4)]=e.floor(s/4294967296),i[15+(r+64>>>9<<4)]=s,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(h),t.HmacSHA256=o._createHmacHelper(h)}(Math),i.SHA256)})),Fr((function(e,t){var i,s,r,o,a,n;e.exports=(s=(i=n=Cd).lib.WordArray,r=i.algo,o=r.SHA256,a=r.SHA224=o.extend({_doReset:function(){this._hash=new s.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=o._createHelper(a),i.HmacSHA224=o._createHmacHelper(a),n.SHA224)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(){var e=i,t=e.lib.Hasher,s=e.x64,r=s.Word,o=s.WordArray,a=e.algo;function n(){return r.create.apply(r,arguments)}var l=[n(1116352408,3609767458),n(1899447441,602891725),n(3049323471,3964484399),n(3921009573,2173295548),n(961987163,4081628472),n(1508970993,3053834265),n(2453635748,2937671579),n(2870763221,3664609560),n(3624381080,2734883394),n(310598401,1164996542),n(607225278,1323610764),n(1426881987,3590304994),n(1925078388,4068182383),n(2162078206,991336113),n(2614888103,633803317),n(3248222580,3479774868),n(3835390401,2666613458),n(4022224774,944711139),n(264347078,2341262773),n(604807628,2007800933),n(770255983,1495990901),n(1249150122,1856431235),n(1555081692,3175218132),n(1996064986,2198950837),n(2554220882,3999719339),n(2821834349,766784016),n(2952996808,2566594879),n(3210313671,3203337956),n(3336571891,1034457026),n(3584528711,2466948901),n(113926993,3758326383),n(338241895,168717936),n(666307205,1188179964),n(773529912,1546045734),n(1294757372,1522805485),n(1396182291,2643833823),n(1695183700,2343527390),n(1986661051,1014477480),n(2177026350,1206759142),n(2456956037,344077627),n(2730485921,1290863460),n(2820302411,3158454273),n(3259730800,3505952657),n(3345764771,106217008),n(3516065817,3606008344),n(3600352804,1432725776),n(4094571909,1467031594),n(275423344,851169720),n(430227734,3100823752),n(506948616,1363258195),n(659060556,3750685593),n(883997877,3785050280),n(958139571,3318307427),n(1322822218,3812723403),n(1537002063,2003034995),n(1747873779,3602036899),n(1955562222,1575990012),n(2024104815,1125592928),n(2227730452,2716904306),n(2361852424,442776044),n(2428436474,593698344),n(2756734187,3733110249),n(3204031479,2999351573),n(3329325298,3815920427),n(3391569614,3928383900),n(3515267271,566280711),n(3940187606,3454069534),n(4118630271,4000239992),n(116418474,1914138554),n(174292421,2731055270),n(289380356,3203993006),n(460393269,320620315),n(685471733,587496836),n(852142971,1086792851),n(1017036298,365543100),n(1126000580,2618297676),n(1288033470,3409855158),n(1501505948,4234509866),n(1607167915,987167468),n(1816402316,1246189591)],d=[];!function(){for(var e=0;e<80;e++)d[e]=n()}();var h=a.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=s.high,f=s.low,m=r.high,g=r.low,y=o.high,A=o.low,b=a.high,v=a.low,_=n.high,S=n.low,E=h.high,w=h.low,T=c.high,k=c.low,L=u.high,C=u.low,D=p,x=f,R=m,P=g,I=y,B=A,M=b,F=v,U=_,O=S,N=E,j=w,G=T,z=k,W=L,V=C,$=0;$<80;$++){var H,J,q=d[$];if($<16)J=q.high=0|e[t+2*$],H=q.low=0|e[t+2*$+1];else{var K=d[$-15],Y=K.high,Q=K.low,X=(Y>>>1|Q<<31)^(Y>>>8|Q<<24)^Y>>>7,Z=(Q>>>1|Y<<31)^(Q>>>8|Y<<24)^(Q>>>7|Y<<25),ee=d[$-2],te=ee.high,ie=ee.low,se=(te>>>19|ie<<13)^(te<<3|ie>>>29)^te>>>6,re=(ie>>>19|te<<13)^(ie<<3|te>>>29)^(ie>>>6|te<<26),oe=d[$-7],ae=oe.high,ne=oe.low,le=d[$-16],de=le.high,he=le.low;J=(J=(J=X+ae+((H=Z+ne)>>>0>>0?1:0))+se+((H+=re)>>>0>>0?1:0))+de+((H+=he)>>>0>>0?1:0),q.high=J,q.low=H}var ce,ue=U&N^~U&G,pe=O&j^~O&z,fe=D&R^D&I^R&I,me=x&P^x&B^P&B,ge=(D>>>28|x<<4)^(D<<30|x>>>2)^(D<<25|x>>>7),ye=(x>>>28|D<<4)^(x<<30|D>>>2)^(x<<25|D>>>7),Ae=(U>>>14|O<<18)^(U>>>18|O<<14)^(U<<23|O>>>9),be=(O>>>14|U<<18)^(O>>>18|U<<14)^(O<<23|U>>>9),ve=l[$],_e=ve.high,Se=ve.low,Ee=W+Ae+((ce=V+be)>>>0>>0?1:0),we=ye+me;W=G,V=z,G=N,z=j,N=U,j=O,U=M+(Ee=(Ee=(Ee=Ee+ue+((ce+=pe)>>>0>>0?1:0))+_e+((ce+=Se)>>>0>>0?1:0))+J+((ce+=H)>>>0>>0?1:0))+((O=F+ce|0)>>>0>>0?1:0)|0,M=I,F=B,I=R,B=P,R=D,P=x,D=Ee+(ge+fe+(we>>>0>>0?1:0))+((x=ce+we|0)>>>0>>0?1:0)|0}f=s.low=f+x,s.high=p+D+(f>>>0>>0?1:0),g=r.low=g+P,r.high=m+R+(g>>>0

    >>0?1:0),A=o.low=A+B,o.high=y+I+(A>>>0>>0?1:0),v=a.low=v+F,a.high=b+M+(v>>>0>>0?1:0),S=n.low=S+O,n.high=_+U+(S>>>0>>0?1:0),w=h.low=w+j,h.high=E+N+(w>>>0>>0?1:0),k=c.low=k+z,c.high=T+G+(k>>>0>>0?1:0),C=u.low=C+V,u.high=L+W+(C>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[30+(s+128>>>10<<5)]=Math.floor(i/4294967296),t[31+(s+128>>>10<<5)]=i,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(h),e.HmacSHA512=t._createHmacHelper(h)}(),i.SHA512)})),Fr((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=Cd).x64,r=s.Word,o=s.WordArray,a=i.algo,n=a.SHA512,l=a.SHA384=n.extend({_doReset:function(){this._hash=new o.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=n._createHelper(l),i.HmacSHA384=n._createHmacHelper(l),d.SHA384)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.x64.Word,n=t.algo,l=[],d=[],h=[];!function(){for(var e=1,t=0,i=0;i<24;i++){l[e+5*t]=(i+1)*(i+2)/2%64;var s=(2*e+3*t)%5;e=t%5,t=s}for(e=0;e<5;e++)for(t=0;t<5;t++)d[e+5*t]=t+(2*e+3*t)%5*5;for(var r=1,o=0;o<24;o++){for(var n=0,c=0,u=0;u<7;u++){if(1&r){var p=(1<>>24)|4278255360&(o<<24|o>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(C=i[r]).high^=a,C.low^=o}for(var n=0;n<24;n++){for(var u=0;u<5;u++){for(var p=0,f=0,m=0;m<5;m++)p^=(C=i[u+5*m]).high,f^=C.low;var g=c[u];g.high=p,g.low=f}for(u=0;u<5;u++){var y=c[(u+4)%5],A=c[(u+1)%5],b=A.high,v=A.low;for(p=y.high^(b<<1|v>>>31),f=y.low^(v<<1|b>>>31),m=0;m<5;m++)(C=i[u+5*m]).high^=p,C.low^=f}for(var _=1;_<25;_++){var S=(C=i[_]).high,E=C.low,w=l[_];w<32?(p=S<>>32-w,f=E<>>32-w):(p=E<>>64-w,f=S<>>64-w);var T=c[d[_]];T.high=p,T.low=f}var k=c[0],L=i[0];for(k.high=L.high,k.low=L.low,u=0;u<5;u++)for(m=0;m<5;m++){var C=i[_=u+5*m],D=c[_],x=c[(u+1)%5+5*m],R=c[(u+2)%5+5*m];C.high=D.high^~x.high&R.high,C.low=D.low^~x.low&R.low}C=i[0];var P=h[n];C.high^=P.high,C.low^=P.low}},_doFinalize:function(){var t=this._data,i=t.words;this._nDataBytes;var s=8*t.sigBytes,o=32*this.blockSize;i[s>>>5]|=1<<24-s%32,i[(e.ceil((s+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var a=this._state,n=this.cfg.outputLength/8,l=n/8,d=[],h=0;h>>24)|4278255360&(u<<24|u>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),d.push(p),d.push(u)}return new r.init(d,n)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),i=0;i<25;i++)t[i]=t[i].clone();return e}});t.SHA3=o._createHelper(u),t.HmacSHA3=o._createHmacHelper(u)}(Math),i.SHA3)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=r.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),l=r.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),d=r.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),h=r.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=r.create([0,1518500249,1859775393,2400959708,2840853838]),u=r.create([1352829926,1548603684,1836072691,2053994217,0]),p=a.RIPEMD160=o.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=0;i<16;i++){var s=t+i,r=e[s];e[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var o,a,p,v,_,S,E,w,T,k,L,C=this._hash.words,D=c.words,x=u.words,R=n.words,P=l.words,I=d.words,B=h.words;for(S=o=C[0],E=a=C[1],w=p=C[2],T=v=C[3],k=_=C[4],i=0;i<80;i+=1)L=o+e[t+R[i]]|0,L+=i<16?f(a,p,v)+D[0]:i<32?m(a,p,v)+D[1]:i<48?g(a,p,v)+D[2]:i<64?y(a,p,v)+D[3]:A(a,p,v)+D[4],L=(L=b(L|=0,I[i]))+_|0,o=_,_=v,v=b(p,10),p=a,a=L,L=S+e[t+P[i]]|0,L+=i<16?A(E,w,T)+x[0]:i<32?y(E,w,T)+x[1]:i<48?g(E,w,T)+x[2]:i<64?m(E,w,T)+x[3]:f(E,w,T)+x[4],L=(L=b(L|=0,B[i]))+k|0,S=k,k=T,T=b(w,10),w=E,E=L;L=C[1]+p+T|0,C[1]=C[2]+v+k|0,C[2]=C[3]+_+S|0,C[3]=C[4]+o+E|0,C[4]=C[0]+a+w|0,C[0]=L},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e.sigBytes=4*(t.length+1),this._process();for(var r=this._hash,o=r.words,a=0;a<5;a++){var n=o[a];o[a]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}return r},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function f(e,t,i){return e^t^i}function m(e,t,i){return e&t|~e&i}function g(e,t,i){return(e|~t)^i}function y(e,t,i){return e&i|t&~i}function A(e,t,i){return e^(t|~i)}function b(e,t){return e<>>32-t}t.RIPEMD160=o._createHelper(p),t.HmacRIPEMD160=o._createHmacHelper(p)}(),i.RIPEMD160)})),Fr((function(e,t){var i,s,r;e.exports=(s=(i=Cd).lib.Base,r=i.enc.Utf8,void(i.algo.HMAC=s.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=r.parse(t));var i=e.blockSize,s=4*i;t.sigBytes>s&&(t=e.finalize(t)),t.clamp();for(var o=this._oKey=t.clone(),a=this._iKey=t.clone(),n=o.words,l=a.words,d=0;d>>2];e.sigBytes-=t}};s.BlockCipher=h.extend({cfg:h.cfg.extend({mode:p,padding:f}),reset:function(){var e;h.reset.call(this);var t=this.cfg,i=t.iv,s=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=s.createEncryptor:(e=s.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,i&&i.words):(this._mode=e.call(s,this,i&&i.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=s.CipherParams=r.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),g=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,i=e.salt;return(i?o.create([1398893684,1701076831]).concat(i).concat(t):t).toString(l)},parse:function(e){var t,i=l.parse(e),s=i.words;return 1398893684==s[0]&&1701076831==s[1]&&(t=o.create(s.slice(2,4)),s.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:t})}},y=s.SerializableCipher=r.extend({cfg:r.extend({format:g}),encrypt:function(e,t,i,s){s=this.cfg.extend(s);var r=e.createEncryptor(i,s),o=r.finalize(t),a=r.cfg;return m.create({ciphertext:o,key:i,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:s.format})},decrypt:function(e,t,i,s){return s=this.cfg.extend(s),t=this._parse(t,s.format),e.createDecryptor(i,s).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),A=(t.kdf={}).OpenSSL={execute:function(e,t,i,s,r){if(s||(s=o.random(8)),r)a=d.create({keySize:t+i,hasher:r}).compute(e,s);else var a=d.create({keySize:t+i}).compute(e,s);var n=o.create(a.words.slice(t),4*i);return a.sigBytes=4*t,m.create({key:a,iv:n,salt:s})}},b=s.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:A}),encrypt:function(e,t,i,s){var r=(s=this.cfg.extend(s)).kdf.execute(i,e.keySize,e.ivSize,s.salt,s.hasher);s.iv=r.iv;var o=y.encrypt.call(this,e,t,r.key,s);return o.mixIn(r),o},decrypt:function(e,t,i,s){s=this.cfg.extend(s),t=this._parse(t,s.format);var r=s.kdf.execute(i,e.keySize,e.ivSize,t.salt,s.hasher);return s.iv=r.iv,y.decrypt.call(this,e,t,r.key,s)}})}())})),Fr((function(e,t){var i;e.exports=((i=Cd).mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,i,s){var r,o=this._iv;o?(r=o.slice(0),this._iv=void 0):r=this._prevBlock,s.encryptBlock(r,0);for(var a=0;a>24&255)){var t=e>>16&255,i=e>>8&255,s=255&e;255===t?(t=0,255===i?(i=0,255===s?s=0:++s):++i):++t,e=0,e+=t<<16,e+=i<<8,e+=s}else e+=1<<24;return e}function s(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var r=e.Encryptor=e.extend({processBlock:function(e,t){var i=this._cipher,r=i.blockSize,o=this._iv,a=this._counter;o&&(a=this._counter=o.slice(0),this._iv=void 0),s(a);var n=a.slice(0);i.encryptBlock(n,0);for(var l=0;l>>2]|=r<<24-o%4*8,e.sigBytes+=r},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)})),Fr((function(e,t){var i;e.exports=((i=Cd).pad.Iso10126={pad:function(e,t){var s=4*t,r=s-e.sigBytes%s;e.concat(i.lib.WordArray.random(r-1)).concat(i.lib.WordArray.create([r<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)})),Fr((function(e,t){var i;e.exports=((i=Cd).pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)})),Fr((function(e,t){var i;e.exports=((i=Cd).pad.ZeroPadding={pad:function(e,t){var i=4*t;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){var t=e.words,i=e.sigBytes-1;for(i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},i.pad.ZeroPadding)})),Fr((function(e,t){var i;e.exports=((i=Cd).pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(e){var t=i,s=t.lib.CipherParams,r=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(r)},parse:function(e){var t=r.parse(e);return s.create({ciphertext:t})}}}(),i.format.Hex)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo,r=[],o=[],a=[],n=[],l=[],d=[],h=[],c=[],u=[],p=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var i=0,s=0;for(t=0;t<256;t++){var f=s^s<<1^s<<2^s<<3^s<<4;f=f>>>8^255&f^99,r[i]=f,o[f]=i;var m=e[i],g=e[m],y=e[g],A=257*e[f]^16843008*f;a[i]=A<<24|A>>>8,n[i]=A<<16|A>>>16,l[i]=A<<8|A>>>24,d[i]=A,A=16843009*y^65537*g^257*m^16843008*i,h[f]=A<<24|A>>>8,c[f]=A<<16|A>>>16,u[f]=A<<8|A>>>24,p[f]=A,i?(i=m^e[e[e[y^m]]],s^=e[e[s]]):i=s=1}}();var f=[0,1,2,4,8,16,32,64,128,27,54],m=s.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,i=e.sigBytes/4,s=4*((this._nRounds=i+6)+1),o=this._keySchedule=[],a=0;a6&&a%i==4&&(d=r[d>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d]):(d=r[(d=d<<8|d>>>24)>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d],d^=f[a/i|0]<<24),o[a]=o[a-i]^d);for(var n=this._invKeySchedule=[],l=0;l>>24]]^c[r[d>>>16&255]]^u[r[d>>>8&255]]^p[r[255&d]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,n,l,d,r)},decryptBlock:function(e,t){var i=e[t+1];e[t+1]=e[t+3],e[t+3]=i,this._doCryptBlock(e,t,this._invKeySchedule,h,c,u,p,o),i=e[t+1],e[t+1]=e[t+3],e[t+3]=i},_doCryptBlock:function(e,t,i,s,r,o,a,n){for(var l=this._nRounds,d=e[t]^i[0],h=e[t+1]^i[1],c=e[t+2]^i[2],u=e[t+3]^i[3],p=4,f=1;f>>24]^r[h>>>16&255]^o[c>>>8&255]^a[255&u]^i[p++],g=s[h>>>24]^r[c>>>16&255]^o[u>>>8&255]^a[255&d]^i[p++],y=s[c>>>24]^r[u>>>16&255]^o[d>>>8&255]^a[255&h]^i[p++],A=s[u>>>24]^r[d>>>16&255]^o[h>>>8&255]^a[255&c]^i[p++];d=m,h=g,c=y,u=A}m=(n[d>>>24]<<24|n[h>>>16&255]<<16|n[c>>>8&255]<<8|n[255&u])^i[p++],g=(n[h>>>24]<<24|n[c>>>16&255]<<16|n[u>>>8&255]<<8|n[255&d])^i[p++],y=(n[c>>>24]<<24|n[u>>>16&255]<<16|n[d>>>8&255]<<8|n[255&h])^i[p++],A=(n[u>>>24]<<24|n[d>>>16&255]<<16|n[h>>>8&255]<<8|n[255&c])^i[p++],e[t]=m,e[t+1]=g,e[t+2]=y,e[t+3]=A},keySize:8});e.AES=t._createHelper(m)}(),i.AES)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(){var e=i,t=e.lib,s=t.WordArray,r=t.BlockCipher,o=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],n=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],d=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],h=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=o.DES=r.extend({_doReset:function(){for(var e=this._key.words,t=[],i=0;i<56;i++){var s=a[i]-1;t[i]=e[s>>>5]>>>31-s%32&1}for(var r=this._subKeys=[],o=0;o<16;o++){var d=r[o]=[],h=l[o];for(i=0;i<24;i++)d[i/6|0]|=t[(n[i]-1+h)%28]<<31-i%6,d[4+(i/6|0)]|=t[28+(n[i+24]-1+h)%28]<<31-i%6;for(d[0]=d[0]<<1|d[0]>>>31,i=1;i<7;i++)d[i]=d[i]>>>4*(i-1)+3;d[7]=d[7]<<5|d[7]>>>27}var c=this._invSubKeys=[];for(i=0;i<16;i++)c[i]=r[15-i]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,i){this._lBlock=e[t],this._rBlock=e[t+1],u.call(this,4,252645135),u.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),u.call(this,1,1431655765);for(var s=0;s<16;s++){for(var r=i[s],o=this._lBlock,a=this._rBlock,n=0,l=0;l<8;l++)n|=d[l][((a^r[l])&h[l])>>>0];this._lBlock=a,this._rBlock=o^n}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,u.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(e,t){var i=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=i,this._lBlock^=i<>>e^this._lBlock)&t;this._lBlock^=i,this._rBlock^=i<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),r=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=c.createEncryptor(s.create(t)),this._des2=c.createEncryptor(s.create(i)),this._des3=c.createEncryptor(s.create(r))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=r._createHelper(f)}(),i.TripleDES)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=s.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,i=e.sigBytes,s=this._S=[],r=0;r<256;r++)s[r]=r;r=0;for(var o=0;r<256;r++){var a=r%i,n=t[a>>>2]>>>24-a%4*8&255;o=(o+s[r]+n)%256;var l=s[r];s[r]=s[o],s[o]=l}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,i=this._j,s=0,r=0;r<4;r++){i=(i+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[i],e[i]=o,s|=e[(e[t]+e[i])%256]<<24-8*r}return this._i=t,this._j=i,s}e.RC4=t._createHelper(r);var a=s.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(a)}(),i.RC4)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,i=0;i<4;i++)e[i]=16711935&(e[i]<<8|e[i]>>>24)|4278255360&(e[i]<<24|e[i]>>>8);var s=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,i=0;i<4;i++)l.call(this);for(i=0;i<8;i++)r[i]^=s[i+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(r[0]^=d,r[1]^=c,r[2]^=h,r[3]^=u,r[4]^=d,r[5]^=c,r[6]^=h,r[7]^=u,i=0;i<4;i++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(n)}(),i.Rabbit)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var r=0;r<4;r++)l.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(s[0]^=d,s[1]^=c,s[2]^=h,s[3]^=u,s[4]^=d,s[5]^=c,s[6]^=h,s[7]^=u,r=0;r<4;r++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(n)}(),i.RabbitLegacy)})),Fr((function(e,t){var i;e.exports=(i=Cd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo;const r=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var n={pbox:[],sbox:[]};function l(e,t){let i=t>>24&255,s=t>>16&255,r=t>>8&255,o=255&t,a=e.sbox[0][i]+e.sbox[1][s];return a^=e.sbox[2][r],a+=e.sbox[3][o],a}function d(e,t,i){let s,o=t,a=i;for(let t=0;t1;--t)o^=e.pbox[t],a=l(e,o)^a,s=o,o=a,a=s;return s=o,o=a,a=s,a^=e.pbox[1],o^=e.pbox[0],{left:o,right:a}}function c(e,t,i){for(let t=0;t<4;t++){e.sbox[t]=[];for(let i=0;i<256;i++)e.sbox[t][i]=a[t][i]}let s=0;for(let a=0;a=i&&(s=0);let n=0,l=0,h=0;for(let t=0;t>>2]|=e[i]<<24-i%4*8;return Dd.lib.WordArray.create(t,e.length)}const Pd=16,Id=[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],Bd=[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 Md(e){const t=[];for(let i=0,s=e.length;i1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ud(e){const t=[];for(let i=0,s=e.length;i>>6),t.push(128|63&s);else if(s<=55295||s>=57344&&s<=65535)t.push(224|s>>>12),t.push(128|s>>>6&63),t.push(128|63&s);else{if(!(s>=65536&&s<=1114111))throw t.push(s),new Error("input is not supported");i++,t.push(240|s>>>18&28),t.push(128|s>>>12&63),t.push(128|s>>>6&63),t.push(128|63&s)}}return t}function Od(e){const t=[];for(let i=0,s=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("")}function Nd(e,t){const i=31&t;return e<>>32-i}function jd(e){return(255&Id[e>>>24&255])<<24|(255&Id[e>>>16&255])<<16|(255&Id[e>>>8&255])<<8|255&Id[255&e]}function Gd(e){return e^Nd(e,2)^Nd(e,10)^Nd(e,18)^Nd(e,24)}function zd(e){return e^Nd(e,13)^Nd(e,23)}function Wd(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[4*t],r[1]=255&e[4*t+1],r[2]=255&e[4*t+2],r[3]=255&e[4*t+3],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];for(let e,t=0;t<32;t+=4)e=s[1]^s[2]^s[3]^i[t+0],s[0]^=Gd(jd(e)),e=s[2]^s[3]^s[0]^i[t+1],s[1]^=Gd(jd(e)),e=s[3]^s[0]^s[1]^i[t+2],s[2]^=Gd(jd(e)),e=s[0]^s[1]^s[2]^i[t+3],s[3]^=Gd(jd(e));for(let e=0;e<16;e+=4)t[e]=s[3-e/4]>>>24&255,t[e+1]=s[3-e/4]>>>16&255,t[e+2]=s[3-e/4]>>>8&255,t[e+3]=255&s[3-e/4]}function Vd(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[0+4*t],r[1]=255&e[1+4*t],r[2]=255&e[2+4*t],r[3]=255&e[3+4*t],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];s[0]^=2746333894,s[1]^=1453994832,s[2]^=1736282519,s[3]^=2993693404;for(let e,i=0;i<32;i+=4)e=s[1]^s[2]^s[3]^Bd[i+0],t[i+0]=s[0]^=zd(jd(e)),e=s[2]^s[3]^s[0]^Bd[i+1],t[i+1]=s[1]^=zd(jd(e)),e=s[3]^s[0]^s[1]^Bd[i+2],t[i+2]=s[2]^=zd(jd(e)),e=s[0]^s[1]^s[2]^Bd[i+3],t[i+3]=s[3]^=zd(jd(e));if(0===i)for(let e,i=0;i<16;i++)e=t[i],t[i]=t[31-i],t[31-i]=e}function $d(e,t,i){let{padding:s="pkcs#7",mode:r,iv:o=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===r&&("string"==typeof o&&(o=Md(o)),16!==o.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Md(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==i?Ud(e):Md(e):[...e],("pkcs#5"===s||"pkcs#7"===s)&&0!==i){const t=Pd-e.length%Pd;for(let i=0;i=Pd;){const t=e.slice(c,c+16),s=new Array(16);if("cbc"===r)for(let e=0;ee.length&&s+r<=i.length?e.length-t:s+r>i.length&&t+r<=e.length?i.length-s:t+r<=e.length&&s+r<=i.length?r:i.length>24&255,e>>16&255,e>>8&255,255&e)}function th(e,t){return t+3>>19)^(s<<23|s>>>9)}function rh(e,t){var i=new Array(36);i[0]=th(t,0),i[1]=th(t,4),i[2]=th(t,8),i[3]=th(t,12);for(var s=0;s<32;s++)i[s+4]=i[s]^oh(i[s+1]^i[s+2]^i[s+3]^e[s]);var r=new Array(4);for(s=35;s>=32;s--)r[35-s]=i[s];var o=function(e){for(var t=new Array(4*e.length),i=0;i>>30)^(s<<10|s>>>22)^(s<<18|s>>>14)^(s<<24|s>>>8)}function ah(e,t,i){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==i||null==i||i.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var s=ih(e),r=Math.ceil(i.length/16),o=new Array(i.length),a=t.slice(),n=0;ne)return this.preDelayTimestamp-e>1e3&&this.player.debugWarn("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.debugWarn("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,s=e-this.firstTimestamp;t=i>=s?i-s:s-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.debugLog("CommonDemux","initInterval() and is hls and support hls265 so return"):-1===this.player.getStreamType().indexOf(y)?this.player.isPlaybackCacheBeforeDecodeForFpsRender()?this.player.debugLog("CommonDemux","initInterval() and playback and playbackIsCacheBeforeDecodeForFpsRender is true so return"):(this.player.debugLog("CommonDemux","setInterval()"),this._loop(),this.stopId=setInterval((()=>{if(this.player.isDestroyedOrClosed())return;let e=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=e);const t=e-this.preLoopTimestamp;this.updateHistoryIntervalDiffTimeList(t),t>100&&this.player.debugWarn("CommonDemux",`loop demux diff time is ${t}`),this._loop(),this.preLoopTimestamp=(new Date).getTime()}),20)):this.player.debugLog("CommonDemux","initInterval() and is worker stream so return")}clearStopInterval(){this.stopId&&(clearInterval(this.stopId),this.stopId=null)}startPlaybackLoopInterval(){this.initPlaybackCacheLoop()}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.debugLog("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,s=this.player._opt.playType===b;if(this.bufferList.length){if(this.isPushDropping)return void this.player.debugWarn("CommonDemux",`_loop isPushDropping is true and bufferList length is ${this.bufferList.length}`);if(this.dropping){for(e=this.bufferList.shift(),this.player.debugWarn("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.debugLog("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.debugLog("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&&s)this.hasIframeInBufferList()?(this.player.debugWarn("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.debugWarn("CommonDemux",`_loop delay is ${this.delay} bufferList is ${this.bufferList}`);break}this.bufferList.shift(),this._doDecoderDecode(e)}}else-1!==this.delay&&this.player.debugLog("CommonDemux","loop() bufferList is empty and reset delay"),this.resetAllDelay()}_doDecode(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;const o=this.player;let a={ts:i,cts:r,type:t,isIFrame:!1};this.player.isPlayer()?(t===Ne&&o._opt.playType===b&&this.calcNetworkDelay(i),o._opt.useWCS&&!o._opt.useOffscreen||o._opt.useMSE?(t===Ne&&(a.isIFrame=s),this.pushBuffer(e,a)):t===Ne?o.decoderWorker&&o.decoderWorker.decodeVideo(e,i,s):t===Oe&&o._opt.hasAudio&&o.decoderWorker&&o.decoderWorker.decodeAudio(e,i)):this.player.isPlayback()&&(t===Ne&&(a.isIFrame=s),this.player.isPlaybackOnlyDecodeIFrame()?t===Ne&&s&&this.pushBuffer(e,a):this.player.isPlaybackCacheBeforeDecodeForFpsRender()||1===this.player.getPlaybackRate()?this.pushBuffer(e,a):this.pushBuffer(e,a,!1))}_doDecodeByHls(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=!1;if(t===Oe&&Wr(e)&&(this.player.debugLog("CommonDemux",`hls pushBuffer audio ts is ${i}, isAacCodecPacket is true`),o=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(t,i)}let a=!1;if(t===Ne&&s&&_a(e)&&(this.player.debugLog("CommonDemux",`hls pushBuffer video ts is ${i}, isVideoSequenceHeader is true`),a=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(t,i)}this.player.recording&&Ea(a)&&Ea(o)&&this.handleRecording(e,t,i,s,r),t===Ne?this._doDecoderDecode({ts:i,cts:r,payload:e,type:Ne,isIFrame:s}):t===Oe&&this._doDecoderDecode({ts:i,payload:e,type:Oe})}_doDecodeByFmp4(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByTs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByPs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_decodeNext(e){const t=e.ts;if(0===this.bufferList.length)return;let i=this.bufferList[0];const s=i.ts-t,r=e.type===Ne&&i.type===Oe,o=e.type===Ne&&_a(e.payload);(s<=20||r||o)&&(this.player.debugLog("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 ${s} and isVideoAndNextAudio is ${r} and isVideoSqeHeader is ${o}`),this.bufferList.shift(),this._doDecoderDecode(i))}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:s}=t;this.player.isPlayer()&&this.player.updateStats({buf:this.delay}),e.type===Oe?t._opt.hasAudio&&(t._opt.useMSE&&t._opt.mseDecodeAudio?s.decodeAudio(e.payload,e.ts):t._opt.useWCS&&t._opt.wcsDecodeAudio?i.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?s.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t.decoderWorker&&t.decoderWorker.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const s=this.player._opt.videoBuffer,r=this.player._opt.videoBufferDelay,o=this.player.isPlayer();if(t.type===Oe&&Wr(e)){if(this.player.debugLog("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&&_a(e)){if(this.player.debugLog("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),o){if(t.type===Ne){if(this.preTimestampDuration>0){const e=t.ts-this.preTimestamp,i=this.preTimestampDuration+this.preTimestampDuration/2;e>=i&&this.player.debugLog("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${this.preTimestamp},\n diff is ${e} and preTsDuration is ${this.preTimestampDuration} and maxDiff is ${i}\n maybe trigger black screen or flower screen`)}if(null!==this.preTimestamp&&this.preTimestamp>=t.ts&&(this.player.debugWarn("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts} less than (or equal) preTs is ${this.preTimestamp} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${this.prevPayloadBufferSize}`),this.preTimestamp-t.ts>ee&&(this.player.debugWarn("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()),this.player._opt.isDropSameTimestampGop&&Ea(t.isIFrame)&&this.player.isDemuxDecodeFirstIIframeInit())){const e=this.hasIframeInBufferList(),t=Ea(this.isPushDropping);return this.player.debugLog("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))}this.preTimestamp>0&&(this.preTimestampDuration=t.ts-this.preTimestamp),this.prevPayloadBufferSize=e.byteLength,this.preTimestamp=t.ts}if(this.player.isDemuxDecodeFirstIIframeInit()){let e=this.getDelayNotUpdateDelay(t.ts,t.type);this.pushLatestDelay=e;const i=r+s;this.player._opt.useMSE?this.delay>0&&e>i&&this.delay ${r+s}, bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):this.delay>0&&e>i&&this.delay ${r+s},bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()),this.isHistoryIntervalDiffTimeAllLarge()&&Ea(this.player.visibility)&&(this.player._opt.useMSE?this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debugWarn("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.debugWarn("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()))}}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()&&this.calcPlaybackStreamFps()}}calcPlaybackStreamFps(){if(Oo(this.playbackStreamVideoFps)||Oo(this.playbackStreamAudioFps)){let e=this.playbackStreamVideoFps,t=this.playbackStreamAudioFps;if(Oo(this.playbackStreamVideoFps)&&(e=fa(this.bufferList,Ne),e>0&&(this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),this.playbackStreamFps=t?e+t:e,Ea(this.player._opt.hasAudio)&&(this.player.debugLog(this.TAG_NAME,"playbackCacheBeforeDecodeForFpsRender,_opt.hasAudio is false and set streamAudioFps is 0"),this.playbackStreamAudioFps=0),this.initPlaybackCacheLoop())),Oo(this.playbackStreamAudioFps)&&(t=fa(this.bufferList,Oe),t>0&&(this.playbackStreamAudioFps=t,this.playbackStreamFps=e?e+t:t,this.initPlaybackCacheLoop())),Oo(this.playbackStreamVideoFps)&&Oo(this.playbackStreamAudioFps)){const i=this.bufferList.map((e=>({type:e.type,ts:e.ts})));this.player.debugLog("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,s=i?60:40;this.bufferList.length>=s&&(this.player.debugWarn("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${this.bufferList.length} more than ${s}, 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=>Sa(e.isIFrame)&&e.type===Ne));if(this.isAllIframeInBufferList())for(let t=0;t=this.getNotDroppingDelayTs()){this.player.debugLog("CommonDemux",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} 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.debugLog("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(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.player.debugLog("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(),Sa(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=co()):et?i-t:0;s>this.player._opt.networkDelay&&this.player._opt.playType===b&&(this.player.debugWarn("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 ${s}, _opt.networkDelay is ${this.player._opt.networkDelay}`),this.player.emit(mt.networkDelayTimeout,s)),this.player.updateStats({netBuf:s})}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){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=4;jo(this.nalUnitSize)&&(s=this.nalUnitSize);const r=so(e.slice(5),s);if(Ea(i)){const e=this.player.getVideoInfo();e&&e.encType&&(i=e.encType===xt)}r.forEach((e=>{const s=i?e[0]>>>1&63:31&e[0],r=i&&(s===oi||s===ri),o=Ea(i)&&s===Gt;if(r||o){const s=ro(e,i);this.player.emitVideoSei({ts:t,data:s.payload})}}))}handleRecording(e,t,i,s,r){if(this.player.isRecordTypeFlv()){const s=new Uint8Array(e);t===Ne?this.player.recorder.addVideo(s,i):t===Oe&&this.player.recorder.addAudio(s,i)}else if(this.player.isRecordTypeMp4()){const o=new Uint8Array(e);if(this.player.recorder.isWasmMp4()){if(t===Ne)this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r);else if(t===Oe){const t=new Uint8Array(e);this.player.recorder.handleAddAudioTrack(Vr(t)?t.slice(2):t.slice(1),i)}}else t===Ne&&this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r)}}updateNalUnitSize(e){const t=15&e[0];this.player.video.updateVideoInfo({encTypeCode:t});const i=t===Ct;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.debugLog(this.TAG_NAME,`demux() isVideoSequenceHeader is true and isHevc is ${i} and nalUnitSize is ${this.nalUnitSize}`)}cryptoPayload(e,t){let i=this.player,s=e;if(i._opt.isM7sCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();t.encTypeCode?s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),i=new Uint8Array(i);const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=e.slice(o+4+2,o+4+a);let r=new Ld.ModeOfOperation.ctr(t,new Ld.Counter(i));const n=r.decrypt(s);r=null,e.set(n,o+4+2)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===Ct):i.debugWarn(this.TAG_NAME,`videoInfo.encTypeCode is ${t.encTypeCode}`)}else i.debugError(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`);else if(i._opt.isSm4Crypto)if(i._opt.sm4CryptoKey){const t=this.player.video.getVideoInfo().encTypeCode===Ct,r=this.player._opt.isSm4CryptoH265V2;s=i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0?function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),i=new Uint8Array(i);const o=e.byteLength;let a=5;for(;ao)break;let l=e[a+4],d=!1,h=2;if(s?(r&&(h=3),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 s=ah(t,i,e.slice(a+4+h,a+4+n));e.set(s,a+4+h)}a=a+4+n}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t,r):function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=new Uint8Array(e.slice(0,5)),a=5;for(;ar){const t=new Uint8Array(o.length+e.length-a);t.set(o,0),t.set(e.slice(a),o.length),o=t;break}let d=e[a+4],h=!1,c=2;if(i?(s&&(c=3),d=d>>>1&63,h=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,h=1===d||5===d),h){const i=$d(e.slice(a+4+c,a+4+l),t,0,{padding:"none",output:"array"});let s=i[i.length-1];if(s>0&&s<16){let e=!0;for(let t=1;t<=s;t++)if(i[i.length-t]!==s){e=!1;break}e&&i.splice(i.length-s,s)}const r=new Uint8Array(c);r.set(e.slice(a+4,a+4+c),0);const n=oo(pl(r,new Uint8Array(i))),d=new Uint8Array(o.length+n.length);d.set(o,0),d.set(n,o.length),o=d}else{const t=e.slice(a+4,a+4+l),i=new Uint8Array(o.length+4+t.length);i.set(o,0),i.set(n,o.length),i.set(t,o.length+4),o=i}a=a+4+l}return o}(e,i._opt.sm4CryptoKey,t,r)}else i._opt.sm4CryptoKey||i.debugError(this.TAG_NAME,"isSm4Crypto opt.sm4CryptoKey is null");else if(i._opt.isXorCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=Jd(e.slice(o+4,o+4+a),t,i);e.set(s,o+4)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===Ct)}else i.debugError(this.TAG_NAME,"isXorCrypto opt.xorCryptoKey is null");return s}cryptoPayloadAudio(e){let t=this.player;if(Ea(t._opt.isCryptoAudio))return e;let i=e;if(t._opt.isM7sCrypto)if(t._opt.cryptoKey&&t._opt.cryptoKey.byteLength>0&&t._opt.cryptoIV&&t._opt.cryptoIV.byteLength>0){e[0]>>4===Rt&&(i=function(e,t,i){if(e.byteLength<=30)return e;const s=e.slice(32);let r=new Ld.ModeOfOperation.ctr(t,new Ld.Counter(i));const o=r.decrypt(s);return r=null,e.set(o,32),e}(e,t._opt.cryptoKey,t._opt.cryptoIV))}else t.debugError(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${t._opt.cryptoKey&&t._opt.cryptoKey.byteLength} or cryptoIV.length is ${t._opt.cryptoIV&&t._opt.cryptoIV.byteLength} null`);return i}_decodeEnhancedH265Video(e,t){const i=e[0],s=48&i,r=15&i,o=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),l="a"==String.fromCharCode(o[0]);if(r===cr){if(s===fr){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.debugLog(this.TAG_NAME,`demux() isVideoSequenceHeader(enhancedH265) is true and nalUnitSize is ${this.nalUnitSize}`),this._doDecode(e,Ne,0,!0,0)}}}else if(r===ur){let i=e,r=0;const o=s===fr;if(o&&this.calcIframeIntervalTimestamp(t),l);else{n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,r=n[0];i=sl(e.slice(8),o),i=this.cryptoPayload(i,o),this._doDecode(i,Ne,t,o,r)}}else if(r===pr){const i=s===fr,r=e.slice(5);i&&this.calcIframeIntervalTimestamp(t);let o=sl(r,i);o=this.cryptoPayload(o,i),this._doDecode(o,Ne,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}handlePlaybackPause(e){Sa(e)?this.clearStopInterval():this.startPlaybackLoopInterval()}}var lh=function(e,t,i,s){return new(i||(i=Promise))((function(r,o){function a(e){try{l(s.next(e))}catch(e){o(e)}}function n(e){try{l(s.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,n)}l((s=s.apply(e,t||[])).next())}))};const dh=Symbol(32),hh=Symbol(16),ch=Symbol(8);class uh{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 lh(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var s;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(s=this.pull)||void 0===s||s.call(this,e)}))}))}readU32(){return this.read(dh)}readU16(){return this.read(hh)}readU8(){return this.read(ch)}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 s=e=>t.length<(i=e);if("number"==typeof this.need){if(s(this.need))return;e=t.subarray(0,i)}else if(this.need===dh){if(s(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===hh){if(s(2))return;e=t[0]<<8|t[1]}else if(this.need===ch){if(s(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(s(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(s(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}}uh.U32=dh,uh.U16=hh,uh.U8=ch;class ph extends nh{constructor(e){super(e),this.TAG_NAME="FlvDemux",this.input=new uh(this.demux()),e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.input&&(this.input.close(),this.input=null),this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){this.input?this.input.write(e):this.player&&this.player.debugWarn(this.TAG_NAME,"dispatch() this.input is null")}*demux(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),s=this.player;for(;;){if(!this.input)return;t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const o=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let a=i[0];const n=(yield o).slice();if(!s)return;switch(r){case je:if(s._opt.hasAudio&&(s.updateStats({abps:n.byteLength}),n.byteLength>0)){let e=this.cryptoPayloadAudio(n);this._doDecode(e,Oe,a)}break;case Ge:if(s._opt.hasVideo&&n.length>=6){let e=a;s.updateStats({vbps:n.byteLength,dts:e}),s._times.demuxStart||(s._times.demuxStart=co());const t=n[0];if(this._isEnhancedH265Header(t))this._decodeEnhancedH265Video(n,e);else{const e=15&t;let s=(t>>4&15)===Is;const r=e===Ct,o=e===Lt;if(Ea(r||o))return void this.player.debugWarn(this.TAG_NAME,`demux() codecId is ${e} and ignore`);Ea(s)&&Sa(Ra(n,r))&&(this.player.debugLog(this.TAG_NAME,"demux() isIFrame is false and unit type is IDR and update to true"),s=!0),s&&(this.calcIframeIntervalTimestamp(a),null===this.nalUnitSize&&_a(n)&&this.updateNalUnitSize(n)),i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let l=i[0],d=this.cryptoPayload(n,s);this._doDecode(d,Ne,a,s,l)}}else n.length<6&&s.debugWarn(this.TAG_NAME,`payload.length is ${n.length} less than 6 and ignore`);break;case ze:if(this.player.isRecordTypeFlv()){const e=new Uint8Array(n);this.player.recorder.addMetaData(e)}const e=wl(n);e&&e.onMetaData&&s.updateMetaData(e.onMetaData);break;default:s.debugLog(this.TAG_NAME,`demux() type is ${r}`)}}}close(){this.input&&(this.input.close(),this.input=null)}getInputByteLength(){let e=0;return this.input&&this.input.buffer&&(e=this.input.buffer.byteLength),e}}class fh extends nh{constructor(e){super(e),this.TAG_NAME="M7sDemux",e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){const t=this.player,i=new DataView(e),s=i.getUint8(0),r=i.getUint32(1,!1),o=new ArrayBuffer(4),a=new Uint32Array(o);switch(s){case Oe:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,s,r)}break;case Ne:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=co()),i.byteLength>=11){const o=new Uint8Array(e,5);let n=r;t.updateStats({vbps:o.byteLength,dts:n});const l=o[0];if(this._isEnhancedH265Header(l))this._decodeEnhancedH265Video(o,r);else{const e=i.getUint8(5)>>4==1;e&&this.calcIframeIntervalTimestamp(r),a[0]=o[4],a[1]=o[3],a[2]=o[2],a[3]=0;let t=a[0],n=this.cryptoPayload(o,e);this._doDecode(n,s,r,e,t)}}else this.player.debugWarn(this.TAG_NAME,"dispatch","dv byteLength is",i.byteLength,"and return")}}}class mh extends ph{constructor(e){super(e),e.debugLog("WebTransportDemux","init")}destroy(){this.player.debugLog("WebTransportDemux","destroy"),super.destroy()}}var gh,yh=Fr((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),Ah=(gh=yh)&&gh.__esModule&&Object.prototype.hasOwnProperty.call(gh,"default")?gh.default:gh;class bh{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>s,o=8-s;if(o>=e)return i&&(this.index+=e),r>>o-e;{i&&(this.index+=o);const s=e-o;return r<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}class vh extends nh{constructor(e){super(e),Ah(this,"TAG_NAME","NakedFlowDemux"),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.pendingUnits={},this.localDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,e.debugLog(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.pendingUnits={},this.localDts=0,this.localAudioDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){this.player;const t=new Uint8Array(e);if(this.player._opt.nakedFlowDemuxUseNew){const e=this.extractNALu$3(t);if(0===e.length)return void this.player.debugLog(this.TAG_NAME,"dispatch naluArray.length === 0");this.handleVideoFrames(e)}else 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,10),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,s=0,r=e.byteLength,o=0,a=[];for(;s1)for(let e=0;e{const t=Vn(e);t===Ut||t===Ft?this.handleVideoH264Nalu(e):Hn(t)&&s.push(e)})),1===s.length)this.handleVideoH264Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=Vn(e[0]);for(let i=1;i{this.handleVideoH264Nalu(e)}))}}else if(this.streamVideoType===xt)if(this.player._opt.nakedFlowH265DemuxUseNew){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debugWarn(this.TAG_NAME,"handleVideoNalu","h265 naluList.length === 0");const s=[];if(i.forEach((e=>{const t=rl(e);t===ti||t===Zt||t===Qt?this.handleVideoH265Nalu(e):ol(t)&&s.push(e)})),1===s.length)this.handleVideoH265Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=rl(e[0]);for(let i=1;i{this.handleVideoH265Nalu(e)}))}}else{rl(t)===ti?this.extractH265PPS(t):this.handleVideoH265Nalu(t)}else this.player.debugWarn(this.TAG_NAME," this.streamVideoType is null")}extractH264PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{$n(Vn(e))?this.extractH264SEI(e):this.handleVideoH264Nalu(e)}))}extractH265PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{const t=rl(e);t===si?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,s=(1&i[2])<<2|(192&i[3])>>6,r=new Uint8Array([175,0,e<<3|(14&t)>>1,(1&t)<<7|s<<3]);this.isSendAACSeqHeader=!0,this._doDecode(r,Oe,0,!1,0)}const s=this.getNaluAudioDts(),r=new Uint8Array(t.length+2);r.set([175,1],0),r.set(t,2),this._doDecode(r,Oe,s,!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(),s=new Uint8Array(t.length+1);s.set([114],0),s.set(t,1),this._doDecode(s,Oe,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(),s=new Uint8Array(t.length+1);s.set([130],0),s.set(t,1),this._doDecode(s,Oe,i,!1,0)}handleVideoH264Nalu(e){const t=Vn(e);switch(t){case Ft:this.sps=e;break;case Ut:this.pps=e}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=zn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Ne,t,!0,0),this.sps=null,this.pps=null}if(Hn(t)){this.player._times.demuxStart||(this.player._times.demuxStart=co());const i=Jn(t),s=this.getNaluDts(),r=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 s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,Ne,s,i,0)}else this.player.debugWarn(this.TAG_NAME,`handleVideoH264Nalu is avc seq head nalType is ${t}`)}else if(this.sps&&this.pps){this.isSendSeqHeader=!0;const e=zn({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=co());const i=this.getNaluDts(),s=Wn(e.reduce(((e,t)=>{const i=oo(e),s=oo(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,Ne,i,t,0)}else this.player.debugWarn(this.TAG_NAME,"handleVideoH264NaluList isSendSeqHeader is false")}handleVideoH265Nalu(e){const t=rl(e);switch(t){case Qt:this.vps=e;break;case Zt:this.sps=e;break;case ti:this.pps=e}if(this.isSendSeqHeader){if(this.vps&&this.sps&&this.pps){const e=il({vps:this.vps,sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Ne,t,!0,0),this.vps=null,this.sps=null,this.pps=null}if(ol(t)){this.player._times.demuxStart||(this.player._times.demuxStart=co());const i=al(t),s=this.getNaluDts(),r=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 s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,Ne,s,i,0)}}else if(this.vps&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=il({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=co());const i=this.getNaluDts(),s=sl(e.reduce(((e,t)=>{const i=oo(e),s=oo(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,Ne,i,t,0)}else this.player.debugWarn(this.TAG_NAME,"handleVideoH265NaluList isSendSeqHeader is false")}_preDoDecode(e,t,i,s,r){this.player.updateStats({vbps:e.byteLength,dts:i}),s&&this.calcIframeIntervalTimestamp(i),this._doDecode(e,Ne,i,s,r)}getInputByteLength(){let e=0;return this.lastBuf&&(e=this.lastBuf.byteLength),e}handleVideoFrames(e){if(!this.streamVideoType)for(let t of e)if(this.streamVideoType=da(t),this.streamVideoType)break;this.streamVideoType?this.streamVideoType===Dt?this.handleVideoH264Frames(e):this.streamVideoType===xt&&this.handleVideoH265Frames(e):this.player.debugWarn(this.TAG_NAME,"handleVideoFrames streamVideoType is null")}handleVideoH264Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=Vn(a);let n=!1,l=e===jt;e!==Nt&&e!==jt||(o=this.parseVideo264Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null,r=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Ut:this.pps=e;break;case Ft:this.sps=e;break;case Gt:r=e}if(Hn(t)){const t=oo(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=zn({sps:this.sps,pps:this.pps});this._doDecode(e,Ne,0,!0,0),this.sps=null,this.pps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=zn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Ne,t,!0,0),this.sps=null,this.pps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=co());const e=this.getNaluDts(),t=Wn(s,i);if(this.player._opt.isEmitSEI&&r){const t=ro(r,!1);this.player.emitVideoSei({ts:e,data:t.payload})}this._preDoDecode(t,Ne,e,i,0)}}}))}handleVideoH265Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=rl(a);let n=!1,l=al(e);ol(e)&&(o=this.parseVideo265Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null,r=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ti:this.pps=e;break;case Zt:this.sps=e;break;case Qt:this.vps=e;break;case oi:case ri:r=e}if(ol(t)){const t=oo(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps&&this.vps){this.isSendSeqHeader=!0;const e=il({sps:this.sps,pps:this.pps,vps:this.vps});this._doDecode(e,Ne,0,!0,0),this.sps=null,this.pps=null,this.vps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps&&this.vps){const e=il({sps:this.sps,pps:this.pps,vps:this.vps}),t=this.localDts;this._doDecode(e,Ne,t,!0,0),this.sps=null,this.pps=null,this.vps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=co());const e=this.getNaluDts(),t=sl(s,i);if(this.player._opt.isEmitSEI&&r){const t=ro(r,!0);this.player.emitVideoSei({ts:e,data:t.payload})}this._preDoDecode(t,Ne,e,i,0)}}}))}handleVideoH265Frames_1(e){e.forEach((e=>{this.handleVideoNalu(e)}))}parseVideo264Header(e){const t=new bh(e);t.readUByte();return{isfms:0===t.readUEG(),sType:t.readUEG()}}parseVideo265Header(e){const t=new bh(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}}class _h extends nh{constructor(e){super(e),this.player=e,e.debugLog("EmptyDemux","init")}destroy(){super.destroy(),this.player.debugLog("EmptyDemux","destroy")}}var Sh=Fr((function(e,t){var s,r,o,a=(s=new Date,r=4,o={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-s,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=r&&console.info("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=r&&console.warn("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=r&&console.error("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)}},o);a.getDurationString=function(e,t){var i;function s(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",s=0;s0&&(i+=","),i+="["+a.getDurationString(e.start(s))+","+a.getDurationString(e.end(s))+"]";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 s=new ArrayBuffer(i),r=new Uint8Array(this._buffer);new Uint8Array(s,0,r.length).set(r),this.buffer=s,this._byteLength=t}}},l.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}},l.BIG_ENDIAN=!1,l.LITTLE_ENDIAN=!0,l.prototype._byteLength=0,Object.defineProperty(l.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(l.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(l.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(l.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}}),l.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},l.prototype.isEof=function(){return this.position>=this._byteLength},l.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},l.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},l.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},l.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},l.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,l.memcpy=function(e,t,i,s,r){var o=new Uint8Array(e,t,r),a=new Uint8Array(i,s,r);o.set(a)},l.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},l.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},l.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;ir;s--,r++){var o=t[r];t[r]=t[s],t[s]=o}return e},l.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},l.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},l.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.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},l.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},l.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var h=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(h.prototype=new l(new ArrayBuffer,0,l.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},h.prototype.reduceBuffer=function(e,t,i){var s;return(s=new Uint8Array(i)).set(new Uint8Array(e,t,i)),s.buffer.fileStart=e.fileStart+t,s.buffer.usedBytes=0,s.buffer},h.prototype.insertBuffer=function(e){for(var t=!0,i=0;is.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<=s.fileStart||(e=this.reduceBuffer(e,0,s.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,r,o)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},h.prototype.logBufferLevel=function(e){var t,i,s,r,o,n=[],l="";for(s=0,r=0,t=0;t0&&(l+=o.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) ("+s+"/"+r+" bytes), continuous ranges: "+l)},h.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},h.prototype.findPosition=function(e,t,i){var s,r=null,o=-1;for(s=!0===e?0:this.bufferIndex;s=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+o),o):-1},h.prototype.findEndContiguousBuf=function(e){var t,i,s,r=void 0!==e?e:this.bufferIndex;if(i=this.buffers[r],this.buffers.length>r+1)for(t=r+1;t>3;return 31===s&&i.data.length>=2&&(s=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),s}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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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=c;var u={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"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){u.FullBox.prototype=new u.Box,u.ContainerBox.prototype=new u.Box,u.SampleEntry.prototype=new u.Box,u.TrackGroupTypeBox.prototype=new u.FullBox,u.BASIC_BOXES.forEach((function(e){u.createBoxCtor(e)})),u.FULL_BOXES.forEach((function(e){u.createFullBoxCtor(e)})),u.CONTAINER_BOXES.forEach((function(e){u.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){u.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){u.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,s){u.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=s},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){u.FullBox.call(this,e,t)},createBoxCtor:function(e,t){u.boxCodes.push(e),u[e+"Box"]=function(t){u.Box.call(this,e,t)},u[e+"Box"].prototype=new u.Box,t&&(u[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){u[e+"Box"]=function(t){u.FullBox.call(this,e,t)},u[e+"Box"].prototype=new u.FullBox,u[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:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):0!==d&&n+d>e.getEndPosition()?(e.seek(n),a.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):t?{code:u.OK,type:h,size:d,hdr_size:l,start:n}:(u[h+"Box"]?s=new u[h+"Box"](d):"uuid"!==h?(a.warn("BoxParser","Unknown box type: '"+h+"'"),(s=new u.Box(h,d)).has_unparsed_data=!0):u.UUIDBoxes[o]?s=new u.UUIDBoxes[o](d):(a.warn("BoxParser","Unknown uuid type: '"+o+"'"),(s=new u.Box(h,d)).uuid=o,s.has_unparsed_data=!0),s.hdr_size=l,s.start=n,s.write===u.Box.prototype.write&&"mdat"!==s.type&&(a.info("BoxParser","'"+c+"' box writing not yet implemented, keeping unparsed data in memory for later write"),s.parseDataAndRewind(e)),s.parse(e),(r=e.getPosition()-(s.start+s.size))<0?(a.warn("BoxParser","Parsing of box '"+c+"' did not read the entire indicated box data size (missing "+-r+" bytes), seeking forward"),e.seek(s.start+s.size)):r>0&&(a.error("BoxParser","Parsing of box '"+c+"' read "+r+" more bytes than the indicated box data size, seeking backwards"),0!==s.size&&e.seek(s.start+s.size)),{code:u.OK,box:s,size:s.size})},u.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)},u.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},u.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},u.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},u.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.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)},u.SAMPLE_ENTRY_TYPE_VISUAL="Visual",u.SAMPLE_ENTRY_TYPE_AUDIO="Audio",u.SAMPLE_ENTRY_TYPE_HINT="Hint",u.SAMPLE_ENTRY_TYPE_METADATA="Metadata",u.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",u.SAMPLE_ENTRY_TYPE_SYSTEM="System",u.SAMPLE_ENTRY_TYPE_TEXT="Text",u.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},u.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.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},u.SampleEntry.prototype.parseFooter=function(e){u.ContainerBox.prototype.parse.call(this,e)},u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_HINT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT),u.createMediaSampleEntryCtor(u.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)})),u.createMediaSampleEntryCtor(u.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)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT,"enct"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"encm"),u.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()})),u.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),u.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)})),u.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")})),u.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))})),u.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),u.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),u.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),u.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))})),u.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),u.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())})),u.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|s>>5&7})),u.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,s.bsid=r>>1&31,s.bsmod=(1&r)<<4|o>>4&15,s.acmod=o>>1&7,s.lfeon=1&o,s.num_dep_sub=a>>1&15,s.num_dep_sub>0&&(s.chan_loc=(1&a)<<8|e.readUint8())}})),u.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var s=e.readUint8(),r=Math.min(127&s,i.length-1);if(r?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[r]),128&s)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),u.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),u.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++})),u.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)))})),u.createBoxCtor("hvcC",(function(e){var t,i,s,r;this.configurationVersion=e.readUint8(),r=e.readUint8(),this.general_profile_space=r>>6,this.general_tier_flag=(32&r)>>5,this.general_profile_idc=31&r,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(),r=e.readUint8(),this.constantFrameRate=r>>6,this.numTemporalLayers=(13&r)>>3,this.temporalIdNested=(4&r)>>2,this.lengthSizeMinusOne=3&r,this.nalu_arrays=[];var o=e.readUint8();for(t=0;t>7,a.nalu_type=63&r;var n=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 s=0;s>7,this.axis=1&t})),u.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()))})),u.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&o)<<8|e.readUint8():a.property_index=127&o}}})),u.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,s.assignment_type=127&r,s.assignment_type){case 0:s.grouping_type=e.readString(4);break;case 1:s.grouping_type=e.readString(4),s.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:s.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),u.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),u.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),p.prototype.toString=function(){return"("+this.x+","+this.y+")"},u.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new p(e.readUint16(),e.readUint16()),this.display_primaries[1]=new p(e.readUint16(),e.readUint16()),this.display_primaries[2]=new p(e.readUint16(),e.readUint16()),this.white_point=new p(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),u.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()})),u.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()})),u.createFullBoxCtor("meta",(function(e){this.boxes=[],u.ContainerBox.prototype.parse.call(this,e)})),u.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),u.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),u.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),u.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()})),u.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),u.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),u.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(s))})),u.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),u.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),u.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(),s=0;s>7,this.num_leading_samples=127&t})),u.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=u.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))})),u.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),u.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),u.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.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[s]=t>>4&3,this.sample_is_depended_on[s]=t>>2&3,this.sample_has_redundancy[s]=3&t})),u.createFullBoxCtor("senc"),u.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,s.referenced_size=2147483647&r,s.subsegment_duration=e.readUint32(),r=e.readUint32(),s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}})),u.SingleItemTypeReferenceBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.SingleItemTypeReferenceBox.prototype=new u.Box,u.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&s}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=u.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))})),u.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),u.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&u.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&u.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&u.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&u.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&u.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),u.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(),s=0;s>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),u.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),u.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),u.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},u.createTrackGroupCtor("msrc"),u.TrackReferenceTypeBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.TrackReferenceTypeBox.prototype=new u.Box,u.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},u.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&u.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&u.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;i>7&1,this.block_pad_lsb=i>>6&1,this.block_little_endian=i>>5&1,this.block_reversed=i>>4&1,this.pad_unknown=i>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),u.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),u.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),u.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),u.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=u.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),u.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),u.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=u.parseHex16(e)})),u.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))})),u.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),u.createFullBoxCtor("vvcC",(function(e){var t,i,s={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<1){for(s.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,i=this.num_sublayers-2;i>=0;--i){var a=s.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++i)s.extract_bits(1);for(this.sublayer_level_idc=[],i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=u.decimalToHex(s,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var r=!1,o="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||r)&&(o="."+u.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+o,r=!0);t+=o}return t},u.vvc1SampleEntry.prototype.getCodec=u.vvi1SampleEntry.prototype.getCodec=function(){var e,t=u.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 s,r=[],o=0;for(o|=this.vvcC.ptl_frame_only_constraint<<7,o|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,r.push(o),o&&(s=e),o=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===s)i=".CA";else{i=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",n=0,l=0;for(e=0;e<=s;++e)for(n=n<<8|r[e],l+=8;l>=5;){i+=a[n>>l-5&31],n&=(1<<(l-=5))-1}l&&(i+=a[31&(n<<=5-l)])}}t+=i}return t},u.mp4aSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+u.decimalToHex(t)+(i?"."+i:"")}return e},u.stxtSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},u.vp08SampleEntry.prototype.getCodec=u.vp09SampleEntry.prototype.getCodec=function(){var e=u.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},u.av01SampleEntry.prototype.getCodec=function(){var e,t=u.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},u.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(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>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)},u.FullBox.prototype.writeHeader=function(e){this.size+=4,u.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},u.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))},u.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)},u.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},u.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)},u.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)},u.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&u.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&u.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&u.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&u.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof u.Box||t[i]instanceof u.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||u.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},u.boxEqual=function(e,t){if(!u.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},y.prototype.setExtractionOptions=function(e,t,i){var s=this.getTrackById(e);if(s){var r={};this.extractedTracks.push(r),r.id=e,r.user=t,r.trak=s,s.nextSample=0,r.nb_samples=1e3,r.samples=[],i&&i.nbSamples&&(r.nb_samples=i.nbSamples)}},y.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},y.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=u.parseOneBox(this.stream,false)).code===u.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)}},y.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))},y.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},y.prototype.getInfo=function(){var e,t,i,s,r,o,a={},n=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(n+1e3*this.moov.mvhd.creation_time),a.modified=new Date(n+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)&&(a.info("ISOFile","Sending fragmented data on track #"+s.id+" for samples ["+Math.max(0,i.nextSample-s.nb_samples)+","+(i.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(s.id,s.user,s.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),s.segmentStream=null,s!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+o.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(o.id,o.user,o.samples),o.samples=[],o!==this.extractedTracks[t]))break}}}},y.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},y.prototype.getBoxes=function(e,t){var i=[];return y._sweep.call(this,e,i,t),i},y._sweep=function(e,t,i){for(var s in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;y._sweep.call(this.boxes[s],e,t,i)}},y.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},y.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},y.prototype.releaseUsedSamples=function(e,t,i){var s=0,r=this.getTrackById(e);r.lastValidSample||(r.lastValidSample=0);for(var o=r.lastValidSample;oe*r.timescale){d=s-1;break}t&&r.is_sync&&(l=s)}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 o=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,n)+" and offset: "+o),{offset:o,time:e/n}},y.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},y.prototype.seek=function(e,t){var i,s,r,o=this.moov,n={offset:1/0,time:1/0};if(this.moov){for(r=0;rthis.getTrackDuration(i)||((s=this.seekTrack(e,t,i)).offset-1){a=l;break}switch(a){case"Visual":if(r.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),o.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 u.avcCBox;c.parse(new n(t.avcDecoderConfigRecord)),o.addBox(c)}else if(t.hevcDecoderConfigRecord){var p=new u.hvcCBox;p.parse(new n(t.hevcDecoderConfigRecord)),o.addBox(p)}break;case"Audio":r.add("smhd").set("balance",t.balance||0),o.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":r.add("hmhd");break;case"Subtitle":if(r.add("sthd"),"stpp"===t.type)o.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:r.add("nmhd")}t.description&&o.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){o.addBox(e)})),r.add("dinf").add("dref").addEntry((new u["url Box"]).set("flags",1));var f=r.add("stbl");return f.add("stsd").addEntry(o),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}},u.Box.prototype.computeSize=function(e){var t=e||new l;t.endianness=l.BIG_ENDIAN,this.write(t)},y.prototype.addSample=function(e,t,i){var s=i||{},r={},o=this.getTrackById(e);if(null!==o){r.number=o.samples.length,r.track_id=o.tkhd.track_id,r.timescale=o.mdia.mdhd.timescale,r.description_index=s.sample_description_index?s.sample_description_index-1:0,r.description=o.mdia.minf.stbl.stsd.entries[r.description_index],r.data=t,r.size=t.byteLength,r.alreadyRead=r.size,r.duration=s.duration||1,r.cts=s.cts||0,r.dts=s.dts||0,r.is_sync=s.is_sync||!1,r.is_leading=s.is_leading||0,r.depends_on=s.depends_on||0,r.is_depended_on=s.is_depended_on||0,r.has_redundancy=s.has_redundancy||0,r.degradation_priority=s.degradation_priority||0,r.offset=0,r.subsamples=s.subsamples,o.samples.push(r),o.samples_size+=r.size,o.samples_duration+=r.duration,void 0===o.first_dts&&(o.first_dts=s.dts),this.processSamples();var a=this.createSingleSampleMoof(r);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),r}},y.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new u.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var s=i.add("traf"),r=this.getTrackById(e.track_id);return s.add("tfhd").set("track_id",e.track_id).set("flags",u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),s.add("tfdt").set("baseMediaDecodeTime",e.dts-(r.first_dts||0)),s.add("trun").set("flags",u.TRUN_FLAGS_DATA_OFFSET|u.TRUN_FLAGS_DURATION|u.TRUN_FLAGS_SIZE|u.TRUN_FLAGS_FLAGS|u.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},y.prototype.lastMoofIndex=0,y.prototype.samplesDataSize=0,y.prototype.resetTables=function(){var e,t,i,s,r,o;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(l=r[a].grouping_type+"/0",(n=new d(r[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[l]||(t.sample_groups_info[l]=n))}else for(a=0;a=2&&(l=s[a].grouping_type+"/0",n=new d(s[a].grouping_type,0),e.sample_groups_info[l]||(e.sample_groups_info[l]=n))},y.setSampleGroupProperties=function(e,t,i,s){var r,o;for(r in t.sample_groups=[],s){var a;if(t.sample_groups[r]={},t.sample_groups[r].grouping_type=s[r].grouping_type,t.sample_groups[r].grouping_type_parameter=s[r].grouping_type_parameter,i>=s[r].last_sample_in_run&&(s[r].last_sample_in_run<0&&(s[r].last_sample_in_run=0),s[r].entry_index++,s[r].entry_index<=s[r].sbgp.entries.length-1&&(s[r].last_sample_in_run+=s[r].sbgp.entries[s[r].entry_index].sample_count)),s[r].entry_index<=s[r].sbgp.entries.length-1?t.sample_groups[r].group_description_index=s[r].sbgp.entries[s[r].entry_index].group_description_index:t.sample_groups[r].group_description_index=-1,0!==t.sample_groups[r].group_description_index)a=s[r].fragment_description?s[r].fragment_description:s[r].description,t.sample_groups[r].group_description_index>0?(o=t.sample_groups[r].group_description_index>65535?(t.sample_groups[r].group_description_index>>16)-1:t.sample_groups[r].group_description_index-1,a&&o>=0&&(t.sample_groups[r].description=a.entries[o])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[r].description=a.entries[a.default_group_description_index-1])}},y.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))},y.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=o.sample_counts[v]),t>0?(e.samples[t-1].duration=o.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,k.dts=e.samples[t-1].dts+e.samples[t-1].duration):k.dts=0,a?(t>=_&&(S++,_<0&&(_=0),_+=a.sample_counts[S]),k.cts=e.samples[t].dts+a.sample_offsets[S]):k.cts=k.dts,n?(t==n.sample_numbers[E]-1?(k.is_sync=!0,E++):(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,y.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)&&y.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)}},y.prototype.updateSampleLists=function(){var e,t,i,s,r,o,a,n,l,d,h,c,p,f,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&y.initSampleGroups(c,h,h.sbgps,c.mdia.minf.stbl.sgpds,h.sgpds),t=0;t0?f.dts=c.samples[c.samples.length-2].dts+c.samples[c.samples.length-2].duration:(h.tfdt?f.dts=h.tfdt.baseMediaDecodeTime:f.dts=0,c.first_traf_merged=!0),f.cts=f.dts,g.flags&u.TRUN_FLAGS_CTS_OFFSET&&(f.cts=f.dts+g.sample_composition_time_offset[i]),m=a,g.flags&u.TRUN_FLAGS_FLAGS?m=g.sample_flags[i]:0===i&&g.flags&u.TRUN_FLAGS_FIRST_FLAG&&(m=g.first_sample_flags),f.is_sync=!(m>>16&1),f.is_leading=m>>26&3,f.depends_on=m>>24&3,f.is_depended_on=m>>22&3,f.has_redundancy=m>>20&3,f.degradation_priority=65535&m;var A=!!(h.tfhd.flags&u.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(h.tfhd.flags&u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(g.flags&u.TRUN_FLAGS_DATA_OFFSET),_=0;_=A?h.tfhd.base_data_offset:b||0===t?d.start:n,f.offset=0===t&&0===i?v?_+g.data_offset:_:n,n=f.offset+f.size,(h.sbgps.length>0||h.sgpds.length>0||c.mdia.minf.stbl.sbgps.length>0||c.mdia.minf.stbl.sgpds.length>0)&&y.setSampleGroupProperties(c,f,f.number_in_traf,h.sample_groups_info)}}if(h.subs){c.has_fragment_subsamples=!0;var S=h.first_sample_index;for(t=0;t-1))return null;var o=(i=this.stream.buffers[r]).byteLength-(s.offset+s.alreadyRead-i.fileStart);if(s.size-s.alreadyRead<=o)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+(s.size-s.alreadyRead)+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,s.size-s.alreadyRead),i.usedBytes+=s.size-s.alreadyRead,this.stream.logBufferLevel(),s.alreadyRead=s.size,s;if(0===o)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+o+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,o),s.alreadyRead+=o,i.usedBytes+=o,this.stream.logBufferLevel()}},y.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.description=null,delete i.degradation_priority,delete i.depends_on,delete i.description_index,delete i.has_redundancy,delete i.is_depended_on,delete i.is_leading,delete i.is_sync,delete i.moof_number,delete i.number_in_traf,delete i.timescale,delete i.cts,delete i.dts,delete i.offset,delete i.size,delete i.track_id,delete i.duration,i.alreadyRead=0,i.size):0},y.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},y.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},y.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=o.ipro.protections[o.iinf.item_infos[e].protection_index-1]),o.iinf.item_infos[e].item_type?i.type=o.iinf.item_infos[e].item_type:i.type="mime",i.content_type=o.iinf.item_infos[e].content_type,i.content_encoding=o.iinf.item_infos[e].content_encoding;if(o.grpl)for(e=0;e0&&u.property_index-1-1))return null;var n=(t=this.stream.buffers[o]).byteLength-(r.offset+r.alreadyRead-t.fileStart);if(!(r.length-r.alreadyRead<=n))return a.debug("ISOFile","Getting item #"+e+" extent #"+s+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+n+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,n),r.alreadyRead+=n,i.alreadyRead+=n,t.usedBytes+=n,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+s+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+(r.length-r.alreadyRead)+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,r.length-r.alreadyRead),t.usedBytes+=r.length-r.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=r.length-r.alreadyRead,r.alreadyRead=r.length}}return i.alreadyRead===i.size?i:null},y.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(s)}return t},y.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},u.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)},u.FullBox.prototype.printHeader=function(e){this.size+=4,u.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},u.Box.prototype.print=function(e){this.printHeader(e)},u.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)},u.tkhdBox.prototype.print=function(e){u.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 A={createFile:function(e,t){var i=void 0===e||e,s=new y(t);return s.discardMdatData=!i,s}};t.createFile=A.createFile}));function Eh(e){return e.reduce(((e,t)=>256*e+t))}function wh(e){const t=[101,103,119,99],i=e.length-28,s=e.slice(i,i+t.length);return t.every(((e,t)=>e===s[t]))}Sh.Log,Sh.MP4BoxStream,Sh.DataStream,Sh.MultiBufferStream,Sh.MPEG4DescriptorParser,Sh.BoxParser,Sh.XMLSubtitlein4Parser,Sh.Textin4Parser,Sh.ISOFile,Sh.createFile;class Th{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 s=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(s instanceof Error)return console.error(s.message),this.d=!0,e;this.A=!0,this.u=i[1],wh(t)&&this.c++,WebAssembly.instantiate(i[2],s).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 kh extends nh{constructor(e){super(e),this.TAG_NAME="Fmp4Loader",this.player=e,this.mp4Box=Sh.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 Th),this._listenMp4Box(),e.debugLog(this.TAG_NAME,"init")}destroy(){this.mp4Box&&(this.mp4Box.stop(),this.mp4Box.flush(),this.mp4Box.destroy(),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.debugLog(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.debugLog(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.debugLog(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=Gr.indexOf(e.sample_rate),s=i.codec.replace("mp4a.40.","");this.mp4Box.setExtractionOptions(i.id);const r={profile:parseInt(s,10),sampleRate:t,channel:e.channel_count},o=zr(r);this.player.debugLog(this.TAG_NAME,"aacADTSHeader",o,"config",r),this._doDecodeByFmp4(o,Oe,0,!1,0)}this.mp4Box.start()}onError(e){this.player.debugError(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,s=1e3*e.cts/e.timescale;e.duration,e.timescale,this.player.updateStats({vbps:t.byteLength,dts:s}),i&&this.calcIframeIntervalTimestamp(s);let r=null;r=this.isHevc?sl(t,i):Wn(t,i);let o=this.cryptoPayload(r,i);this._doDecodeByFmp4(o,Ne,s,i,0)}this.mp4Box.removeUsedSamples(e)}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 s=new Uint8Array(t.byteLength+2);s.set([175,1],0),s.set(t,2),this._doDecodeByFmp4(s,Oe,i,!1,0)}this.mp4Box.removeUsedSamples(e)}}else this.player.debugWarn(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 Sh.DataStream(void 0,0,Sh.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 s=new Uint8Array(t.buffer,8),r=new Uint8Array(i.length+s.length);return r.set(i,0),r.set(s,i.length),r}return null}dispatch(e){let t=new Uint8Array(e);this.transportDescarmber&&(t=this.transportDescarmber.transport(t)),t.buffer.fileStart=this.offset,this.offset+=t.byteLength,this.mp4Box.appendBuffer(t.buffer)}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=co()+".fmp4",i.click(),URL.revokeObjectURL(t)}getInputByteLength(){let e=0;return this.mp4Box&&(e=this.mp4Box.getAllocatedSampleDataSize()),e}}class Lh extends nh{constructor(e){super(e),Ah(this,"LOG_NAME","Mpeg4Loader"),this.player=e,this.player.debugLog(this.LOG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.LOG_NAME,"destroy")}}function Ch(){for(var e=arguments.length,t=new Array(e),i=0;ie+t.byteLength),0));let r=0;return t.forEach((e=>{s.set(e,r),r+=e.byteLength})),s}const Dh=3,xh=4,Rh=6,Ph=15,Ih=17,Bh=129,Mh=135,Fh=21,Uh=134,Oh=27,Nh=36;class jh{constructor(){this.slices=[],this.total_length=0,this.expected_length=0,this.random_access_indicator=0}}class Gh{constructor(){this.pid=null,this.data=null,this.stream_type=null,this.random_access_indicator=null}}class zh{constructor(){this.pid=null,this.stream_id=null,this.len=null,this.data=null,this.pts=null,this.nearest_pts=null,this.dts=null}}const Wh=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];class Vh{constructor(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}isComplete(){let e=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,t=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&e&&t}isSeekable(){return!0===this.hasKeyframesIndex}getNearestKeyframe(e){if(null==this.keyframesIndex)return null;let t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}}_search(e,t){let i=0,s=e.length-1,r=0,o=0,a=s;for(t=e[r]&&t=6?(s=5,t=new Array(4),a=r-3):(s=2,t=new Array(2),a=r):-1!==n.indexOf("android")?(s=2,t=new Array(2),a=r):(s=5,a=r,t=new Array(4),r>=6?a=r-3:1===o&&(s=2,t=new Array(2),a=r)),t[0]=s<<3,t[0]|=(15&r)>>>1,t[1]=(15&r)<<7,t[1]|=(15&o)<<3,5===s&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Wh[r],this.sampling_index=r,this.channel_count=o,this.object_type=s,this.original_object_type=i,this.codec_mimetype="mp4a.40."+s,this.original_codec_mimetype="mp4a.40."+i}}class Hh extends nh{constructor(e){super(e),this.player=e,this.TAG_NAME="TsLoader",this.first_parse_=!0,this.tsPacketSize=0,this.syncOffset=0,this.pmt_=null,this.config_=null,this.media_info_=new Vh,this.timescale_=90,this.duration_=0,this.pat_={version_number:0,network_pid:0,program_map_pid:{}},this.current_program_=null,this.current_pmt_pid_=-1,this.program_pmt_map_={},this.pes_slice_queues_={},this.section_slice_queues_={},this.video_metadata_={vps:null,sps:null,pps:null,details:null},this.audio_metadata_={codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},this.last_pcr_=null,this.last_pcr_base_=NaN,this.timestamp_offset_=0,this.audio_last_sample_pts_=void 0,this.aac_last_incomplete_data_=null,this.has_video_=!1,this.has_audio_=!1,this.video_init_segment_dispatched_=!1,this.audio_init_segment_dispatched_=!1,this.video_metadata_changed_=!1,this.audio_metadata_changed_=!1,this.loas_previous_frame=null,this.video_track_={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this.audio_track_={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._remainingPacketData=null,this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.media_info_=null,this.pes_slice_queues_=null,this.section_slice_queues_=null,this.video_metadata_=null,this.audio_metadata_=null,this.aac_last_incomplete_data_=null,this.video_track_=null,this.audio_track_=null,this._remainingPacketData=null,super.destroy()}probe(e){let t=new Uint8Array(e),i=-1,s=188;if(t.byteLength<=3*s)return{needMoreData:!0};for(;-1===i;){let e=Math.min(1e3,t.byteLength-3*s);for(let r=0;r=4&&(i-=4),{match:!0,consumed:0,ts_packet_size:s,sync_offset:i})}_initPmt(){return{program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}}dispatch(e){let t=new Uint8Array(e);this._remainingPacketData&&(t=Ch(this._remainingPacketData,t),this._remainingPacketData=null);let i=t.buffer;const s=this.parseChunks(i);s?this._remainingPacketData=t.subarray(s):t.length>>6;i[1];let o=(31&i[1])<<8|i[2],a=(48&i[3])>>>4,n=15&i[3],l=!(!this.pmt_||this.pmt_.pcr_pid!==o),d={},h=4;if(2==a||3==a){let e=i[4];if(e>0&&(l||3==a)){if(d.discontinuity_indicator=(128&i[5])>>>7,d.random_access_indicator=(64&i[5])>>>6,d.elementary_stream_priority_indicator=(32&i[5])>>>5,(16&i[5])>>>4){let e=300*this._getPcrBase(i)+((1&i[10])<<8|i[11]);this.last_pcr_=e}}if(2==a||5+e===188){t+=188,204===this.tsPacketSize&&(t+=16);continue}h=5+e}if(1==a||3==a)if(0===o||o===this.current_pmt_pid_||null!=this.pmt_&&this.pmt_.pid_stream_type[o]===Uh){let i=188-h;this.handleSectionSlice(e,t+h,i,{pid:o,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}else if(null!=this.pmt_&&null!=this.pmt_.pid_stream_type[o]){let i=188-h,s=this.pmt_.pid_stream_type[o];o!==this.pmt_.common_pids.h264&&o!==this.pmt_.common_pids.h265&&o!==this.pmt_.common_pids.adts_aac&&o!==this.pmt_.common_pids.loas_aac&&o!==this.pmt_.common_pids.ac3&&o!==this.pmt_.common_pids.eac3&&o!==this.pmt_.common_pids.opus&&o!==this.pmt_.common_pids.mp3&&!0!==this.pmt_.pes_private_data_pids[o]&&!0!==this.pmt_.timed_id3_pids[o]&&!0!==this.pmt_.synchronous_klv_pids[o]&&!0!==this.pmt_.asynchronous_klv_pids[o]||this.handlePESSlice(e,t+h,i,{pid:o,stream_type:s,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}t+=188,204===this.tsPacketSize&&(t+=16)}return this.dispatchAudioVideoMediaSegment(),t}handleSectionSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=this.section_slice_queues_[s.pid];if(s.payload_unit_start_indicator){let a=r[0];if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t+1,Math.min(i,a));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):this.clearSlices(o,s)}for(let n=1+a;n=o.expected_length&&this.clearSlices(o,s),n+=l.byteLength}}else if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t,Math.min(i,o.expected_length-o.total_length));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):o.total_length>=o.expected_length&&this.clearSlices(o,s)}}handlePESSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=r[0]<<16|r[1]<<8|r[2];r[3];let a=r[4]<<8|r[5];if(s.payload_unit_start_indicator){if(1!==o)return void this.player.debugWarn(this.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${o}`);let e=this.pes_slice_queues_[s.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?this.emitPESSlices(e,s):this.clearSlices(e,s)),this.pes_slice_queues_[s.pid]=new jh,this.pes_slice_queues_[s.pid].random_access_indicator=s.random_access_indicator}if(null==this.pes_slice_queues_[s.pid])return;let n=this.pes_slice_queues_[s.pid];n.slices.push(r),s.payload_unit_start_indicator&&(n.expected_length=0===a?0:a+6),n.total_length+=r.byteLength,n.expected_length>0&&n.expected_length===n.total_length?this.emitPESSlices(n,s):n.expected_length>0&&n.expected_length>>6,n=t[8];2!==a&&3!==a||(i=this._getTimestamp(t,9),o=3===a?this._getTimestamp(t,14):i);let l,d=9+n;if(0!==r){if(r<3+n)return void this.player.debugWarn(this.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");l=r-3-n}else l=t.byteLength-d;let h=t.subarray(d,d+l);switch(e.stream_type){case Dh:case xh:this.parseMP3Payload(h,i);break;case Rh:this.pmt_.common_pids.opus===e.pid?this.parseOpusPayload(h,i):this.pmt_.common_pids.ac3===e.pid?this.parseAC3Payload(h,i):this.pmt_.common_pids.eac3===e.pid?this.parseEAC3Payload(h,i):this.pmt_.asynchronous_klv_pids[e.pid]?this.parseAsynchronousKLVMetadataPayload(h,e.pid,s):this.pmt_.smpte2038_pids[e.pid]?this.parseSMPTE2038MetadataPayload(h,i,o,e.pid,s):this.parsePESPrivateDataPayload(h,i,o,e.pid,s);break;case Ph:this.parseADTSAACPayload(h,i);break;case Ih:this.parseLOASAACPayload(h,i);break;case Bh:this.parseAC3Payload(h,i);break;case Mh:this.parseEAC3Payload(h,i);break;case Fh:this.pmt_.timed_id3_pids[e.pid]?this.parseTimedID3MetadataPayload(h,i,o,e.pid,s):this.pmt_.synchronous_klv_pids[e.pid]&&this.parseSynchronousKLVMetadataPayload(h,i,o,e.pid,s);break;case Oh:this.parseH264Payload(h,i,o,e.random_access_indicator);break;case Nh:this.parseH265Payload(h,i,o,e.random_access_indicator)}}else if((188===s||191===s||240===s||241===s||255===s||242===s||248===s)&&e.stream_type===Rh){let i,o=6;i=0!==r?r:t.byteLength-o;let a=t.subarray(o,o+i);this.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,s)}}else this.player.debugError(this.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${i}`)}parsePAT(e){let t=e[0];if(0!==t)return void Log.e(this.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let i=(15&e[1])<<8|e[2];e[3],e[4];let s=(62&e[5])>>>1,r=1&e[5],o=e[6];e[7];let a=null;if(1===r&&0===o)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=s;else if(a=this.pat_,null==a)return;let n=i-5-4,l=-1,d=-1;for(let t=8;t<8+n;t+=4){let i=e[t]<<8|e[t+1],s=(31&e[t+2])<<8|e[t+3];0===i?a.network_pid=s:(a.program_pmt_pid[i]=s,-1===l&&(l=i),-1===d&&(d=s))}1===r&&0===o&&(null==this.pat_&&this.player.debugLog(this.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),this.pat_=a,this.current_program_=l,this.current_pmt_pid_=d)}parsePMT(e){let t=e[0];if(2!==t)return void this.player.debugError(this.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let i,s=(15&e[1])<<8|e[2],r=e[3]<<8|e[4],o=(62&e[5])>>>1,a=1&e[5],n=e[6];if(e[7],1===a&&0===n)i=this._initPmt(),i.program_number=r,i.version_number=o,this.program_pmt_map_[r]=i;else if(i=this.program_pmt_map_[r],null==i)return;i.pcr_pid=(31&e[8])<<8|e[9];let l=(15&e[10])<<8|e[11],d=12+l,h=s-9-l-4;for(let t=d;t0){for(let s=t+5;s0)for(let s=t+5;s1&&(this.player.debugWarn(this.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new eo(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame());){i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:Oe};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseLOASAACPayload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;if(this.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+this.aac_last_incomplete_data_.byteLength);t.set(this.aac_last_incomplete_data_,0),t.set(e,this.aac_last_incomplete_data_.byteLength),e=t}let i,s;if(null!=t&&(s=t/this.timescale_),"aac"===this.audio_metadata_.codec){if(null==t&&null!=this.audio_last_sample_pts_)i=1024/this.audio_metadata_.sampling_frequency*1e3,s=this.audio_last_sample_pts_+i;else if(null==t)return void this.player.debugWarn(this.TAG_NAME,"AAC: Unknown pts");if(this.aac_last_incomplete_data_&&this.audio_last_sample_pts_){i=1024/this.audio_metadata_.sampling_frequency*1e3;let e=this.audio_last_sample_pts_+i;Math.abs(e-s)>1&&(this.player.debugWarn(this.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new to(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame(Oo(this.loas_previous_frame)?void 0:this.loas_previous_frame));){this.loas_previous_frame=a,i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:Oe};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseAC3Payload(e,t){}parseEAC3Payload(e,t){}parseOpusPayload(e,t){}parseMP3Payload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;let i=[44100,48e3,32e3,0],s=[22050,24e3,16e3,0],r=[11025,12e3,8e3,0],o=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let n=(12&e[2])>>>2,l=3!==(e[3]>>>6&3)?2:1,d=0,h=34;switch(o){case 0:d=r[n];break;case 2:d=s[n];break;case 3:d=i[n]}switch(a){case 1:h=34;break;case 2:h=33;break;case 3:h=32}const c={};c.object_type=h,c.sample_rate=d,c.channel_count=l,c.data=e;const u={codec:"mp3",data:c};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"mp3",object_type:h,sample_rate:d,channel_count:l},this.dispatchAudioInitSegment(u)):this.detectAudioMetadataChange(u)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(u));let p={payload:e,length:e.byteLength,pts:t/this.timescale_,dts:t/this.timescale_,type:Oe};this.audio_track_.samples.push(p),this.audio_track_.length+=e.byteLength}detectAudioMetadataChange(e){if(e.codec!==this.audio_metadata_.codec)return this.player.debugLog(this.TAG_NAME,`Audio: Audio Codecs changed from ${this.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===this.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==this.audio_metadata_.audio_object_type)return this.player.debugLog(this.TAG_NAME,`AAC: AudioObjectType changed from ${this.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==this.audio_metadata_.sampling_freq_index)return this.player.debugLog(this.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${this.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==this.audio_metadata_.channel_config)return this.player.debugLog(this.TAG_NAME,`AAC: Channel configuration changed from ${this.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===this.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==this.audio_metadata_.sampling_frequency)return this.player.debugLog(this.TAG_NAME,`AC3: Sampling Frequency changed from ${this.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==this.audio_metadata_.bit_stream_identification)return this.player.debugLog(this.TAG_NAME,`AC3: Bit Stream Identification changed from ${this.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==this.audio_metadata_.bit_stream_mode)return this.player.debugLog(this.TAG_NAME,`AC3: BitStream Mode changed from ${this.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==this.audio_metadata_.channel_mode)return this.player.debugLog(this.TAG_NAME,`AC3: Channel Mode changed from ${this.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==this.audio_metadata_.low_frequency_effects_channel_on)return this.player.debugLog(this.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${this.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===this.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debugLog(this.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debugLog(this.TAG_NAME,`Opus: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===this.audio_metadata_.codec){const t=e.data;if(t.object_type!==this.audio_metadata_.object_type)return this.player.debugLog(this.TAG_NAME,`MP3: AudioObjectType changed from ${this.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debugLog(this.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debugLog(this.TAG_NAME,`MP3: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1}dispatchAudioInitSegment(e){let t={type:"audio"};t.id=this.audio_track_.id,t.timescale=1e3,t.duration=this.duration_;let i="";if("aac"===this.audio_metadata_.codec){let s="aac"===e.codec?e.data:null,r=new $h(s);t.audioSampleRate=r.sampling_rate,t.audioSampleRateIndex=r.sampling_index,t.channelCount=r.channel_count,t.codec=r.codec_mimetype,t.originalCodec=r.original_codec_mimetype,t.config=r.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale,i=Rt;const o=zr({profile:this.player._opt.mseDecodeAudio?r.object_type:r.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});console.error("aacADTSHeader",`profile: ${r.object_type}, sampleRate: ${t.audioSampleRateIndex}, channel: ${t.channelCount}`),this._doDecodeByTs(o,Oe,0,!1,0)}else"ac-3"===this.audio_metadata_.codec||"ec-3"===this.audio_metadata_.codec||"opus"===this.audio_metadata_.codec||"mp3"===this.audio_metadata_.codec&&(t.audioSampleRate=this.audio_metadata_.sample_rate,t.channelCount=this.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0,i=It);0==this.audio_init_segment_dispatched_&&this.player.debugLog(this.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),this.audio_init_segment_dispatched_=!0,this.video_metadata_changed_=!1;let s=this.media_info_;s.hasAudio=!0,s.audioCodec=t.originalCodec,s.audioSampleRate=t.audioSampleRate,s.audioChannelCount=t.channelCount,s.hasVideo&&s.videoCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.audioCodec}"`,i&&this.player.audio.updateAudioInfo({encTypeCode:i,channels:t.channelCount,sampleRate:t.audioSampleRate})}dispatchPESPrivateDataDescriptor(e,t,i){}parsePESPrivateDataPayload(e,t,i,s,r){let o=new zh;if(o.pid=s,o.stream_id=r,o.len=e.byteLength,o.data=e,null!=t){let e=Math.floor(t/this.timescale_);o.pts=e}else o.nearest_pts=this.getNearestTimestampMilliseconds();if(null!=i){let e=Math.floor(i/this.timescale_);o.dts=e}}parseTimedID3MetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`Timed ID3 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseSynchronousKLVMetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`Synchronous KLV Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseAsynchronousKLVMetadataPayload(e,t,i){this.player.debugLog(this.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${i}`)}parseSMPTE2038MetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`SMPTE 2038 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}getNearestTimestampMilliseconds(){if(null!=this.audio_last_sample_pts_)return Math.floor(this.audio_last_sample_pts_);if(null!=this.last_pcr_){return Math.floor(this.last_pcr_/300/this.timescale_)}}_preDoDecode(){const e=this.video_track_,t=this.audio_track_;let i=e.samples;t.samples.length>0&&(i=e.samples.concat(t.samples),i=i.sort(((e,t)=>e.dts-t.dts))),i.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===Ne?this._doDecodeVideo({...e,payload:t}):e.type===Oe&&this._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?sl(t,e.isIFrame):Wn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength}),e.isIFrame&&this.calcIframeIntervalTimestamp(e.dts);let s=this.cryptoPayload(i,e.isIFrame);this._doDecodeByTs(s,Ne,e.dts,e.isIFrame,e.cts)}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=this.cryptoPayloadAudio(t);this._doDecodeByTs(i,Oe,e.dts,!1,0)}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}_getPcrBase(e){let t=33554432*e[6]+131072*e[7]+512*e[8]+2*e[9]+(128&e[10])/128+this.timestamp_offset_;return t+4294967296>>3&3,r=(6&t[1])>>1,o=(240&t[2])>>>4,a=(12&t[2])>>>2,n=3!==(t[3]>>>6&3)?2:1,l=0,d=0;switch(s){case 0:l=Yh[a];break;case 2:l=Kh[a];break;case 3:l=qh[a]}switch(r){case 1:o{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(At.webcodecsAudioInitTimeout)}),1e3)),void ha(e)):void(this.player.isPlayer()?(this.player.updateStats({dfps:!0}),this.player._times.videoStart||(this.player._times.videoStart=co(),this.player.handlePlayToRenderTimes()),this.player.video.render({videoFrame:e,ts:e.timestamp}),this.player.handleRender()):this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),Ea(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})):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender&&this.player.video.pushData({videoFrame:e,ts:e.timestamp})));ha(e)}handleError(e){this.player.debugError(this.TAG_NAME,"VideoDecoder handleError:",e.code,e);const t=e.toString();-1!==t.indexOf(fs)?this.player.emitError(At.webcodecsUnsupportedConfigurationError,t):-1!==t.indexOf(ms)||-1!==t.indexOf(gs)||-1!==t.indexOf(ys)?this.player.emitError(At.webcodecsDecodeError,t):-1!==t.indexOf(As)&&this.player.emitError(At.webcodecsH265NotSupport,t)}handleDecodeAudio(e){this.player&&(this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"decodeVideo() player is destroyed"):this.player.isPlayer()?this.player.audio.play(e,e.timestamp):this.player.isPlayback())}handleErrorAudio(e){this.player.debugError(this.TAG_NAME,"AudioDecoder handleError:",e.code,e)}decodeVideo(e,t,i,s){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debugWarn(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.debugWarn(this.TAG_NAME,"VideoDecoder isDecodeStateClosed true");if(i&&0===e[1]){const t=15&e[0];let i={};if(t===Lt){i=Gn(e.slice(5))}else t===Ct&&(i=Zn(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debugWarn(this.TAG_NAME,`decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(At.wcsWidthOrHeightChange,`width ${s.width}->${s.height} height ${i.codecWidth}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(_a(e))return void this.player.debugLog(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debugWarn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let s=!1,r=(new Date).getTime();this.prevTimestamp||(this.prevTimestamp=r,s=!0);const o=r-this.prevTimestamp;this.decodeDiffTimestamp=o,o>500&&!s&&this.player.isPlayer()&&this.player.debugWarn(this.TAG_NAME,"decodeVideo diff time is ",o);const a=e.slice(5),n=new EncodedVideoChunk({data:a,timestamp:t,type:i?yi:Ai});this.player.emit(mt.timeUpdate,t);try{this.decoder.decode(n)}catch(e){this.player.debugError(this.TAG_NAME,"VideoDecoder",e);const t=e.toString();(-1!==t.indexOf(us)||-1!==t.indexOf(ps))&&this.player.emitError(At.webcodecsDecodeError,t)}this.prevTimestamp=(new Date).getTime()}else this.player.debugLog(this.TAG_NAME,"VideoDecoder first frame is not iFrame");else if(i&&e[1]===ks){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===Ct&&!Bo()){const e=Eo();return this.player.debugWarn(this.TAG_NAME,"WebcodecsDecoder not support hevc decode",e.type,e.version),void this.player.emitError(At.webcodecsH265NotSupport)}this.player._times.decodeStart||(this.player._times.decodeStart=co());let i=null,s=null;const r=e.slice(5);if(t===Lt?(s=Gn(r),i={codec:s.codec,description:r}):t===Ct&&(s=el(r),i={codec:s.codec,description:r}),!i||i&&!i.codec||s&&0===s.codecWidth&&0===s.codecHeight)return this.player.debugWarn(this.TAG_NAME,"decodeVideo and webcodecs configure is",JSON.stringify(i)),void this.player.emitError(At.webcodecsDecodeConfigureError,"configure or configure.code is null");i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth,this.isInitInfo||(this.player.debugLog(this.TAG_NAME,`updateVideoInfo: ${s.codecWidth},${s.codecHeight}`),this.player.video.updateVideoInfo({width:s.codecWidth,height:s.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,t),this.player.video.bindMediaStream(),this.player.debugLog(this.TAG_NAME,`decoder.configure() and codec is ${i.codec}`);try{i.optimizeForLatency=!0,i.hardwareAcceleration="prefer-hardware",this.decoder.configure(i),this.hasInit=!0}catch(e){this.player.debugError(this.TAG_NAME,"configure error",e.code,e);const t=e.toString();-1!==t.indexOf(As)?this.player.emitError(At.webcodecsH265NotSupport,t):this.player.emitError(At.webcodecsDecodeConfigureError,t)}}else this.player.debugWarn(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.debugWarn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(this.hasAudioInit){if(Wr(e))return void this.player.debugLog(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.debugWarn(this.TAG_NAME,"AudioDecoder isDecodeStateClosed true");const i=this.isAAC?e.slice(2):e.slice(1),s=i.length/this.player.audio.audioInfo.sampleRate*1e3,r=new EncodedAudioChunk({type:"key",data:i,timestamp:t,duration:parseInt(s,10)});try{this.decoderAudio.decode(r)}catch(e){this.player.debugError(this.TAG_NAME,"AudioDecoder",e),e.toString()}}}else{const t=e[0]>>4,i=e[0]>>1&1,s=t===It,r=t===Rt,o=t===Pt;let a="";a=r?i?16:8:0===i?8:16;const n={codec:"",numberOfChannels:"",sampleRate:""};let l=null;if(r||s){let t=null;if(Wr(e)){const i=e.slice(2);t=qr(i),t&&(n.codec=t.originalCodec,n.numberOfChannels=t.channelCount,n.sampleRate=t.sampleRate),l=i,this.isAAC=r}else s&&(t=ec(e),t&&(n.codec=Cr,n.numberOfChannels=t.channelCount,n.sampleRate=t.samplingRate))}else n.codec=o?Lr:kr,n.numberOfChannels=1,n.sampleRate=8e3;if(n.codec&&n.numberOfChannels&&n.sampleRate){this.isAudioInitInfo||(this.player.audio.updateAudioInfo({encTypeCode:t,channels:n.numberOfChannels,sampleRate:n.sampleRate,depth:a}),this.isAudioInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&l&&this.player.recorder.initAudioAacExtraData(l),this.player.debugLog(this.TAG_NAME,`decoderAudio.configure() and codec is ${n.codec}`);try{this.decoderAudio.configure(n),this._clearAudioSourceBufferCheckTimeout(),this.hasAudioInit=!0,null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(At.webcodecsAudioNoDataTimeout)}),1e3))}catch(e){this.player.debugError(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 ic={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 sc=Object.keys(ic).reduce(((e,t)=>(e[t]=`\n \n ${ic[t]?`${ic[t]}`:""}\n`,e)),{});function rc(e,t){let i=!1;return e.forEach((e=>{i||e.startTimestamp<=t&&e.endTimestamp>t&&(i=!0)})),i}function oc(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;const s=e.length,r=t.length,o=Math.max(s,r),a=2e3,n=Math.ceil(o/a);let l=0,d=0;function h(){let r="",o="";for(let i=0;i\n ${i.title}\n \n `);const a=t[d];a&&(o+=`\n

    \n `),d+=1}r&&i.$playbackTimeListOne.insertAdjacentHTML("beforeend",r),o&&i.$playbackTimeListSecond.insertAdjacentHTML("beforeend",o),l+=1,l0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){const r=s%60==0;let o=!1;i&&(o=rc(e,Ko(i,s))),t.push({title:Jo(s),timestamp:s,dataType:"min",hasRecord:o,isStart:r})}return t}(e);oc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0})}return e}(),t)}function nc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){let r=60*s,o=r%1800==0,a=!1;i&&(a=rc(e,Yo(i,r))),t.push({title:qo(r),timestamp:r,dataType:"second",hasRecord:a,isStart:o});let n=60*s+30;o=n%1800==0,i&&(a=rc(e,Yo(i,n))),t.push({title:qo(n),timestamp:n,dataType:"second",hasRecord:a,isStart:o})}return t}(e);oc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00",s=t+":30";t<10&&(i="0"+i,s="0"+s),e.push({title:i,hour:t,min:0,second:0}),e.push({title:s,hour:t,min:30,second:0})}return e}(),t)}function lc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<144;s++)for(let r=0;r<60;r++){let o=10*r+600*s,a=o%600==0,n=!1;i&&(n=rc(e,Yo(i,o))),t.push({title:qo(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);oc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0});for(let s=1;s<6;s++){let r=s+"0";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0})}}return e}(),t)}function dc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<288;s++)for(let r=0;r<60;r++){let o=5*r+300*s,a=o%300==0,n=!1;i&&(n=rc(e,Yo(i,o))),t.push({title:qo(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);oc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0}),e.push({title:i.replace(":00",":05"),hour:t,min:5,second:0});for(let s=1;s<6;s++){let r=s+"0",o=s+"5";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0}),e.push({title:i.replace(":00",":"+o),hour:t,min:10*s+5,second:0})}}return e}(),t)}function hc(e){const t=Math.floor(e/3600),i=Math.floor((e-3600*t)/60),s=Math.floor(e-3600*t-60*i);return(t>0?[t,i,s]:[i,s]).map((e=>e<10?`0${e}`:String(e))).join(":")}function cc(e,t,i){const s=e.$playbackProgress,{left:r}=s.getBoundingClientRect(),o=uo((bo()?i.touches[0].clientX:i.pageX)-r,0,s.clientWidth),a=parseInt(o/s.clientWidth*t,10);return{second:a,time:hc(a),width:o,percentage:uo(o/s.clientWidth,0,1)}}function uc(e,t){return e.classList.add(t)}function pc(e,t){return e.classList.remove(t)}function fc(e,t){return e.classList.contains(t)}function mc(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function gc(e,t,i){return e&&e.style&&jo(t)&&(e.style[t]=i),e}function yc(e,t){return e.composedPath&&e.composedPath().indexOf(t)>-1}function Ac(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}var bc=(e,t)=>{const{events:{proxy:i}}=e;let s=null,r=null,o=null,a=null;if(e._opt.listenWindowResizeAuoResize){s=document.createElement("object"),r=`jb-pro-object-${ya()}`,s.setAttribute("aria-hidden","true"),s.setAttribute("tabindex",-1),s.setAttribute("id",r),s.type="text/html",s.data="about:blank",po(s,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"}),o=e.width,a=e.height;const t=xo((()=>{e.width===o&&e.height===a||(o=e.width,a=e.height,e.emit(mt.resize))}),500);i(s,"load",(()=>{i(s.contentDocument.defaultView,"resize",(()=>{t()}))})),e.$container.appendChild(s)}e.on(mt.destroy,(()=>{if(s)try{if(!Ac(s)){const t=e.$container.querySelector(`#${r}`);t&&e.$container&&e.$container.removeChild(t)}}catch(e){}d&&(clearInterval(d),d=null),h=null,c=null,u=0,s=null,r=null,o=null,a=null})),e.on(mt.volumechange,(()=>{!function(e){if(0===e)po(t.$volumeOn,"display","none"),po(t.$volumeOff,"display","flex"),po(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=fo(t.$volumePanel,"height")||60,s=fo(t.$volumeHandle,"height"),r=i-(i-s)*e-s;po(t.$volumeHandle,"top",`${r}px`),po(t.$volumeOn,"display","flex"),po(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(mt.loading,(i=>{t.isInitPlayer=!1,po(t.$loading,"display",i?"flex":"none"),(Ea(e._opt.backgroundLoadingShow)&&Sa(i)||Ea(i))&&po(t.$poster,"display","none"),i&&(po(t.$playBig,"display","none"),po(t.$tipsMessage,"display","none"),t.extendBtnList.forEach((e=>{e.createdMoment===Rr&&(e.$iconWrap&&po(e.$iconWrap,"display","flex"),e.$activeIconWrap&&po(e.$activeIconWrap,"display","none"))}))),i||e._opt.extendDomConfig.showAfterLoading&&t.$extendDom&&po(t.$extendDom,"display","block"),i||e.getRenderType()===$&&Ea(e._opt.useMSE)&&n()})),e.on(mt.removeLoadingBgImage,(()=>{n()}));const n=()=>{t.$loadingBgImage&&t.$loadingBg&&t.$loadingBgImage.src&&(e.debugLog("Control","remove loading bg image"),t.$loadingBgImage.width=0,t.$loadingBgImage.height=0,t.$loadingBgImage.src="",po(t.$loadingBg,"display","none"))},l=t=>{sa(t)===e.$container&&(e.fullscreen,f(),e._opt.androidMobileFullscreenRotate&&bo()&&(e.fullscreen?(e.$container.classList.add("jb-pro-fullscreen-android-rotate"),e.setRotate(270)):(e.$container.classList.remove("jb-pro-fullscreen-android-rotate"),e.setRotate(0)),p()))};let d=null,h=null,c=null,u=0;const p=()=>{h=e.rect,h.width=parseInt(h.width,10),h.height=parseInt(h.height,10),u=0,d=setInterval((()=>{const t=Ur.isFullscreen;c=e.rect,c.width=parseInt(c.width,10),c.height=parseInt(c.height,10);const i=screen.width,s=screen.height,r=c.width===h.width&&c.height===h.height,o=!t||i-c.width<10&&s-c.height<10;if(r&&o||u>=5)return d&&(clearInterval(d),d=null),void g((()=>{A()}));h=c,u++}),1e3)},f=i=>{if(Ea(e.isPlaying()))return;let s=No(i)?i:e.fullscreen;po(t.$fullscreenExit,"display",s?"flex":"none"),po(t.$fullscreen,"display",s?"none":"flex")},m=()=>e._opt.playType===_&&e._opt.playbackConfig.showControl,g=i=>{bo()&&t.$controls&&(e._opt.useWebFullScreen||e._opt.androidMobileFullscreenRotate)&&setTimeout((()=>{if(e.fullscreen){const i=e.getControlHeight();let s=e.height/2-e.width+i/2,r=e.height/2-i/2;if(t.$controls.style.transform=`translateX(${-s}px) translateY(-${r}px) rotate(-90deg)`,t.$zoomControls){const i=156,s=30,r=e.width/2+i/2-s/2;t.$zoomControls.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}if(t.$recording){const i=101,s=20,r=e.width/2+i/2-s/2;t.$recording.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}t.$ptzControl&&(t.$ptzControl.style.transform="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)"),t.$ptzControl&&(t.$ptzControl.style.transform="rotate(0)");i&&i()}),10)};try{Ur.on("change",l),e.events.destroys.push((()=>{Ur.off("change",l)}))}catch(e){}e.on(mt.webFullscreen,(e=>{bo()&&(f(e),g((()=>{A()})))})),e.on(mt.recording,(()=>{e.playing&&(po(t.$record,"display",e.recording?"none":"flex"),po(t.$recordStop,"display",e.recording?"flex":"none"),(e._opt.hasControl||e._opt.isShowRecordingUI)&&(po(t.$recording,"display",e.recording?"flex":"none"),Ea(e.recording)&&t.$recordingTime&&(t.$recordingTime.innerHTML=Ho(0))))})),e.on(mt.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=Ho(e))})),e.on(mt.zooming,(()=>{e.playing&&(po(t.$zoom,"display",e.zooming?"none":"flex"),po(t.$zoomStop,"display",e.zooming?"flex":"none"),(e._opt.hasControl||e._opt.isShowZoomingUI)&&po(t.$zoomControls,"display",e.zooming?"flex":"none"))})),e.on(mt.playing,(e=>{y(e)}));const y=i=>{i||e.isPlayFailedAndPaused&&Ea(e._opt.playFailedAndPausedShowPlayBtn)?(po(t.$play,"display","none"),po(t.$playBig,"display","none")):(po(t.$play,"display","flex"),po(t.$playBig,"display","block")),po(t.$pause,"display",i?"flex":"none"),po(t.$screenshot,"display",i?"flex":"none"),po(t.$record,"display",i?"flex":"none"),po(t.$qualityMenu,"display",i?"flex":"none"),po(t.$volume,"display",i?"flex":"none"),po(t.$ptz,"display",i?"flex":"none"),po(t.$zoom,"display",i?"flex":"none"),po(t.$scaleMenu,"display",i?"flex":"none"),po(t.$faceDetect,"display",i?"flex":"none"),po(t.$objectDetect,"display",i?"flex":"none"),po(t.$occlusionDetect,"display",i?"flex":"none"),po(t.$controlHtml,"display",i?"flex":"none"),e.isPlayback()&&po(t.$speedMenu,"display",i?"flex":"none"),f(),t.extendBtnList.forEach((e=>{e.createdMoment===Pr&&(e.$iconWrap&&po(e.$iconWrap,"display",i?"flex":"none"),e.$activeIconWrap&&po(e.$activeIconWrap,"display","none"))})),e._opt.showPerformance?po(t.$performanceActive,"display",i?"flex":"none"):(po(t.$performance,"display",i?"flex":"none"),po(t.$performanceActive,"display","none")),po(t.$poster,"display","none"),po(t.$ptzActive,"display","none"),po(t.$recordStop,"display","none"),po(t.$zoomStop,"display","none"),po(t.$faceDetectActive,"display","none"),po(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"}("")),po(t.$zoomControls,"display","none"),po(t.$recording,"display","none"),t.$ptzControl&&t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")),A(),i&&b()};e.on(mt.playbackPause,(e=>{y(!e)})),e.on(mt.kBps,(i=>{const s=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 s=parseFloat(e/8);i=Math.floor(Math.log(s)/Math.log(1024));let r=s/Math.pow(1024,i);return r=r.toFixed(2),r+(t[i]||t[0])}(i);t.kbpsShow=s,e._opt.showBandwidth&&(t.$speed&&(t.$speed.innerHTML=s),A())}));const A=()=>{if(m()&&e._opt.playbackConfig.controlType===Q.normal){let i=t.controlsInnerRect.width-t.controlsLeftRect.width-t.controlsRightRect.width-t.controlsPlaybackBtnsRect.width;bo()&&e.webFullscreen&&(i=t.controlsInnerRect.height-t.controlsLeftRect.height-t.controlsRightRect.height-t.controlsPlaybackBtnsRect.height),t.$playbackTimeInner.style.width=i+"px"}},b=()=>{if(!m()||e._opt.playbackConfig.controlType!==Q.normal)return;const i=t.$playbackCurrentTime.style.left;let s=parseInt(i,10);const r=t.controlsPlaybackTimeInner.width;s=s-r/2>0?parseInt(s-r/2,10):0,t.$playbackTimeInner.scrollLeft=s};if(m()){const i=()=>{if(m()){let i=0;const s=e.playback&&e.playback.playingTimestamp;if(s){const r=new Date(s),o=r.getHours(),a=r.getMinutes(),n=r.getSeconds();e.playback.is60Min?i=60*o+a:e.playback.is30Min?i=2*(60*o+a)+parseInt(n/30,10):e.playback.is10Min?i=6*(60*o+a)+parseInt(n/10,10):e.playback.is5Min?i=12*(60*o+a)+parseInt(n/5,10):e.playback.is1Min&&(i=60*(60*o+a)+parseInt(n,10)),t.$playbackCurrentTime.style.left=i+"px"}}},s=e=>{t.$playbackNarrow.classList.remove("disabled"),t.$playbackExpand.classList.remove("disabled"),e===Ri&&t.$playbackNarrow.classList.add("disabled"),e===Bi&&t.$playbackExpand.classList.add("disabled")};e.on(mt.playbackTime,(s=>{if(e._opt.playbackConfig.controlType===Q.normal)t.$playbackCurrentTimeText&&(t.$playbackCurrentTimeText.innerText=ko(s,"{h}:{i}:{s}")),i();else if(e._opt.playbackConfig.controlType===Q.simple){const i=(r=s,o=e.playback.totalDuration,uo(r/o,0,1));t.$playbackProgressPlayed.style.width=100*i+"%",t.$playbackProgressIndicator.style.left=`calc(${100*i}% - 7px)`,t.$playbackProgressTime.innerText=`${hc(s)} / ${hc(e.playback.totalDuration)}`}var r,o})),e.on(mt.playbackPrecision,((r,o)=>{m()&&e._opt.playbackConfig.controlType===Q.normal&&(t.$playbackTimeScroll.classList.remove(Mi.oneHour,Mi.halfHour,Mi.fiveMin,Mi.tenMin),t.$playbackTimeScroll.classList.add(Mi[r]),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="",r){case Ri:ac(o,t);break;case Pi:nc(o,t);break;case Ii:lc(o,t);break;case Bi:dc(o,t)}i(),e._opt.playbackConfig.showPrecisionBtn&&s(r),b()}),16))})),e.on(mt.resize,(()=>{g((()=>{A()}))})),e.on(mt.playbackTimeScroll,(()=>{b()})),A()}if(e._opt.operateBtns.quality&&e._opt.qualityConfig.length>0){e.on(mt.streamQualityChange,(e=>{i(e)}));const i=e=>{t.$qualityText.innerText=e,t.$qualityMenuItems.forEach((t=>{const i=t.dataset.quality;t.classList.remove("jb-pro-quality-menu-item-active"),i===e&&t.classList.add("jb-pro-quality-menu-item-active")}))};(()=>{const i=e._opt.qualityConfig||[];let s="";i.forEach((e=>{s+=`\n
    ${e}
    \n `})),s&&(t.$qualityMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$qualityMenuItems",{value:e.$container.querySelectorAll(".jb-pro-quality-menu-item")}))})(),e.streamQuality&&i(e.streamQuality)}if(e._opt.operateBtns.scale&&e._opt.scaleConfig.length>0){e.on(mt.viewResizeChange,(e=>{i(e)}));const i=i=>{const s=e._opt.scaleConfig[i];t.$scaleText.innerText=s,t.$scaleMenuItems.forEach((e=>{const t=e.dataset.scale;e.classList.remove("jb-pro-scale-menu-item-active"),Co(t)===Co(i)&&e.classList.add("jb-pro-scale-menu-item-active")}))};(()=>{const i=e._opt.scaleConfig||[];let s="";i.forEach(((e,t)=>{s+=`\n
    ${e}
    \n `})),s&&(t.$scaleMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$scaleMenuItems",{value:e.$container.querySelectorAll(".jb-pro-scale-menu-item")}))})(),i(e.scaleType)}if(e.isPlayback()&&e._opt.playbackConfig.showRateBtn&&e._opt.playbackConfig.rateConfig.length>0){e.on(mt.playbackRateChange,(e=>{i(e)}));const i=i=>{const s=e._opt.playbackConfig.rateConfig.find((e=>Co(e.value)===Co(i)));s&&(t.$speedText.innerText=s.label,t.$speedMenuItems.forEach((e=>{const t=e.dataset.speed;e.classList.remove("jb-pro-speed-menu-item-active"),Co(t)===Co(i)&&e.classList.add("jb-pro-speed-menu-item-active")})))};(()=>{const i=e._opt.playbackConfig.rateConfig;let s="";i.forEach(((e,t)=>{s+=`\n
    ${e.label}
    \n `})),s&&(t.$speedMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$speedMenuItems",{value:e.$container.querySelectorAll(".jb-pro-speed-menu-item")}))})();const s=e.playback?e.playback.playbackRate:1;i(s)}e.on(mt.stats,(function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e._opt.showPerformance){po(t.$performancePanel,"display","block"),t.$performancePanel.innerHTML="";const s=yo,r=ka(),o=e.getCpuLevel(),a=jo(o)&&-1!==o?`${tr[o]}`:"",n=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 g=e.getRecordingDuration(),y=e.getRecordingByteLength();const A=e.isAudioPlaybackRateSpeed(),b=e.videoIframeIntervalTs;g=Ho(g),y=Ro(y);const v=e.isPlayback()?"录播":"直播";let _=i.isDropping;const S=e._opt.useMSE&&e._opt.mseDecodeAudio,E=e.control?e.control.kbpsShow:"0 KB/s",w=e.getVideoPlaybackQuality(),T=e._serverInfo||"",k=`\n
    \n 播放器版本 ${s}\n
    \n ${T?`\n
    \n 服务器信息 ${T}\n
    \n `:""}\n ${e._opt.isMulti?`\n
    \n UUid ${e._opt.debugUuid}\n
    \n `:""}\n ${e.isInMulti()?`\n
    \n 窗口下标 ${e._opt.multiIndex}\n
    \n `:""}\n ${r?`\n
    \n 内存大小限制 ${Ro(r.jsHeapSizeLimit)}\n
    \n
    \n 可使用的内存 ${Ro(r.totalJSHeapSize)}\n
    \n
    \n 已使用的内存 ${Ro(r.usedJSHeapSize)}\n
    \n `:""}\n ${a?`\n
    \n CPU压力情况 ${a}\n
    \n `:""}\n\n ${r&&r.usedJSHeapSize>r.totalJSHeapSize?'\n
    \n 可能内存泄漏 是}\n
    \n ':""}\n\n
    \n 播放模式 ${v}\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 视频格式 ${n.encType||"-"}\n
    \n
    \n 视频(宽x高) ${n.width||"-"}x${n.height||"-"}\n
    \n ${e.isPlayer()?`\n
    \n 视频GOP(ms) ${b||"-"}\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 视频录制时间 ${g}\n
    \n
    \n 视频录制大小 ${y}\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.streamBuffer}\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.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()&&Ea(S)?`\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) ${Ho(i.pTs)}\n
    \n
    \n `;t.$performancePanel.insertAdjacentHTML("beforeend",k)}else t.$performancePanel.innerHTML="",po(t.$performancePanel,"display","none")})),e.on(mt.togglePerformancePanel,(e=>{po(t.$performance,"display",e?"none":"flex"),po(t.$performanceActive,"display",e?"flex":"none")})),e.on(mt.faceDetectActive,(e=>{po(t.$faceDetect,"display",e?"none":"flex"),po(t.$faceDetectActive,"display",e?"flex":"none")})),e.on(mt.objectDetectActive,(e=>{po(t.$objectDetect,"display",e?"none":"flex"),po(t.$objectDetectActive,"display",e?"flex":"none")})),e.on(mt.occlusionDetectActive,(e=>{po(t.$occlusionDetect,"display",e?"none":"flex"),po(t.$occlusionDetectActive,"display",e?"flex":"none")}))};function vc(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===i&&s.firstChild?s.insertBefore(r,s.firstChild):s.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}vc('@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@-webkit-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}}@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}}.jb-pro-container video::-webkit-media-controls{display:none!important}.jb-pro-container .jb-pro-icon{cursor:pointer;width:16px;height:16px;display:inline-block}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-ptz-controls.show-vertical{right:43px}.jb-pro-container .jb-pro-ptz-controls.show-vertical .jb-pro-ptz-btns{left:0;top:156px}.jb-pro-container .jb-pro-ptz-controls.show-level{right:163px}.jb-pro-container .jb-pro-ptz-controls.show-level .jb-pro-ptz-btns{min-height:156px;left:144px;top:0;display:flex;flex-direction:column;justify-content:center}.jb-pro-container .jb-pro-ptz-controls.jb-pro-ptz-controls-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-up{transform:rotate(-90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left{transform:rotate(180deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-down{transform:rotate(90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-up{transform:rotate(-135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-up{transform:rotate(-45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-down{transform:rotate(135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-down{transform:rotate(45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-control{position:absolute;left:53px;top:53px;width:50px;height:50px;background:#fff;border-radius:50%;transition:left .3s,top .3s}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left{left:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-up{top:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right{left:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-down{top:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-up{top:39px;left:39px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-down{left:39px;top:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-up{top:39px;left:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-down{top:67px;left:67px}.jb-pro-container .jb-pro-ptz-icon{position:relative}.jb-pro-container .jb-pro-ptz-icon:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-btns{display:block;position:absolute;left:0;top:156px;width:156px;box-sizing:border-box;padding:0 30px}.jb-pro-container .jb-pro-ptz-btns .jb-pro-ptz-btn{display:flex;justify-content:space-between}.jb-pro-container .jb-pro-ptz-expand .jb-pro-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%}.jb-pro-container .jb-pro-ptz-expand:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-narrow .jb-pro-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}.jb-pro-container .jb-pro-ptz-narrow:hover .jb-pro-ptz-narrow-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAJ1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v7X19ckk9ihAAAACnRSTlMA9+NCAsuKJsRiPv/2GwAAAJlJREFUGNNjYAAC5gxFoTYDBijw1FoFBIumQHjsUavAYGkBmGu0CgqUwRqlYNyFIO2Fq+BAnIGBJQrBXerAwLkKCUxgYELmKjBYIXMXM2Qhc5cxdCFzVzBoIXMXMYAcsRsMdgEdgs4FKT4DBqdAitGMQrMIzRkojlRB9wKaB9G8z+CMGjgshjCuMCjoWNxRAxYt2KGRYgJiAQAnZcjElaB/xwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-aperture-far .jb-pro-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}.jb-pro-container .jb-pro-ptz-aperture-far:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-aperture-near .jb-pro-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}.jb-pro-container .jb-pro-ptz-aperture-near:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-focus-far .jb-pro-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}.jb-pro-container .jb-pro-ptz-focus-far:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-focus-near .jb-pro-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}.jb-pro-container .jb-pro-ptz-focus-near:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-cruise-play .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJWSURBVHgBtZe/b9pAFMefbSYWMjCjdOtmYEYqXVC3umMlBFRiT7qxkexITcdKSDUSYna2iqX+E/DG6LCQgcETUiR+5Pv8I3Kc+McF5ysZ3x2++9x79/zuLFEG9Xq9s/1+r8my/AnVJq4z/2LZfB0Oh1tFUQxd1+208aQ0GAa7kCTpMgRJk4kJXk+nU5NEoe12W8PM/wrAotIx2Z+w3MkE7XQ6Q3S4otNlY5zPUZdL7wiMBUsRIK/fDeWvhQ92XS0HrQia83cCsqoIyMug8gQ9Ho/DpF7FYpEajQa9VTBoyIZxWeEfv6IndSqVSjQYDKhcLtNqtaLtdkuigmGSZVn/XKiqqr9wqyZ1YEtbrRZVKhX3zvX1ei0Eh7Ufa7Xan8C9VRIUg9lyQZfzO19VOOugkBpAgaXRtnq97oLZ5ZvNJm0YQkBZ8m63E7YyKl5ntrrf77vlJCF/qzLlKLZ4NBqRpmmuF2LBlLOyBFYBchDKlIeWyyWNx+PUtS2Qtx+eJA6i2WzmQtMEA+8KnA+73a6N+jkJil1pGAbN5/PMfRBIZsGn3+LFvSABMYiBgpnJgZEeFHQD4EzQrOsWI4N/nrY2uPg/eeefV8WvAKfALOsWJ3jzA++rcqjhB25OXAd244nA62AjV4LGxWLhIBk/oPiF8pc9mUy+BZVnyQEzueEZUb5yjyvhBiX6BCw2YTGvdZNyAkYPZsprT/rgO/K2vDcdQQH7jes7gPcv/kvqyCcKbEVX6PxVAG76QWPGPZAIDcEZqGECTQyokpe9wp8VfNqzyA2L9M+KRzm19l1i6ZQBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-play:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ5SURBVHgBtZe7buJAFIYPjsVFAok3wBUlYcUDLNvQISUSDVVCA0IUYZ8gmzcgBeIiJLwdFau8QToaQKygovI20CJBARKX/Y/jICPAF3B+yRpjZvzNOWfOzLGLLKrZbAaXy+WdKIq32+1WcrlcQe0vZb1e/8XvQT6ff7fyLpdZh0qlEr+5uXne7XZxMpciCIKMSfzGBBSyCwVMAqxpEXYEhzdeAJYtQ2u12h2aJq4gXadSLpf7aQptNBoPm81GJofEsc5ms9/0zwT9j3K5HHUSyEJ4ovV6vXkSyjHEyvxDXyCAHxGy4hEUq+4JjWQ02O/30xV65rTbQ9lKNEWjEYFAgFKpFMViMbpQnOfFPRSKWxnldrtVaDqdpnA4THalefMDinx8sDOYrY7H45RIJOy6PMibjch3F24AJEmSeo3HY+p2u7RYLEzHwNqogOUcpSvFrk4mk5Zcjry9FZCX1+46qj5dzvEOhUKGfQVyWAyPRCLqojsnEYtohpiSE5rP59TpdEhRFMN+Itw7Q3DpGq1WKxqNRurF90YC75+gnXszulBsVbvdpl6vZwpkwasDNWVw9r3BWlu5Op1OVdBkMrEzTD11RO1exmUJytb0+30aDodkV7DyjT2rBpNrG8zg3WwQW9ZqtS4CatASt/sVhAC/GA3glWk1bqcEo+TPwm0P5QeYySt9jRS9UQe54vF4fqEZkMNCdXivrw4PoJlMZoad5IeDYE7F+0KhcPC+syVotVotIQ5PdLm4CD8CGkJZfAIhzlw3SWRdM+T9q9frLbHnTnUwrfBZfPCiecQG8v3MBHj/HvAm4/P55HMwW1C9tG8a/RmsGH1CnNJ/17UakVMOx7kAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-cruise-pause .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHySURBVHgBxZc7bsJAEIbHdprQJAU1ckln3FM4J4jTIkSMRB9uQDhBlBPECIk2yQ1MSeeIxg0KZQoKKpSCR/4xtsXTNmA7v2ThHe/ut7M7O7sIFEOGYdzO5/OSJEn3KGp4ZDy33ucxP6vVqo86H71ez47qT4iCLZfLJ0EQmhuQKNlo89rtdk06FVqtVjV49kZrr86RicG2TdMcx4LWarUWGjzT5Rqjn7tdsJAi8Ch4C4op1TGl75S8GKwCPOWC6FsRNDKAL5SOZER30HcAhbFFEUFTLBapXC5v2fL5/J7tiOCXofHLlVfikRhRrSqVChUKBXIchyaTiWtrNBruYLjM9jB5jlmup4vFQqMYyuVydKE03vsuVBTFR8pIcFD317REGQlRXBJ5PSl+iktCskgZC57eZA5l/Q/Uy4lTykjYq1++p5EHb1LC9rRdKA7dT8pO64yERG/SmVM8m81OqW7yckr8Ztv2r6Io1whnLawF59fhcLiVY0ejkWsfDAYUJfRfB+snOE85J2KRvym9RGF2Op06vwRbhg9YHgmlIz7E235B2vwC1x1VVdl7jZLT3nVF2q0BsJUg+ODFTDpU0wP3PfC5a2wB+BD7CuqLgws/TQQYn7cyxYfxfdc6ViEUujMAHUlER4cKHfhbATvPjBUG8/UH1xXJDxHoYGQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-pause:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAH/SURBVHgBxVY7bsJAEJ01CAkJKUhUULmiDSnpoKYINyBuQIgi3AA4QZQKIQq4QaChhhuQCxAXSERUSDSIb944axSS+CPA5kn27o7X+2Z2dz6CXKDT6URXq1UqGAw+Hg6HDB4V4qj8rAsh9N1uN9rv971KpTJ2Wk84kW2322csVv1BYr+gEGMo8Foul7uWc6w+NJvNjKIoHXRVOgMg74K8AXLdFWm73a7BujpdDh3rZH8TCw8JLYlPSFutVh7NG10feigUetA0bcEDxZTiDFU0L+QN1M1mc1z7SBoIBGrkcGkSiQQlk8kTWSQS+SP7D3CzJ76c3A/yi61kodOP6XSaYrEYzWYzWi6XhiybzVI8HjfGLLeDNGxoWpohF8C50CXgwMK+r0gNCuQTENnyitQgRT4BQSOlyFvrKsRdCapC/uPuFqR0G1IZExfkH94NSzkHkk+Ap4wNUiTqPvmH74gUDoe7dOYWr9dr13M5sfNxBnjQ7/dXuVwuDGHG7ieOr9Pp9CTGzudzQz6ZTMgJ2FFtMBh8HvMpx0Ro/UEeBQq2slgsatw/uoxMsBp5A64WG+bgxE9LpVIPpUWDrgv7csUE4nEdlWCNPCC0JJXEF5Wg8MchHs11CWpCVvZVkBfckksyrneHVnMEuQRXitiqPBS4lwpEJYmORkc7Qju0IzPxBZ2t+3mW/JtqAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKgSURBVHgBtZe/jtpAEMYH28WJioIa+URDF8MTkAalO6cH4YIiFbk8QXS8QO6oUlCAkGjDtTRHJBoa4nQ0KBZdJApoEAV/Mp9jkAF7bXPcJ5ndtdf725nZWdYxiijDMBKr1SqhKIqKNpdms9mcRxkjFqZTsVjMy7J8x1WdL9WjC6D97Xb73G63m0HjxULAvnI1T+FlMfxBBPeEwoW73Q6we7pcViwWe8+utwKhDFQZ+IOrGr1eAH9ksOkLdSz8Rd5xu1RzBmfdFkvupwz8dmUgBENeYNAZtFQqGVwY9DZSnTVi6+Decrn8h0JYWSgUKJfLHdrL5ZKm0ykNBgOazWbCd9nNt3CzgoZjpUohlEqlKJPJHN3DJHRdp16vR51Ox/ddTiVkw70NlSTp7rRDMpmkWq1G4/HYvmANSpHghXg8To1Gw/M5W1oGVEZD07TvXNy4O8Btw+GQFouFbV06nabRaGRbhbaf8AzvTiYTr8c32Wz2p8KrSuMgJ7x6IEa4AIuivau9tNlsNGm9XqsBY9gxhOvCCi728wa7OCHhRzQAZl2pVGyXRZEoBAoFCDGs1+v2QooiUfpIHE+LBEL+VatVezVfDcp/whYJhAWBVHFvCEFCfz8op6cpORuxJRokajz98tSRae+97OJnUS/RanQLkwNQ4FrzsA2yyU0Gf/br2e12A90LlwYAkS5Pdrm/wRs+/rh1ChAshuV7wTqAQoTAarVat6gorll8YWvzXBXmbdTUcY3/sK/L+4ppmnPeF/9SCGsvAXIsH8+gDthkMFyepyuJgS0GHh3w5NNOzO0zeMHVD/R64BMDP53d93vBORW+0GVnpvmpS0NBXXDDSacwR9K5kxaPok+NUJ8VDlzlQucJvKNj63G2/U3/E78fZqx/rk0w4ggu8jUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAK2SURBVHgBtVa9jtpAEB58/EqArqCBBqehorgTVDQxPVJOiD5QAEJUeYLjniBcgRACKeQJQsQDBBoqkIigookraC1BwT+ZcQBBsNd7Ovgk2LV3vd/M7PyZgBPlclnc7XZPFovFv91uRZPJdL9fktfr9W987udyuRbPWSajDUgm3d3dPSOhBMaQUaAXu93eSKVSCryVtFQqPaBWXznJNMlR8zo3aa1W+7zZbIo4vYd3QBCEQjqdfjEkrVarzyhlAa4EvOt6JpNJ6ZJWKpUnHH7A9VHMZrNfLkjJO9Ecv3Aqwg2A1osevFs4vCQP5SF0Op3g9XrPflar1egzut9vCNVHzPS3j8EkcCAcDkMgELh4PxqNoNvtwmw20/tUXC6XSRyLqqZ7LS80CgaDqiY8IEESiQSIoqi7B53qE40qqVYsolTgdrshEokAeh9IkgRGIDPTPhJYC8SD4eg3k52RQNQi7XQ66txms+kepEUcjUah2Wxqrq9Wq6h5Pp8/4CUzD1osFuqPFwfnIsE1IBKbyDqANIzFYhCPx+EtYPmCGQxAppJlGQaDAVwLaFlBgRtAx7T/SNGNZWCg1WqpoeP3+4EX0+kUJpOJNiEqKWA49HGusA6gwPd4PMCLXq+nu4bpsK+6LVV9YMDlcqnkPKD7JyF1oFD+PSSHV9ZB4/EYQqEQGGE4HEK73dZdR+Ua6nh4gWXtD3AkfCL3+XzHZ4pfyrekIQnHApr2A2oqn4YM1TvDWkr3xbozPVAxJ0KaH1MRFllSvQG3gYztz7FtOct/mLqorZDhulD2BVzWJKW2kTZckVjBnviM8IKUQBtQ40ck/w7vAIUhnvGYz+cvwpHZbGNHkcQMwtXGnICs9YrCF/Q2GHb4e3IJBxLgo44ACsY6afbT4XDUWd09N+kpqOhTDT55Jf9/Z0b4C/UJLQCcLGi1AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIjSURBVHgBtZe9UsJAEMc3l1Q0WvAA2NEp1MyInVbGnoE8AVrSqW+gT2CY4QGwpTEFNcaOEqksKKiYcYYP/xsSJoRwx8f5n7nRu9u73+7lbu8waAc5jnM6m81sIcQlqhcoOZTTsHvAZT6fv5um2XZdd6Caz1DBMNm9YRgPMYhKHhx8brVaHu0LrVQqNjx/2wOWlAtnn9MiT4VWq9VHDHii4zXAPFdJsPGPwK1gIwHk7/dC+sXgAsBjroioFZsmpznCuHKLxeIxqqwirdVqvGmcbaOy2SyVSqW1tuFwGJTRaES7CEGd8TJbXOEo4YkjG8BQ27ZT+7rdLrXbbSUcx4+P3oOIVQ4Wr0Cj0aBMJiO1Q6Q1PvsirFzSkeKVqNfrKjM+8xeCybRMbUcrn88HRSasqs2R5kijisWitB+reiKm0+mhaS5VvMwqCdIs1WYKoJZljUmj+NwqobS8D7Wp1+tJ+5EPvkWYD33SIE4S/X5faoOHgCdC+jsdKc5GnJUUGiNIzwrpbjwh76tOpxMAJ5OJyjTwKp7wP/CnvM06LeFzdPwNd4AFihL+Chom/U86/HmiAr4CGOR4M2r0fX9cKBR+8e816deg2WzeRJW15ABPXvgxRXoVPFfiDWbSAhF7iJiXvUyagMmHmZlmGYK/aXn7HPSNAWui3AH4s9EnG8ibiy94DL6l3W8jL3zvetsMpNCEAw4cKGPCc9r8WeGj/YuBMlikP+yn3EGZYjlWAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAI5SURBVHgBxZZLjtpAEIbLjUFih8QFnBUrJCIOEHOCROIACStALBhOMMwJMlkgBCyYnCDMCUJWrJCQYB+zBwkJFiBe+QvZyEz86IEezSc1dj/w76pyV5dGEnS73cR6vf4SiUQ+HY9HE0MJu5GmaSNcFrvd7hn3vXK5bIU9TwsTw8Oqh8PhzhGRoIf1tSBxX9F2u12FVfVXiL3ksVgs1khWtNVqfcfljm7HgtW5l1Zrbyh4Fo7FYh8LhcLCGRDu2U6nc69YkDG22+0v98DZ0mazaQgh/tLbUUOMHy9E8eH8treDJ8lkkgzDuBibz+c0m81otVqRBAu4+QO7WecerDSDBB3RbDbrOTcej2kwGFAIvNc5dPVTTLHpv9INpNNpyufzBEsC1yF81dOVf8KslCHIEy4SjUYjIxDLDDoGKYAtDrNW13VT7Pf7azOOJ6lUKnAeySLB7jVIIezmMAS9A/igxIIUwns3VBQ+HpFCLMsKnGcjhX0CKLF2MpnQcrkMXIPzuX+KKax9phthtw6Hw7BlVqVSGel25wntqqy02WxOFnLj+xB6/HNTwmdXTqdTGTHmfKA7lhKSxAOCbPr9g90n82X6AcGfTgVxUTngtKlD+J4UAw/2S6VSzulfJAe8SZ3fiNRiQbTgHvgvI0H4Gxb9IAVwTexVmHmmQbiCD1suHy26En7xaDSa86p/A4ttrpuIT3ohpLcTxw/tAWJ9vzUaSWCLm3DXZzS+z7hELFzYjX/i8fiTu9T04x9LgQk+PbvDKQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALxSURBVHgBtVYrrBpBFJ0FFAqBqCIrUXRBk5QaUleewBBIlwSDoW1CUlzz0CSlaJJHA8FgqMBg4CWIKkpRuEfQCDAYAvSeYYfsLgss6fYkk5ndmXvP/c1HYjaQTqdjbrf7PQ0VarLWgBW1Cdput3tutVrdW7qka5OZTEZ1uVwfaBhj9jDf7/ePzWazwe4hVFVVPhwOT3cQnRFLkvS20WjMzRMuCzKFyH7/AxkAg18oQp/ME24LsgENfcwBkJfvQqHQejqd/jr905HJGpnMHIYW3iHGp5AS2df/QabpfiKHfCdCVCN1qh1hv9/PIpEIi0ajLBgMskAgcDZfKBTMYjJVL8+nh7MeS/8ioFiQbDYbtlgseA/lXq+Xt9lsxrrdLkulUmw8Hp/poLB+JC+rkpa7FysiKEokEpyo3+/zBiIrr2EU1kKmWCxariMvsy46IRJWZFBSLpf5GApgvZUSYLlcstFoxMfwHnKQN4Mi+cYdDoe/IGpmslKpxJV0Oh223W7ZLcTjcb6uVqtxLxFayJtkfSga2Sycy+X4YnhlBzAQhGI9euTRqnhAaNjkKA5Unl0yALlD0SC0Au12m/fIvx5nRxsEYV2lUrHMgxmiYMwGwmiE1qzDrSiKSv0r8QMxF2Wdz+fZer3mhXAJCP9gMOCGAiBJJpM8h6jqXq9nWO+hLfGH9ohiVoTFIEbxwFqECMoQInwLy4V3mEMe0SB7YWtMJJzoVK7fLnkgKg65BVBM8Bj5gjHwDORoGNfrdUMu9SDnfl7d+HqAEArFCYNQYoxtAODfJSIBimTWpV2Swxt8PLwiRAgjGrwXuEVGmBNXw6MxP5KXMWYTCKs4U+2COH6g59tCu6uG7A7AYxteCcypVU+EmgVZbcJxkO4HcmplIEQuMcGOTz8nyT6T7on4Npw0mMBzgDnkqUZWNfyzWujQM/FB79lVQh2xeudbZ0VE36mvipzdRagjjtFtnSBlr9nxuS9uGCidk1HPdFp1xcvsGv4CcbeEIeSIw9MAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAM0SURBVHgBtVa/SyNREJ7dBLVQELU4bdwrtFJOUCxsXEG0Ue4OK6tLKhEb/QsO/4LzChVtvGvE0sPOxtiYJuFyJBBICtOlSSAQCEnIj5tvyC676ybZYPLB4y373ptv5puZt6uQB1xeXup+v/9zs9lc4qHxK621VFAUJYbRaDSeDw4O7rvZUroQBXw+3zcm0ckbMkx8enh4+It6IWQijYlueiByI95g4oxzQXW+OD8/X1JV9e87yACNbbxeXV0dOxcUJxnn6okfx6l/OOHcnr0hhIzsFcg06jNa8obwbErKOfs+CDIhUdUbxrhJiGrknAW8HB4bGyNN02h+fp6mp6dpcnLStj46OkpbW1vOY1q5XJZ8iqTX19dPnYpkZmZGSObm5qharVI+n5cZ5ENDQzKy2SxFIhFaW1ujTCZDqVTKaabA+z4qrdy9uhHB0PLyskSTSCRkVCoV16gRLfYODw/T7e2tOOQE5zKocmRf3Mggzd7eHvEtQnd3dxSNRl3JgGKxaEaE6HEO553gOllXuQ3W3ch2d3fFyMvLS1siKxYXF0XWh4cHOYfzUMgKpE1t3Y026LouhxCVF8DBhYUFcz9m5HF7e9u5VUOV2pp8dnaWpqamPJMBKysrEh2kNRAOh2VG/q14c7XhILzb3993zYMT2IOCcTo4MTEhkqKgrPCx1gGePxgv6vW6EKJYNjc3qVQqSSG0A+RPJpPiKACS1dVVaQ9UdSwWs+33c6n+47ZYchqKx+NCvLOzI80NiWAMEkFyeM75lx5FdFhD4SCXIEJluxRbTLm4uDjmcv3RLgIYgrfILZBOpymXy0m+UImIDLLCATyHQiFbLq1gB/90bHwrcNPAILwGAaREcz8+Pso6CNsRGZDGx0eS8xXqRgh5DYkgIwZuFQPdyGACfwJ+PHGhnHKUOnkEetS4U72Co/uNWdoC3yovUVqBiD1EZW4fGRk5MwkBjjKIBRoAarXa12AwWLARIpdY4McC9RcnR0dHZjPabhosMOkG9S9S2/8MMLDfRKhljawjoYU4wNXby79OgavxJwrEyFlPhBZinasYH+pPPOMaNL4wMJphJZ553Bt/Zp3wHwTYnvHjbDCuAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANOSURBVHgBtVc9TCJBFB52r7jYyCXWnhcbO1aru8RErjGXWBxX2BijGG1svNhJo56VhQU2ViQsgdDQYEFDc5rQ0BDoaMgRGhoKaMhdCHDve+6QZVhgMfglm9mdn/e9v3kz6xEusL+/79c0bcvj8fjpc8V6gCY9VXqK3W73MZFIpN3I80wj03X9il79wh2q/X7fJAXvTdNszkQaDAZXaHF0BrIRcvLKERE/OQ3qYwh/06shXg8vRPl8PlEqlZ4nktoIV8QcgBxwItbfitBOvL6+XioWi2XZp8kXIryaN6FNdpSM8spvthRWUmPaJ25vb4vV1VVRqVSGBCwtLYm1tTUeW1hY4KfVak2hFe+J+B+5+QkfnL2Hh4fI1KAq/OLiQlxeXorl5WWxsbEhNjc3RbvdFrVajVvMkcTlclmk02nRaDTGETfJ1Z+wlTxWLP84zQoEAkwEodlslh+QqZDWY36hUGByp3m9Xu88Ho+HNaokfidCCAIh2kgkMlYQAOtyuZy4vb1lBW9ubnidCioa37klkw0nQrgWgpLJJMfXDUAOBbEO66GAAkOS+tSRk5MTXgjr4FIAMXULrIObz87O1CHv8fHxR03thXAkDhbahezt7TlpzkA8sc7uUngIQIhUgNRr70AWQsu7u7uBEPTBdaqboQTcCIUgXL4DUBzjTrHVDcP4BmVlR6fTYVLg9PSU9yC2CIghEG7HHIC2GluJOGYyGR6DYiDCGEKD/iErNS2sU238QnH9rGqDopDP5zm+EIJ3aL6zs8NEUAKCQSiVwxp4BFaHQqGRwkJoRqPRkEZ7tCjGAAJQHED28PDAVkirsX1kUcAc7FEXWc5c7+iQTltnpyMgHNYgUSSZBL5BhqTBHkVMAZnxKsijMbQ6Vf+/FFe/mFLs6/X6IJZ20t3dXXb34uIihwFuTqVSI3Mt0nPia3LtpVLot461V0FWLiiBZwzMWCx2xOSy5+DgIEya/BRvA1xfvlKxr+JjUBwola/Fy81u7iDCX5JwiJSPHNJm3sQWoTnUp06a57XFIrxW+0dug8guutM8EvEHpxPIJRDDH6qFA2UmrSSrg0SO5HJLjhDdUxue+bLtQG7QqR8ggVvC4beCFHumRMSxVJxEJvEfnFm91YrgD/sAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANwSURBVHgBtZa/SyNBFMffboJaKAS10SZ7hXqFegGbCyjmUPTAH3eHlZWmULG6u/Kqi/9BLEQRIdoKigf2l1Q2ChGtBLmtFAQloPgL1HvfRyZuJhuzBvOFzezOj/eZee/NZAzyoMXFxYjf7+99enqK8GNxlZVtyhiGYXOZ5vo/MzMzW17sGaVgPp/vN2DkTbZpmqs8wfloNJqh10AZZjEs8QpYAfzx8TE6Ozub9AQFkGf7l55dWLbYTmxqamruRehbAl8CG5UEOvTNmWSmekHCVAgIJVgB9eHHD1bJSTPp7NXe3k68Hejg4CBvdF1dHTU0NFBVVRVdXl7S/f09nZ+fl2BS4Pb29geXMXyIe5eXlxM6FMaHh4dpY2ODGhsbybIsamlpyUFQog/geE5PT2l3d5eurq6KgTPc7x22kpGN5T+3Xl1dXdTa2ipGDw8P5bm7uyvoB3hTU5P0t22b9vb2ZFIu+smxjSOmEbfW2tpaAcJgMpkUQ25ACG4+Ojqi7e1tqq6uprGxMRmvi8P1BaXJLyE34MjIiBja2dmhzs5O8iLAMUGMw3h4yCkOobDYs+YHfXAkEpGBWJ1KJMTUqzAObh4cHNSbAisrK0FTrw0Gg5I4GKiEBAmHwwUzV2pubpZJOV0KD0EIkS6TlxxwViALMcvx8fGcEdQhKzs6OvIGYxLIcEwIxuFSvEP19fXSjpzQ5RsdHf3M5XtV8fDwIFDs0f7+frq+vpYtAjAMwu3oA/X09MgqEcf9/X1pQ/wBQhuyPZ1O56/SNOO+oaGhMAM+6rM5Ozuj4+NjiS+M4B2ZGQqFBHRyckLd3d2USqWor6+Pbm5uZAySqa2tjdbX1+VbU2Z6evoX3JumIoIBHA6ATUxMyCl1cXEhQOxD1ON9c3NT9qjufl2K5a+pqdliA4liHWEc7kOiwMXOvYpvwJA02KOILwS3FoGuoTTlWDKMJJUQ4qwfDmoyAwMDkkiYIBIOsS2iJH7k7MW1JPu3VpbUyYWVw91u4oWtcjyjOSi0tLQU54bvVBnh+vKJry82PnKHAydFDI1UATFwTgHzoIgtZvPW4Cxw1VlX0YtZFhjT6wvOXrgBK+ZnjcqXimHMrbHUZXuSV43kCpE3IUTzvPfjr75s61pYWAgx/Ctndy9/WlxaCsKPzZs+xc8Ww9IvwZT+A8hTw5fcMmXrAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-arrow{cursor:pointer;position:absolute;width:0;height:0}.jb-pro-container .jb-pro-ptz-arrow-up{left:71px;top:15px;border:7px solid transparent;border-bottom:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right{top:71px;right:15px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left{left:15px;top:71px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-down{left:71px;bottom:15px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-up{transform:rotate(45deg);left:32px;top:33px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-up{transform:rotate(-45deg);right:32px;top:33px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-down{transform:rotate(45deg);left:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-down{transform:rotate(-45deg);right:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-loading-bg{display:none}.jb-pro-container .jb-pro-loading-bg,.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-play-big{position:absolute;display:none;height:100%;width:100%;z-index:11;background:rgba(0,0,0,.4)}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==")}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-recording .jb-pro-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;-webkit-animation:magentaPulse 1s linear infinite;animation:magentaPulse 1s linear infinite}.jb-pro-container .jb-pro-recording .jb-pro-recording-time{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-recording .jb-pro-recording-stop{height:100%}.jb-pro-container .jb-pro-recording .jb-pro-icon-recordStop{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-zoom-controls .jb-pro-icon{vertical-align:top}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-narrow{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-tips{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-expand,.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-stop2{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jb-pro-container .jb-pro-controls{background-color:#161616;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:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container .jb-pro-controls.jb-pro-controls-small{height:30px;padding-left:8px;padding-right:8px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-controls-item{padding:0 5px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-icon{width:14px;height:14px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-menu-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-quality-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-scale-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-speed-icon-text{font-size:12px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-quality-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-scale-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-speed-menu-item{font-size:12px;text-align:center;width:40px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel-wrap{width:40px}.jb-pro-container .jb-pro-controls .jb-pro-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen-exit,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-microphone-close,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-pause,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-play,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-quality-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record-stop,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-scale-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-screenshot,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-template-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-volume,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom-stop{display:none}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed{padding:0}.jb-pro-container .jb-pro-controls .jb-pro-controls-item-html{position:relative;display:none;justify-content:center}.jb-pro-container .jb-pro-controls .jb-pro-playback-control-time{position:relative;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-icon-mute{z-index:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom{display:flex;justify-content:space-between;height:100%}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-left,.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-right{display:flex;align-items:center}.jb-pro-container.jb-pro-controls-show .jb-pro-controls{opacity:1;visibility:visible}.jb-pro-container.jb-pro-controls-show-auto-hide .jb-pro-controls{opacity:.8;visibility:visible;display:none}.jb-pro-container.jb-pro-hide-cursor *{cursor:none!important}.jb-pro-container .jb-pro-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%;-webkit-animation-name:rotation;animation-name:rotation;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEzMzMzHx8fMzMzMzMzOzs7MzMz4IlKVAAAABnRSTlMA6xIU1hVqIuOVAAAAMUlEQVQ4y2NgGFYgLS3RAEQziQFZoxKjEqMSaBJpEAkgIw1ZQlBQRAEs4QhkDeIMDgAWx1gMHyIL4wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEz///////////////////////+3ygHaAAAABnRSTlMA7OgSFBXMmAA4AAAAM0lEQVQ4y2NgGFYgLS3JAUQzi6WlJY5KjEqMSqBJpEEkgIw0ZAklJSUDsISikpLQIM7gAJjhWp6XcaOxAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAHlBMVEVHcEzGxsbMzMzMzMzLy8vMzMzMzMzNzc3MzMzMzMxEZ/aQAAAACXRSTlMADPKKKeBxlV6neZ4mAAAArUlEQVQ4y2NgGDZgJhpowCURAJeYpIQENJEkCgWRgCeShAGyjfgl2EqwS7BFToZJiLg4ICTEImdOh0pwRM6cDJcIjpw5E6aDFeh8B5gECBCUYAkKCoMbNXNSOlyCgUEQ4apJJmxIEkjOVWFgxi4RgEsikGQJnEYp4pLA6VxUDyJLIAUJcRLIwY7qXKSIQvOHWCQODzKIleBPPjgTHM4kijNR48oGkajiYUMykwMAAfmZhUjBISQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMA8gyMLeRw1x2DBpWGN2QDAAAAt0lEQVQ4y2NgGDbgDBpIwCVRAJc4KIgEZM4EwCU2KSEBHySJCcg29iBJGCBLgHUs24FdYlnNYZiESksDXKJALebMaagES8yZw3CJypgzZ2A6WIHOd4BJgABMgh2XBEtpaBjcqDMHs+ESDFyLEK46aMGGkEB2rgQDJ3aJAFwSUSRL4DQKp+VHcTkXxYMoEkhBQpwEcrCjSCBHFJo/1GIO408MOJMPzgSHM4niTNS4skENqnjYkMzkAEgzyFpeX6L3AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAG1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxi4XDRAAAACHRSTlMAf3WqJmy+7azWNnMAAADNSURBVDjLxZQ9E4IwDIaLfMzCOTDSOz07OjLir5CR0dmJFVHIzzZtnMzbOzcyZHnuaXpJWmO2ji4GhpAzzZeQzw8FKCj1pMHss9OgpwsGOS0YGOcVUMPsfBVkmJoVCBJW0FFB6SFIaMKAlRGDnEiDkuM00lP3SmL6H5QSh+iIr9ZWVWntUV9Z4qWbHAWrhcUYNLC4Wwm3xb1r2mOQYoVn2EKFAVb81KHiQQq6L3vSUoMBUmSzgCKbVeiL3eTp3Odf8H1sxRAZZNZt/Vt8AHcPQbiQQVF+AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzKysrMzMzMzMzMzMzMzMzMzMzMzMzMzMzNzc3MzMz8gU00AAAACnRSTlMAL0jMZKt96hGJsSKv1QAAAJ9JREFUOMvN078KQFAYBfCbJEw2q6SUyWxTnsJT2JTJ6D38Gb6n5PpT6BwbuaNfTnz3fEp9fZwAP7czD0MsGCzBYJcEYsGwBEHQQRB0EII1CMAWdAOzyJUvJ4jyDVyZVHKGpj9guEI2IuhaDFadYnCkIm9I+kPgn8t+kI7kOsT72HcwQnJR9Gofy8DrwwtHK8pLzdeALg5fNb6cdJ1fOjOGYrl5CLFcggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAL0TQf2frEaZYt8E+idL4AAAAnUlEQVQ4y2NgoDdgUcAuzr4Hh4TaGQHsBp3BLsG+BoeE2hnsEkCDsEqADMIqATIImwTYICwSEIPQJFhnBjKInUGSUA2CSPCcOcIwB1ki5xRM4iiDDrKEzQlsEuUF2CVY0jbgkDhjMLQkEkj0IM4gQQ1EHMHOOXMiakRpTiQQtXgTA+7kgzvB4UyiuBM17myAM+Pgzmq4MyfO7EwjAAAEf+BAxqI/agAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-face:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTP///////////////////////////////////////////////w2imYoAAAAMdFJOUwBAgBvfrFmcw4wrbtGliFoAAAD2SURBVDjLY2AYRkAJCAygbEZBQUEBKJvpDBDAODpA9kGYxEGgKphuIaBuhASqyYzESjBu79yIVWIP0NoCLBIsR4WZJY5gkYiZACRqFJAlGMG8EyAmK1hMGdkp7M4gkus4RrCwBIApFwwJmwlgqsYAQ6IAIrEAwygHHEaxngJbfhRDgg0sxHoMM7Z0AmC+RAPsJ4S5NE5gid8VoHg8sgHTDh/PzM60HkzLc44bgKMf3RKuMwoQ+dNIgswJDAycUDPYjhgwMCsjxYcJLA6AMYISUTkBMLsaUCVqEqAcngPEJx+SJJDSLii1HySU2lHyByi1Kwy9LA4AqflRBKNSA88AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTBCT2xKV2hGY2hKW2xGW2xGW2xGW2xKX3BGX3BKW23povfoAAAAKdFJOUwBAgRybs9hZLG6hrV9tAAAA80lEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTgmZiFViFtBaBywSbEuFmcWWYZGIUgASXgrIEoxg3lIQkxUspozsFJZkEMmxBCNY2MD2MqRhSFgpgCkvAwwJBxwSbAk4jGJZAbZ8KYYEO8S5yzFjSysA5kt0s5YKc6guwxK/baB4XDYB045Vi4pCyrMwLa9aYgCOfgc0cY5VEGurViIJMhcAlULNYF9mwMCsjBQfZrA4AMYISkRVBcDsCkCV8CqAcrgWEJ98SJJASrug1L6QUGpHyR+g1K4w9LI4ALk0RHtSETFcAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTHzD63zE6n7H7H3F7H3F633G63zF7H3G7H3F7H3F68TinBIAAAAKdFJOUwBAgR+Z31ipwW4yAjb9AAAA+UlEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTmmZiFViFtBaBywSrMuFmSWWYpGoUgASXgrIEowgHtsKEJMDLKaM7BSWYLCaJRjBwloAploxJKwUwJSXAYYE2KUMVRgSrAFgKhTDKPbFIJJ5OYYEG1iIfRlmbGkVwHyJBlhWCDNrrMASvxageFw6AdOOqKCklrQuTMuzlhiAo98BTZx5FcTarJXIgglApVBr2ZYaMDArI8WHKSwOgDGCElFZBTC7GlAlvBKgHK4FxCcfkiSQ0i4otS8klNpR8gcotSsMvSwOAIs+RIlIrewIAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-occlusion{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusion:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-zoomStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAqUExURUdwTBKV2hGW2xKW2xKW2xKW2xGV3BGW2xGW3BGX2xKW3BKW2xCX2xKW2yDN61kAAAANdFJOUwCAVKxm3T/DmhrxKw97YQBGAAABaklEQVQ4y2NgIA6wGqCLMCqAqV4HdIm9F0Ek22UMM9hiG4AkVzQDA+cmx+YyJJnDlw8wMNQaNpfevbu0QgxJgrN3JQPD3VvhjU57kESnOZqvvXuJgcEXxVFMEkDt1w11gZYwoVgue3d5SzaQSgCydZG1TMkBU8vBuq9guBcqNBNDgj0GQrMEb0CVYEmA2ViANRQZ795tQPZduADciXcVUNSthGu4hGrAJawagBIXsWoAClzGqgEocRWrBqDIrQNQDTPRXZ8A0cB41wBNQgGiQfbubTQJAagGDB0GIA0OsnevbkCTCADiu4J374ahW34JqAEIbiXMRJOAgkvMKJYgJBx6717AKiF4F4eOu+jxgQCXGHBIKPDgkBC8JYCURJDtQHYWN4oEcvpZiyR+C9lZtkgSKKG1CyGOGrxItleixjrcLFBWRAYcMIkG9NQMiY67N7AlcxAQwMwA6SBxM2xZQ3jtVRPsRQ83sg8ACMIUxzzE8wsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-close{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-narrow{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-expand{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-menu-icon-text,.jb-pro-container .jb-pro-quality-icon-text,.jb-pro-container .jb-pro-scale-icon-text,.jb-pro-container .jb-pro-speed-icon-text{font-size:14px;min-width:30px;height:20px;line-height:20px;cursor:pointer;text-align:center}.jb-pro-container .jb-pro-speed{box-sizing:border-box;text-align:center;font-size:14px;color:#fff;width:90px}.jb-pro-container .jb-pro-menu-list,.jb-pro-container .jb-pro-quality-menu-list,.jb-pro-container .jb-pro-scale-menu-list,.jb-pro-container .jb-pro-speed-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;overflow:hidden;width:-webkit-max-content;width:-moz-max-content;width:max-content}.jb-pro-container .jb-pro-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-speed-menu-shown{visibility:visible;opacity:1}.jb-pro-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}.jb-pro-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container .jb-pro-quality-menu{padding:8px 0}.jb-pro-container .jb-pro-menu-item,.jb-pro-container .jb-pro-quality-menu-item,.jb-pro-container .jb-pro-scale-menu-item,.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-menu-item:hover,.jb-pro-container .jb-pro-quality-menu-item:hover,.jb-pro-container .jb-pro-scale-menu-item:hover,.jb-pro-container .jb-pro-speed-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-menu-item:focus,.jb-pro-container .jb-pro-quality-menu-item:focus,.jb-pro-container .jb-pro-scale-menu-item:focus,.jb-pro-container .jb-pro-speed-menu-item:focus{outline:none}.jb-pro-container .jb-pro-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-speed-menu-item-active{color:#2298fc}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-volume-panel-wrap.jb-pro-volume-panel-wrap-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jb-pro-container .jb-pro-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jb-pro-container .jb-pro-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:before{bottom:-54px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-volume-panel-handle:after,.jb-pro-container .jb-pro-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-controls,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-controls{width:100vh}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-play-big:after,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading{flex-direction:row}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading-text,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading-text{transform:rotate(270deg)}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-contextmenus .jb-pro-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)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu a{color:#fff;text-decoration:none}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span{display:inline-block;padding:0 7px}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span.art-current,.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span:hover{color:var(--theme)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:hover{background-color:hsla(0,0%,100%,.1)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:last-child{border-bottom:none}.jb-pro-container.jb-pro-contextmenus-show .jb-pro-contextmenus{display:flex}.jb-pro-container .jb-pro-extend-dom{position:relative;width:100%;height:100%;display:none}.jb-pro-container-playback .jb-pro-controls{height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center{flex:1;display:flex;box-sizing:border-box;justify-content:space-between;font-size:12px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time{box-sizing:border-box;flex:1;position:relative;height:100%}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-inner{width:300px;height:100%;overflow-y:hidden;overflow-x:auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-current-time{position:absolute;left:0;top:0;height:15px;width:1px;background-color:red;text-align:center;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll{position:relative;width:1440px;margin:0 auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-hour{width:1440px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.half-hour{width:2880px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.ten-min{width:8640px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.five-min{width:17280px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-min{width:86400px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-list{position:relative;background-color:#ccc;height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-day{height:100%;overflow:hidden}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-one-wrap{height:8px;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-wrap{height:25px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-btns{display:flex;align-items:center}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one{float:left;width:1px;height:8px;margin:0;cursor:default;position:relative;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.active,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.active{background-color:orange;cursor:pointer}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.start,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.start{background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one:hover .jb-pro-playback-time-title-tips,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one:hover .jb-pro-playback-time-title-tips{visibility:visible;opacity:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips.jb-pro-playback-time-title-tips-left{transform:translateX(-100%)}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips .jb-pro-playback-time-title{display:inline-block;padding:2px 5px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child{border-left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child .jb-pro-playback-time-hour-text{left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:after,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:after{content:"";position:absolute;left:0;top:-8px;width:1px;height:14px;background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-text{position:absolute;left:-13px}.jb-pro-container-playback .jb-pro-playback-expand.disabled .jb-pro-icon-expand,.jb-pro-container-playback .jb-pro-playback-narrow.disabled .jb-pro-icon-narrow{cursor:no-drop}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback .jb-pro-control-progress-simple:hover{top:0;align-items:flex-start}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner{height:100%}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner .jb-pro-progress-indicator{transform:scale(1);visibility:visible}.jb-pro-container-playback .jb-pro-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:all .2s ease;background:hsla(0,0%,100%,.5)}.jb-pro-container-playback .jb-pro-progress-hover{display:none;width:0}.jb-pro-container-playback .jb-pro-progress-played{position:absolute;left:0;top:0;right:0;bottom:0;height:100%;width:0;background-color:orange}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback .jb-pro-progress-indicator .jb-pro-icon{width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container-playback .jb-pro-progress-indicator:hover{transform:scale(1.2)!important}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback.jb-pro-fullscreen-web .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-playback-time-inner{overflow-y:auto}.jb-pro-zoom-control{cursor:-webkit-grab;cursor:grab}.jb-pro-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}.jb-pro-performance-panel .jb-pro-performance-item{display:flex;align-items:center;margin-top:3px;color:#fff}.jb-pro-performance-panel .jb-pro-performance-item-block{height:10px}.jb-pro-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;z-index:10;display:none}.jb-pro-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%}.jb-pro-tips-message .jb-pro-tips-message-close{position:absolute;z-index:99999;right:0;top:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.jb-pro-tips-message .jb-pro-tips-message-close .jb-pro-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%}.jb-pro-tips-message .jb-pro-tips-message-content{overflow:auto;padding:35px;box-sizing:border-box;width:100%;height:100%;z-index:99999}.jb-pro-tips-message .jb-pro-tips-message-content .jb-pro-tips-message-content-item{font-size:14px;color:#fff;text-align:center;line-height:1.5}');class _c{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("jb-pro-controls-show-auto-hide"):e.$container.classList.add("jb-pro-controls-show");const i=e._opt,s=i.operateBtns,r=`\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
    ${sc.narrow}
    \n
    ${sc.expand}
    \n
    \n `:""}\n
    \n `;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
    `:""}\n
    \n \n
    \n ${i.loadingIcon?`\n
    \n ${sc.loading}\n
    ${i.loadingText}
    \n
    \n `:""}\n ${i.hasControl&&s.play?'
    ':""}\n ${i.hasControl&&s.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 ${i.ptzCruiseShow?'\n
    \n
    \n \n \n 巡航开\n \n
    \n
    \n \n \n 巡航关\n \n
    \n
    \n ':""}\n ${i.ptzFogShow?'\n
    \n
    \n \n \n 透雾开\n \n
    \n
    \n \n \n 透雾关\n \n
    \n
    \n ':""}\n\n ${i.ptzWiperShow?'\n
    \n
    \n \n \n 雨刷开\n \n
    \n
    \n \n \n 雨刷关\n \n
    \n
    \n ':""}\n
    \n
    \n `:""}\n ${i.hasVideo?`\n
    \n
    ${sc.narrow}
    \n
    电子放大
    \n
    ${sc.expand}
    \n
    ${sc.zoomStop}
    \n
    \n
    \n
    \n
    00:00:00
    \n
    ${sc.recordStop}
    \n
    \n `:""}\n\n ${i.hasControl?`\n
    \n
    \n
    \n ${i.showBandwidth?'
    ':""}\n
    \n
    ${i.controlHtml}
    \n
    \n ${i.playType===_&&i.playbackConfig.showControl&&i.playbackConfig.controlType===Q.normal?r:""}\n ${i.playType===_&&i.playbackConfig.showControl&&i.playbackConfig.controlType===Q.simple?'\n
    \n
    \n
    \n
    \n
    \n
    00:00
    \n
    \n
    \n ':""}\n
    \n ${i.playType===_&&i.playbackConfig.showRateBtn?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.close?`
    ${sc.close}
    `:""}\n ${s.logSave?`
    ${sc.logSave}
    `:""}\n ${s.performance?`
    ${sc.performance}
    ${sc.performanceActive}
    `:""}\n ${s.aiFace?`
    ${sc.face}
    ${sc.faceActive}
    `:""}\n ${s.aiObject?`
    ${sc.object}
    ${sc.objectActive}
    `:""}\n ${s.aiOcclusion?`
    ${sc.occlusion}
    ${sc.occlusionActive}
    `:""}\n ${s.quality?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.scale?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.audio?`\n
    \n
    \n ${sc.audio}\n ${sc.mute}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `:""}\n ${s.play?`
    ${sc.play}
    ${sc.pause}
    `:""}\n ${s.screenshot?`
    ${sc.screenshot}
    `:""}\n ${s.record?`
    ${sc.record}
    ${sc.recordStop}
    `:""}\n ${s.ptz?`
    ${sc.ptz}
    ${sc.ptzActive}
    `:""}\n ${s.zoom?`
    ${sc.zoom}
    ${sc.zoomStop}
    `:""}\n ${s.fullscreen?`
    ${sc.fullscreen}
    ${sc.fullscreenExit}
    `:""}\n
    \n
    \n
    \n `:""}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jb-pro-poster"),configurable:!0}),Object.defineProperty(t,"$loadingBg",{value:e.$container.querySelector(".jb-pro-loading-bg"),configurable:!0}),Object.defineProperty(t,"$loadingBgImage",{value:e.$container.querySelector(".jb-pro-loading-bg-image"),configurable:!0}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jb-pro-loading"),configurable:!0}),Object.defineProperty(t,"$loadingText",{value:e.$container.querySelector(".jb-pro-loading-text"),configurable:!0}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jb-pro-play"),configurable:!0}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jb-pro-play-big"),configurable:!0}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jb-pro-recording"),configurable:!0}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jb-pro-recording-time"),configurable:!0}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jb-pro-recording-stop"),configurable:!0}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jb-pro-pause"),configurable:!0}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jb-pro-controls"),configurable:!0}),Object.defineProperty(t,"$controlsInner",{value:e.$container.querySelector(".jb-pro-controls-bottom"),configurable:!0}),Object.defineProperty(t,"$controlsLeft",{value:e.$container.querySelector(".jb-pro-controls-left"),configurable:!0}),Object.defineProperty(t,"$controlsRight",{value:e.$container.querySelector(".jb-pro-controls-right"),configurable:!0}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jb-pro-volume"),configurable:!0}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jb-pro-volume-panel-wrap"),configurable:!0}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jb-pro-volume-panel-text"),configurable:!0}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jb-pro-volume-panel"),configurable:!0}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jb-pro-volume-panel-handle"),configurable:!0}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jb-pro-icon-audio"),configurable:!0}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jb-pro-icon-mute"),configurable:!0}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jb-pro-fullscreen"),configurable:!0}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jb-pro-fullscreen-exit"),configurable:!0}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jb-pro-record"),configurable:!0}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jb-pro-record-stop"),configurable:!0}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jb-pro-screenshot"),configurable:!0}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jb-pro-speed"),configurable:!0}),Object.defineProperty(t,"$controlHtml",{value:e.$container.querySelector(".jb-pro-controls-item-html"),configurable:!0}),Object.defineProperty(t,"$playbackTime",{value:e.$container.querySelector(".jb-pro-controls-playback-time"),configurable:!0}),Object.defineProperty(t,"$playbackTimeInner",{value:e.$container.querySelector(".jb-pro-controls-playback-time-inner"),configurable:!0}),Object.defineProperty(t,"$playbackTimeScroll",{value:e.$container.querySelector(".jb-pro-controls-playback-time-scroll"),configurable:!0}),Object.defineProperty(t,"$playbackTimeList",{value:e.$container.querySelector(".jb-pro-controls-playback-time-list"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListOne",{value:e.$container.querySelector(".jb-pro-playback-time-one-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListSecond",{value:e.$container.querySelector(".jb-pro-playback-time-second-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTime",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTimeText",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time-text"),configurable:!0}),Object.defineProperty(t,"$controlsPlaybackBtns",{value:e.$container.querySelector(".jb-pro-controls-playback-btns"),configurable:!0}),Object.defineProperty(t,"$playbackNarrow",{value:e.$container.querySelector(".jb-pro-playback-narrow"),configurable:!0}),Object.defineProperty(t,"$playbackExpand",{value:e.$container.querySelector(".jb-pro-playback-expand"),configurable:!0}),Object.defineProperty(t,"$ptz",{value:e.$container.querySelector(".jb-pro-ptz"),configurable:!0}),Object.defineProperty(t,"$ptzActive",{value:e.$container.querySelector(".jb-pro-ptz-active"),configurable:!0}),Object.defineProperty(t,"$ptzControl",{value:e.$container.querySelector(".jb-pro-ptz-controls"),configurable:!0}),Object.defineProperty(t,"$ptzBgActive",{value:e.$container.querySelector(".jb-pro-ptz-bg-active"),configurable:!0}),Object.defineProperty(t,"$ptzControlCircular",{value:e.$container.querySelector(".jb-pro-ptz-control"),configurable:!0}),Object.defineProperty(t,"$ptzArrows",{value:e.$container.querySelectorAll(".jb-pro-ptz-arrow"),configurable:!0}),Object.defineProperty(t,"$ptzExpand",{value:e.$container.querySelector(".jb-pro-ptz-expand"),configurable:!0}),Object.defineProperty(t,"$ptzNarrow",{value:e.$container.querySelector(".jb-pro-ptz-narrow"),configurable:!0}),Object.defineProperty(t,"$ptzApertureFar",{value:e.$container.querySelector(".jb-pro-ptz-aperture-far"),configurable:!0}),Object.defineProperty(t,"$ptzApertureNear",{value:e.$container.querySelector(".jb-pro-ptz-aperture-near"),configurable:!0}),Object.defineProperty(t,"$ptzFocusFar",{value:e.$container.querySelector(".jb-pro-ptz-focus-far"),configurable:!0}),Object.defineProperty(t,"$ptzFocusNear",{value:e.$container.querySelector(".jb-pro-ptz-focus-near"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePlay",{value:e.$container.querySelector(".jb-pro-ptz-cruise-play"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePause",{value:e.$container.querySelector(".jb-pro-ptz-cruise-pause"),configurable:!0}),Object.defineProperty(t,"$ptzFogOpen",{value:e.$container.querySelector(".jb-pro-ptz-fog-open"),configurable:!0}),Object.defineProperty(t,"$ptzFogClose",{value:e.$container.querySelector(".jb-pro-ptz-fog-close"),configurable:!0}),Object.defineProperty(t,"$ptzWiperOpen",{value:e.$container.querySelector(".jb-pro-ptz-wiper-open"),configurable:!0}),Object.defineProperty(t,"$ptzWiperClose",{value:e.$container.querySelector(".jb-pro-ptz-wiper-close"),configurable:!0}),Object.defineProperty(t,"$qualityText",{value:e.$container.querySelector(".jb-pro-quality-icon-text"),configurable:!0}),Object.defineProperty(t,"$qualityMenu",{value:e.$container.querySelector(".jb-pro-quality-menu"),configurable:!0}),Object.defineProperty(t,"$qualityMenuList",{value:e.$container.querySelector(".jb-pro-quality-menu-list"),configurable:!0}),Object.defineProperty(t,"$scaleText",{value:e.$container.querySelector(".jb-pro-scale-icon-text"),configurable:!0}),Object.defineProperty(t,"$scaleMenu",{value:e.$container.querySelector(".jb-pro-scale-menu"),configurable:!0}),Object.defineProperty(t,"$scaleMenuList",{value:e.$container.querySelector(".jb-pro-scale-menu-list"),configurable:!0}),Object.defineProperty(t,"$zoom",{value:e.$container.querySelector(".jb-pro-zoom"),configurable:!0}),Object.defineProperty(t,"$zoomStop",{value:e.$container.querySelector(".jb-pro-zoom-stop"),configurable:!0}),Object.defineProperty(t,"$zoomNarrow",{value:e.$container.querySelector(".jb-pro-zoom-narrow"),configurable:!0}),Object.defineProperty(t,"$zoomExpand",{value:e.$container.querySelector(".jb-pro-zoom-expand"),configurable:!0}),Object.defineProperty(t,"$zoomStop2",{value:e.$container.querySelector(".jb-pro-zoom-stop2"),configurable:!0}),Object.defineProperty(t,"$close",{value:e.$container.querySelector(".jb-pro-close"),configurable:!0}),Object.defineProperty(t,"$zoomControls",{value:e.$container.querySelector(".jb-pro-zoom-controls"),configurable:!0}),Object.defineProperty(t,"$performancePanel",{value:e.$container.querySelector(".jb-pro-performance-panel"),configurable:!0}),Object.defineProperty(t,"$performance",{value:e.$container.querySelector(".jb-pro-performance"),configurable:!0}),Object.defineProperty(t,"$performanceActive",{value:e.$container.querySelector(".jb-pro-performance-active"),configurable:!0}),Object.defineProperty(t,"$faceDetect",{value:e.$container.querySelector(".jb-pro-face"),configurable:!0}),Object.defineProperty(t,"$faceDetectActive",{value:e.$container.querySelector(".jb-pro-face-active"),configurable:!0}),Object.defineProperty(t,"$objectDetect",{value:e.$container.querySelector(".jb-pro-object"),configurable:!0}),Object.defineProperty(t,"$objectDetectActive",{value:e.$container.querySelector(".jb-pro-object-active"),configurable:!0}),Object.defineProperty(t,"$occlusionDetect",{value:e.$container.querySelector(".jb-pro-occlusion"),configurable:!0}),Object.defineProperty(t,"$occlusionDetectActive",{value:e.$container.querySelector(".jb-pro-occlusion-active"),configurable:!0}),Object.defineProperty(t,"$contextmenus",{value:e.$container.querySelector(".jb-pro-contextmenus"),configurable:!0}),Object.defineProperty(t,"$speedText",{value:e.$container.querySelector(".jb-pro-speed-icon-text"),configurable:!0}),Object.defineProperty(t,"$speedMenu",{value:e.$container.querySelector(".jb-pro-speed-menu"),configurable:!0}),Object.defineProperty(t,"$speedMenuList",{value:e.$container.querySelector(".jb-pro-speed-menu-list"),configurable:!0}),Object.defineProperty(t,"$logSave",{value:e.$container.querySelector(".jb-pro-logSave"),configurable:!0}),Object.defineProperty(t,"$playbackProgress",{value:e.$container.querySelector(".jb-pro-control-progress-simple"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTip",{value:e.$container.querySelector(".jb-pro-progress-tip"),configurable:!0}),Object.defineProperty(t,"$playbackProgressHover",{value:e.$container.querySelector(".jb-pro-progress-hover"),configurable:!0}),Object.defineProperty(t,"$playbackProgressPlayed",{value:e.$container.querySelector(".jb-pro-progress-played"),configurable:!0}),Object.defineProperty(t,"$playbackProgressIndicator",{value:e.$container.querySelector(".jb-pro-progress-indicator"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTime",{value:e.$container.querySelector(".jb-pro-playback-control-time"),configurable:!0}),Object.defineProperty(t,"$tipsMessage",{value:e.$container.querySelector(".jb-pro-tips-message"),configurable:!0}),Object.defineProperty(t,"$tipsMessageClose",{value:e.$container.querySelector(".jb-pro-tips-message-close"),configurable:!0}),Object.defineProperty(t,"$tipsMessageContent",{value:e.$container.querySelector(".jb-pro-tips-message-content"),configurable:!0})})(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&&t.$controls.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsInnerRect",{get:()=>t.$controlsInner&&t.$controlsInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsLeftRect",{get:()=>t.$controlsLeft&&t.$controlsLeft.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsRightRect",{get:()=>t.$controlsRight&&t.$controlsRight.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackTimeInner",{get:()=>t.$playbackTimeInner&&t.$playbackTimeInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackBtnsRect",{get:()=>t.$controlsPlaybackBtns&&t.$controlsPlaybackBtns.getBoundingClientRect()||{width:0},configurable:!0}),bc(e,this),((e,t)=>{const{events:{proxy:i},debug:s}=e,r=e._opt,o=r.operateBtns;function a(e){const{bottom:i,height:s}=t.$volumePanel.getBoundingClientRect(),{height:r}=t.$volumeHandle.getBoundingClientRect();return uo(i-e.y-r/2,0,s-r/2)/(s-r)}function n(i){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1,s&&!e.fullscreen&&e._opt.hasControl&&e._opt.controlAutoHide&&(t.isFocus?(po(t.$controls,"display","block"),d()):(h(),po(t.$controls,"display","none")))}if(vo()?i(window,["click","contextmenu"],(e=>{e.stopPropagation(),n(e)})):i(window,"click",(e=>{e.stopPropagation(),n(e,!0)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),o.play&&(i(t.$pause,"click",(t=>{r.playType===_&&r.playbackConfig.uiUsePlaybackPause?e.playbackPause=!0:oa(o.pauseFn)?o.pauseFn():e.pauseForControl()})),i(t.$play,"click",(t=>{r.playType===_&&e.playbackPause?e.playbackPause=!1:oa(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()})).catch((e=>{}))}))),i(t.$playBig,"click",(i=>{r.playType===_&&e.playbackPause?e.playbackPause=!1:t.isInitPlayer?e.emit(mt.clickInitPlayer):oa(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))})),o.screenshot&&i(t.$screenshot,"click",(t=>{t.stopPropagation(),oa(o.screenshotFn)?o.screenshotFn():e.video.screenshot()})),o.audio&&(vo()&&(i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jb-pro-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jb-pro-volume-panel-wrap-show")})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=a(t)})),i(t.$volumeHandle,"mousedown",(e=>{e.stopPropagation(),t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=a(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)}))),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),po(t.$volumeOn,"display","none"),po(t.$volumeOff,"display","block");const s=e.volume;e.volume=0,e._lastVolume=vo()?s:1})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),po(t.$volumeOn,"display","block"),po(t.$volumeOff,"display","none"),e.volume=vo()?e.lastVolume||.5:1}))),o.record&&(i(t.$record,"click",(t=>{t.stopPropagation(),oa(o.recordFn)?o.recordFn():e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),oa(o.recordStopFn)?o.recordStopFn():e.recording=!1}))),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),oa(o.recordStopFn)?o.recordStopFn():e.recording=!1})),o.fullscreen&&(i(t.$fullscreen,"click",(t=>{t.stopPropagation(),oa(o.fullscreenFn)?o.fullscreenFn():e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),oa(o.fullscreenExitFn)?o.fullscreenExitFn():e.fullscreen=!1}))),o.ptz){i(t.$ptz,"click",(e=>{e.stopPropagation(),po(t.$ptzActive,"display","flex"),po(t.$ptz,"display","none"),t.$ptzControl.classList.add("jb-pro-ptz-controls-show")})),i(t.$ptzActive,"click",(e=>{e.stopPropagation(),po(t.$ptz,"display","flex"),po(t.$ptzActive,"display","none"),t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")}));const c=Pa();if(t.$ptzArrows.forEach((s=>{if(r.ptzClickType===K)i(s,"click",(i=>{i.stopPropagation();const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(mt.ptz,wa(s)),setTimeout((()=>{t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),Ui.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(mt.ptz,Oi)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let r=!1;i(s,c.down,(i=>{i.stopPropagation(),r=!0;const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(mt.ptz,wa(s))}));const o=()=>{r=!1,t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),Ui.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(mt.ptz,Oi)};i(s,c.up,(e=>{e.stopPropagation(),r&&o()})),i(window,c.up,(e=>{e.stopPropagation(),r&&o()}))}})),r.ptzZoomShow)if(r.ptzClickType===K)i(t.$ptzExpand,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,ji),setTimeout((()=>{e.emit(mt.ptz,Oi)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzNarrow,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,Gi),setTimeout((()=>{e.emit(mt.ptz,Oi)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let u=!1,p=!1;i(t.$ptzExpand,c.down,(t=>{t.stopPropagation(),u=!0,e.emit(mt.ptz,ji)})),i(t.$ptzNarrow,c.down,(t=>{t.stopPropagation(),p=!0,e.emit(mt.ptz,Gi)}));const f=()=>{u=!1,p=!1,e.emit(mt.ptz,Oi)};i(t.$ptzExpand,c.up,(e=>{e.stopPropagation(),u&&f()})),i(t.$ptzNarrow,c.up,(e=>{e.stopPropagation(),p&&f()})),i(window,c.up,(e=>{e.stopPropagation(),(u||p)&&f()}))}if(r.ptzApertureShow)if(r.ptzClickType===K)i(t.$ptzApertureFar,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,zi),setTimeout((()=>{e.emit(mt.ptz,Ni)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzApertureNear,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,Wi),setTimeout((()=>{e.emit(mt.ptz,Ni)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let m=!1,g=!1;i(t.$ptzApertureFar,c.down,(t=>{t.stopPropagation(),m=!0,e.emit(mt.ptz,zi)})),i(t.$ptzApertureNear,c.down,(t=>{t.stopPropagation(),g=!0,e.emit(mt.ptz,Wi)}));const y=()=>{m=!1,g=!1,e.emit(mt.ptz,Ni)};i(t.$ptzApertureFar,c.up,(e=>{e.stopPropagation(),m&&y()})),i(t.$ptzApertureNear,c.up,(e=>{e.stopPropagation(),g&&y()})),i(window,c.up,(e=>{e.stopPropagation(),(m||g)&&y()}))}if(r.ptzFocusShow)if(r.ptzClickType===K)i(t.$ptzFocusFar,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,Vi),setTimeout((()=>{e.emit(mt.ptz,Ni)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzFocusNear,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,$i),setTimeout((()=>{e.emit(mt.ptz,Ni)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let A=!1,b=!1;i(t.$ptzFocusFar,c.down,(t=>{t.stopPropagation(),A=!0,e.emit(mt.ptz,Vi)})),i(t.$ptzFocusNear,c.down,(t=>{t.stopPropagation(),b=!0,e.emit(mt.ptz,$i)}));const v=()=>{A=!1,b=!1,e.emit(mt.ptz,Ni)};i(t.$ptzFocusFar,c.up,(e=>{e.stopPropagation(),A&&v()})),i(t.$ptzFocusNear,c.up,(e=>{e.stopPropagation(),b&&v()})),i(window,c.up,(e=>{e.stopPropagation(),(A||b)&&v()}))}if(r.ptzCruiseShow&&(i(t.$ptzCruisePlay,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,Hi)})),i(t.$ptzCruisePause,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,Ji)}))),r.ptzFogShow&&(i(t.$ptzFogOpen,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,qi)})),i(t.$ptzFogClose,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,Ki)}))),r.ptzWiperShow&&(i(t.$ptzWiperOpen,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,Yi)})),i(t.$ptzWiperClose,"click",(t=>{t.stopPropagation(),e.emit(mt.ptz,Qi)}))),r.ptzSupportDraggable){function S(){t.isPtzControlDroging&&(t.isPtzControlDroging=!1,t.$ptzControl.style.cursor="grab",t.tempPtzPosition={x:0,y:0})}t.isPtzControlDroging=!1,t.tempPtzPosition={x:0,y:0},i(t.$ptzControl,c.down,(e=>{e.stopPropagation(),t.isPtzControlDroging=!0,t.$ptzControl.style.cursor="grabbing";const{posX:i,posY:s}=aa(e);t.tempPtzPosition={x:i,y:s}})),i(t.$ptzControl,c.move,(e=>{if(t.isPtzControlDroging){e.stopPropagation();const{posX:i,posY:s}=aa(e),r=t.tempPtzPosition.x-i,o=t.tempPtzPosition.y-s;t.$ptzControl.style.left=t.$ptzControl.offsetLeft-r+"px",t.$ptzControl.style.top=t.$ptzControl.offsetTop-o+"px",t.tempPtzPosition={x:i,y:s}}})),i(t.$ptzControl,c.up,(e=>{e.stopPropagation(),S()})),i(window,c.up,(e=>{e.stopPropagation(),S()}))}}o.performance&&(i(t.$performance,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!0)})),i(t.$performanceActive,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!1)}))),o.logSave&&i(t.$logSave,"click",(t=>{t.stopPropagation(),e.downloadMemoryLog()})),o.aiFace&&(i(t.$faceDetect,"click",(t=>{t.stopPropagation(),e.faceDetect(!0)})),i(t.$faceDetectActive,"click",(t=>{t.stopPropagation(),e.faceDetect(!1)}))),o.aiObject&&(i(t.$objectDetect,"click",(t=>{t.stopPropagation(),e.objectDetect(!0)})),i(t.$objectDetectActive,"click",(t=>{t.stopPropagation(),e.objectDetect(!1)}))),o.aiOcclusion&&(i(t.$occlusionDetect,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!0)})),i(t.$occlusionDetectActive,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!1)})));let l=null;const d=()=>{h(),l=setTimeout((()=>{po(t.$controls,"display","none")}),1e3*e._opt.controlAutoHideDelayTime)},h=()=>{l&&(clearTimeout(l),l=null)};if(e._opt.hasControl&&e._opt.controlAutoHide&&vo()&&(i(e.$container,"mouseover",(()=>{e.fullscreen||(po(t.$controls,"display","block"),d())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(po(t.$controls,"display","block"),d()))})),i(e.$container,"mouseout",(()=>{h(),po(t.$controls,"display","none")}))),e._opt.playType===_){let E=e._opt.playbackConfig.controlType;e._opt.playbackConfig.showRateBtn&&(i(t.$speedMenu,"mouseover",(()=>{t.$speedMenuList.classList.add("jb-pro-speed-menu-shown")})),i(t.$speedMenu,"mouseout",(()=>{t.$speedMenuList.classList.remove("jb-pro-speed-menu-shown")})),i(t.$speedMenuList,"click",(t=>{const i=sa(t);if(i.matches("div.jb-pro-speed-menu-item")){const t=i.dataset;e.emit(mt.playbackPreRateChange,t.speed)}}))),E===Q.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=sa(t);i.matches("div.jb-pro-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()}))):E===Q.simple&&(t.isDroging=!1,i(t.$playbackProgress,"click",(i=>{if(i.target!==t.$playbackProgressIndicator){let s=0,r=0;if(e.isInWebFullscreen())s=i.touches[0].clientY/e.height,r=s*e.playback.totalDuration;else{const o=cc(t,e.playback.totalDuration,i);s=o.percentage,r=o.second}e.playback&&e.playback.seek({time:r})}})),i(t.$playbackProgress,"mousemove",(i=>{po(t.$playbackProgressTip,"display","block");const{width:s,time:r}=cc(t,e.playback.totalDuration,i);t.$playbackProgressTip.innerHTML=r;const o=t.$playbackProgressTip.clientWidth;s<=o/2?po(t.$playbackProgressTip,"left",0):s>t.$playbackProgress.clientWidth-o/2?po(t.$playbackProgressTip,"left",t.$playbackProgress-o+"px"):po(t.$playbackProgressTip,"left",s-o/2+"px")})),i(t.$playbackProgress,"mouseout",(()=>{po(t.$playbackProgressTip,"display","none")})),i(t.$playbackProgressIndicator,"mousedown",(e=>{t.isDroging=!0})),i(t.$playbackProgress,"mousemove",(i=>{if(t.isDroging){const{second:s,percentage:r}=cc(t,e.playback.totalDuration,i);e.playback&&e.playback.seek({time:s})}})),i(t.$playbackProgress,"mouseup",(e=>{t.isDroging&&(t.isDroging=!1)})))}o.quality&&(i(t.$qualityMenu,"mouseover",(()=>{t.$qualityMenuList.classList.add("jb-pro-quality-menu-shown")})),i(t.$qualityMenu,"mouseout",(()=>{t.$qualityMenuList.classList.remove("jb-pro-quality-menu-shown")})),i(t.$qualityMenuList,"click",(t=>{const i=sa(t);if(i.matches("div.jb-pro-quality-menu-item")){const t=i.dataset;e.streamQuality=t.quality}}))),o.scale&&(i(t.$scaleMenu,"mouseover",(()=>{t.$scaleMenuList.classList.add("jb-pro-scale-menu-shown")})),i(t.$scaleMenu,"mouseout",(()=>{t.$scaleMenuList.classList.remove("jb-pro-scale-menu-shown")})),i(t.$scaleMenuList,"click",(t=>{const i=sa(t);if(i.matches("div.jb-pro-scale-menu-item")){const t=i.dataset;e.setScaleMode(t.scale)}}))),o.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})),o.close&&i(t.$close,"click",(t=>{t.stopPropagation(),e.doDestroy()})),i(t.$tipsMessageClose,"click",(e=>{e.stopPropagation(),t.$tipsMessageContent.innerHTML="",po(t.$tipsMessage,"display","none")}))})(e,this),e._opt.hotKey&&vo()&&((e,t)=>{const{events:{proxy:i}}=e;let s={};function r(e,t){s[e]?s[e].push(t):s[e]=[t]}t.keys=s,r(Ci,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(Di,(()=>{e.volume+=.05})),r(xi,(()=>{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=s[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.btnIndex=0,this.initLoadingBackground(),Zo(e._opt.loadingIconStyle)&&this.initLoadingIconStyle(e._opt.loadingIconStyle),Zo(e._opt.ptzPositionConfig)&&this.updatePtzPosition(e._opt.ptzPositionConfig),e._opt.initShowPlayBtn&&(this.isInitPlayer=!0,this.showPlayBtn()),this.updateControlSize(),this.kbpsShow="0 KB/s",this.player.debugLog("Control","init")}destroy(){if(this.$performancePanel){this.$performancePanel.innerHTML="";if(!Ac(this.$performancePanel)){const e=this.player.$container.querySelector(".jb-pro-performance-panel");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$performancePanel}if(this.$poster){if(!Ac(this.$poster)){const e=this.player.$container.querySelector(".jb-pro-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$poster}if(this.$loading){if(!Ac(this.$loading)){const e=this.player.$container.querySelector(".jb-pro-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loading}if(this.$loadingBg){if(!Ac(this.$loadingBg)){const e=this.player.$container.querySelector(".jb-pro-loading-bg");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loadingBg}if(this.$controls){if(!Ac(this.$controls)){const e=this.player.$container.querySelector(".jb-pro-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$controls}if(this.$playBig){if(!Ac(this.$playBig)){const e=this.player.$container.querySelector(".jb-pro-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$playBig}if(this.$recording){if(!Ac(this.$recording)){const e=this.player.$container.querySelector(".jb-pro-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$recording}if(this.$ptzControl){if(!Ac(this.$ptzControl)){const e=this.player.$container.querySelector(".jb-pro-ptz-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$ptzControl}if(this.$zoomControls){if(!Ac(this.$zoomControls)){const e=this.player.$container.querySelector(".jb-pro-zoom-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$zoomControls}if(this.$contextmenus){this.$contextmenus.innerHTML="";if(!Ac(this.$contextmenus)){const e=this.player.$container.querySelector(".jb-pro-contextmenus");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$contextmenus}if(this.$tipsMessage){if(!Ac(this.$tipsMessage)){const e=this.player.$container.querySelector(".jb-pro-tips-message");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$tipsMessage}if(this.$extendDom){if(!Ac(this.$extendDom)){const e=this.player.$container.querySelector(".jb-pro-extend-dom");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$extendDom}try{delete this.$tipsMessageContent,delete this.$tipsMessageClose,delete this.$playbackProgressTime,delete this.$playbackProgressIndicator,delete this.$playbackProgressPlayed,delete this.$playbackProgressHover,delete this.$$playbackProgressTip,delete this.$playbackProgress,delete this.$logSave,delete this.$speedMenuList,delete this.$speedMenu,delete this.$speedText,delete this.$contextmenus,delete this.$occlusionDetectActive,delete this.$occlusionDetect,delete this.$objectDetectActive,delete this.$objectDetect,delete this.$faceDetectActive,delete this.$faceDetect,delete this.$performanceActive,delete this.$performance,delete this.$performancePanel,delete this.$zoomControls,delete this.$close,delete this.$zoomStop2,delete this.$zoomExpand,delete this.$zoomNarrow,delete this.$zoomStop,delete this.$zoom,delete this.$scaleMenuList,delete this.$scaleMenu,delete this.$scaleText,delete this.$qualityMenuList,delete this.$qualityMenu,delete this.$qualityText,delete this.$ptzWiperClose,delete this.$ptzWiperOpen,delete this.$ptzFogClose,delete this.$ptzFogOpen,delete this.$ptzCruisePause,delete this.$ptzCruisePlay,delete this.$ptzFocusNear,delete this.$ptzFocusFar,delete this.$ptzApertureNear,delete this.$ptzApertureFar,delete this.$ptzNarrow,delete this.$ptzExpand,delete this.$ptzArrows,delete this.$ptzControlCircular,delete this.$ptzBgActive,delete this.$ptzControl,delete this.$ptzActive,delete this.$ptz,delete this.$playbackExpand,delete this.$playbackNarrow,delete this.$controlsPlaybackBtns,delete this.$playbackCurrentTimeText,delete this.$playbackCurrentTime,delete this.$playbackTimeListSecond,delete this.$playbackTimeListOne,delete this.$playbackTimeList,delete this.$playbackTimeScroll,delete this.$playbackTimeInner,delete this.$playbackTime,delete this.$controlHtml,delete this.$speed,delete this.$screenshot,delete this.$recordStop,delete this.$record,delete this.$fullscreenExit,delete this.$fullscreen,delete this.$volumeOff,delete this.$volumeOn,delete this.$volumeHandle,delete this.$volumePanel,delete this.$volumePanelText,delete this.$volumePanelWrap,delete this.$volume,delete this.$controlsRight,delete this.$controlsLeft,delete this.$controlsInner,delete this.$controls,delete this.$pause,delete this.$recordingStop,delete this.$recordingTime,delete this.$recording,delete this.$playBig,delete this.$play,delete this.$loadingText,delete this.$loading,delete this.$loadingBgImage,delete this.$loadingBg,delete this.$poster,delete this.$extendDom,delete this.controlsRect,delete this.controlsInnerRect,delete this.controlsLeftRect,delete this.controlsRightRect,delete this.controlsPlaybackTimeInner,delete this.controlsPlaybackBtnsRect}catch(e){}this.keys=null,this.btnIndex=0,this.extendBtnList=[],this.kbpsShow="0 KB/s",this.player.$container&&(this.player.$container.classList.remove("jb-pro-controls-show-auto-hide"),this.player.$container.classList.remove("jb-pro-controls-show")),this.player.debugLog("Control","destroy")}getBtnIndex(){return this.btnIndex++}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,s=t/i,r=e.video.$videoElement.width/e.video.$videoElement.height;if(s>r){const s=(t-i*r)/2;e.$container.style.padding=`0 ${s}px`}else{const s=(i-t/r)/2;e.$container.style.padding=`${s}px 0`}}initLoadingBackground(){const e=this.player;e._opt.loadingBackground&&e._opt.loadingBackgroundWidth&&e._opt.loadingBackgroundHeight&&(e.debugLog("Control","initLoadingBackground()"),"default"===this.player._opt.aspectRatio||bo()?e.getRenderType()===$?this._initLoadingBackgroundForCanvas():e.getRenderType()===H&&this._initLoadingBackgroundForVideo():this._initLoadingBackgroundForRatio(),gc(this.$loadingBg,"display","block"),e._opt.loadingBackground="")}resizeLoadingBackground(){this.$loadingBgImage.src&&this.$loadingBgImage.width>0&&this.$loadingBgImage.height>0&&"none"!==fo(this.$loadingBg,"display",!1)&&("default"===this.player._opt.aspectRatio||bo()?this.player.getRenderType()===$?this._initLoadingBackgroundForCanvas():this.player.getRenderType()===H&&this._initLoadingBackgroundForVideo():this._initLoadingBackgroundForRatio())}initLoadingIconStyle(e){const t=this.player.$container.querySelector(".jb-pro-icon-loading");t&&(e.width&&gc(t,"width",`${e.width}px`),e.height&&gc(t,"height",`${e.height}px`),e.background&&gc(t,"backgroundImage",`url("${e.background}")`),!1===e.hasAnimation&&(gc(t,"animationName","none"),gc(t,"animationDuration",0),gc(t,"animationTimingFunction","ease"),gc(t,"animationIterationCount",1)))}_initLoadingBackgroundForRatio(){const e=this.player._opt.aspectRatio.split(":").map(Number),t=this.player.getShowVideoRect(),i=this.player.getControlHeight(),s=t.width,r=t.height,o=this.player._opt.loadingBackgroundWidth,a=this.player._opt.loadingBackgroundHeight,n=o/a,l=e[0]/e[1];if(this.player._opt.loadingBackground&&(this.$loadingBgImage.src=this.player._opt.loadingBackground),n>l){const e=l*a/o;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${i}px)`,this.$loadingBgImage.style.padding=`0 ${(s-s*e)/2}px`}else{const e=o/l/a;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${i}px)`,this.$loadingBgImage.style.padding=(r-r*e)/2+"px 0"}}_initLoadingBackgroundForCanvas(){const e=this.player,t=e._opt,i=e.getShowVideoRect(),s=i.height,r=i.width,o={width:this.player._opt.loadingBackgroundWidth,height:this.player._opt.loadingBackgroundHeight};let a=o.width,n=o.height;const l=t.rotate;let d=(r-a)/2,h=(s-n)/2;270!==l&&90!==l||(a=o.height,n=o.width);const c=r/a,u=s/n;let p=c>u?u:c;Ea(t.isResize)&&c!==u&&(p=c+","+u),t.isFullResize&&(p=c>u?c:u);let f="scale("+p+")";"none"===t.mirrorRotate&&l&&(f+=" rotate("+l+"deg)"),"level"===t.mirrorRotate?f+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(f+=" rotateX(180deg)"),this.$loadingBgImage.width=o.width,this.$loadingBgImage.height=o.height,e._opt.loadingBackground&&(this.$loadingBgImage.src=e._opt.loadingBackground),this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.transform=f,this.$loadingBgImage.style.left=d+"px",this.$loadingBgImage.style.top=h+"px"}_initLoadingBackgroundForVideo(){const e=this.player,t=e._opt,i=e.getShowVideoRect(),s=i.width,r=i.height;let o=i.width,a=i.height;const n=t.rotate;270!==n&&90!==n||(o=r,a=s),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,e._opt.loadingBackground&&(this.$loadingBgImage.src=e._opt.loadingBackground);let l=(s-o)/2,d=(r-a)/2,h="contain";t.isResize||(h="fill"),t.isFullResize&&(h="none");let c="";"none"===t.mirrorRotate&&n&&(c+=" rotate("+n+"deg)"),"level"===t.mirrorRotate?c+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(c+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=h),this.$loadingBgImage.style.transform=c,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px"}_validateExtendBtn(e){let t=!0;if(e.name||(this.player.debugWarn("Control","extend button name is required"),t=!1),t){-1!==this.extendBtnList.findIndex((t=>t.name===e.name))&&(this.player.debugWarn("Control",`extend button name: ${e.name} is already exist`),t=!1)}return t&&(e.icon||(this.player.debugWarn("Control","extend button icon is required"),t=!1)),t}addExtendBtn(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Aa(Rs);if(e=Object.assign({},t,e),!this._validateExtendBtn(e))return;const i=e.name||"",s=this.$controlsRight,r=e.createdMoment||Pr,o=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(s.children)[e.index];n?n.insertAdjacentHTML("beforebegin",a):mc(s,a);const l=s.querySelector(`.jb-pro-controls-item-wrap-${i}`),d=e.icon?s.querySelector(`.jb-pro-icon-extend-${i}`):null,h=e.icon?s.querySelector(`.jb-pro-control-extend-${i}`):null,c=e.activeIcon?s.querySelector(`.jb-pro-icon-extend-${i}-active`):null,u=e.activeIcon?s.querySelector(`.jb-pro-control-extend-${i}-active`):null,{events:{proxy:p},debug:f}=this.player;e.icon&&(gc(d,"background",`url(${e.icon}) no-repeat center`),gc(d,"background-size","100% 100%"),gc(h,"display",r===xr?"flex":"none"),e.iconHover&&(p(d,"mouseover",(()=>{gc(d,"background",`url(${e.iconHover}) no-repeat center`),gc(d,"background-size","100% 100%")})),p(d,"mouseout",(()=>{gc(d,"background",`url(${e.icon}) no-repeat center`),gc(d,"background-size","100% 100%")})))),e.activeIcon&&(gc(c,"background",`url(${e.activeIcon}) no-repeat center`),gc(c,"background-size","100% 100%"),gc(u,"display","none"),e.activeIconHover&&(p(c,"mouseover",(()=>{gc(c,"background",`url(${e.activeIconHover}) no-repeat center`),gc(c,"background-size","100% 100%")})),p(c,"mouseout",(()=>{gc(c,"background",`url(${e.activeIcon}) no-repeat center`),gc(c,"background-size","100% 100%")})))),e.click&&d&&p(d,"click",(t=>{t.preventDefault(),o&&(gc(h,"display","none"),gc(u,"display","flex")),this.player.isInMulti()?e.click.call(this.player,t,this.player._opt.multiIndex):e.click.call(this.player,t)})),e.activeClick&&c&&p(c,"click",(t=>{t.preventDefault(),gc(h,"display","flex"),gc(u,"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,createdMoment:r,$iconContainer:l,$iconWrap:h,$activeIconWrap:u})}toggleExtendBtn(e,t){const i=this.extendBtnList.find((t=>t.name===e));i&&i.$activeIconWrap&&i.$iconWrap&&(No(t)||(t="none"===fo(i.$activeIconWrap,"display",!1)),t?(gc(i.$iconWrap,"display","none"),gc(i.$activeIconWrap,"display","flex")):(gc(i.$iconWrap,"display","flex"),gc(i.$activeIconWrap,"display","none")))}getExtendBtnActive(e){const t=this.extendBtnList.find((t=>t.name===e));let i=!1;return t&&t.$activeIconWrap&&(i="none"!==fo(t.$activeIconWrap,"display",!1)),i}addExtendDom(e){if(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(".jb-pro-extend-dom"),configurable:!0}),e.showBeforePlay&&gc(this.$extendDom,"display","block")}}toggleExtendDom(e){this.$extendDom&&(No(e)||(e="none"===fo(this.$extendDom,"display",!1)),gc(this.$extendDom,"display",e?"block":"none"))}updateExtendDom(e){this.$extendDom&&(this.$extendDom.innerHTML=e)}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,s=this.$tipsMessageContent;if(i){const r=`\n
    ${e}
    \n ${t?`
    Error Type:${t}
    `:""}\n `;s.innerHTML=r,gc(i,"display","block")}}hideTipsMessage(){const e=this.$tipsMessage,t=this.$tipsMessageContent;e&&(t.innerHTML="",gc(e,"display","none"))}updatePtzPosition(e){const t=this.$ptzControl;if(Zo(e)&&t){let i="auto";e.left&&(i=Number(e.left)===e.left?e.left+"px":e.left),gc(t,"left",i);let s="auto";e.top&&(s=Number(e.top)===e.top?e.top+"px":e.top),gc(t,"top",s);let r="auto";e.bottom&&(r=Number(e.bottom)===e.bottom?e.bottom+"px":e.bottom),gc(t,"bottom",r);let o="auto";e.right&&(o=Number(e.right)===e.right?e.right+"px":e.right),gc(t,"right",o)}}showPlayBtn(){gc(this.$playBig,"display","block")}toggleBar(e){this.$controls&&(No(e)||(e="none"===fo(this.$controls,"display",!1)),gc(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==fo(this.$controls,"display",!1)),e}toggleControlHtml(e){this.$controlHtml&&(No(e)||(e="none"===fo(this.$controlHtml,"display",!1)),gc(this.$controlHtml,"display",e?"block":"none"))}getControlHtmlIsShow(){let e=!1;return this.$controlHtml&&(e="none"!==fo(this.$controlHtml,"display",!1)),e}getExtendDomIsShow(){let e=!1;return this.$extendDom&&(e="none"!==fo(this.$extendDom,"display",!1)),e}getExtendDom(){return this.$extendDom?this.$extendDom:null}getControlHtml(){return this.$controlHtml?this.$controlHtml:null}updateControlSize(){if(this.$controls){const e=this.player._opt.controlSize,t="jb-pro-controls-small";e===Z?Ea(fc(this.$controls,t))&&uc(this.$controls,t):e===X&&fc(this.$controls,t)&&pc(this.$controls,t)}}}vc(".jb-pro-container{position:relative;width:100%;height:100%;overflow:hidden}.jb-pro-container.jb-pro-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}.jb-pro-container .jb-pro-loading-bg-for-ios{position:absolute;z-index:100;left:0;top:0;right:0;bottom:0;height:100%;width:100%;opacity:0;visibility:hidden;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jb-pro-container .jb-pro-loading-bg-for-ios.show{opacity:1;visibility:visible}");var Sc=e=>{const{_opt:t,events:{proxy:i}}=e;if(t.supportDblclickFullscreen&&i(e.$container,"dblclick",(t=>{const i=sa(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),i(document,"visibilitychange",(()=>{e.visibility="visible"===document.visibilityState,e.debugLog("visibilitychange",document.visibilityState),t.hiddenAutoPause&&(e.debugLog("visibilitychange","hiddenAutoPause is true ",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),vo()&&i(document,["click","contextmenu"],(t=>{yc(t,e.$container)?(Sa(e._opt.disableContextmenu)&&"contextmenu"===t.type&&t.preventDefault(),e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit(mt.focus)):(e.isInput=!1,e.isFocus=!1,e.emit(mt.blur))})),t.isCheckInView){const t=xo((()=>{e.emit(mt.inView,function(e){const t=e.getBoundingClientRect(),i=window.innerHeight||document.documentElement.clientHeight,s=window.innerWidth||document.documentElement.clientWidth,r=t.top<=i&&t.top+t.height>=0,o=t.left<=s&&t.left+t.width>=0;return r&&o}(e.$container))}),200);i(window,"scroll",(()=>t()))}if(t.orientationChangeResize){const t=xo((()=>{e.emit(mt.resize)}),500);i(window,"orientationchange",(()=>{t()})),screen&&screen.orientation&&screen.orientation.onchange&&i(screen.orientation,"change",(()=>{t()}))}};class Ec{static init(){Ec.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 Ec.types)Ec.types.hasOwnProperty(e)&&(Ec.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Ec.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,s=Array.prototype.slice.call(arguments,1),r=s.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 o=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 Ec.box(Ec.types.trak,Ec.tkhd(e),Ec.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return Ec.box(Ec.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,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return Ec.box(Ec.types.mdia,Ec.mdhd(e),Ec.hdlr(e),Ec.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return Ec.box(Ec.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?Ec.constants.HDLR_AUDIO:Ec.constants.HDLR_VIDEO,Ec.box(Ec.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Ec.box(Ec.types.smhd,Ec.constants.SMHD):Ec.box(Ec.types.vmhd,Ec.constants.VMHD),Ec.box(Ec.types.minf,t,Ec.dinf(),Ec.stbl(e))}static dinf(){return Ec.box(Ec.types.dinf,Ec.box(Ec.types.dref,Ec.constants.DREF))}static stbl(e){return Ec.box(Ec.types.stbl,Ec.stsd(e),Ec.box(Ec.types.stts,Ec.constants.STTS),Ec.box(Ec.types.stsc,Ec.constants.STSC),Ec.box(Ec.types.stsz,Ec.constants.STSZ),Ec.box(Ec.types.stco,Ec.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Ec.box(Ec.types.stsd,Ec.constants.STSD_PREFIX,Ec.mp3(e)):Ec.box(Ec.types.stsd,Ec.constants.STSD_PREFIX,Ec.mp4a(e)):"avc"===e.videoType?Ec.box(Ec.types.stsd,Ec.constants.STSD_PREFIX,Ec.avc1(e)):Ec.box(Ec.types.stsd,Ec.constants.STSD_PREFIX,Ec.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,s=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 Ec.box(Ec.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,s=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 Ec.box(Ec.types.mp4a,s,Ec.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=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 Ec.box(Ec.types.esds,s)}static avc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 Ec.box(Ec.types.avc1,r,Ec.box(Ec.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 Ec.box(Ec.types.hvc1,r,Ec.box(Ec.types.hvcC,t))}static mvex(e){return Ec.box(Ec.types.mvex,Ec.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 Ec.box(Ec.types.trex,i)}static moof(e,t){return Ec.box(Ec.types.moof,Ec.mfhd(e.sequenceNumber),Ec.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 Ec.box(Ec.types.mfhd,t)}static traf(e,t){let i=e.id,s=Ec.box(Ec.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=Ec.box(Ec.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=Ec.sdtp(e),a=Ec.trun(e,o.byteLength+16+16+8+16+8+8);return Ec.box(Ec.types.traf,s,r,a,o)}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,Ec.box(Ec.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 s=e.duration,r=e.size,o=e.flags,a=e.cts;return i.set([s>>>24&255,s>>>16&255,s>>>8&255,255&s,r>>>24&255,r>>>16&255,r>>>8&255,255&r,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),Ec.box(Ec.types.trun,i)}static mdat(e){return Ec.box(Ec.types.mdat,e)}}Ec.init();class wc extends Ba{constructor(e){super(),this.TAG_NAME="MediaSource",this.player=e,this._resetInIt(),this._useManagedMediaSource="ManagedMediaSource"in Ir&&!("MediaSource"in Ir),this.mediaSource=this._useManagedMediaSource?new Ir.ManagedMediaSource:new Ir.MediaSource,this.isDecodeFirstIIframe=!!Ea(e._opt.checkFirstIFrame),this.mediaSourceObjectURL=null,this._useManagedMediaSource||(this.mediaSourceObjectURL=Ir.URL.createObjectURL(this.mediaSource)),this.isSupportVideoFrameCallback=Da(),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.hasPendingEos=!1,this.player.isPlayback()&&this.player.on(mt.playbackPause,(t=>{Ea(t)?(e._opt.isPlaybackPauseClearCache&&(Sa(e._opt.checkFirstIFrame)&&(this.player.debugLog(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._useManagedMediaSource?this.player.debugLog(this.TAG_NAME,"init and using ManagedMediaSource"):this.player.debugLog(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.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,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.mediaSource=null,this.off(),this.player.debugLog(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.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===ki}get isStateClosed(){return this.state===Li}get isStateEnded(){return this.state===Ti}get duration(){return this.mediaSource&&this.mediaSource.duration||-1}set duration(e){this.mediaSource.duration=e}_bindMediaSourceEvents(){const{events:{proxy:e}}=this.player,t=e(this.mediaSource,es,(()=>{this.player.debugLog(this.TAG_NAME,"sourceOpen"),this._onMediaSourceSourceOpen(),this.player.emit(mt.mseSourceOpen)})),i=e(this.mediaSource,Zi,(()=>{this.player.debugLog(this.TAG_NAME,"sourceClose"),this.player.emit(mt.mseSourceClose)})),s=e(this.mediaSource,ts,(()=>{this.player.debugLog(this.TAG_NAME,"sourceended"),this.player.emit(mt.mseSourceended)}));this.eventListenList.push(t,i,s);const r=e(this.$videoElement,ns,(e=>{if(Ea(this.isSupportVideoFrameCallback))if(this.player.checkIsInRender())this.player.handleRender();else{const t=parseInt(e.timeStamp,10);this.player.debugLog(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}`)}}));if(this.eventListenList.push(r),this._useManagedMediaSource){const t=e(this.mediaSource,is,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource startstreaming"),this.player.emit(mt.mseSourceStartStreaming)})),i=e(this.mediaSource,ss,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource endstreaming"),this.player.emit(mt.mseSourceEndStreaming)})),s=e(this.mediaSource,rs,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource qualitychange")}));this.eventListenList.push(t,i,s)}}_onMediaSourceSourceOpen(){this.sourceBuffer||(this.player.debugLog("MediaSource","onMediaSourceSourceOpen() sourceBuffer is null and next init"),this._initSourceBuffer()),this.audioSourceBuffer||(this.player.debugLog("MediaSource","onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),this._initAudioSourceBuffer()),this._hasPendingSegments()&&this._doAppendSegments()}initVideoEvents(){const{proxy:e}=this.player.events;this.player.on(mt.visibilityChange,(e=>{e&&setTimeout((()=>{if(this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getMseBufferMaxDelayTime()&&(this.player.debugLog(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)}));const t=e(this.$videoElement,os,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.emit(mt.removeLoadingBgImage),Da()?this.supportVideoFrameCallbackHandle||(this.player.debugLog(this.TAG_NAME,"video canplay and requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.isUseHls265()&&(this.player.debugLog(this.TAG_NAME,"video canplay and use canvas render and fps is 25"),this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40)),this.player.debugLog(this.TAG_NAME,"video play")})).catch((e=>{this.player.debugError(this.TAG_NAME,"video play error ",e),this.player.emitError(At.mediaSourceUseCanvasRenderPlayFailed,`code is ${e.code} and message is ${e.message}`)}))})),i=e(this.$videoElement,as,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,ds,(()=>{this.player.debugLog(this.TAG_NAME,"video loadedmetadata")})),r=e(this.$videoElement,ns,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),o=e(this.$videoElement,ls,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&this.player.debugWarn(this.TAG_NAME,"ratechange and video is paused")}));this.eventListenList.push(t,i,r,o,s)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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,s){const r=this.player;if(r)if(this.player.isDestroyedOrClosed())this.player.debugWarn(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===Lt){i=Gn(e.slice(5))}else t===Ct&&(i=Zn(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debugWarn(this.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(At.mseWidthOrHeightChange,`width ${s.width}->${i.codecWidth}, height ${s.height}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(_a(e))return void this.player.debugLog(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debugWarn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let r=t;if(this.player.isPlayer()){if(null===this.firstRenderTime&&(this.firstRenderTime=t,this.player.debugLog(this.TAG_NAME,`firstRenderTime is ${this.firstRenderTime}`)),r=t-this.firstRenderTime,r<0&&(this.player.debugWarn(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}`),r=null===this.prevDts?0:this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t)))return this.player.debugWarn(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(At.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`);if(null!==this.prevDts&&r<=this.prevDts){if(this.player.debugWarn(this.TAG_NAME,`\n decodeVideo dts is less than(or equal) prev dts ,\n dts is ${r} 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}`),r===this.prevDts&&this.prevPayloadBufferSize===e.byteLength)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo dts is equal to prev dts and payload size is equal to prev payload size so drop this frame");if(r=this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t))return this.player.debugWarn(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(At.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`)}}this.player.isPlayer()?this._decodeVideo(e,r,i,s,t):this.player.isPlayback()&&(Ea(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this._decodeVideo(e,r,i,s,t)):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this._decodeVideo(e,r,i,s,t)),this.prevDts=r,this.prevPayloadBufferSize=e.byteLength,this.prevTs=t}else this.player.debugLog(this.TAG_NAME,"decodeVideo first frame is not iFrame");else if(i&&e[1]===ks){const s=15&e[0];if(r.video.updateVideoInfo({encTypeCode:s}),s===Ct&&Ea(Io()))return void this.player.emitError(At.mediaSourceH265NotSupport);r._times.decodeStart||(r._times.decodeStart=co()),this.hasInit=this._decodeConfigurationRecord(e,t,i,s)}else this.player.debugWarn(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.debugWarn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(Ea(this.hasAudioInit))this.hasAudioInit=this._decodeAudioConfigurationRecord(e,t);else{let i=t;if(Wr(e))return void this.player.debugLog(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.player.isPlayer()){if(null===this.firstAudioTime&&(this.firstAudioTime=t,this.player.debugLog(this.TAG_NAME,`firstAudioTime is ${this.firstAudioTime}`)),i=t-this.firstAudioTime,i<0&&(this.player.debugWarn(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.debugWarn(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(At.mediaSourceTsIsMaxDiff,`decodeAudio is max diff, prevTs is ${this.prevAudioDts} and ts is ${t}`);null!==this.prevAudioTs&&i<=this.prevAudioDts&&(this.player.debugWarn(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()&&(Ea(this.player.playbackPause)||this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()))&&this._decodeAudio(e,i,t),this.prevAudioTs=t,this.prevAudioDts=i}else this.player.debugLog(this.TAG_NAME,"decodeAudio first frame is not iFrame")}}_checkTsIsMaxDiff(e){return this.prevTs>0&&eee}_checkAudioTsIsMaxDiff(e){return this.prevAudioTs>0&&eee}_decodeConfigurationRecord(e,t,i,s){let r=e.slice(5),o={};if(s===Lt?o=Gn(r):s===Ct&&(o=el(r)),Xo(o)||0===o.codecWidth&&0===o.codecHeight){this.player.debugWarn(this.TAG_NAME,"_decodeConfigurationRecord",o);let e="";return e=Xo(o)?"config is empty object":`config is not empty object and codecWidth is ${o.codecWidth} and codecHeight is ${o.codecHeight}`,this.player.emitError(At.mediaSourceDecoderConfigurationError,e),!1}this.isInitInfo||(this.player.debugLog(this.TAG_NAME,`updateVideoInfo: ${o.codecWidth},${o.codecHeight}`),this.player.video.updateVideoInfo({width:o.codecWidth,height:o.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,s);const a={id:dr,type:"video",timescale:1e3,duration:0,avcc:r,codecWidth:o.codecWidth,codecHeight:o.codecHeight,videoType:o.videoType},n=Ec.generateInitSegment(a);this.isAvc=s===Lt;let l=o.codec;return this.videoMimeType=l?`video/mp4; codecs="${o.codec}"`:this.isAvc?bi:vi,this._initSourceBuffer(),this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack={},!0}_decodeAudioConfigurationRecord(e,t){const i=e[0]>>4,s=e[0]>>1&1,r=i===It,o=i===Rt;let a="";if(a=o?s?16:8:0===s?8:16,Ea(o||r))return this.player.debugWarn(this.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),this.player.emit(At.mediaSourceAudioG711NotSupport),!1;const n={id:hr,type:"audio",timescale:1e3};let l={};if(Wr(e)){if(l=qr(e.slice(2)),!l)return!1;n.audioSampleRate=l.sampleRate,n.channelCount=l.channelCount,n.config=l.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale}else{if(!r)return!1;if(l=ec(e),!l)return!1;n.audioSampleRate=l.samplingRate,n.channelCount=l.channelCount,n.refSampleDuration=1152/n.audioSampleRate*n.timescale}n.codec=l.codec,n.duration=0;let d="mp4",h=l.codec,c=null;r&&Ea(So())?(d="mpeg",h="",c=new Uint8Array):c=Ec.generateInitSegment(n);let u=`${n.type}/${d}`;return h&&h.length>0&&(u+=`;codecs=${h}`),Ea(this.isAudioInitInfo)&&(this.player.audio.updateAudioInfo({encTypeCode:i,channels:n.channelCount,sampleRate:n.audioSampleRate,depth:a}),this.isAudioInitInfo=!0),this.audioMimeType=u,this.isAAC=o,this._initAudioSourceBuffer(),this.appendAudioBuffer(c.buffer),!0}_initSourceBuffer(){const{events:{proxy:e}}=this.player;if(null===this.sourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.videoMimeType){try{this.sourceBuffer=this.mediaSource.addSourceBuffer(this.videoMimeType),this.player.debugLog(this.TAG_NAME,"_initSourceBuffer() this.mediaSource.addSourceBuffer()",this.videoMimeType)}catch(e){return this.player.debugError(this.TAG_NAME,"appendBuffer() this.mediaSource.addSourceBuffer()",e.code,e),this.player.emitError(At.mseAddSourceBufferError,`code is ${e.code} and message is ${e.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.sourceBuffer){const t=e(this.sourceBuffer,"error",(e=>{this.mediaSourceBufferError=!0,this.player.debugError(this.TAG_NAME,"mseSourceBufferError this.sourceBuffer",e),this.player.emitError(At.mseSourceBufferError,e.toString())})),i=e(this.sourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debugLog(this.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(t,i)}}else this.player.debugLog(this.TAG_NAME,`_initSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.isAvc === null is ${null===this.isAvc}`)}_initAudioSourceBuffer(){const{events:{proxy:e}}=this.player;if(null===this.audioSourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.audioMimeType){try{this.audioSourceBuffer=this.mediaSource.addSourceBuffer(this.audioMimeType),this._clearAudioSourceBufferCheckTimeout(),this.player.debugLog(this.TAG_NAME,"_initAudioSourceBuffer() this.mediaSource.addSourceBuffer()",this.audioMimeType)}catch(e){return this.player.debugError(this.TAG_NAME,"appendAudioBuffer() this.mediaSource.addSourceBuffer()",e.code,e),this.player.emitError(At.mseAddSourceBufferError,`code is ${e.code} and message is ${e.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.audioSourceBuffer){const t=e(this.audioSourceBuffer,"error",(e=>{this.mediaSourceBufferError=!0,this.player.debugError(this.TAG_NAME,"mseSourceBufferError this.audioSourceBuffer",e),this.player.emitError(At.mseSourceBufferError,e.toString())})),i=e(this.audioSourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debugLog(this.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(t,i),null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(At.mediaSourceAudioNoDataTimeout)}),1e3))}}else this.player.debugLog(this.TAG_NAME,`_initAudioSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.audioMimeType is ${this.audioMimeType}`)}_decodeVideo(e,t,i,s,r){const o=this.player;let a=e.slice(5),n=a.byteLength;if(0===n)return void o.debugWarn(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>1e3&&!d&&this.player.isPlayer()&&o.debugLog(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(Ec.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts,this.cacheTrack.duration>1e3&&this.player.debugWarn(this.TAG_NAME,`cacheTrack duration is ${this.cacheTrack.duration} ms`);let s=Ec.moof(this.cacheTrack,this.cacheTrack.dts);this.cacheTrack={};let a=new Uint8Array(s.byteLength+i.byteLength);a.set(s,0),a.set(i,s.byteLength),this.appendBuffer(a.buffer),o.emit(mt.timeUpdate,r),o.isPlayer()?o.isUseHls265()?o.updateStats({dfps:!0,mseTs:t}):o.updateStats({fps:!0,dfps:!0,ts:r,mseTs:t}):o.isPlayback()&&o.playback.updateStats({ts:r}),o._times.videoStart||(o._times.videoStart=co(),o.handlePlayToRenderTimes())}else o.debugLog(this.TAG_NAME,`cacheTrack = {} now dts is ${t}, and ts is ${r} cacheTrack dts is ${this.cacheTrack&&this.cacheTrack.dts}`),this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=dr,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=n,this.cacheTrack.dts=t,this.cacheTrack.cts=s,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=a,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},o._opt.mseUseCanvasRender&&Ea(this.isSupportVideoFrameCallback)&&Ea(o.isUseHls265())&&o.video.render({$video:c,ts:t}),this.prevTimestamp=(new Date).getTime()}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_decodeAudio(e,t,i){const s=this.player;let r=this.isAAC?e.slice(2):e.slice(1),o=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(Ec.types.mdat,4),i.set(this.cacheAudioTrack.data,8),this.cacheAudioTrack.duration=t-this.cacheAudioTrack.dts,this.cacheAudioTrack.duration>1e3&&this.player.debugWarn(this.TAG_NAME,`cacheTrack duration is ${this.cacheTrack.duration} ms`);let s=Ec.moof(this.cacheAudioTrack,this.cacheAudioTrack.dts);this.cacheAudioTrack={};let r=new Uint8Array(s.byteLength+i.byteLength);r.set(s,0),r.set(i,s.byteLength),this.appendAudioBuffer(r.buffer)}else s.debugLog(this.TAG_NAME,`cacheAudioTrack = {} now dts is ${t} cacheAudioTrack dts is ${this.cacheAudioTrack&&this.cacheAudioTrack.dts}`),this.cacheAudioTrack={};this.cacheAudioTrack||(this.cacheAudioTrack={}),this.cacheAudioTrack.id=hr,this.cacheAudioTrack.sequenceNumber=++this.audioSequenceNumber,this.cacheAudioTrack.size=o,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){this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"appendBuffer() player is destroyed"):(this.player,this.mediaSourceAddSourceBufferError?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?this.player.debugWarn(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._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),Ea(this.getSourceBufferUpdating())&&this.isStateOpen&&Ea(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(At.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(At.mseSourceBufferError,"mediaSource is end"))))}appendAudioBuffer(e){this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() player is destroyed"):(this.player,this.mediaSourceAddSourceBufferError?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?this.player.debugWarn(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._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),Ea(this.getAudioSourceBufferUpdating())&&this.isStateOpen&&Ea(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(At.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(At.mseSourceBufferError,"mediaSource is end"))))}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}getAudioSourceBufferUpdating(){return this.audioSourceBuffer&&this.audioSourceBuffer.updating}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}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.debugWarn(this.TAG_NAME,`checkMSESourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debugWarn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}checkSourceBufferEndLessThanCurrentTime(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.buffered.end(e.buffered.length-1)-e.currentTime),t}getDecodeDiffTimes(){return this.decodeDiffTimestamp}removeBuffer(e,t){const i=ra();if(this.player.debugLog(this.TAG_NAME,`removeBuffer() start is ${e} and end is ${t} and _isMacOsFirefox is ${i}`),this.isStateOpen&&Ea(i)){if(Ea(this.getSourceBufferUpdating()))try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debugWarn(this.TAG_NAME,"removeBuffer() sourceBuffer error",e)}if(Ea(this.getAudioSourceBufferUpdating()))try{this.audioSourceBuffer.remove(e,t)}catch(e){this.player.debugWarn(this.TAG_NAME,"removeBuffer() audioSourceBuffer error",e)}}}clearUpAllSourceBuffer(){if(this.sourceBuffer){const e=this.sourceBuffer.buffered;for(let t=0;t=1)if(this.getSourceBufferUpdating()||this.getAudioSourceBufferUpdating())this.hasPendingEos=!0;else{this.hasPendingEos=!1;try{this.player.debugLog(this.TAG_NAME,"endOfStream()"),this.mediaSource.endOfStream()}catch(e){this.player.debugWarn(this.TAG_NAME,"endOfStream() error",e)}}}abortSourceBuffer(){if(this.isStateOpen){if(this.sourceBuffer){try{this.player.debugLog(this.TAG_NAME,"abortSourceBuffer() abort sourceBuffer"),this.sourceBuffer.abort()}catch(e){}Ea(this.getSourceBufferUpdating())&&this._doRemoveRanges()}if(this.audioSourceBuffer){try{this.player.debugLog(this.TAG_NAME,"abortSourceBuffer() abort audioSourceBuffer"),this.audioSourceBuffer.abort()}catch(e){}Ea(this.getAudioSourceBufferUpdating())&&this._doRemoveRanges()}}this.sourceBuffer=null,this.audioSourceBuffer=null}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource){if(this.sourceBuffer)try{this.player.debugLog(this.TAG_NAME,"removeSourceBuffer() sourceBuffer"),this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debugError(this.TAG_NAME,"removeSourceBuffer() sourceBuffer error",e)}if(this.audioSourceBuffer)try{this.player.debugLog(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer"),this.mediaSource.removeSourceBuffer(this.audioSourceBuffer)}catch(e){this.player.debugError(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;this.player._opt.videoBuffer,this.player._opt.videoBufferDelay;const t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getMseBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),0===this.$videoElement.readyState)return;if(r>o)this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debugWarn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(At.mediaSourceBufferedIsZeroError,"video.buffered is empty");const a=this._getPlaybackRate(i-s);e.playbackRate!==a&&(this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${a} `),e.playbackRate=a)}_handleUpdateBufferDelayTime(){const e=this.getVideoBufferDelayTime();this.player.updateStats({mseVideoBufferDelayTime:e})}_checkVideoPlayCurrentTime(){const e=this.checkSourceBufferStore();if(e<0){const t=this.getVideoBufferStartTime();this.player.debugWarn(this.TAG_NAME,`checkVideoPlayCurrentTime store is ${e} < 0 and set currentTime ${this.$videoElement.currentTime} to ${t}`),this.$videoElement.currentTime=t}}updateVideoCurrentTimeByBufferStart(){if(!this.$videoElement)return;const e=this.$videoElement.currentTime,t=this.getVideoBufferRangeList();if(1===t.length){const i=t[0].end,s=Math.abs(i-e);if(s<1)return void this.player.debugLog(this.TAG_NAME,`updateVideoCurrentTimeByBufferStart current time is ${e} and buffer end is ${i} and diff is ${s} and return`)}let i=null;for(let s=0;s{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(At.mediaSourceAudioInitTimeout)}),1e3)));if(Ea(this.getSourceBufferUpdating())&&this.pendingSegments.length>0){const e=this.pendingSegments.shift();try{this.sourceBuffer.appendBuffer(e)}catch(e){this.player.debugError(this.TAG_NAME,"this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(At.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(At.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(mt.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}if(Ea(this.getAudioSourceBufferUpdating())&&this.pendingAudioSegments.length>0){const e=this.pendingAudioSegments.shift();try{this.audioSourceBuffer.appendBuffer(e)}catch(e){this.player.debugError(this.TAG_NAME,"this.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(At.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(At.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(mt.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}}else this.player.debugLog(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 s=0;s=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingRemoveRanges.push({start:r,end:t})}}else o=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingAudioRemoveRanges.push({start:r,end:t})}}else o0||this.pendingAudioRemoveRanges.length>0}_doRemoveRanges(){if(this.sourceBuffer&&Ea(this.getSourceBufferUpdating())){let e=this.pendingRemoveRanges;for(;e.length&&Ea(this.getSourceBufferUpdating());){let t=e.shift();try{this.sourceBuffer.remove(t.start,t.end)}catch(e){this.player.debugWarn(this.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(this.audioSourceBuffer&&Ea(this.getAudioSourceBufferUpdating())){let e=this.pendingAudioRemoveRanges;for(;e.length&&Ea(this.getAudioSourceBufferUpdating());){let t=e.shift();try{this.audioSourceBuffer.remove(t.start,t.end)}catch(e){this.player.debugWarn(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 s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?1:t.playbackRate}_needCleanupSourceBuffer(){if(Ea(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}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getVideoBufferStartTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;t=i.length?i.start(0):0}return t}getVideoBufferEndTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;t=i.length?i.end(i.length-1):0}return t}getVideoBufferRangeList(){const e=this.$videoElement;let t=[];if(e){const i=e.buffered;for(let e=0;e0?t:0}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}getMimeType(){return{video:this.videoMimeType,audio:this.audioMimeType}}getMseBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}isVideoPlaying(){return this.$videoElement&&Ea(this.$videoElement.paused)&&Ea(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}isCurrentTimeInBufferEnd(){let e=!1;if(this.$videoElement){const t=this.$videoElement.currentTime,i=this.getVideoBufferEndTime(),s=Math.abs(i-t);e=s<1,e&&this.player.debugLog(this.TAG_NAME,`isCurrentTimeInBufferEnd and currentTime is ${t} and end is ${i} and diff is ${s}`)}return e}}const Tc=()=>"wakeLock"in navigator&&-1===window.navigator.userAgent.indexOf("Samsung")&&Ea(wo());class kc{constructor(e){this.player=e,this.enabled=!1,Tc()?(this.player.debugLog("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.debugLog("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.debugWarn("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 s=document.createElement("source");s.src=i,s.type=`video/${t}`,e.appendChild(s)}get isEnabled(){return this.enabled}enable(){if(Tc())return navigator.wakeLock.request("screen").then((e=>{this._wakeLock=e,this.enabled=!0,this.player.debugLog("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{this.player.debugLog("wakeLock","Wake Lock released.")}))})).catch((e=>{throw this.enabled=!1,this.player.debugWarn("wakeLock",`${e.name}, ${e.message}`),e}));return this.noSleepVideo.play().then((e=>(this.player.debugLog("wakeLock","noSleepVideo Wake Lock active."),this.enabled=!0,e))).catch((e=>{throw this.player.debugWarn("wakeLock",`noSleepVideo ${e.name}, ${e.message}`),this.enabled=!1,e}))}disable(){Tc()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):this.noSleepVideo&&this.noSleepVideo.pause(),this.enabled=!1,this.player.debugLog("wakeLock","Disabling wake lock.")}}function Lc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Cc={exports:{}};!function(e,t){var i,s,r,o,a;i=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,s=/^(?=([^\/?#]*))\1([^]*)$/,r=/(?:\/|^)\.(?=\/)/g,o=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,a={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var r=a.parseURL(e);if(!r)throw new Error("Error trying to parse base URL.");return r.path=a.normalizePath(r.path),a.buildURLFromParts(r)}var o=a.parseURL(t);if(!o)throw new Error("Error trying to parse relative URL.");if(o.scheme)return i.alwaysNormalize?(o.path=a.normalizePath(o.path),a.buildURLFromParts(o)):t;var n=a.parseURL(e);if(!n)throw new Error("Error trying to parse base URL.");if(!n.netLoc&&n.path&&"/"!==n.path[0]){var l=s.exec(n.path);n.netLoc=l[1],n.path=l[2]}n.netLoc&&!n.path&&(n.path="/");var d={scheme:n.scheme,netLoc:o.netLoc,path:null,params:o.params,query:o.query,fragment:o.fragment};if(!o.netLoc&&(d.netLoc=n.netLoc,"/"!==o.path[0]))if(o.path){var h=n.path,c=h.substring(0,h.lastIndexOf("/")+1)+o.path;d.path=a.normalizePath(c)}else d.path=n.path,o.params||(d.params=n.params,o.query||(d.query=n.query));return null===d.path&&(d.path=i.alwaysNormalize?a.normalizePath(o.path):o.path),a.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(r,"");e.length!==(e=e.replace(o,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=a}(Cc);var Dc=Cc.exports;function xc(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function Rc(e){for(var t=1;t`):Gc}(t)}))}const $c=Wc,Hc=/^(\d+)x(\d+)$/,Jc=/(.+?)=(".*?"|.*?)(?:,|$)/g;class qc{constructor(e){"string"==typeof e&&(e=qc.parseAttrList(e)),Bc(this,e)}get clientAttrs(){return Object.keys(this).filter((e=>"X-"===e.substring(0,2)))}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;const i=new Uint8Array(t.length/2);for(let e=0;eNumber.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){const i=this[e];return i?parseFloat(i):t}enumeratedString(e){return this[e]}bool(e){return"YES"===this[e]}decimalResolution(e){const t=Hc.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t;const i={};for(Jc.lastIndex=0;null!==(t=Jc.exec(e));){let e=t[2];0===e.indexOf('"')&&e.lastIndexOf('"')===e.length-1&&(e=e.slice(1,-1));i[t[1].trim()]=e}return i}}function Kc(e){return"SCTE35-OUT"===e||"SCTE35-IN"===e}class Yc{constructor(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){const i=t.attr;for(const t in i)if(Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==i[t]){$c.warn(`DATERANGE tag attribute: "${t}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=t;break}e=Bc(new qc({}),i,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){const e=new Date(this.attr["END-DATE"]);Mc(e.getTime())&&(this._endDate=e)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;const e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}get duration(){if("DURATION"in this.attr){const e=this.attr.decimalFloatingPoint("DURATION");if(Mc(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isValid(){return!!this.id&&!this._badValueForSameId&&Mc(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class Qc{constructor(){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}}}var Xc="audio",Zc="video",eu="audiovideo";class tu{constructor(e){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[Xc]:null,[Zc]:null,[eu]:null},this.baseurl=e}setByteRange(e,t){const i=e.split("@",2);let s;s=1===i.length?(null==t?void 0:t.byteRangeEndOffset)||0:parseInt(i[1]),this._byteRange=[s,parseInt(i[0])+s]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=Dc.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(e){this._url=e}}class iu extends tu{constructor(e,t){super(t),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new Qc,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=e}get decryptdata(){const{levelkeys:e}=this;if(!e&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{const e=Object.keys(this.levelkeys);if(1===e.length)return this._decryptdata=this.levelkeys[e[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!Mc(this.programDateTime))return null;const e=Mc(this.duration)?this.duration:0;return this.programDateTime+1e3*e}get encrypted(){var e;if(null!=(e=this._decryptdata)&&e.encrypted)return!0;if(this.levelkeys){const e=Object.keys(this.levelkeys),t=e.length;if(t>1||1===t&&this.levelkeys[e[0]].encrypted)return!0}return!1}setKeyFormat(e){if(this.levelkeys){const t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}}abortRequests(){var e,t;null==(e=this.loader)||e.abort(),null==(t=this.keyLoader)||t.abort()}setElementaryStreamInfo(e,t,i,s,r,o=!1){const{elementaryStreams:a}=this,n=a[e];n?(n.startPTS=Math.min(n.startPTS,t),n.endPTS=Math.max(n.endPTS,i),n.startDTS=Math.min(n.startDTS,s),n.endDTS=Math.max(n.endDTS,r)):a[e]={startPTS:t,endPTS:i,startDTS:s,endDTS:r,partial:o}}clearElementaryStreamInfo(){const{elementaryStreams:e}=this;e[Xc]=null,e[Zc]=null,e[eu]=null}}class su extends tu{constructor(e,t,i,s,r){super(i),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.stats=new Qc,this.duration=e.decimalFloatingPoint("DURATION"),this.gap=e.bool("GAP"),this.independent=e.bool("INDEPENDENT"),this.relurl=e.enumeratedString("URI"),this.fragment=t,this.index=s;const o=e.enumeratedString("BYTERANGE");o&&this.setByteRange(o,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}}class ru{constructor(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}reloaded(e){if(!e)return this.advanced=!0,void(this.updated=!0);const 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}get hasProgramDateTime(){return!!this.fragments.length&&Mc(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const e=this.driftEndTime-this.driftStartTime;if(e>0){return 1e3*(this.driftEnd-this.driftStart)/e}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var e;return null!=(e=this.fragments)&&e.length?this.fragments[this.fragments.length-1].end:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function ou(e){return Uint8Array.from(atob(e),(e=>e.charCodeAt(0)))}function au(e){const t=e.split(":");let i=null;if("data"===t[0]&&2===t.length){const e=t[1].split(";"),s=e[e.length-1].split(",");if(2===s.length){const t="base64"===s[0],r=s[1];t?(e.splice(-1,1),i=ou(r)):i=function(e){const t=nu(e).subarray(0,16),i=new Uint8Array(16);return i.set(t,16-t.length),i}(r)}}return i}function nu(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(e=>e.charCodeAt(0)))}const lu="undefined"!=typeof self?self:void 0;var du={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},hu="org.w3.clearkey",cu="com.apple.streamingkeydelivery",uu="com.microsoft.playready",pu="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function fu(e){switch(e){case cu:return du.FAIRPLAY;case uu:return du.PLAYREADY;case pu:return du.WIDEVINE;case hu:return du.CLEARKEY}}var mu="edef8ba979d64acea3c827dcd51d21ed";function gu(e){switch(e){case du.FAIRPLAY:return cu;case du.PLAYREADY:return uu;case du.WIDEVINE:return pu;case du.CLEARKEY:return hu}}function yu(e){const{drmSystems:t,widevineLicenseUrl:i}=e,s=t?[du.FAIRPLAY,du.WIDEVINE,du.PLAYREADY,du.CLEARKEY].filter((e=>!!t[e])):[];return!s[du.WIDEVINE]&&i&&s.push(du.WIDEVINE),s}const Au=null!=lu&&null!=(bu=lu.navigator)&&bu.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var bu;function vu(e,t,i){return Uint8Array.prototype.slice?e.slice(t,i):new Uint8Array(Array.prototype.slice.call(e,t,i))}const _u=(e,t)=>t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,Su=(e,t)=>t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,Eu=(e,t)=>{const i=t;let s=0;for(;_u(e,t);){s+=10;s+=wu(e,t+6),Su(e,t+10)&&(s+=10),t+=s}if(s>0)return e.subarray(i,i+s)},wu=(e,t)=>{let i=0;return i=(127&e[t])<<21,i|=(127&e[t+1])<<14,i|=(127&e[t+2])<<7,i|=127&e[t+3],i},Tu=(e,t)=>_u(e,t)&&wu(e,t+6)+10<=e.length-t,ku=e=>{const t=Du(e);for(let e=0;ee&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info,Cu=e=>{const t=String.fromCharCode(e[0],e[1],e[2],e[3]),i=wu(e,4);return{type:t,size:i,data:e.subarray(10,10+i)}},Du=e=>{let t=0;const i=[];for(;_u(e,t);){const s=wu(e,t+6);t+=10;const r=t+s;for(;t+8"PRIV"===e.type?Ru(e):"W"===e.type[0]?Iu(e):Pu(e),Ru=e=>{if(e.size<2)return;const t=Mu(e.data,!0),i=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:i.buffer}},Pu=e=>{if(e.size<2)return;if("TXXX"===e.type){let t=1;const i=Mu(e.data.subarray(t),!0);t+=i.length+1;const s=Mu(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=Mu(e.data.subarray(1));return{key:e.type,data:t}},Iu=e=>{if("WXXX"===e.type){if(e.size<2)return;let t=1;const i=Mu(e.data.subarray(t),!0);t+=i.length+1;const s=Mu(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=Mu(e.data);return{key:e.type,data:t}},Bu=e=>{if(8===e.data.byteLength){const t=new Uint8Array(e.data),i=1&t[3];let s=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return s/=45,i&&(s+=47721858.84),Math.round(s)}},Mu=(e,t=!1)=>{const i=Uu();if(i){const s=i.decode(e);if(t){const e=s.indexOf("\0");return-1!==e?s.substring(0,e):s}return s.replace(/\0/g,"")}const s=e.length;let r,o,a,n="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(r);break;case 12:case 13:o=e[l++],n+=String.fromCharCode((31&r)<<6|63&o);break;case 14:o=e[l++],a=e[l++],n+=String.fromCharCode((15&r)<<12|(63&o)<<6|(63&a)<<0)}}return n};let Fu;function Uu(){if(!navigator.userAgent.includes("PlayStation 4"))return Fu||void 0===self.TextDecoder||(Fu=new self.TextDecoder("utf-8")),Fu}const Ou=function(e){let t="";for(let i=0;i>24,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i}function qu(e,t){const i=[];if(!t.length)return i;const s=e.byteLength;for(let r=0;r1?r+o:s;if(zu(e.subarray(r+4,r+8))===t[0])if(1===t.length)i.push(e.subarray(r+8,a));else{const s=qu(e.subarray(r+8,a),t.slice(1));s.length&&ju.apply(i,s)}r=a}return i}function Ku(e){const t=[],i=e[0];let s=8;const r=Vu(e,s);s+=4;let o=0,a=0;0===i?(o=Vu(e,s),a=Vu(e,s+4),s+=8):(o=$u(e,s),a=$u(e,s+8),s+=16),s+=2;let n=e.length+a;const l=Wu(e,s);s+=2;for(let i=0;i>>31)return $c.warn("SIDX has hierarchical references (not supported)"),null;const l=Vu(e,i);i+=4,t.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/r,start:n,end:n+a-1}}),n+=a,i+=4,s=i}return{earliestPresentationTime:o,timescale:r,version:i,referencesCount:l,references:t}}function Yu(e){const t=[],i=qu(e,["moov","trak"]);for(let e=0;e{const i=Vu(e,4),s=t[i];s&&(s.default={duration:Vu(e,12),flags:Vu(e,20)})})),t}function Qu(e){const t=e.subarray(8),i=t.subarray(86),s=zu(t.subarray(4,8));let r=s;const o="enca"===s||"encv"===s;if(o){const e=qu(t,[s])[0];qu(e.subarray("enca"===s?28:78),["sinf"]).forEach((e=>{const t=qu(e,["schm"])[0];if(t){const i=zu(t.subarray(4,8));if("cbcs"===i||"cenc"===i){const t=qu(e,["frma"])[0];t&&(r=zu(t))}}}))}switch(r){case"avc1":case"avc2":case"avc3":case"avc4":{const e=qu(i,["avcC"])[0];r+="."+Zu(e[1])+Zu(e[2])+Zu(e[3]);break}case"mp4a":{const e=qu(t,[s])[0],i=qu(e.subarray(28),["esds"])[0];if(i&&i.length>12){let e=4;if(3!==i[e++])break;e=Xu(i,e),e+=2;const t=i[e++];if(128&t&&(e+=2),64&t&&(e+=i[e++]),4!==i[e++])break;e=Xu(i,e);const s=i[e++];if(64!==s)break;if(r+="."+Zu(s),e+=12,5!==i[e++])break;e=Xu(i,e);const o=i[e++];let a=(248&o)>>3;31===a&&(a+=1+((7&o)<<3)+((224&i[e])>>5)),r+="."+a}break}case"hvc1":case"hev1":{const e=qu(i,["hvcC"])[0],t=e[1],s=["","A","B","C"][t>>6],o=31&t,a=Vu(e,2),n=(32&t)>>5?"H":"L",l=e[12],d=e.subarray(6,12);r+="."+s+o,r+="."+a.toString(16).toUpperCase(),r+="."+n+l;let h="";for(let e=d.length;e--;){const t=d[e];if(t||h){h="."+t.toString(16).toUpperCase()+h}}r+=h;break}case"dvh1":case"dvhe":{const e=qu(i,["dvcC"])[0],t=e[2]>>1&127,s=e[2]<<5&32|e[3]>>3&31;r+="."+ep(t)+"."+ep(s);break}case"vp09":{const e=qu(i,["vpcC"])[0],t=e[4],s=e[5],o=e[6]>>4&15;r+="."+ep(t)+"."+ep(s)+"."+ep(o);break}case"av01":{const e=qu(i,["av1C"])[0],t=e[1]>>>5,s=31&e[1],o=e[2]>>>7?"H":"M",a=(64&e[2])>>6,n=(32&e[2])>>5,l=2===t&&a?n?12:10:a?10:8,d=(16&e[2])>>4,h=(8&e[2])>>3,c=(4&e[2])>>2,u=3&e[2],p=1,f=1,m=1,g=0;r+="."+t+"."+ep(s)+o+"."+ep(l)+"."+d+"."+h+c+u+"."+ep(p)+"."+ep(f)+"."+ep(m)+"."+g;break}}return{codec:r,encrypted:o}}function Xu(e,t){const i=t+5;for(;128&e[t++]&&t{const l=n.byteOffset-8;qu(n,["traf"]).map((n=>{const d=qu(n,["tfdt"]).map((e=>{const t=e[0];let i=Vu(e,4);return 1===t&&(i*=Math.pow(2,32),i+=Vu(e,8)),i/r}))[0];return void 0!==d&&(e=d),qu(n,["tfhd"]).map((d=>{const h=Vu(d,4),c=16777215&Vu(d,0);let u=0;const p=0!=(16&c);let f=0;const m=0!=(32&c);let g=8;h===o&&(0!=(1&c)&&(g+=8),0!=(2&c)&&(g+=4),0!=(8&c)&&(u=Vu(d,g),g+=4),p&&(f=Vu(d,g),g+=4),m&&(g+=4),"video"===t.type&&(a=function(e){if(!e)return!1;const t=e.indexOf("."),i=t<0?e:e.substring(0,t);return"hvc1"===i||"hev1"===i||"dvh1"===i||"dvhe"===i}(t.codec)),qu(n,["trun"]).map((o=>{const n=o[0],d=16777215&Vu(o,0),h=0!=(1&d);let c=0;const p=0!=(4&d),m=0!=(256&d);let g=0;const y=0!=(512&d);let A=0;const b=0!=(1024&d),v=0!=(2048&d);let _=0;const S=Vu(o,4);let E=8;h&&(c=Vu(o,E),E+=4),p&&(E+=4);let w=c+l;for(let l=0;l>1&63;return 39===e||40===e}return 6===(31&t)}function ap(e,t,i,s){const r=np(e);let o=0;o+=t;let a=0,n=0,l=0;for(;o=r.length)break;l=r[o++],a+=l}while(255===l);n=0;do{if(o>=r.length)break;l=r[o++],n+=l}while(255===l);const e=r.length-o;let t=o;if(ne){$c.error(`Malformed SEI payload. ${n} is too small, only ${e} bytes left to parse.`);break}if(4===a){if(181===r[t++]){const e=Wu(r,t);if(t+=2,49===e){const e=Vu(r,t);if(t+=4,1195456820===e){const e=r[t++];if(3===e){const o=r[t++],n=31&o,l=64&o,d=l?2+3*n:0,h=new Uint8Array(d);if(l){h[0]=o;for(let e=1;e16){const e=[];for(let i=0;i<16;i++){const s=r[t++].toString(16);e.push(1==s.length?"0"+s:s),3!==i&&5!==i&&7!==i&&9!==i||e.push("-")}const o=n-16,l=new Uint8Array(o);for(let e=0;e0?(o=new Uint8Array(4),t.length>0&&new DataView(o.buffer).setUint32(0,t.length,!1)):o=new Uint8Array;const a=new Uint8Array(4);return i&&i.byteLength>0&&new DataView(a.buffer).setUint32(0,i.byteLength,!1),function(e,...t){const i=t.length;let s=8,r=i;for(;r--;)s+=t[r].byteLength;const o=new Uint8Array(s);for(o[0]=s>>24&255,o[1]=s>>16&255,o[2]=s>>8&255,o[3]=255&s,o.set(e,4),r=0,s=8;r>8*(15-i)&255;return t}(e);return new hp(this.method,this.uri,"identity",this.keyFormatVersions,t)}const t=au(this.uri);if(t)switch(this.keyFormat){case pu:this.pssh=t,t.length>=22&&(this.keyId=t.subarray(t.length-22,t.length-6));break;case uu:{const e=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=lp(e,null,t);const i=new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2),s=String.fromCharCode.apply(null,Array.from(i)),r=s.substring(s.indexOf("<"),s.length),o=(new DOMParser).parseFromString(r,"text/xml").getElementsByTagName("KID")[0];if(o){const e=o.childNodes[0]?o.childNodes[0].nodeValue:o.getAttribute("VALUE");if(e){const t=ou(e).subarray(0,16);!function(e){const t=function(e,t,i){const s=e[t];e[t]=e[i],e[i]=s};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}(t),this.keyId=t}}break}default:{let e=t.subarray(0,16);if(16!==e.length){const t=new Uint8Array(16);t.set(e,16-e.length),e=t}this.keyId=e;break}}if(!this.keyId||16!==this.keyId.byteLength){let e=dp[this.uri];if(!e){const t=Object.keys(dp).length%Number.MAX_SAFE_INTEGER;e=new Uint8Array(16);new DataView(e.buffer,12,4).setUint32(0,t),dp[this.uri]=e}this.keyId=e}return this}}const cp=/\{\$([a-zA-Z0-9-_]+)\}/g;function up(e){return cp.test(e)}function pp(e,t,i){if(null!==e.variableList||e.hasVariableRefs)for(let s=i.length;s--;){const r=i[s],o=t[r];o&&(t[r]=fp(e,o))}}function fp(e,t){if(null!==e.variableList||e.hasVariableRefs){const i=e.variableList;return t.replace(cp,(t=>{const s=t.substring(2,t.length-1),r=null==i?void 0:i[s];return void 0===r?(e.playlistParsingError||(e.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${s}"`)),t):r}))}return t}function mp(e,t,i){let s,r,o=e.variableList;if(o||(e.variableList=o={}),"QUERYPARAM"in t){s=t.QUERYPARAM;try{const e=new self.URL(i).searchParams;if(!e.has(s))throw new Error(`"${s}" does not match any query parameter in URI: "${i}"`);r=e.get(s)}catch(t){e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${t.message}`))}}else s=t.NAME,r=t.VALUE;s in o?e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${s}"`)):o[s]=r||""}function gp(e,t,i){const s=t.IMPORT;if(i&&s in i){let t=e.variableList;t||(e.variableList=t={}),t[s]=i[s]}else e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${s}"`))}function yp(e=!0){if("undefined"==typeof self)return;return(e||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const Ap={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 bp(e,t,i=!0){return!e.split(",").some((e=>!vp(e,t,i)))}function vp(e,t,i=!0){var s;const r=yp(i);return null!=(s=null==r?void 0:r.isTypeSupported(_p(e,t)))&&s}function _p(e,t){return`${t}/mp4;codecs="${e}"`}function Sp(e){if(e){const t=e.substring(0,4);return Ap.video[t]}return 2}function Ep(e){return e.split(",").reduce(((e,t)=>{const i=Ap.video[t];return i?(2*i+e)/(e?3:2):(Ap.audio[t]+e)/(e?2:1)}),0)}const wp={};const Tp=/flac|opus/i;function kp(e,t=!0){return e.replace(Tp,(e=>function(e,t=!0){if(wp[e])return wp[e];const i={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[e];for(let s=0;s0&&s.length({id:e.attrs.AUDIO,audioCodec:e.audioCodec}))),SUBTITLES:o.map((e=>({id:e.attrs.SUBTITLES,textCodec:e.textCodec}))),"CLOSED-CAPTIONS":[]};let n=0;for(Dp.lastIndex=0;null!==(s=Dp.exec(e));){const e=new qc(s[1]),o=e.TYPE;if(o){const s=a[o],l=r[o]||[];r[o]=l,pp(i,e,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const d=e.LANGUAGE,h=e["ASSOC-LANGUAGE"],c=e.CHANNELS,u=e.CHARACTERISTICS,p=e["INSTREAM-ID"],f={attrs:e,bitrate:0,id:n++,groupId:e["GROUP-ID"]||"",name:e.NAME||d||"",type:o,default:e.bool("DEFAULT"),autoselect:e.bool("AUTOSELECT"),forced:e.bool("FORCED"),lang:d,url:e.URI?Ip.resolve(e.URI,t):""};if(h&&(f.assocLang=h),c&&(f.channels=c),u&&(f.characteristics=u),p&&(f.instreamId=p),null!=s&&s.length){const e=Ip.findGroup(s,f.groupId)||s[0];Up(f,e,"audioCodec"),Up(f,e,"textCodec")}l.push(f)}}return r}static parseLevelPlaylist(e,t,i,s,r,o){const a=new ru(t),n=a.fragments;let l,d,h,c=null,u=0,p=0,f=0,m=0,g=null,y=new iu(s,t),A=-1,b=!1,v=null;for(Rp.lastIndex=0,a.m3u8=e,a.hasVariableRefs=up(e);null!==(l=Rp.exec(e));){b&&(b=!1,y=new iu(s,t),y.start=f,y.sn=u,y.cc=m,y.level=i,c&&(y.initSegment=c,y.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,v&&(y.setByteRange(v),v=null)));const e=l[1];if(e){y.duration=parseFloat(e);const t=(" "+l[2]).slice(1);y.title=t||null,y.tagList.push(t?["INF",e,t]:["INF",e])}else if(l[3]){if(Mc(y.duration)){y.start=f,h&&jp(y,h,a),y.sn=u,y.level=i,y.cc=m,n.push(y);const e=(" "+l[3]).slice(1);y.relurl=fp(a,e),Op(y,g),g=y,f+=y.duration,u++,p=0,b=!0}}else if(l[4]){const e=(" "+l[4]).slice(1);g?y.setByteRange(e,g):y.setByteRange(e)}else if(l[5])y.rawProgramDateTime=(" "+l[5]).slice(1),y.tagList.push(["PROGRAM-DATE-TIME",y.rawProgramDateTime]),-1===A&&(A=n.length);else{if(l=l[0].match(Pp),!l){$c.warn("No matches on slow regex match for level playlist!");continue}for(d=1;d0&&e.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=e.optionalFloat("PART-HOLD-BACK",0),a.holdBack=e.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const e=new qc(r);a.partTarget=e.decimalFloatingPoint("PART-TARGET");break}case"PART":{let e=a.partList;e||(e=a.partList=[]);const i=p>0?e[e.length-1]:void 0,s=p++,o=new qc(r);pp(a,o,["BYTERANGE","URI"]);const n=new su(o,y,t,s,i);e.push(n),y.duration+=n.duration;break}case"PRELOAD-HINT":{const e=new qc(r);pp(a,e,["URI"]),a.preloadHint=e;break}case"RENDITION-REPORT":{const e=new qc(r);pp(a,e,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(e);break}default:$c.warn(`line parsed but not handled: ${l}`)}}}g&&!g.relurl?(n.pop(),f-=g.duration,a.partList&&(a.fragmentHint=g)):a.partList&&(Op(y,g),y.cc=m,a.fragmentHint=y,h&&jp(y,h,a));const _=n.length,S=n[0],E=n[_-1];if(f+=a.skippedSegments*a.targetduration,f>0&&_&&E){a.averagetargetduration=f/_;const e=E.sn;a.endSN="initSegment"!==e?e:0,a.live||(E.endList=!0),S&&(a.startCC=S.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(f+=a.fragmentHint.duration),a.totalduration=f,a.endCC=m,A>0&&function(e,t){let i=e[t];for(let s=t;s--;){const t=e[s];if(!t)return;t.programDateTime=i.programDateTime-1e3*t.duration,i=t}}(n,A),a}}function Bp(e,t,i){var s,r;const o=new qc(e);pp(i,o,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(s=o.METHOD)?s:"",n=o.URI,l=o.hexadecimalInteger("IV"),d=o.KEYFORMATVERSIONS,h=null!=(r=o.KEYFORMAT)?r:"identity";n&&o.IV&&!l&&$c.error(`Invalid IV: ${o.IV}`);const c=n?Ip.resolve(n,t):"",u=(d||"1").split("/").map(Number).filter(Number.isFinite);return new hp(a,c,h,u,l)}function Mp(e){const t=new qc(e).decimalFloatingPoint("TIME-OFFSET");return Mc(t)?t:null}function Fp(e,t){let i=(e||"").split(/[ ,]+/).filter((e=>e));["video","audio","text"].forEach((e=>{const s=i.filter((t=>function(e,t){const i=Ap[t];return!!i&&!!i[e.slice(0,4)]}(t,e)));s.length&&(t[`${e}Codec`]=s.join(","),i=i.filter((e=>-1===s.indexOf(e))))})),t.unknownCodecs=i}function Up(e,t,i){const s=t[i];s&&(e[i]=s)}function Op(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),Mc(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function Np(e,t,i,s){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=i,e.sn="initSegment",s&&(e.levelkeys=s),e.initSegment=null}function jp(e,t,i){e.levelkeys=t;const{encryptedFragments:s}=i;s.length&&s[s.length-1].levelkeys===t||!Object.keys(t).some((e=>t[e].isCommonEncryption))||s.push(e)}var Gp="manifest",zp="level",Wp="audioTrack",Vp="subtitleTrack",$p="main",Hp="audio",Jp="subtitle";function qp(e){const{type:t}=e;switch(t){case Wp:return Hp;case Vp:return Jp;default:return $p}}function Kp(e,t){let i=e.url;return void 0!==i&&0!==i.indexOf("data:")||(i=t.url),i}class Yp{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:e}=this;e.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Oc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Oc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(Oc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:e}=this;e.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Oc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Oc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(Oc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(e){const t=this.hls.config,i=t.pLoader,s=t.loader,r=new(i||s)(t);return this.loaders[e.type]=r,r}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(const e in this.loaders){const t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){const{url:i}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:Gp,url:i,deliveryDirectives:null})}onLevelLoading(e,t){const{id:i,level:s,pathwayId:r,url:o,deliveryDirectives:a}=t;this.load({id:i,level:s,pathwayId:r,responseType:"text",type:zp,url:o,deliveryDirectives:a})}onAudioTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:Wp,url:r,deliveryDirectives:o})}onSubtitleTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:Vp,url:r,deliveryDirectives:o})}load(e){var t;const i=this.hls.config;let s,r=this.getInternalLoader(e);if(r){const t=r.context;if(t&&t.url===e.url&&t.level===e.level)return void $c.trace("[playlist-loader]: playlist request ongoing");$c.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),r.abort()}if(s=e.type===Gp?i.manifestLoadPolicy.default:Bc({},i.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),r=this.createInternalLoader(e),Mc(null==(t=e.deliveryDirectives)?void 0:t.part)){let t;if(e.type===zp&&null!==e.level?t=this.hls.levels[e.level].details:e.type===Wp&&null!==e.id?t=this.hls.audioTracks[e.id].details:e.type===Vp&&null!==e.id&&(t=this.hls.subtitleTracks[e.id].details),t){const e=t.partTarget,i=t.targetduration;if(e&&i){const t=1e3*Math.max(3*e,.8*i);s=Bc({},s,{maxTimeToFirstByteMs:Math.min(t,s.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(t,s.maxTimeToFirstByteMs)})}}}const o=s.errorRetry||s.timeoutRetry||{},a={loadPolicy:s,timeout:s.maxLoadTimeMs,maxRetry:o.maxNumRetry||0,retryDelay:o.retryDelayMs||0,maxRetryDelay:o.maxRetryDelayMs||0},n={onSuccess:(e,t,i,s)=>{const r=this.getInternalLoader(i);this.resetInternalLoader(i.type);const o=e.data;0===o.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),Ip.isMediaPlaylist(o)?this.handleTrackOrLevelPlaylist(e,t,i,s||null,r):this.handleMasterPlaylist(e,t,i,s)):this.handleManifestParsingError(e,i,new Error("no EXTM3U delimiter"),s||null,t)},onError:(e,t,i,s)=>{this.handleNetworkError(t,i,!1,e,s)},onTimeout:(e,t,i)=>{this.handleNetworkError(t,i,!0,void 0,e)}};r.load(e,a,n)}handleMasterPlaylist(e,t,i,s){const r=this.hls,o=e.data,a=Kp(e,i),n=Ip.parseMasterPlaylist(o,a);if(n.playlistParsingError)return void this.handleManifestParsingError(e,i,n.playlistParsingError,s,t);const{contentSteering:l,levels:d,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p}=n;this.variableList=p;const{AUDIO:f=[],SUBTITLES:m,"CLOSED-CAPTIONS":g}=Ip.parseMasterPlaylistMedia(o,a,n);if(f.length){f.some((e=>!e.url))||!d[0].audioCodec||d[0].attrs.AUDIO||($c.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),f.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new qc({}),bitrate:0,url:""}))}r.trigger(Oc.MANIFEST_LOADED,{levels:d,audioTracks:f,subtitles:m,captions:g,contentSteering:l,url:a,stats:t,networkDetails:s,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p})}handleTrackOrLevelPlaylist(e,t,i,s,r){const o=this.hls,{id:a,level:n,type:l}=i,d=Kp(e,i),h=Mc(n)?n:Mc(a)?a:0,c=qp(i),u=Ip.parseLevelPlaylist(e.data,d,h,c,0,this.variableList);if(l===Gp){const e={attrs:new qc({}),bitrate:0,details:u,name:"",url:d};o.trigger(Oc.MANIFEST_LOADED,{levels:[e],audioTracks:[],url:d,stats:t,networkDetails:s,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=u,this.handlePlaylistLoaded(u,e,t,i,s,r)}handleManifestParsingError(e,t,i,s,r){this.hls.trigger(Oc.ERROR,{type:Nc.NETWORK_ERROR,details:jc.MANIFEST_PARSING_ERROR,fatal:t.type===Gp,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:s,stats:r})}handleNetworkError(e,t,i=!1,s,r){let o=`A network ${i?"timeout":"error"+(s?" (status "+s.code+")":"")} occurred while loading ${e.type}`;e.type===zp?o+=`: ${e.level} id: ${e.id}`:e.type!==Wp&&e.type!==Vp||(o+=` id: ${e.id} group-id: "${e.groupId}"`);const a=new Error(o);$c.warn(`[playlist-loader]: ${o}`);let n=jc.UNKNOWN,l=!1;const d=this.getInternalLoader(e);switch(e.type){case Gp:n=i?jc.MANIFEST_LOAD_TIMEOUT:jc.MANIFEST_LOAD_ERROR,l=!0;break;case zp:n=i?jc.LEVEL_LOAD_TIMEOUT:jc.LEVEL_LOAD_ERROR,l=!1;break;case Wp:n=i?jc.AUDIO_TRACK_LOAD_TIMEOUT:jc.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case Vp:n=i?jc.SUBTITLE_TRACK_LOAD_TIMEOUT:jc.SUBTITLE_LOAD_ERROR,l=!1}d&&this.resetInternalLoader(e.type);const h={type:Nc.NETWORK_ERROR,details:n,fatal:l,url:e.url,loader:d,context:e,error:a,networkDetails:t,stats:r};if(s){const i=(null==t?void 0:t.url)||e.url;h.response=Rc({url:i,data:void 0},s)}this.hls.trigger(Oc.ERROR,h)}handlePlaylistLoaded(e,t,i,s,r,o){const a=this.hls,{type:n,level:l,id:d,groupId:h,deliveryDirectives:c}=s,u=Kp(t,s),p=qp(s),f="number"==typeof s.level&&p===$p?l:void 0;if(!e.fragments.length){const e=new Error("No Segments found in Playlist");return void a.trigger(Oc.ERROR,{type:Nc.NETWORK_ERROR,details:jc.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:e,reason:e.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i})}e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));const m=e.playlistParsingError;if(m)a.trigger(Oc.ERROR,{type:Nc.NETWORK_ERROR,details:jc.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i});else switch(e.live&&o&&(o.getCacheAge&&(e.ageHeader=o.getCacheAge()||0),o.getCacheAge&&!isNaN(e.ageHeader)||(e.ageHeader=0)),n){case Gp:case zp:a.trigger(Oc.LEVEL_LOADED,{details:e,level:f||0,id:d||0,stats:i,networkDetails:r,deliveryDirectives:c});break;case Wp:a.trigger(Oc.AUDIO_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c});break;case Vp:a.trigger(Oc.SUBTITLE_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c})}}}function Qp(e,t){let i;try{i=new Event("addtrack")}catch(e){i=document.createEvent("Event"),i.initEvent("addtrack",!1,!1)}i.track=e,t.dispatchEvent(i)}function Xp(e,t){const 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){$c.debug(`[texttrack-utils]: ${i}`);try{const i=new self.TextTrackCue(t.startTime,t.endTime,t.text);i.id=t.id,e.addCue(i)}catch(e){$c.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${e}`)}}"disabled"===i&&(e.mode=i)}function Zp(e){const t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(let t=e.cues.length;t--;)e.removeCue(e.cues[t]);"disabled"===t&&(e.mode=t)}function ef(e,t,i,s){const r=e.mode;if("disabled"===r&&(e.mode="hidden"),e.cues&&e.cues.length>0){const r=function(e,t,i){const s=[],r=function(e,t){if(te[i].endTime)return-1;let s=0,r=i;for(;s<=r;){const o=Math.floor((r+s)/2);if(te[o].startTime&&s-1)for(let o=r,a=e.length;o=t&&r.endTime<=i)s.push(r);else if(r.startTime>i)return s}return s}(e.cues,t,i);for(let t=0;t{const e=af();try{e&&new e(0,Number.POSITIVE_INFINITY,"")}catch(e){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function df(e,t){return e.getTime()/1e3-t}class hf{constructor(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=e,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){const{hls:e}=this;e.on(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Oc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(Oc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Oc.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:e}=this;e.off(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Oc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(Oc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Oc.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(e,t){this.media=t.media}onMediaDetaching(){this.id3Track&&(Zp(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){const t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;tlf&&(s=lf);s-i<=0&&(s=i+.25);for(let e=0;ee.type===sf&&n:"video"===s?e=>e.type===of&&a:e=>e.type===sf&&n||e.type===of&&a,ef(r,t,i,e)}}onLevelUpdated(e,{details:t}){if(!this.media||!t.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:i,id3Track:s}=this,{dateRanges:r}=t,o=Object.keys(r);if(s){const e=Object.keys(i).filter((e=>!o.includes(e)));for(let t=e.length;t--;){const r=e[t];Object.keys(i[r].cues).forEach((e=>{s.removeCue(i[r].cues[e])})),delete i[r]}}const a=t.fragments[t.fragments.length-1];if(0===o.length||!Mc(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const n=a.programDateTime/1e3-a.start,l=af();for(let e=0;e{if(t!==s.id){const i=r[t];if(i.class===s.class&&i.startDate>s.startDate&&(!e||s.startDatethis.timeupdate(),this.hls=e,this.config=e.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:e,levelDetails:t}=this;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){const{levelDetails:e}=this;if(null===e)return null;const{holdBack:t,partHoldBack:i,targetduration:s}=e,{liveSyncDuration:r,liveSyncDurationCount:o,lowLatencyMode:a}=this.config,n=this.hls.userConfig;let l=a&&i||t;(n.liveSyncDuration||n.liveSyncDurationCount||0===l)&&(l=void 0!==r?r:o*s);const d=s;return l+Math.min(1*this.stallCount,d)}get liveSyncPosition(){const e=this.estimateLiveEdge(),t=this.targetLatency,i=this.levelDetails;if(null===e||null===t||null===i)return null;const s=i.edge,r=e-t-this.edgeStalled,o=s-i.totalduration,a=s-(this.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(o,r),a)}get drift(){const{levelDetails:e}=this;return null===e?1:e.drift}get edgeStalled(){const{levelDetails:e}=this;if(null===e)return 0;const t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}get forwardBufferLength(){const{media:e,levelDetails:t}=this;if(!e||!t)return 0;const i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Oc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(Oc.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Oc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(Oc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(e,{details:t}){this.levelDetails=t,t.advanced&&this.timeupdate(),!t.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(e,t){var i;t.details===jc.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(i=this.levelDetails)&&i.live&&$c.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:e,levelDetails:t}=this;if(!e||!t)return;this.currentTime=e.currentTime;const i=this.computeLatency();if(null===i)return;this._latency=i;const{lowLatencyMode:s,maxLiveSyncPlaybackRate:r}=this.config;if(!s||1===r||!t.live)return;const o=this.targetLatency;if(null===o)return;const a=i-o;if(a.05&&this.forwardBufferLength>1){const t=Math.min(2,Math.max(1,r)),i=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;e.playbackRate=Math.min(t,Math.max(1,i))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}estimateLiveEdge(){const{levelDetails:e}=this;return null===e?null:e.edge+e.age}computeLatency(){const e=this.estimateLiveEdge();return null===e?null:e-this.currentTime}}const uf=["NONE","TYPE-0","TYPE-1",null];const pf=["SDR","PQ","HLG"];var ff="",mf="YES",gf="v2";function yf(e){const{canSkipUntil:t,canSkipDateRanges:i,age:s}=e;return t&&s!!e)).map((e=>e.substring(0,4))).join(","),this.addGroupId("audio",e.attrs.AUDIO),this.addGroupId("text",e.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(e){return vf(this._audioGroups,e)}hasSubtitleGroup(e){return vf(this._subtitleGroups,e)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(e,t){if(t)if("audio"===e){let e=this._audioGroups;e||(e=this._audioGroups=[]),-1===e.indexOf(t)&&e.push(t)}else if("text"===e){let e=this._subtitleGroups;e||(e=this._subtitleGroups=[]),-1===e.indexOf(t)&&e.push(t)}}get urlId(){return 0}set urlId(e){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var e;return null==(e=this.audioGroups)?void 0:e[0]}get textGroupId(){var e;return null==(e=this.subtitleGroups)?void 0:e[0]}addFallback(){}}function vf(e,t){return!(!t||!e)&&-1!==e.indexOf(t)}function _f(e,t){const i=t.startPTS;if(Mc(i)){let s,r=0;t.sn>e.sn?(r=i-e.start,s=e):(r=e.start-i,s=t),s.duration!==r&&(s.duration=r)}else if(t.sn>e.sn){e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration}else t.start=Math.max(e.start-t.duration,0)}function Sf(e,t,i,s,r,o){s-i<=0&&($c.warn("Fragment should have a positive duration",t),s=i+t.duration,o=r+t.duration);let a=i,n=s;const l=t.startPTS,d=t.endPTS;if(Mc(l)){const e=Math.abs(l-i);Mc(t.deltaPTS)?t.deltaPTS=Math.max(e,t.deltaPTS):t.deltaPTS=e,a=Math.max(i,l),i=Math.min(i,l),r=Math.min(r,t.startDTS),n=Math.min(s,d),s=Math.max(s,d),o=Math.max(o,t.endDTS)}const h=i-t.start;0!==t.start&&(t.start=i),t.duration=s-t.start,t.startPTS=i,t.maxStartPTS=a,t.startDTS=r,t.endPTS=s,t.minEndPTS=n,t.endDTS=o;const c=t.sn;if(!e||ce.endSN)return 0;let u;const p=c-e.startSN,f=e.fragments;for(f[p]=t,u=p;u>0;u--)_f(f[u],f[u-1]);for(u=p;u=0;e--){const t=s[e].initSegment;if(t){i=t;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;let r,o=0;if(function(e,t,i){const s=t.skippedSegments,r=Math.max(e.startSN,t.startSN)-t.startSN,o=(e.fragmentHint?1:0)+(s?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,a=t.startSN-e.startSN,n=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments;for(let e=r;e<=o;e++){const r=l[a+e];let o=n[e];s&&!o&&e{e.relurl&&(o=e.cc-s.cc),Mc(e.startPTS)&&Mc(e.endPTS)&&(s.start=s.startPTS=e.startPTS,s.startDTS=e.startDTS,s.maxStartPTS=e.maxStartPTS,s.endPTS=e.endPTS,s.endDTS=e.endDTS,s.minEndPTS=e.minEndPTS,s.duration=e.endPTS-e.startPTS,s.duration&&(r=s),t.PTSKnown=t.alignedSliding=!0),s.elementaryStreams=e.elementaryStreams,s.loader=e.loader,s.stats=e.stats,e.initSegment&&(s.initSegment=e.initSegment,i=e.initSegment)})),i){(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((e=>{var t;!e||e.initSegment&&e.initSegment.relurl!==(null==(t=i)?void 0:t.relurl)||(e.initSegment=i)}))}if(t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((e=>!e)),t.deltaUpdateFailed){$c.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let e=t.skippedSegments;e--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=function(e,t,i){const s=Bc({},e);i&&i.forEach((e=>{delete s[e]}));return Object.keys(t).forEach((e=>{const i=new Yc(t[e].attr,s[e]);i.isValid?s[e]=i:$c.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(t[e].attr)}"`)})),s}(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));const a=t.fragments;if(o){$c.warn("discontinuity sliding from playlist, take drift into account");for(let e=0;e{t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),r?Sf(t,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):wf(e,t),a.length&&(t.totalduration=t.edge-a[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;const n=t.advancedDateTime;if(t.advanced&&n){const e=t.edge;t.driftStart||(t.driftStartTime=n,t.driftStart=e),t.driftEndTime=n,t.driftEnd=e}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function wf(e,t){const i=t.startSN+t.skippedSegments-e.startSN,s=e.fragments;i<0||i>=s.length||Tf(t,s[i].start)}function Tf(e,t){if(t){const i=e.fragments;for(let s=e.skippedSegments;s{const{details:i}=e;null!=i&&i.fragments&&i.fragments.forEach((e=>{e.level=t}))}))}function Df(e){switch(e.details){case jc.FRAG_LOAD_TIMEOUT:case jc.KEY_LOAD_TIMEOUT:case jc.LEVEL_LOAD_TIMEOUT:case jc.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function xf(e,t){const i=Df(t);return e.default[(i?"timeout":"error")+"Retry"]}function Rf(e,t){const i="linear"===e.backoff?1:Math.pow(2,t);return Math.min(i*e.retryDelayMs,e.maxRetryDelayMs)}function Pf(e){return Rc(Rc({},e),{errorRetry:null,timeoutRetry:null})}function If(e,t,i,s){if(!e)return!1;const r=null==s?void 0:s.code,o=t499)}(r)||!!i);return e.shouldRetry?e.shouldRetry(e,t,i,s,o):o}const Bf=function(e,t){let i=0,s=e.length-1,r=null,o=null;for(;i<=s;){r=(i+s)/2|0,o=e[r];const a=t(o);if(a>0)i=r+1;else{if(!(a<0))return o;s=r-1}}return null};function Mf(e,t,i=0,s=0,r=.005){let o=null;if(e){o=t[e.sn-t[0].sn+1]||null;const s=e.endDTS-i;s>0&&s<15e-7&&(i+=15e-7)}else 0===i&&0===t[0].start&&(o=t[0]);if(o&&((!e||e.level===o.level)&&0===Ff(i,s,o)||function(e,t,i){if(t&&0===t.start&&t.level0){const s=t.tagList.reduce(((e,t)=>("INF"===t[0]&&(e+=parseFloat(t[1])),e)),i);return e.start<=s}return!1}(o,e,Math.min(r,s))))return o;const a=Bf(t,Ff.bind(null,i,s));return!a||a===e&&o?o:a}function Ff(e=0,t=0,i){if(i.start<=e&&i.start+i.duration>e)return 0;const s=Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return i.start+i.duration-s<=e?1:i.start-s>e&&i.start?-1:0}function Uf(e,t,i){const s=1e3*Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return(i.endProgramDateTime||0)-s>e}var Of=0,Nf=2,jf=3,Gf=5,zf=0,Wf=1,Vf=2;class $f{constructor(e,t){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=$c.log.bind($c,`${t}:`),this.warn=$c.warn.bind($c,`${t}:`),this.hls=e}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(e,t,i){const s=null==t?void 0:t.renditionReports;if(s){let r=-1;for(let i=0;i=0&&e>t.partTarget&&(a+=1)}const n=i&&yf(i);return new Af(o,a>=0?a:void 0,n)}}}loadPlaylist(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}shouldReloadPlaylist(e){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(e)}playlistLoaded(e,t,i){const{details:s,stats:r}=t,o=self.performance.now(),a=r.loading.first?Math.max(0,o-r.loading.first):0;if(s.advancedDateTime=Date.now()-a,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&&Ef(i,s),!this.canLoad||!s.live)return;let a,n,l;if(s.canBlockReload&&s.endSN&&s.advanced){const e=this.hls.config.lowLatencyMode,r=s.lastPartSn,o=s.endSN,d=s.lastPartIndex,h=r===o,c=e?0:d;-1!==d?(n=h?o+1:r,l=h?c:d+1):n=o+1;const u=s.age,p=u+s.ageHeader;let f=Math.min(p-s.partTarget,1.5*s.targetduration);if(f>0){if(i&&f>i.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${i.tuneInGoal} to: ${f} with playlist age: ${s.age}`),f=0;else{const e=Math.floor(f/s.targetduration);if(n+=e,void 0!==l){l+=Math.round(f%s.targetduration/s.partTarget)}this.log(`CDN Tune-in age: ${s.ageHeader}s last advanced ${u.toFixed(2)}s goal: ${f} skip sn ${e} to part ${l}`)}s.tuneInGoal=f}if(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l),e||!h)return void this.loadPlaylist(a)}else(s.canBlockReload||s.canSkipUntil)&&(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l));const d=this.hls.mainForwardBufferInfo,h=d?d.end-d.len:0,c=function(e,t=1/0){let i=1e3*e.targetduration;if(e.updated){const s=e.fragments,r=4;if(s.length&&i*r>t){const e=1e3*s[s.length-1].duration;ethis.requestScheduled+c&&(this.requestScheduled=r.loading.start),void 0!==n&&s.canBlockReload?this.requestScheduled=r.loading.first+c-(1e3*s.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+cthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(e,t,i,s){let r=yf(e);return null!=t&&t.skip&&e.deltaUpdateFailed&&(i=t.msn,s=t.part,r=ff),new Af(i,s,r)}checkRetry(e){const t=e.details,i=Df(e),s=e.errorAction,{action:r,retryCount:o=0,retryConfig:a}=s||{},n=!!s&&!!a&&(r===Gf||!s.resolved&&r===Nf);if(n){var l;if(this.requestScheduled=-1,o>=a.maxNumRetry)return!1;if(i&&null!=(l=e.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{const e=Rf(a,o);this.timer=self.setTimeout((()=>this.loadPlaylist()),e),this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" in ${e}ms`)}e.levelRetry=!0,s.resolved=!0}return n}}class Hf{constructor(e,t=0,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}sample(e,t){const i=Math.pow(this.alpha_,e);this.estimate_=t*(1-i)+i*this.estimate_,this.totalWeight_+=e}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}}class Jf{constructor(e,t,i,s=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 Hf(e),this.fast_=new Hf(t),this.defaultTTFB_=s,this.ttfb_=new Hf(e)}update(e,t){const{slow_:i,fast_:s,ttfb_:r}=this;i.halfLife!==e&&(this.slow_=new Hf(e,i.getEstimate(),i.getTotalWeight())),s.halfLife!==t&&(this.fast_=new Hf(t,s.getEstimate(),s.getTotalWeight())),r.halfLife!==e&&(this.ttfb_=new Hf(e,r.getEstimate(),r.getTotalWeight()))}sample(e,t){const i=(e=Math.max(e,this.minDelayMs_))/1e3,s=8*t/i;this.fast_.sample(i,s),this.slow_.sample(i,s)}sampleTTFB(e){const t=e/1e3,i=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(i,Math.max(e,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}destroy(){}}const qf={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},Kf={};function Yf(e,t,i,s,r,o){const a=e.audioCodec?e.audioGroups:null,n=null==o?void 0:o.audioCodec,l=null==o?void 0:o.channels,d=l?parseInt(l):n?1/0:2;let h=null;if(null!=a&&a.length)try{h=1===a.length&&a[0]?t.groups[a[0]].channels:a.reduce(((e,i)=>{if(i){const s=t.groups[i];if(!s)throw new Error(`Audio track group ${i} not found`);Object.keys(s.channels).forEach((t=>{e[t]=(e[t]||0)+s.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(s,30)||"SDR"!==e.videoRange&&e.videoRange!==i||e.bitrate>Math.max(r,8e6))||!!h&&Mc(d)&&Object.keys(h).some((e=>parseInt(e)>d))}function Qf(e,t,i){const s=e.videoCodec,r=e.audioCodec;if(!s||!r||!i)return Promise.resolve(qf);const o={width:e.width,height:e.height,bitrate:Math.ceil(Math.max(.9*e.bitrate,e.averageBitrate)),framerate:e.frameRate||30},a=e.videoRange;"SDR"!==a&&(o.transferFunction=a.toLowerCase());const n=s.split(",").map((e=>({type:"media-source",video:Rc(Rc({},o),{},{contentType:_p(e,"video")})})));return r&&e.audioGroups&&e.audioGroups.forEach((e=>{var i;e&&(null==(i=t.groups[e])||i.tracks.forEach((t=>{if(t.groupId===e){const e=t.channels||"",i=parseFloat(e);Mc(i)&&i>2&&n.push.apply(n,r.split(",").map((e=>({type:"media-source",audio:{contentType:_p(e,"audio"),channels:""+i}}))))}})))})),Promise.all(n.map((e=>{const t=function(e){const{audio:t,video:i}=e,s=i||t;if(s){const e=s.contentType.split('"')[1];if(i)return`r${i.height}x${i.width}f${Math.ceil(i.framerate)}${i.transferFunction||"sd"}_${e}_${Math.ceil(i.bitrate/1e5)}`;if(t)return`c${t.channels}${t.spatialRendering?"s":"n"}_${e}`}return""}(e);return Kf[t]||(Kf[t]=i.decodingInfo(e))}))).then((e=>({supported:!e.some((e=>!e.supported)),configurations:n,decodingInfoResults:e}))).catch((e=>({supported:!1,configurations:n,decodingInfoResults:[],error:e})))}function Xf(e,t){let i=!1,s=[];return e&&(i="SDR"!==e,s=[e]),t&&(s=t.allowedVideoRanges||pf.slice(0),i=void 0!==t.preferHDR?t.preferHDR:function(){if("function"==typeof matchMedia){const e=matchMedia("(dynamic-range: high)"),t=matchMedia("bad query");if(e.media!==t.media)return!0===e.matches}return!1}(),s=i?s.filter((e=>"SDR"!==e)):["SDR"]),{preferHDR:i,allowedVideoRanges:s}}function Zf(e,t){$c.log(`[abr] start candidates with "${e}" ignored because ${t}`)}function em(e,t,i){if("attrs"in e){const i=t.indexOf(e);if(-1!==i)return i}for(let s=0;s-1===s.indexOf(e)))}(n,t.characteristics))&&(void 0===i||i(e,t))}function im(e,t){const{audioCodec:i,channels:s}=e;return!(void 0!==i&&(t.audioCodec||"").substring(0,4)!==i.substring(0,4)||void 0!==s&&s!==(t.channels||"2"))}function sm(e,t,i){for(let s=t;s;s--)if(i(e[s]))return s;for(let s=t+1;s{const o=this.fragments[s];if(!o)return;if(r>=o.body.sn)return;if(!o.buffered&&!o.loaded)return void(o.body.type===i&&this.removeFragment(o.body));const a=o.range[e];a&&a.time.some((e=>{const i=!this.isTimeBuffered(e.startPTS,e.endPTS,t);return i&&this.removeFragment(o.body),i}))}))}detectPartialFragments(e){const t=this.timeRanges,{frag:i,part:s}=e;if(!t||"initSegment"===i.sn)return;const r=hm(i),o=this.fragments[r];if(!o||o.buffered&&i.gap)return;const a=!i.relurl;if(Object.keys(t).forEach((e=>{const r=i.elementaryStreams[e];if(!r)return;const n=t[e],l=a||!0===r.partial;o.range[e]=this.getBufferedTimes(i,s,l,n)})),o.loaded=null,Object.keys(o.range).length){o.buffered=!0;(o.body.endList=i.endList||o.body.endList)&&(this.endListFragments[o.body.type]=o),dm(o)||this.removeParts(i.sn-1,i.type)}else this.removeFragment(o.body)}removeParts(e,t){const i=this.activePartLists[t];i&&(this.activePartLists[t]=i.filter((t=>t.fragment.sn>=e)))}fragBuffered(e,t){const i=hm(e);let s=this.fragments[i];!s&&t&&(s=this.fragments[i]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),s&&(s.loaded=null,s.buffered=!0)}getBufferedTimes(e,t,i,s){const r={time:[],partial:i},o=e.start,a=e.end,n=e.minEndPTS||a,l=e.maxStartPTS||o;for(let e=0;e=t&&n<=i){r.time.push({startPTS:Math.max(o,s.start(e)),endPTS:Math.min(a,s.end(e))});break}if(ot){const t=Math.max(o,s.start(e)),i=Math.min(a,s.end(e));i>t&&(r.partial=!0,r.time.push({startPTS:t,endPTS:i}))}else if(a<=t)break}return r}getPartialFragment(e){let t,i,s,r=null,o=0;const{bufferPadding:a,fragments:n}=this;return Object.keys(n).forEach((l=>{const d=n[l];d&&dm(d)&&(i=d.body.start-a,s=d.body.end+a,e>=i&&e<=s&&(t=Math.min(e-i,s-e),o<=t&&(r=d.body,o=t)))})),r}isEndListAppended(e){const t=this.endListFragments[e];return void 0!==t&&(t.buffered||dm(t))}getState(e){const t=hm(e),i=this.fragments[t];return i?i.buffered?dm(i)?am:nm:om:rm}isTimeBuffered(e,t,i){let s,r;for(let o=0;o=s&&t<=r)return!0;if(t<=s)return!1}return!1}onFragLoaded(e,t){const{frag:i,part:s}=t;if("initSegment"===i.sn||i.bitrateTest)return;const r=s?null:t,o=hm(i);this.fragments[o]={body:i,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){const{frag:i,part:s,timeRanges:r}=t;if("initSegment"===i.sn)return;const o=i.type;if(s){let e=this.activePartLists[o];e||(this.activePartLists[o]=e=[]),e.push(s)}this.timeRanges=r,Object.keys(r).forEach((e=>{const t=r[e];this.detectEvictedFragments(e,t,o,s)}))}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){const t=hm(e);return!!this.fragments[t]}hasParts(e){var t;return!(null==(t=this.activePartLists[e])||!t.length)}removeFragmentsInRange(e,t,i,s,r){s&&!this.hasGaps||Object.keys(this.fragments).forEach((o=>{const a=this.fragments[o];if(!a)return;const n=a.body;n.type!==i||s&&!n.gap||n.starte&&(a.buffered||r)&&this.removeFragment(n)}))}removeFragment(e){const t=hm(e);e.stats.loaded=0,e.clearElementaryStreamInfo();const i=this.activePartLists[e.type];if(i){const t=e.sn;this.activePartLists[e.type]=i.filter((e=>e.fragment.sn!==t))}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}}function dm(e){var t,i,s;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==(s=e.range.audiovideo)?void 0:s.partial))}function hm(e){return`${e.type}_${e.level}_${e.sn}`}const cm={length:0,start:()=>0,end:()=>0};class um{static isBuffered(e,t){try{if(e){const i=um.getBuffered(e);for(let e=0;e=i.start(e)&&t<=i.end(e))return!0}}catch(e){}return!1}static bufferInfo(e,t,i){try{if(e){const s=um.getBuffered(e),r=[];let o;for(o=0;oo&&(s[r-1].end=e[t].end):s.push(e[t])}else s.push(e[t])}else s=e;let r,o=0,a=t,n=t;for(let e=0;e=l&&ti.startCC||e&&e.cc{if(this.loader&&this.loader.destroy(),e.gap){if(e.tagList.some((e=>"GAP"===e[0])))return void n(Sm(e));e.gap=!1}const l=this.loader=e.loader=r?new r(s):new o(s),d=_m(e),h=Pf(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===e.sn?1/0:bm};e.stats=l.stats,l.load(d,c,{onSuccess:(t,i,s,r)=>{this.resetLoader(e,l);let o=t.data;s.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(o.slice(0,16)),o=o.slice(16)),a({frag:e,part:null,payload:o,networkDetails:r})},onError:(t,s,r,o)=>{this.resetLoader(e,l),n(new Em({type:Nc.NETWORK_ERROR,details:jc.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:Rc({url:i,data:void 0},t),error:new Error(`HTTP Error ${t.code} ${t.text}`),networkDetails:r,stats:o}))},onAbort:(t,i,s)=>{this.resetLoader(e,l),n(new Em({type:Nc.NETWORK_ERROR,details:jc.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:s,stats:t}))},onTimeout:(t,i,s)=>{this.resetLoader(e,l),n(new Em({type:Nc.NETWORK_ERROR,details:jc.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:s,stats:t}))},onProgress:(i,s,r,o)=>{t&&t({frag:e,part:null,payload:r,networkDetails:o})}})}))}loadPart(e,t,i){this.abort();const s=this.config,r=s.fLoader,o=s.loader;return new Promise(((a,n)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap)return void n(Sm(e,t));const l=this.loader=e.loader=r?new r(s):new o(s),d=_m(e,t),h=Pf(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:bm};t.stats=l.stats,l.load(d,c,{onSuccess:(s,r,o,n)=>{this.resetLoader(e,l),this.updateStatsFromPart(e,t);const d={frag:e,part:t,payload:s.data,networkDetails:n};i(d),a(d)},onError:(i,s,r,o)=>{this.resetLoader(e,l),n(new Em({type:Nc.NETWORK_ERROR,details:jc.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:Rc({url:d.url,data:void 0},i),error:new Error(`HTTP Error ${i.code} ${i.text}`),networkDetails:r,stats:o}))},onAbort:(i,s,r)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,l),n(new Em({type:Nc.NETWORK_ERROR,details:jc.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:r,stats:i}))},onTimeout:(i,s,r)=>{this.resetLoader(e,l),n(new Em({type:Nc.NETWORK_ERROR,details:jc.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:r,stats:i}))}})}))}updateStatsFromPart(e,t){const i=e.stats,s=t.stats,r=s.total;if(i.loaded+=s.loaded,r){const s=Math.round(e.duration/t.duration),o=Math.min(Math.round(i.loaded/r),s),a=(s-o)*Math.round(i.loaded/o);i.total=i.loaded+a}else i.total=Math.max(i.loaded,i.total);const o=i.loading,a=s.loading;o.start?o.first+=a.first-a.start:(o.start=a.start,o.first=a.first),o.end=a.end}resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()}}function _m(e,t=null){const i=t||e,s={frag:e,part:t,responseType:"arraybuffer",url:i.url,headers:{},rangeStart:0,rangeEnd:0},r=i.byteRangeStartOffset,o=i.byteRangeEndOffset;if(Mc(r)&&Mc(o)){var a;let t=r,i=o;if("initSegment"===e.sn&&"AES-128"===(null==(a=e.decryptdata)?void 0:a.method)){const e=o-r;e%16&&(i=o+(16-e%16)),0!==r&&(s.resetIV=!0,t=r-16)}s.rangeStart=t,s.rangeEnd=i}return s}function Sm(e,t){const i=new Error(`GAP ${e.gap?"tag":"attribute"} found`),s={type:Nc.MEDIA_ERROR,details:jc.FRAG_GAP,fatal:!1,frag:e,error:i,networkDetails:null};return t&&(s.part=t),(t||e).stats.aborted=!0,new Em(s)}class Em extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}}class wm{constructor(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}decrypt(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)}}class Tm{constructor(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}class km{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(e){const t=new DataView(e),i=new Uint32Array(4);for(let e=0;e<4;e++)i[e]=t.getUint32(4*e);return i}initTable(){const e=this.sBox,t=this.invSBox,i=this.subMix,s=i[0],r=i[1],o=i[2],a=i[3],n=this.invSubMix,l=n[0],d=n[1],h=n[2],c=n[3],u=new Uint32Array(256);let p=0,f=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let i=f^f<<1^f<<2^f<<3^f<<4;i=i>>>8^255&i^99,e[p]=i,t[i]=p;const n=u[p],m=u[n],g=u[m];let y=257*u[i]^16843008*i;s[p]=y<<24|y>>>8,r[p]=y<<16|y>>>16,o[p]=y<<8|y>>>24,a[p]=y,y=16843009*g^65537*m^257*n^16843008*p,l[i]=y<<24|y>>>8,d[i]=y<<16|y>>>16,h[i]=y<<8|y>>>24,c[i]=y,p?(p=n^u[u[u[g^n]]],f^=u[u[f]]):p=f=1}}expandKey(e){const t=this.uint8ArrayToUint32Array_(e);let i=!0,s=0;for(;s{if(!this.subtle)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new wm(this.subtle,new Uint8Array(i)).decrypt(e.buffer,t)})).catch((s=>($c.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${s.name}: ${s.message}`),this.onWebCryptoError(e,t,i))))}onWebCryptoError(e,t,i){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,i);const s=this.flush();if(s)return s.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(e){let t=e;const i=e.length-e.length%16;return i!==e.length&&(t=vu(e,0,i),this.remainderData=vu(e,i)),t}logOnce(e){this.logEnabled&&($c.log(`[decrypter]: ${e}`),this.logEnabled=!1)}}const Cm=function(e){let t="";const i=e.length;for(let s=0;s1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}{constructor(e,t,i,s,r){super(),this.hls=void 0,this.fragPrevious=null,this.fragCurrent=null,this.fragmentTracker=void 0,this.transmuxer=null,this._state=Dm,this.playlistType=void 0,this.media=null,this.mediaBuffer=null,this.config=void 0,this.bitrateTest=!1,this.lastCurrentTime=0,this.nextLoadPosition=0,this.startPosition=0,this.startTimeOffset=null,this.loadedmetadata=!1,this.retryDate=0,this.levels=null,this.fragmentLoader=void 0,this.keyLoader=void 0,this.levelLastLoaded=null,this.startFragRequested=!1,this.decrypter=void 0,this.initPTS=[],this.onvseeking=null,this.onvended=null,this.logPrefix="",this.log=void 0,this.warn=void 0,this.playlistType=r,this.logPrefix=s,this.log=$c.log.bind($c,`${s}:`),this.warn=$c.warn.bind($c,`${s}:`),this.hls=e,this.fragmentLoader=new vm(e.config),this.keyLoader=i,this.fragmentTracker=t,this.config=e.config,this.decrypter=new Lm(e.config),e.on(Oc.MANIFEST_LOADED,this.onManifestLoaded,this)}doTick(){this.onTickEnd()}onTickEnd(){}startLoad(e){}stopLoad(){this.fragmentLoader.abort(),this.keyLoader.abort(this.playlistType);const e=this.fragCurrent;null!=e&&e.loader&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=Dm}_streamEnded(e,t){if(t.live||e.nextStart||!e.end||!this.media)return!1;const i=t.partList;if(null!=i&&i.length){const e=i[i.length-1];return um.isBuffered(this.media,e.start+e.duration/2)}const s=t.fragments[t.fragments.length-1].type;return this.fragmentTracker.isEndListAppended(s)}getLevelDetails(){var e;if(this.levels&&null!==this.levelLastLoaded)return null==(e=this.levelLastLoaded)?void 0:e.details}onMediaAttached(e,t){const i=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),i.addEventListener("seeking",this.onvseeking),i.addEventListener("ended",this.onvended);const s=this.config;this.levels&&s.autoStartLoad&&this.state===Dm&&this.startLoad(s.startPosition)}onMediaDetaching(){const e=this.media;null!=e&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&this.onvseeking&&this.onvended&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.keyLoader&&this.keyLoader.detach(),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()}onMediaSeeking(){const{config:e,fragCurrent:t,media:i,mediaBuffer:s,state:r}=this,o=i?i.currentTime:0,a=um.bufferInfo(s||i,o,e.maxBufferHole);if(this.log(`media seeking to ${Mc(o)?o.toFixed(3):o}, state: ${r}`),this.state===Um)this.resetLoadingState();else if(t){const i=e.maxFragLookUpTolerance,s=t.start-i,r=t.start+t.duration+i;if(!a.len||ra.end){const e=o>r;(o{if(this.fragContextChanged(e))return this.warn(`Fragment ${e.sn}${t.part?" p: "+t.part.index:""} of level ${e.level} was dropped during download.`),void this.fragmentTracker.removeFragment(e);e.stats.chunkCount++,this._handleFragmentLoadProgress(t)})).then((t=>{if(!t)return;const i=this.state;this.fragContextChanged(e)?(i===Pm||!this.fragCurrent&&i===Mm)&&(this.fragmentTracker.removeFragment(e),this.state=xm):("payload"in t&&(this.log(`Loaded fragment ${e.sn} of level ${e.level}`),this.hls.trigger(Oc.FRAG_LOADED,t)),this._handleFragmentLoadComplete(t))})).catch((t=>{this.state!==Dm&&this.state!==Om&&(this.warn(`Frag error: ${(null==t?void 0:t.message)||t}`),this.resetFragmentLoading(e))}))}clearTrackerIfNeeded(e){var t;const{fragmentTracker:i}=this;if(i.getState(e)===om){const t=e.type,s=this.getFwdBufferInfo(this.mediaBuffer,t),r=Math.max(e.duration,s?s.len:this.config.maxBufferLength),o=this.backtrackFragment;(1===(o?e.sn-o.sn:0)||this.reduceMaxBufferLength(r,e.duration))&&i.removeFragment(e)}else 0===(null==(t=this.mediaBuffer)?void 0:t.buffered.length)?i.removeAllFragments():i.hasParts(e.type)&&(i.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type}),i.getState(e)===am&&i.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){const t=e.fragments[e.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type})}e.fragments[0]||(e.deltaUpdateFailed=!0)}flushMainBuffer(e,t,i=null){if(!(e-t))return;const s={startOffset:e,endOffset:t,type:i};this.hls.trigger(Oc.BUFFER_FLUSHING,s)}_loadInitSegment(e,t){this._doFragLoad(e,t).then((t=>{if(!t||this.fragContextChanged(e)||!this.levels)throw new Error("init load aborted");return t})).then((t=>{const{hls:i}=this,{payload:s}=t,r=e.decryptdata;if(s&&s.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const o=self.performance.now();return this.decrypter.decrypt(new Uint8Array(s),r.key.buffer,r.iv.buffer).catch((t=>{throw i.trigger(Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((s=>{const r=self.performance.now();return i.trigger(Oc.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:o,tdecrypt:r}}),t.payload=s,this.completeInitSegmentLoad(t)}))}return this.completeInitSegmentLoad(t)})).catch((t=>{this.state!==Dm&&this.state!==Om&&(this.warn(t),this.resetFragmentLoading(e))}))}completeInitSegmentLoad(e){const{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");const i=e.frag.stats;this.state=xm,e.frag.data=new Uint8Array(e.payload),i.parsing.start=i.buffering.start=self.performance.now(),i.parsing.end=i.buffering.end=self.performance.now(),this.tick()}fragContextChanged(e){const{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){var i,s,r,o;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.playlistType===$p?"level":"track"} ${e.level} (frag:[${(null!=(i=e.startPTS)?i:NaN).toFixed(3)}-${(null!=(s=e.endPTS)?s:NaN).toFixed(3)}] > buffer:${a?Cm(um.getBuffered(a)):"(detached)"})`),"initSegment"!==e.sn){var n;if(e.type!==Jp){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return void(this.state=xm)}const t=null==(n=this.levels)?void 0:n[e.level];null!=t&&t.fragmentError&&(this.log(`Resetting level fragment error count of ${t.fragmentError} on frag buffered`),t.fragmentError=0)}this.state=xm,a&&(!this.loadedmetadata&&e.type==$p&&a.buffered.length&&(null==(r=this.fragCurrent)?void 0:r.sn)===(null==(o=this.fragPrevious)?void 0:o.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(e){const{transmuxer:t}=this;if(!t)return;const{frag:i,part:s,partsLoaded:r}=e,o=!r||0===r.length||r.some((e=>!e)),a=new pm(i.level,i.sn,i.stats.chunkCount+1,0,s?s.index:-1,!o);t.flush(a)}_handleFragmentLoadProgress(e){}_doFragLoad(e,t,i=null,s){var r;const o=null==t?void 0:t.details;if(!this.levels||!o)throw new Error(`frag load aborted, missing level${o?"":" detail"}s`);let a=null;if(!e.encrypted||null!=(r=e.decryptdata)&&r.key?!e.encrypted&&o.encryptedFragments.length&&this.keyLoader.loadClear(e,o.encryptedFragments):(this.log(`Loading key for ${e.sn} of [${o.startSN}-${o.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${e.level}`),this.state=Rm,this.fragCurrent=e,a=this.keyLoader.load(e).then((e=>{if(!this.fragContextChanged(e.frag))return this.hls.trigger(Oc.KEY_LOADED,e),this.state===Rm&&(this.state=xm),e})),this.hls.trigger(Oc.KEY_LOADING,{frag:e}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),i=Math.max(e.start,i||0),this.config.lowLatencyMode&&"initSegment"!==e.sn){const r=o.partList;if(r&&s){i>e.end&&o.fragmentHint&&(e=o.fragmentHint);const n=this.getNextPart(r,e,i);if(n>-1){const l=r[n];let d;return this.log(`Loading part sn: ${e.sn} p: ${l.index} cc: ${e.cc} of playlist [${o.startSN}-${o.endSN}] parts [0-${n}-${r.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=Pm,d=a?a.then((i=>!i||this.fragContextChanged(i.frag)?null:this.doFragPartsLoad(e,l,t,s))).catch((e=>this.handleFragLoadError(e))):this.doFragPartsLoad(e,l,t,s).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Oc.FRAG_LOADING,{frag:e,part:l,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):d}if(!e.url||this.loadedEndOfParts(r,i))return Promise.resolve(null)}}this.log(`Loading fragment ${e.sn} cc: ${e.cc} ${o?"of ["+o.startSN+"-"+o.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),Mc(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=Pm;const n=this.config.progressive;let l;return l=n&&a?a.then((t=>!t||this.fragContextChanged(null==t?void 0:t.frag)?null:this.fragmentLoader.load(e,s))).catch((e=>this.handleFragLoadError(e))):Promise.all([this.fragmentLoader.load(e,n?s:void 0),a]).then((([e])=>(!n&&e&&s&&s(e),e))).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Oc.FRAG_LOADING,{frag:e,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(e,t,i,s){return new Promise(((r,o)=>{var a;const n=[],l=null==(a=i.details)?void 0:a.partList,d=t=>{this.fragmentLoader.loadPart(e,t,s).then((s=>{n[t.index]=s;const o=s.part;this.hls.trigger(Oc.FRAG_LOADED,s);const a=kf(i,e.sn,t.index+1)||Lf(l,e.sn,t.index+1);if(!a)return r({frag:e,part:o,partsLoaded:n});d(a)})).catch(o)};d(t)}))}handleFragLoadError(e){if("data"in e){const t=e.data;e.data&&t.details===jc.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(Oc.ERROR,t)}else this.hls.trigger(Oc.ERROR,{type:Nc.OTHER_ERROR,details:jc.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){const t=this.getCurrentContext(e);if(!t||this.state!==Mm)return void(this.fragCurrent||this.state===Dm||this.state===Om||(this.state=xm));const{frag:i,part:s,level:r}=t,o=self.performance.now();i.stats.parsing.end=o,s&&(s.stats.parsing.end=o),this.updateLevelTiming(i,s,r,e.partial)}getCurrentContext(e){const{levels:t,fragCurrent:i}=this,{level:s,sn:r,part:o}=e;if(null==t||!t[s])return this.warn(`Levels object was unset while buffering fragment ${r} of level ${s}. The current chunk will not be buffered.`),null;const a=t[s],n=o>-1?kf(a,r,o):null,l=n?n.fragment:function(e,t,i){if(null==e||!e.details)return null;const s=e.details;let r=s.fragments[t-s.startSN];return r||(r=s.fragmentHint,r&&r.sn===t?r:to&&this.flushMainBuffer(a,e.start)}getFwdBufferInfo(e,t){const i=this.getLoadPosition();return Mc(i)?this.getFwdBufferInfoAtPos(e,i,t):null}getFwdBufferInfoAtPos(e,t,i){const{config:{maxBufferHole:s}}=this,r=um.bufferInfo(e,t,s);if(0===r.len&&void 0!==r.nextStart){const o=this.fragmentTracker.getBufferedFrag(t,i);if(o&&r.nextStart=s&&(i.maxMaxBufferLength=r,this.warn(`Reduce max buffer length to ${r}s`),!0)}getAppendedFrag(e,t=$p){const i=this.fragmentTracker.getAppendedFrag(e,$p);return i&&"fragment"in i?i.fragment:i}getNextFragment(e,t){const i=t.fragments,s=i.length;if(!s)return null;const{config:r}=this,o=i[0].start;let a;if(t.live){const n=r.initialLiveManifestSize;if(st}getNextFragmentLoopLoading(e,t,i,s,r){const o=e.gap,a=this.getNextFragment(this.nextLoadPosition,t);if(null===a)return a;if(e=a,o&&e&&!e.gap&&i.nextStart){const t=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,i.nextStart,s);if(null!==t&&i.len+t.len>=r)return this.log(`buffer full after gaps in "${s}" playlist starting at sn: ${e.sn}`),null}return e}mapToInitFragWhenRequired(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment}getNextPart(e,t,i){let s=-1,r=!1,o=!0;for(let a=0,n=e.length;a-1&&ii.start&&i.loaded}getInitialLiveFragment(e,t){const i=this.fragPrevious;let s=null;if(i){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${i.programDateTime}`),s=function(e,t,i){if(null===t||!Array.isArray(e)||!e.length||!Mc(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(let s=0;s=e.startSN&&r<=e.endSN){const o=t[r-e.startSN];i.cc===o.cc&&(s=o,this.log(`Live playlist, switching playlist, load frag with next SN: ${s.sn}`))}s||(s=function(e,t){return Bf(e,(e=>e.cct?-1:0))}(t,i.cc),s&&this.log(`Live playlist, switching playlist, load frag with same CC: ${s.sn}`))}}else{const t=this.hls.liveSyncPosition;null!==t&&(s=this.getFragmentAtPosition(t,this.bitrateTest?e.fragmentEnd:e.edge,e))}return s}getFragmentAtPosition(e,t,i){const{config:s}=this;let{fragPrevious:r}=this,{fragments:o,endSN:a}=i;const{fragmentHint:n}=i,{maxFragLookUpTolerance:l}=s,d=i.partList,h=!!(s.lowLatencyMode&&null!=d&&d.length&&n);let c;if(h&&n&&!this.bitrateTest&&(o=o.concat(n),a=n.sn),et-l?0:l)}else c=o[o.length-1];if(c){const e=c.sn-i.startSN,t=this.fragmentTracker.getState(c);if((t===nm||t===am&&c.gap)&&(r=c),r&&c.sn===r.sn&&(!h||d[0].fragment.sn>c.sn)){if(r&&c.level===r.level){const t=o[e+1];c=c.sn=o-t.maxFragLookUpTolerance&&r<=a;if(null!==s&&i.duration>s&&(r${e.startSN} prev-sn: ${r?r.sn:"na"} fragments: ${s}`),o}return r}waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)}setStartPosition(e,t){let i=this.startPosition;if(i ${null==(s=this.fragCurrent)?void 0:s.url}`);const r=t.details===jc.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(i,!0);const o=t.errorAction,{action:a,retryCount:n=0,retryConfig:l}=o||{};if(o&&a===Gf&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const s=Rf(l,n);this.warn(`Fragment ${i.sn} of ${e} ${i.level} errored with ${t.details}, retrying loading ${n+1}/${l.maxNumRetry} in ${s}ms`),o.resolved=!0,this.retryDate=self.performance.now()+s,this.state=Im}else if(l&&o){if(this.resetFragmentErrors(e),!(n.5;r&&this.reduceMaxBufferLength(s.len,(null==t?void 0:t.duration)||10);const o=!r;return o&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${i} buffer`),t&&(this.fragmentTracker.removeFragment(t),this.nextLoadPosition=t.start),this.resetLoadingState(),o}return!1}resetFragmentErrors(e){e===Hp&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==Dm&&(this.state=xm)}afterBufferFlushed(e,t,i){if(!e)return;const s=um.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,s,i),this.state===Um&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=xm}resetStartWhenNotLoaded(e){if(!this.loadedmetadata){this.startFragRequested=!1;const t=e?e.details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(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()}removeUnbufferedFrags(e=0){this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)}updateLevelTiming(e,t,i,s){var r;const o=i.details;if(!o)return void this.warn("level.details undefined");if(!Object.keys(e.elementaryStreams).reduce(((t,r)=>{const a=e.elementaryStreams[r];if(a){const n=a.endPTS-a.startPTS;if(n<=0)return this.warn(`Could not parse fragment ${e.sn} ${r} duration reliably (${n})`),t||!1;const l=s?0:Sf(o,e,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(Oc.LEVEL_PTS_UPDATED,{details:o,level:i,drift:l,type:r,frag:e,start:a.startPTS,end:a.endPTS}),!0}return t}),!1)&&null===(null==(r=this.transmuxer)?void 0:r.error)){const t=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(t.message),this.hls.trigger(Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.FRAG_PARSING_ERROR,fatal:!1,error:t,frag:e,reason:`Found no media in msn ${e.sn} of level "${i.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=Fm,this.hls.trigger(Oc.FRAG_PARSED,{frag:e,part:t})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(e){"demuxerWorker"===e.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(e){const t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}}class zm{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){const{chunks:e,dataLength:t}=this;let i;return e.length?(i=1===e.length?e[0]:function(e,t){const i=new Uint8Array(t);let s=0;for(let t=0;t0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:sf,duration:Number.POSITIVE_INFINITY});r{if(Mc(e))return 90*e;return 9e4*t+(i?9e4*i.baseTime/i.timescale:0)};function Hm(e,t){return 255===e[t]&&240==(246&e[t+1])}function Jm(e,t){return 1&e[t+1]?7:9}function qm(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function Km(e,t){return t+1=e.length)return!1;const s=qm(e,t);if(s<=i)return!1;const r=t+s;return r===e.length||Km(e,r)}return!1}function Qm(e,t,i,s,r){if(!e.samplerate){const o=function(e,t,i,s){let r,o,a,n;const l=navigator.userAgent.toLowerCase(),d=s,h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r=1+((192&t[i+2])>>>6);const c=(60&t[i+2])>>>2;if(!(c>h.length-1))return a=(1&t[i+2])<<2,a|=(192&t[i+3])>>>6,$c.log(`manifest codec:${s}, ADTS type:${r}, samplingIndex:${c}`),/firefox/i.test(l)?c>=6?(r=5,n=new Array(4),o=c-3):(r=2,n=new Array(2),o=c):-1!==l.indexOf("android")?(r=2,n=new Array(2),o=c):(r=5,n=new Array(4),s&&(-1!==s.indexOf("mp4a.40.29")||-1!==s.indexOf("mp4a.40.5"))||!s&&c>=6?o=c-3:((s&&-1!==s.indexOf("mp4a.40.2")&&(c>=6&&1===a||/vivaldi/i.test(l))||!s&&1===a)&&(r=2,n=new Array(2)),o=c)),n[0]=r<<3,n[0]|=(14&c)>>1,n[1]|=(1&c)<<7,n[1]|=a<<3,5===r&&(n[1]|=(14&o)>>1,n[2]=(1&o)<<7,n[2]|=8,n[3]=0),{config:n,samplerate:h[c],channelCount:a,codec:"mp4a.40."+r,manifestCodec:d};{const t=new Error(`invalid ADTS sampling index:${c}`);e.emit(Oc.ERROR,Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.FRAG_PARSING_ERROR,fatal:!0,error:t,reason:t.message})}}(t,i,s,r);if(!o)return;e.config=o.config,e.samplerate=o.samplerate,e.channelCount=o.channelCount,e.codec=o.codec,e.manifestCodec=o.manifestCodec,$c.log(`parsed codec:${e.codec}, rate:${o.samplerate}, channels:${o.channelCount}`)}}function Xm(e){return 9216e4/e}function Zm(e,t,i,s,r){const o=s+r*Xm(e.samplerate),a=function(e,t){const i=Jm(e,t);if(t+i<=e.length){const s=qm(e,t)-i;if(s>0)return{headerLength:i,frameLength:s}}}(t,i);let n;if(a){const{frameLength:s,headerLength:r}=a,l=r+s,d=Math.max(0,i+l-t.length);d?(n=new Uint8Array(l-r),n.set(t.subarray(i+r,t.length),0)):n=t.subarray(i+r,i+l);const h={unit:n,pts:o};return d||e.samples.push(h),{sample:h,length:l,missing:d}}const l=t.length-i;n=new Uint8Array(l),n.set(t.subarray(i,t.length),0);return{sample:{unit:n,pts:o},length:l,missing:-1}}let eg=null;const tg=[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],ig=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],sg=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],rg=[0,1,1,4];function og(e,t,i,s,r){if(i+24>t.length)return;const o=ag(t,i);if(o&&i+o.frameLength<=t.length){const a=s+r*(9e4*o.samplesPerFrame/o.sampleRate),n={unit:t.subarray(i,i+o.frameLength),pts:a,dts:a};return e.config=[],e.channelCount=o.channelCount,e.samplerate=o.sampleRate,e.samples.push(n),{sample:n,length:o.frameLength,missing:0}}}function ag(e,t){const i=e[t+1]>>3&3,s=e[t+1]>>1&3,r=e[t+2]>>4&15,o=e[t+2]>>2&3;if(1!==i&&0!==r&&15!==r&&3!==o){const a=e[t+2]>>1&1,n=e[t+3]>>6,l=1e3*tg[14*(3===i?3-s:3===s?3:4)+r-1],d=ig[3*(3===i?0:2===i?1:2)+o],h=3===n?1:2,c=sg[i][s],u=rg[s],p=8*c*u,f=Math.floor(c*l/d+a)*u;if(null===eg){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);eg=e?parseInt(e[1]):0}return!!eg&&eg<=87&&2===s&&l>=224e3&&0===n&&(e[t+3]=128|e[t+3]),{sampleRate:d,channelCount:h,frameLength:f,samplesPerFrame:p}}}function ng(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function lg(e,t){return t+1{let i=0,s=5;t+=s;const r=new Uint32Array(1),o=new Uint32Array(1),a=new Uint8Array(1);for(;s>0;){a[0]=e[t];const n=Math.min(s,8),l=8-n;o[0]=4278190080>>>24+l<>l,i=i?i<t.length)return-1;if(11!==t[i]||119!==t[i+1])return-1;const o=t[i+4]>>6;if(o>=3)return-1;const a=[48e3,44100,32e3][o],n=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*n+o];if(i+l>t.length)return-1;const d=t[i+6]>>5;let h=0;2===d?h+=2:(1&d&&1!==d&&(h+=2),4&d&&(h+=2));const 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([o<<6|p<<1|f>>2,(3&f)<<6|d<<3|c<<2|n>>4,n<<4&224]),g=s+r*(1536/a*9e4),y=t.subarray(i,i+l);return e.config=m,e.channelCount=u,e.samplerate=a,e.samples.push({unit:y,pts:g}),l}class fg{constructor(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}loadWord(){const e=this.data,t=this.bytesAvailable,i=e.byteLength-t,s=new Uint8Array(4),r=Math.min(4,t);if(0===r)throw new Error("no bytes available");s.set(e.subarray(i,i+r)),this.word=new DataView(s.buffer).getUint32(0),this.bitsAvailable=8*r,this.bytesAvailable-=r}skipBits(e){let t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(t=(e-=this.bitsAvailable)>>3,e-=t<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}readBits(e){let t=Math.min(this.bitsAvailable,e);const i=this.word>>>32-t;if(e>32&&$c.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,t>0&&this.bitsAvailable?i<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const e=this.skipLZ();return this.readBits(e+1)-1}readEG(){const e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(e){let t,i=8,s=8;for(let r=0;r{var o;switch(s.type){case 1:{let t=!1;a=!0;const r=s.data;if(l&&r.length>4){const e=new fg(r).readSliceType();2!==e&&4!==e&&7!==e&&9!==e||(t=!0)}var d;if(t)null!=(d=n)&&d.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null);n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.frame=!0,n.key=t;break}case 5:a=!0,null!=(o=n)&&o.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null),n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.key=!0,n.frame=!0;break;case 6:a=!0,ap(s.data,1,i.pts,t.samples);break;case 7:{var h,c;a=!0,l=!0;const t=s.data,i=new fg(t).readSPS();if(!e.sps||e.width!==i.width||e.height!==i.height||(null==(h=e.pixelRatio)?void 0:h[0])!==i.pixelRatio[0]||(null==(c=e.pixelRatio)?void 0:c[1])!==i.pixelRatio[1]){e.width=i.width,e.height=i.height,e.pixelRatio=i.pixelRatio,e.sps=[t],e.duration=r;const s=t.subarray(1,4);let o="avc1.";for(let e=0;e<3;e++){let t=s[e].toString(16);t.length<2&&(t="0"+t),o+=t}e.codec=o}break}case 8:a=!0,e.pps=[s.data];break;case 9:a=!0,e.audFound=!0,n&&this.pushAccessUnit(n,e),n=this.VideoSample=this.createVideoSample(!1,i.pts,i.dts,"");break;case 12:a=!0;break;default:a=!1,n&&(n.debug+="unknown NAL "+s.type+" ")}if(n&&a){n.units.push(s)}})),s&&n&&(this.pushAccessUnit(n,e),this.VideoSample=null)}parseAVCNALu(e,t){const i=t.byteLength;let s=e.naluState||0;const r=s,o=[];let a,n,l,d=0,h=-1,c=0;for(-1===s&&(h=0,c=31&t[0],s=0,d=1);d=0){const e={data:t.subarray(h,n),type:c};o.push(e)}else{const i=this.getLastNalUnit(e.samples);i&&(r&&d<=4-r&&i.state&&(i.data=i.data.subarray(0,i.data.byteLength-r)),n>0&&(i.data=sp(i.data,t.subarray(0,n)),i.state=0))}d=0&&s>=0){const e={data:t.subarray(h,i),type:c,state:s};o.push(e)}if(0===o.length){const i=this.getLastNalUnit(e.samples);i&&(i.data=sp(i.data,t))}return e.naluState=s,o}}class gg{constructor(e,t,i){this.keyData=void 0,this.decrypter=void 0,this.keyData=i,this.decrypter=new Lm(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(e,t,i){const s=e[t].unit;if(s.length<=16)return;const r=s.subarray(16,s.length-s.length%16),o=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(o).then((r=>{const o=new Uint8Array(r);s.set(o,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,i)}))}decryptAacSamples(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}}getAvcEncryptedData(e){const t=16*Math.floor((e.length-48)/160)+16,i=new Int8Array(t);let s=0;for(let t=32;t{r.data=this.getAvcDecryptedUnit(o,a),this.decrypter.isSync()||this.decryptAvcSamples(e,t,i+1,s)}))}decryptAvcSamples(e,t,i,s){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,i=0){if(t>=e.length)return void s();const r=e[t].units;for(;!(i>=r.length);i++){const o=r[i];if(!(o.data.length<=48||1!==o.type&&5!==o.type||(this.decryptAvcSample(e,t,i,s,o),this.decrypter.isSync())))return}}}}const yg=188;class Ag{constructor(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=new mg}static probe(e){const t=Ag.syncOffset(e);return t>0&&$c.warn(`MPEG2-TS detected but first sync word found @ offset ${t}`),-1!==t}static syncOffset(e){const t=e.length;let i=Math.min(940,t-yg)+1,s=0;for(;s1&&(0===o&&a>2||n+yg>i))return o}s++}return-1}static createTrack(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:Gu[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}}resetInitSegment(e,t,i,s){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=Ag.createTrack("video"),this._audioTrack=Ag.createTrack("audio",s),this._id3Track=Ag.createTrack("id3"),this._txtTrack=Ag.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=i,this._duration=s}resetTimeStamp(){}resetContiguity(){const{_audioTrack:e,_videoTrack:t,_id3Track:i}=this;e&&(e.pesData=null),t&&(t.pesData=null),i&&(i.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(e,t,i=!1,s=!1){let r;i||(this.sampleAes=null);const o=this._videoTrack,a=this._audioTrack,n=this._id3Track,l=this._txtTrack;let d=o.pid,h=o.pesData,c=a.pid,u=n.pid,p=a.pesData,f=n.pesData,m=null,g=this.pmtParsed,y=this._pmtId,A=e.length;if(this.remainderData&&(A=(e=sp(this.remainderData,e)).length,this.remainderData=null),A>4>1){if(v=t+5+e[t+4],v===t+yg)continue}else v=t+4;switch(A){case d:s&&(h&&(r=wg(h))&&this.videoParser.parseAVCPES(o,l,r,!1,this._duration),h={data:[],size:0}),h&&(h.data.push(e.subarray(v,t+yg)),h.size+=t+yg-v);break;case c:if(s){if(p&&(r=wg(p)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,r);break;case"mp3":this.parseMPEGPES(a,r);break;case"ac3":this.parseAC3PES(a,r)}p={data:[],size:0}}p&&(p.data.push(e.subarray(v,t+yg)),p.size+=t+yg-v);break;case u:s&&(f&&(r=wg(f))&&this.parseID3PES(n,r),f={data:[],size:0}),f&&(f.data.push(e.subarray(v,t+yg)),f.size+=t+yg-v);break;case 0:s&&(v+=e[v]+1),y=this._pmtId=vg(e,v);break;case y:{s&&(v+=e[v]+1);const r=_g(e,v,this.typeSupported,i,this.observer);d=r.videoPid,d>0&&(o.pid=d,o.segmentCodec=r.segmentVideoCodec),c=r.audioPid,c>0&&(a.pid=c,a.segmentCodec=r.segmentAudioCodec),u=r.id3Pid,u>0&&(n.pid=u),null===m||g||($c.warn(`MPEG-TS PMT found at ${t} after unknown PID '${m}'. Backtracking to sync byte @${b} to parse all TS packets.`),m=null,t=b-188),g=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=A}}else v++;v>0&&Sg(this.observer,new Error(`Found ${v} TS packet/s that do not start with 0x47`)),o.pesData=h,a.pesData=p,n.pesData=f;const _={audioTrack:a,videoTrack:o,id3Track:n,textTrack:l};return s&&this.extractRemainingSamples(_),_}flush(){const{remainderData:e}=this;let t;return this.remainderData=null,t=e?this.demux(e,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t}extractRemainingSamples(e){const{audioTrack:t,videoTrack:i,id3Track:s,textTrack:r}=e,o=i.pesData,a=t.pesData,n=s.pesData;let l;if(o&&(l=wg(o))?(this.videoParser.parseAVCPES(i,r,l,!0,this._duration),i.pesData=null):i.pesData=o,a&&(l=wg(a))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,l);break;case"mp3":this.parseMPEGPES(t,l);break;case"ac3":this.parseAC3PES(t,l)}t.pesData=null}else null!=a&&a.size&&$c.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=a;n&&(l=wg(n))?(this.parseID3PES(s,l),s.pesData=null):s.pesData=n}demuxSampleAes(e,t,i){const s=this.demux(e,i,!0,!this.config.progressive),r=this.sampleAes=new gg(this.observer,this.config,t);return this.decrypt(s,r)}decrypt(e,t){return new Promise((i=>{const{audioTrack:s,videoTrack:r}=e;s.samples&&"aac"===s.segmentCodec?t.decryptAacSamples(s.samples,0,(()=>{r.samples?t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)})):i(e)})):r.samples&&t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)}))}))}destroy(){this._duration=0}parseAACPES(e,t){let i=0;const s=this.aacOverFlow;let r,o,a,n=t.data;if(s){this.aacOverFlow=null;const t=s.missing,r=s.sample.unit.byteLength;if(-1===t)n=sp(s.sample.unit,n);else{const o=r-t;s.sample.unit.set(n.subarray(0,t),o),e.samples.push(s.sample),i=s.missing}}for(r=i,o=n.length;r0;)n+=o}}parseID3PES(e,t){if(void 0===t.pts)return void $c.warn("[tsdemuxer]: ID3 PES unknown PTS");const i=Bc({},t,{type:this._videoTrack?of:sf,duration:Number.POSITIVE_INFINITY});e.samples.push(i)}}function bg(e,t){return((31&e[t+1])<<8)+e[t+2]}function vg(e,t){return(31&e[t+10])<<8|e[t+11]}function _g(e,t,i,s,r){const o={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){let s=t+5,r=n;for(;r>2;){if(106===e[s])!0!==i.ac3?$c.log("AC-3 audio found, not supported in this browser for now"):(o.audioPid=a,o.segmentAudioCodec="ac3");const t=e[s+1]+2;s+=t,r-=t}}break;case 194:case 135:return Sg(r,new Error("Unsupported EC-3 in M2TS found")),o;case 36:return Sg(r,new Error("Unsupported HEVC in M2TS found")),o}t+=n+5}return o}function Sg(e,t,i){$c.warn(`parsing error: ${t.message}`),e.emit(Oc.ERROR,Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.FRAG_PARSING_ERROR,fatal:!1,levelRetry:i,error:t,reason:t.message})}function Eg(e){$c.log(`${e} with AES-128-CBC encryption found in unencrypted stream`)}function wg(e){let t,i,s,r,o,a=0;const n=e.data;if(!e||0===e.size)return null;for(;n[0].length<19&&n.length>1;)n[0]=sp(n[0],n[1]),n.splice(1,1);t=n[0];if(1===(t[0]<<16)+(t[1]<<8)+t[2]){if(i=(t[4]<<8)+t[5],i&&i>e.size-6)return null;const l=t[7];192&l&&(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&l?(o=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,r-o>54e5&&($c.warn(`${Math.round((r-o)/9e4)}s delta between PTS and DTS, align them`),r=o)):o=r),s=t[8];let d=s+9;if(e.size<=d)return null;e.size-=d;const h=new Uint8Array(e.size);for(let e=0,i=n.length;ei){d-=i;continue}t=t.subarray(d),i-=d,d=0}h.set(t,a),a+=i}return i&&(i-=s+3),{data:h,pts:r,dts:o,len:i}}return null}class Tg{static getSilentFrame(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])}}}const kg=Math.pow(2,32)-1;class Lg{static init(){let e;for(e in Lg.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},Lg.types)Lg.types.hasOwnProperty(e)&&(Lg.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);const t=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]),i=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]);Lg.HDLR_TYPES={video:t,audio:i};const s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);Lg.STTS=Lg.STSC=Lg.STCO=r,Lg.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),Lg.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),Lg.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),Lg.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const o=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),n=new Uint8Array([0,0,0,1]);Lg.FTYP=Lg.box(Lg.types.ftyp,o,n,o,a),Lg.DINF=Lg.box(Lg.types.dinf,Lg.box(Lg.types.dref,s))}static box(e,...t){let i=8,s=t.length;const r=s;for(;s--;)i+=t[s].byteLength;const o=new Uint8Array(i);for(o[0]=i>>24&255,o[1]=i>>16&255,o[2]=i>>8&255,o[3]=255&i,o.set(e,4),s=0,i=8;s>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s,85,196,0,0]))}static mdia(e){return Lg.box(Lg.types.mdia,Lg.mdhd(e.timescale,e.duration),Lg.hdlr(e.type),Lg.minf(e))}static mfhd(e){return Lg.box(Lg.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static minf(e){return"audio"===e.type?Lg.box(Lg.types.minf,Lg.box(Lg.types.smhd,Lg.SMHD),Lg.DINF,Lg.stbl(e)):Lg.box(Lg.types.minf,Lg.box(Lg.types.vmhd,Lg.VMHD),Lg.DINF,Lg.stbl(e))}static moof(e,t,i){return Lg.box(Lg.types.moof,Lg.mfhd(e),Lg.traf(i,t))}static moov(e){let t=e.length;const i=[];for(;t--;)i[t]=Lg.trak(e[t]);return Lg.box.apply(null,[Lg.types.moov,Lg.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(Lg.mvex(e)))}static mvex(e){let t=e.length;const i=[];for(;t--;)i[t]=Lg.trex(e[t]);return Lg.box.apply(null,[Lg.types.mvex,...i])}static mvhd(e,t){t*=e;const i=Math.floor(t/(kg+1)),s=Math.floor(t%(kg+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,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 Lg.box(Lg.types.mvhd,r)}static sdtp(e){const t=e.samples||[],i=new Uint8Array(4+t.length);let s,r;for(s=0;s>>8&255),r.push(255&s),r=r.concat(Array.prototype.slice.call(i));for(t=0;t>>8&255),o.push(255&s),o=o.concat(Array.prototype.slice.call(i));const a=Lg.box(Lg.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|e.sps.length].concat(r).concat([e.pps.length]).concat(o))),n=e.width,l=e.height,d=e.pixelRatio[0],h=e.pixelRatio[1];return Lg.box(Lg.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,n>>8&255,255&n,l>>8&255,255&l,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]),a,Lg.box(Lg.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),Lg.box(Lg.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,h>>24,h>>16&255,h>>8&255,255&h])))}static esds(e){const 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]))}static audioStsd(e){const 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])}static mp4a(e){return Lg.box(Lg.types.mp4a,Lg.audioStsd(e),Lg.box(Lg.types.esds,Lg.esds(e)))}static mp3(e){return Lg.box(Lg.types[".mp3"],Lg.audioStsd(e))}static ac3(e){return Lg.box(Lg.types["ac-3"],Lg.audioStsd(e),Lg.box(Lg.types.dac3,e.config))}static stsd(e){return"audio"===e.type?"mp3"===e.segmentCodec&&"mp3"===e.codec?Lg.box(Lg.types.stsd,Lg.STSD,Lg.mp3(e)):"ac3"===e.segmentCodec?Lg.box(Lg.types.stsd,Lg.STSD,Lg.ac3(e)):Lg.box(Lg.types.stsd,Lg.STSD,Lg.mp4a(e)):Lg.box(Lg.types.stsd,Lg.STSD,Lg.avc1(e))}static tkhd(e){const t=e.id,i=e.duration*e.timescale,s=e.width,r=e.height,o=Math.floor(i/(kg+1)),a=Math.floor(i%(kg+1));return Lg.box(Lg.types.tkhd,new Uint8Array([1,0,0,7,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,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,a>>24,a>>16&255,a>>8&255,255&a,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,r>>8&255,255&r,0,0]))}static traf(e,t){const i=Lg.sdtp(e),s=e.id,r=Math.floor(t/(kg+1)),o=Math.floor(t%(kg+1));return Lg.box(Lg.types.traf,Lg.box(Lg.types.tfhd,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])),Lg.box(Lg.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,o>>24,o>>16&255,o>>8&255,255&o])),Lg.trun(e,i.length+16+20+8+16+8+8),i)}static trak(e){return e.duration=e.duration||4294967295,Lg.box(Lg.types.trak,Lg.tkhd(e),Lg.mdia(e))}static trex(e){const t=e.id;return Lg.box(Lg.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(e,t){const i=e.samples||[],s=i.length,r=12+16*s,o=new Uint8Array(r);let a,n,l,d,h,c;for(t+=8+r,o.set(["video"===e.type?1:0,0,15,1,s>>>24&255,s>>>16&255,s>>>8&255,255&s,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,d>>>24&255,d>>>16&255,d>>>8&255,255&d,h.isLeading<<2|h.dependsOn,h.isDependedOn<<6|h.hasRedundancy<<4|h.paddingValue<<1|h.isNonSync,61440&h.degradPrio,15&h.degradPrio,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*a);return Lg.box(Lg.types.trun,o)}static initSegment(e){Lg.types||Lg.init();const t=Lg.moov(e);return sp(Lg.FTYP,t)}}Lg.types=void 0,Lg.HDLR_TYPES=void 0,Lg.STTS=void 0,Lg.STSC=void 0,Lg.STCO=void 0,Lg.STSZ=void 0,Lg.VMHD=void 0,Lg.SMHD=void 0,Lg.STSD=void 0,Lg.FTYP=void 0,Lg.DINF=void 0;function Cg(e,t,i=1,s=!1){const r=e*t*i;return s?Math.round(r):r}function Dg(e,t=!1){return Cg(e,1e3,1/9e4,t)}let xg,Rg=null,Pg=null;class Ig{constructor(e,t,i,s=""){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===Rg){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Rg=e?parseInt(e[1]):0}if(null===Pg){const e=navigator.userAgent.match(/Safari\/(\d+)/i);Pg=e?parseInt(e[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){$c.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e}resetNextTimestamp(){$c.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){$c.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1;const i=e.reduce(((e,i)=>{const s=i.pts-e;return s<-4294967296?(t=!0,Bg(e,i.pts)):s>0?e:i.pts}),e[0].pts);return t&&$c.debug("PTS rollover detected"),i}remux(e,t,i,s,r,o,a,n){let l,d,h,c,u,p,f=r,m=r;const g=e.pid>-1,y=t.pid>-1,A=t.samples.length,b=e.samples.length>0,v=a&&A>0||A>1;if((!g||b)&&(!y||v)||this.ISGenerated||a){if(this.ISGenerated){var _,S,E,w;const e=this.videoTrackConfig;!e||t.width===e.width&&t.height===e.height&&(null==(_=t.pixelRatio)?void 0:_[0])===(null==(S=e.pixelRatio)?void 0:S[0])&&(null==(E=t.pixelRatio)?void 0:E[1])===(null==(w=e.pixelRatio)?void 0:w[1])||this.resetInitSegment()}else h=this.generateIS(e,t,r,o);const i=this.isVideoContiguous;let s,a=-1;if(v&&(a=function(e){for(let t=0;t0){$c.warn(`[mp4-remuxer]: Dropped ${a} out of ${A} video samples due to a missing keyframe`);const e=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(a),t.dropped+=a,m+=(t.samples[0].pts-e)/t.inputTimeScale,s=m}else-1===a&&($c.warn(`[mp4-remuxer]: No keyframe found out of ${A} video samples`),p=!1);if(this.ISGenerated){if(b&&v){const i=this.getVideoStartPts(t.samples),s=(Bg(e.samples[0].pts,i)-i)/t.inputTimeScale;f+=Math.max(0,s),m+=Math.max(0,-s)}if(b){if(e.samplerate||($c.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),h=this.generateIS(e,t,r,o)),d=this.remuxAudio(e,f,this.isAudioContiguous,o,y||v||n===Hp?m:void 0),v){const s=d?d.endPTS-d.startPTS:0;t.inputTimeScale||($c.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),h=this.generateIS(e,t,r,o)),l=this.remuxVideo(t,m,i,s)}}else v&&(l=this.remuxVideo(t,m,i,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=s)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(i.samples.length&&(u=Mg(i,r,this._initPTS,this._initDTS)),s.samples.length&&(c=Fg(s,r,this._initPTS))),{audio:d,video:l,initSegment:h,independent:p,text:c,id3:u}}generateIS(e,t,i,s){const r=e.samples,o=t.samples,a=this.typeSupported,n={},l=this._initPTS;let d,h,c,u=!l||s,p="audio/mp4";if(u&&(d=h=1/0),e.config&&r.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":a.mpeg?(p="audio/mpeg",e.codec=""):a.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3"}n.audio={id:"audio",container:p,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&a.mpeg?new Uint8Array(0):Lg.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(c=e.inputTimeScale,l&&c===l.timescale?u=!1:d=h=r[0].pts-Math.round(c*i))}if(t.sps&&t.pps&&o.length){if(t.timescale=t.inputTimeScale,n.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:Lg.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(c=t.inputTimeScale,l&&c===l.timescale)u=!1;else{const e=this.getVideoStartPts(o),t=Math.round(c*i);h=Math.min(h,Bg(o[0].dts,e)-t),d=Math.min(d,e-t)}this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(n).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:d,timescale:c},this._initDTS={baseTime:h,timescale:c}):d=c=void 0,{tracks:n,initPTS:d,timescale:c}}remuxVideo(e,t,i,s){const r=e.inputTimeScale,o=e.samples,a=[],n=o.length,l=this._initPTS;let d,h,c=this.nextAvcDts,u=8,p=this.videoSampleDuration,f=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,g=!1;if(!i||null===c){const e=t*r,s=o[0].pts-Bg(o[0].dts,o[0].pts);Rg&&null!==c&&Math.abs(e-s-c)<15e3?i=!0:c=e-s}const y=l.baseTime*r/l.timescale;for(let e=0;e0?e-1:e].dts&&(g=!0)}g&&o.sort((function(e,t){const i=e.dts-t.dts,s=e.pts-t.pts;return i||s})),d=o[0].dts,h=o[o.length-1].dts;const A=h-d,b=A?Math.round(A/(n-1)):p||e.inputTimeScale/30;if(i){const e=d-c,i=e>b,s=e<-1;if((i||s)&&(i?$c.warn(`AVC: ${Dg(e,!0)} ms (${e}dts) hole between fragments detected at ${t.toFixed(3)}`):$c.warn(`AVC: ${Dg(-e,!0)} ms (${e}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!s||c>=o[0].pts||Rg)){d=c;const t=o[0].pts-e;if(i)o[0].dts=d,o[0].pts=t;else for(let i=0;it);i++)o[i].dts-=e,o[i].pts-=e;$c.log(`Video: Initial PTS/DTS adjusted: ${Dg(t,!0)}/${Dg(d,!0)}, delta: ${Dg(e,!0)} ms`)}}d=Math.max(0,d);let v=0,_=0,S=d;for(let e=0;e0?t.dts-o[e-1].dts:b;if(l=e>0?t.pts-o[e-1].pts:b,i.stretchShortVideoTrack&&null!==this.nextAudioPts){const e=Math.floor(i.maxBufferHole*r),o=(s?f+s*r:this.nextAudioPts)-t.pts;o>e?(p=o-a,p<0?p=a:k=!0,$c.log(`[mp4-remuxer]: It is approximately ${o/90} ms to the next segment; using duration ${p/90} ms for the last video frame.`)):p=a}else p=a}const h=Math.round(t.pts-t.dts);L=Math.min(L,p),D=Math.max(D,p),C=Math.min(C,l),x=Math.max(x,l),a.push(new Ug(t.key,p,d,h))}if(a.length)if(Rg){if(Rg<70){const e=a[0].flags;e.dependsOn=2,e.isNonSync=0}}else if(Pg&&x-C0&&(s&&Math.abs(g-m)<9e3||Math.abs(Bg(p[0].pts-y,g)-m)<20*l),p.forEach((function(e){e.pts=Bg(e.pts-y,g)})),!i||m<0){if(p=p.filter((e=>e.pts>=0)),!p.length)return;m=0===r?0:s&&!u?Math.max(0,g):p[0].pts}if("aac"===e.segmentCodec){const t=this.config.maxAudioFramesDrift;for(let i=0,s=m;i=t*l&&d<1e4&&u){let t=Math.round(n/l);s=a-t*l,s<0&&(t--,s+=l),0===i&&(this.nextAudioPts=m=s),$c.warn(`[mp4-remuxer]: Injecting ${t} audio frame @ ${(s/o).toFixed(3)}s due to ${Math.round(1e3*n/o)} ms gap.`);for(let o=0;o0))return;_+=f;try{A=new Uint8Array(_)}catch(e){return void this.observer.emit(Oc.ERROR,Oc.ERROR,{type:Nc.MUX_ERROR,details:jc.REMUX_ALLOC_ERROR,fatal:!1,error:e,bytes:_,reason:`fail allocating audio mdat ${_}`})}if(!h){new DataView(A.buffer).setUint32(0,_),A.set(Lg.types.mdat,4)}}A.set(r,f);const l=r.byteLength;f+=l,c.push(new Ug(!0,n,l,0)),v=o}const E=c.length;if(!E)return;const w=c[c.length-1];this.nextAudioPts=m=v+a*w.duration;const T=h?new Uint8Array(0):Lg.moof(e.sequenceNumber++,b/a,Bc({},e,{samples:c}));e.samples=[];const k=b/o,L=m/o,C={data1:T,data2:A,startPTS:k,endPTS:L,startDTS:k,endDTS:L,type:"audio",hasAudio:!0,hasVideo:!1,nb:E};return this.isAudioContiguous=!0,C}remuxEmptyAudio(e,t,i,s){const r=e.inputTimeScale,o=r/(e.samplerate?e.samplerate:r),a=this.nextAudioPts,n=this._initDTS,l=9e4*n.baseTime/n.timescale,d=(null!==a?a:s.startDTS*r)+l,h=s.endDTS*r+l,c=1024*o,u=Math.ceil((h-d)/c),p=Tg.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if($c.warn("[mp4-remuxer]: remux empty Audio"),!p)return void $c.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const f=[];for(let e=0;e4294967296;)e+=i;return e}function Mg(e,t,i,s){const r=e.samples.length;if(!r)return;const o=e.inputTimeScale;for(let a=0;ae.pts-t.pts));const o=e.samples;return e.samples=[],{samples:o}}class Ug{constructor(e,t,i,s){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=i,this.cts=s,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:e?2:1,isNonSync:e?0:1}}}function Og(e,t){const i=null==e?void 0:e.codec;if(i&&i.length>4)return i;if(t===Xc){if("ec-3"===i||"ac-3"===i||"alac"===i)return i;if("fLaC"===i||"Opus"===i){return kp(i,!1)}const e="mp4a.40.5";return $c.info(`Parsed audio codec "${i}" or audio object type not handled. Using "${e}"`),e}return $c.warn(`Unhandled video codec "${i}"`),"hvc1"===i||"hev1"===i?"hvc1.1.6.L120.90":"av01"===i?"av01.0.04M.08":"avc1.42e01e"}try{xg=self.performance.now.bind(self.performance)}catch(e){$c.debug("Unable to use Performance API on this environment"),xg=null==lu?void 0:lu.Date.now}const Ng=[{demux:class{constructor(e,t){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=t}resetTimeStamp(){}resetInitSegment(e,t,i,s){const r=this.videoTrack=Wm("video",1),o=this.audioTrack=Wm("audio",1),a=this.txtTrack=Wm("text",1);if(this.id3Track=Wm("id3",1),this.timeOffset=0,null==e||!e.byteLength)return;const n=Yu(e);if(n.video){const{id:e,timescale:t,codec:i}=n.video;r.id=e,r.timescale=a.timescale=t,r.codec=i}if(n.audio){const{id:e,timescale:t,codec:i}=n.audio;o.id=e,o.timescale=t,o.codec=i}a.id=Gu.text,r.sampleDuration=0,r.duration=o.duration=s}resetContiguity(){this.remainderData=null}static probe(e){return function(e){const t=e.byteLength;for(let i=0;i8&&109===e[i+4]&&111===e[i+5]&&111===e[i+6]&&102===e[i+7])return!0;i=s>1?i+s:t}return!1}(e)}demux(e,t){this.timeOffset=t;let i=e;const s=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(i=sp(this.remainderData,e));const t=function(e){const t={valid:null,remainder:null},i=qu(e,["moof"]);if(i.length<2)return t.remainder=e,t;const s=i[i.length-1];return t.valid=vu(e,0,s.byteOffset-8),t.remainder=vu(e,s.byteOffset-8),t}(i);this.remainderData=t.remainder,s.samples=t.valid||new Uint8Array}else s.samples=i;const o=this.extractID3Track(s,t);return r.samples=rp(t,s),{videoTrack:s,audioTrack:this.audioTrack,id3Track:o,textTrack:this.txtTrack}}flush(){const e=this.timeOffset,t=this.videoTrack,i=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;const s=this.extractID3Track(t,this.timeOffset);return i.samples=rp(e,t),{videoTrack:t,audioTrack:Wm(),id3Track:s,textTrack:Wm()}}extractID3Track(e,t){const i=this.id3Track;if(e.samples.length){const s=qu(e.samples,["emsg"]);s&&s.forEach((e=>{const s=function(e){const t=e[0];let i="",s="",r=0,o=0,a=0,n=0,l=0,d=0;if(0===t){for(;"\0"!==zu(e.subarray(d,d+1));)i+=zu(e.subarray(d,d+1)),d+=1;for(i+=zu(e.subarray(d,d+1)),d+=1;"\0"!==zu(e.subarray(d,d+1));)s+=zu(e.subarray(d,d+1)),d+=1;s+=zu(e.subarray(d,d+1)),d+=1,r=Vu(e,12),o=Vu(e,16),n=Vu(e,20),l=Vu(e,24),d=28}else if(1===t){d+=4,r=Vu(e,d),d+=4;const t=Vu(e,d);d+=4;const o=Vu(e,d);for(d+=4,a=2**32*t+o,Fc(a)||(a=Number.MAX_SAFE_INTEGER,$c.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),n=Vu(e,d),d+=4,l=Vu(e,d),d+=4;"\0"!==zu(e.subarray(d,d+1));)i+=zu(e.subarray(d,d+1)),d+=1;for(i+=zu(e.subarray(d,d+1)),d+=1;"\0"!==zu(e.subarray(d,d+1));)s+=zu(e.subarray(d,d+1)),d+=1;s+=zu(e.subarray(d,d+1)),d+=1}return{schemeIdUri:i,value:s,timeScale:r,presentationTime:a,presentationTimeDelta:o,eventDuration:n,id:l,payload:e.subarray(d,e.byteLength)}}(e);if(hg.test(s.schemeIdUri)){const e=Mc(s.presentationTime)?s.presentationTime/s.timeScale:t+s.presentationTimeDelta/s.timeScale;let r=4294967295===s.eventDuration?Number.POSITIVE_INFINITY:s.eventDuration/s.timeScale;r<=.001&&(r=Number.POSITIVE_INFINITY);const o=s.payload;i.samples.push({data:o,len:o.byteLength,dts:e,pts:e,type:of,duration:r})}}))}return i}demuxSampleAes(e,t,i){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux:class{constructor(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null}destroy(){}resetTimeStamp(e){this.initPTS=e,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(e,t,i,s){this.audioCodec=t,this.videoCodec=i,this.generateInitSegment(function(e,t){if(!e||!t)return e;const i=t.keyId;i&&t.isCommonEncryption&&qu(e,["moov","trak"]).forEach((e=>{const t=qu(e,["mdia","minf","stbl","stsd"])[0].subarray(8);let s=qu(t,["enca"]);const r=s.length>0;r||(s=qu(t,["encv"])),s.forEach((e=>{qu(r?e.subarray(28):e.subarray(78),["sinf"]).forEach((e=>{const t=tp(e);if(t){const e=t.subarray(8,24);e.some((e=>0!==e))||($c.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${Ou(e)} -> ${Ou(i)}`),t.set(i,8))}}))}))}));return e}(e,s)),this.emitInitSegment=!0}generateInitSegment(e){let{audioCodec:t,videoCodec:i}=this;if(null==e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const s=this.initData=Yu(e);s.audio&&(t=Og(s.audio,Xc)),s.video&&(i=Og(s.video,Zc));const r={};s.audio&&s.video?r.audiovideo={container:"video/mp4",codec:t+","+i,initSegment:e,id:"main"}:s.audio?r.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:s.video?r.video={container:"video/mp4",codec:i,initSegment:e,id:"main"}:$c.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(e,t,i,s,r,o){var a,n;let{initPTS:l,lastEndTime:d}=this;const h={audio:void 0,video:void 0,text:s,id3:i,initSegment:void 0};Mc(d)||(d=this.lastEndTime=r||0);const c=t.samples;if(null==c||!c.length)return h;const u={initPTS:void 0,timescale:1};let p=this.initData;if(null!=(a=p)&&a.length||(this.generateInitSegment(c),p=this.initData),null==(n=p)||!n.length)return $c.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),h;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const f=function(e,t){let i=0,s=0,r=0;const o=qu(e,["moof","traf"]);for(let e=0;ee+t.info.duration||0),0);i=Math.max(i,e+o.earliestPresentationTime/o.timescale),s=i-t}}if(s&&Mc(s))return s}return s||r}(c,p),m=function(e,t){return qu(t,["moof","traf"]).reduce(((t,i)=>{const s=qu(i,["tfdt"])[0],r=s[0],o=qu(i,["tfhd"]).reduce(((t,i)=>{const o=Vu(i,4),a=e[o];if(a){let e=Vu(s,4);if(1===r){if(e===Nu)return $c.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),t;e*=Nu+1,e+=Vu(s,8)}const i=e/(a.timescale||9e4);if(Mc(i)&&(null===t||ir}(l,g,r,f)||u.timescale!==l.timescale&&o)&&(u.initPTS=g-r,l&&1===l.timescale&&$c.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const y=e?g-l.baseTime/l.timescale:d,A=y+f;!function(e,t,i){qu(t,["moof","traf"]).forEach((t=>{qu(t,["tfhd"]).forEach((s=>{const r=Vu(s,4),o=e[r];if(!o)return;const a=o.timescale||9e4;qu(t,["tfdt"]).forEach((e=>{const t=e[0],s=i*a;if(s){let i=Vu(e,4);if(0===t)i-=s,i=Math.max(i,0),Ju(e,4,i);else{i*=Math.pow(2,32),i+=Vu(e,8),i-=s,i=Math.max(i,0);const t=Math.floor(i/(Nu+1)),r=Math.floor(i%(Nu+1));Ju(e,4,t),Ju(e,8,r)}}}))}))}))}(p,c,l.baseTime/l.timescale),f>0?this.lastEndTime=A:($c.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const b=!!p.audio,v=!!p.video;let _="";b&&(_+="audio"),v&&(_+="video");const S={data1:c,startPTS:y,startDTS:y,endPTS:A,endDTS:A,type:_,hasAudio:b,hasVideo:v,nb:1,dropped:0};return h.audio="audio"===S.type?S:void 0,h.video="audio"!==S.type?S:void 0,h.initSegment=u,h.id3=Mg(i,r,l,l),s.samples.length&&(h.text=Fg(s,r,l)),h}}},{demux:Ag,remux:Ig},{demux:class extends Vm{constructor(e,t){super(),this.observer=void 0,this.config=void 0,this.observer=e,this.config=t}resetInitSegment(e,t,i,s){super.resetInitSegment(e,t,i,s),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:t,duration:s,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;const t=Eu(e,0);let i=(null==t?void 0:t.length)||0;if(dg(e,i))return!1;for(let t=e.length;i0&&null!=(null==t?void 0:t.key)&&null!==t.iv&&null!=t.method&&(i=t);return i}(o,t);if(b&&"AES-128"===b.method){const e=this.getDecrypter();if(!e.isSync())return this.decryptionPromise=e.webCryptoDecrypt(o,b.key.buffer,b.iv.buffer).then((e=>{const t=this.push(e,null,i);return this.decryptionPromise=null,t})),this.decryptionPromise;{let t=e.softwareDecrypt(o,b.key.buffer,b.iv.buffer);if(i.part>-1&&(t=e.flush()),!t)return r.executeEnd=xg(),Gg(i);o=new Uint8Array(t)}}const v=this.needsProbing(d,h);if(v){const e=this.configureTransmuxer(o);if(e)return $c.warn(`[transmuxer] ${e.message}`),this.observer.emit(Oc.ERROR,Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message}),r.executeEnd=xg(),Gg(i)}(d||h||p||v)&&this.resetInitSegment(A,f,m,y,t),(d||p||v)&&this.resetInitialTimestamp(g),l||this.resetContiguity();const _=this.transmux(o,b,u,c,i),S=this.currentTransmuxState;return S.contiguous=!0,S.discontinuity=!1,S.trackSwitch=!1,r.executeEnd=xg(),_}flush(e){const t=e.transmuxing;t.executeStart=xg();const{decrypter:i,currentTransmuxState:s,decryptionPromise:r}=this;if(r)return r.then((()=>this.flush(e)));const o=[],{timeOffset:a}=s;if(i){const t=i.flush();t&&o.push(this.push(t,null,e))}const{demuxer:n,remuxer:l}=this;if(!n||!l)return t.executeEnd=xg(),[Gg(e)];const d=n.flush(a);return zg(d)?d.then((t=>(this.flushRemux(o,t,e),o))):(this.flushRemux(o,d,e),o)}flushRemux(e,t,i){const{audioTrack:s,videoTrack:r,id3Track:o,textTrack:a}=t,{accurateTimeOffset:n,timeOffset:l}=this.currentTransmuxState;$c.log(`[transmuxer.ts]: Flushed fragment ${i.sn}${i.part>-1?" p: "+i.part:""} of level ${i.level}`);const d=this.remuxer.remux(s,r,o,a,l,n,!0,this.id);e.push({remuxResult:d,chunkMeta:i}),i.transmuxing.executeEnd=xg()}resetInitialTimestamp(e){const{demuxer:t,remuxer:i}=this;t&&i&&(t.resetTimeStamp(e),i.resetTimeStamp(e))}resetContiguity(){const{demuxer:e,remuxer:t}=this;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,i,s,r){const{demuxer:o,remuxer:a}=this;o&&a&&(o.resetInitSegment(e,t,i,s),a.resetInitSegment(e,t,i,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(e,t,i,s,r){let o;return o=t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,i,s,r):this.transmuxUnencrypted(e,i,s,r),o}transmuxUnencrypted(e,t,i,s){const{audioTrack:r,videoTrack:o,id3Track:a,textTrack:n}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,o,a,n,t,i,!1,this.id),chunkMeta:s}}transmuxSampleAes(e,t,i,s,r){return this.demuxer.demuxSampleAes(e,t,i).then((e=>({remuxResult:this.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,i,s,!1,this.id),chunkMeta:r})))}configureTransmuxer(e){const{config:t,observer:i,typeSupported:s,vendor:r}=this;let o;for(let t=0,i=Ng.length;t({remuxResult:{},chunkMeta:e});function zg(e){return"then"in e&&e.then instanceof Function}class Wg{constructor(e,t,i,s,r){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=s,this.defaultInitPts=r||null}}class Vg{constructor(e,t,i,s,r,o){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=s,this.timeOffset=r,this.initSegmentChange=o}}var $g={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function s(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function o(e,t,s,o,a){if("function"!=typeof s)throw new TypeError("The listener must be a function");var n=new r(s,o||e,a),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],n]:e._events[l].push(n):(e._events[l]=n,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function n(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(i=!1)),n.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(i?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},n.prototype.listeners=function(e){var t=i?i+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,o=s.length,a=new Array(o);r{(t=t||{}).frag=this.frag,t.id=this.id,e===Oc.ERROR&&(this.error=t.error),this.hls.trigger(e,t)};this.observer=new Hg,this.observer.on(Oc.FRAG_DECRYPTED,o),this.observer.on(Oc.ERROR,o);const a=yp(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},n={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')};if(this.useWorker&&"undefined"!=typeof Worker){if(r.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{r.workerPath?($c.log(`loading Web Worker ${r.workerPath} for "${t}"`),this.workerContext=function(e){const t=new self.URL(e,self.location.href).href;return{worker:new self.Worker(t),scriptURL:t}}(r.workerPath)):($c.log(`injecting Web Worker for "${t}"`),this.workerContext=function(){const e=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),t=self.URL.createObjectURL(e);return{worker:new self.Worker(t),objectURL:t}}()),this.onwmsg=e=>this.onWorkerMessage(e);const{worker:e}=this.workerContext;e.addEventListener("message",this.onwmsg),e.onerror=e=>{const i=new Error(`${e.message} (${e.filename}:${e.lineno})`);r.enableWorker=!1,$c.warn(`Error in "${t}" Web Worker, fallback to inline`),this.hls.trigger(Oc.ERROR,{type:Nc.OTHER_ERROR,details:jc.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:i})},e.postMessage({cmd:"init",typeSupported:n,vendor:"",id:t,config:JSON.stringify(r)})}catch(e){$c.warn(`Error setting up "${t}" Web Worker, fallback to inline`,e),this.resetWorker(),this.error=null,this.transmuxer=new jg(this.observer,n,r,"",t)}return}}this.transmuxer=new jg(this.observer,n,r,"",t)}resetWorker(){if(this.workerContext){const{worker:e,objectURL:t}=this.workerContext;t&&self.URL.revokeObjectURL(t),e.removeEventListener("message",this.onwmsg),e.onerror=null,e.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{const e=this.transmuxer;e&&(e.destroy(),this.transmuxer=null)}const e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(e,t,i,s,r,o,a,n,l,d){var h,c;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,p=o?o.start:r.start,f=r.decryptdata,m=this.frag,g=!(m&&r.cc===m.cc),y=!(m&&l.level===m.level),A=m?l.sn-m.sn:-1,b=this.part?l.part-this.part.index:-1,v=0===A&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),_=!y&&(1===A||0===A&&(1===b||v&&b<=0)),S=self.performance.now();(y||A||0===r.stats.parsing.start)&&(r.stats.parsing.start=S),!o||!b&&_||(o.stats.parsing.start=S);const E=!(m&&(null==(h=r.initSegment)?void 0:h.url)===(null==(c=m.initSegment)?void 0:c.url)),w=new Vg(g,_,n,y,p,E);if(!_||g||E){$c.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${g}\n trackSwitch: ${y}\n contiguous: ${_}\n accurateTimeOffset: ${n}\n timeOffset: ${p}\n initSegmentChange: ${E}`);const e=new Wg(i,s,t,a,d);this.configureTransmuxer(e)}if(this.frag=r,this.part=o,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:f,chunkMeta:l,state:w},e instanceof ArrayBuffer?[e]:[]);else if(u){const t=u.push(e,f,l,w);zg(t)?(u.async=!0,t.then((e=>{this.handleTransmuxComplete(e)})).catch((e=>{this.transmuxerError(e,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(t))}}flush(e){e.transmuxing.start=self.performance.now();const{transmuxer:t}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(t){let i=t.flush(e);zg(i)||t.async?(zg(i)||(i=Promise.resolve(i)),i.then((t=>{this.handleFlushResult(t,e)})).catch((t=>{this.transmuxerError(t,e,"transmuxer-interface flush error")}))):this.handleFlushResult(i,e)}}transmuxerError(e,t,i){this.hls&&(this.error=e,this.hls.trigger(Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.FRAG_PARSING_ERROR,chunkMeta:t,frag:this.frag||void 0,fatal:!1,error:e,err:e,reason:i}))}handleFlushResult(e,t){e.forEach((e=>{this.handleTransmuxComplete(e)})),this.onFlush(t)}onWorkerMessage(e){const t=e.data;if(null==t||!t.event)return void $c.warn("worker message received with no "+(t?"event name":"data"));const i=this.hls;if(this.hls)switch(t.event){case"init":{var s;const e=null==(s=this.workerContext)?void 0:s.objectURL;e&&self.URL.revokeObjectURL(e);break}case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":$c[t.data.logType]&&$c[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)}}configureTransmuxer(e){const{transmuxer:t}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:e}):t&&t.configure(e)}handleTransmuxComplete(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)}}function qg(e,t){if(e.length!==t.length)return!1;for(let i=0;ie[i]!==t[i]))}function Yg(e,t){return t.label.toLowerCase()===e.name.toLowerCase()&&(!t.language||t.language.toLowerCase()===(e.lang||"").toLowerCase())}class Qg{constructor(e){this.buffered=void 0;const t=(t,i,s)=>{if((i>>>=0)>s-1)throw new DOMException(`Failed to execute '${t}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${s})`);return e[i][t]};this.buffered={get length(){return e.length},end:i=>t("end",i,e.length),start:i=>t("start",i,e.length)}}}class Xg{constructor(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}append(e,t,i){const s=this.queues[t];s.push(e),1!==s.length||i||this.executeNext(t)}insertAbort(e,t){this.queues[t].unshift(e),this.executeNext(t)}appendBlocker(e){let t;const i=new Promise((e=>{t=e})),s={execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(s,e),i}executeNext(e){const t=this.queues[e];if(t.length){const i=t[0];try{i.execute()}catch(t){$c.warn(`[buffer-operation-queue]: Exception executing "${e}" SourceBuffer operation: ${t}`),i.onError(t);const s=this.buffers[e];null!=s&&s.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues[e].shift(),this.executeNext(e)}current(e){return this.queues[e][0]}}const Zg=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function ey(e){const t=e.querySelectorAll("source");[].slice.call(t).forEach((t=>{e.removeChild(t)}))}const ty={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},iy=e=>String.fromCharCode(ty[e]||e),sy=15,ry=100,oy={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},ay={17:2,18:4,21:6,22:8,23:10,19:13,20:15},ny={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},ly={25:2,26:4,29:6,30:8,31:10,27:13,28:15},dy=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class hy{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;$c.log(`${this.time} [${e}] ${i}`)}}}const cy=function(e){const t=[];for(let i=0;iry&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=ry)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=iy(e);this.pos>=ry?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",s=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class gy{constructor(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 my(i),this.nonDisplayedMemory=new my(i),this.lastOutputScreen=new my(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(e){this.outputFilter=e}setPAC(e){this.writeScreen.setPAC(e)}setBkgData(e){this.writeScreen.setBkgData(e)}setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(2,(()=>"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)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(1,(()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0))),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(e){this.logger.log(2,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,s=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=s[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const 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))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class yy{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const s=this.logger=new hy;this.channels=[null,new gy(e,t,s),new gy(e+1,i,s)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+cy([t[e],t[e+1]])+"] -> ("+cy([i,s])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if(by(i,s,a)){Ay(null,null,a),this.logger.log(3,(()=>"Repeated command ("+cy([i,s])+") is dropped"));continue}Ay(i,s,this.cmdHistory),r=this.parseCmd(i,s),r||(r=this.parseMidrow(i,s)),r||(r=this.parsePAC(i,s)),r||(r=this.parseBackgroundAttributes(i,s))}else Ay(null,null,a);if(!r&&(o=this.parseChars(i,s),o)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(o)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}r||o||this.logger.log(2,(()=>"Couldn't parse cleaned data "+cy([i,s])+" orig: "+cy([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,s=this.channels[i];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),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const s=this.channels[i];return!!s&&(s.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+cy([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const s=e<=23?1:2;i=t>=64&&t<=95?1===s?oy[e]:ny[e]:1===s?ay[e]:ly[e];const r=this.channels[s];return!!r&&(r.setPAC(this.interpretPAC(i,t)),this.currentChannel=s,!0)}interpretPAC(e,t){let i;const s={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,s.underline=1==(1&i),i<=13?s.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(s.italics=!0,s.color="white"):s.indent=4*Math.floor((i-16)/2),s}parseChars(e,t){let i,s=null,r=null;if(e>=25?(i=2,r=e-8):(i=1,r=e),r>=17&&r<=19){let e;e=17===r?t+80:18===r?t+112:t+144,this.logger.log(2,(()=>"Special char '"+iy(e)+"' in channel "+i)),s=[e]}else e>=32&&e<=127&&(s=0===t?[e]:[e,t]);return s&&this.logger.log(3,(()=>"Char codes = "+cy(s).join(","))),s}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const s={};16===e||24===e?(i=Math.floor((t-32)/2),s.background=dy[i],t%2==1&&(s.background=s.background+"_semi")):45===t?s.background="transparent":(s.foreground="black",47===t&&(s.underline=!0));const r=e<=23?1:2;return this.channels[r].setBkgData(s),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var _y=function(){if(null!=lu&&lu.VTTCue)return self.VTTCue;const 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;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function s(e){return i(t,e)}function r(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");b=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"positionAlign",r({},l,{get:function(){return v},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");v=t,this.hasBeenReset=!0}})),Object.defineProperty(n,"size",r({},l,{get:function(){return _},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");_=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"align",r({},l,{get:function(){return S},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");S=t,this.hasBeenReset=!0}})),n.displayState=void 0}return o.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},o}();class Sy{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Ey(e){function t(e,t,i,s){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(s||0)}const 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}class wy{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let s=0;s=0&&i<=100)return this.set(e,i),!0}return!1}}function Ty(e,t,i,s){const r=s?e.split(s):[e];for(const e in r){if("string"!=typeof r[e])continue;const s=r[e].split(i);if(2!==s.length)continue;t(s[0],s[1])}}const ky=new _y(0,0,""),Ly="middle"===ky.align?"middle":"center";function Cy(e,t,i){const s=e;function r(){const t=Ey(e);if(null===t)throw new Error("Malformed timestamp: "+s);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function o(){e=e.replace(/^\s+/,"")}if(o(),t.startTime=r(),o(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+s);e=e.slice(3),o(),t.endTime=r(),o(),function(e,t){const s=new wy;Ty(e,(function(e,t){let r;switch(e){case"region":for(let r=i.length-1;r>=0;r--)if(i[r].id===t){s.set(e,i[r].region);break}break;case"vertical":s.alt(e,t,["rl","lr"]);break;case"line":r=t.split(","),s.integer(e,r[0]),s.percent(e,r[0])&&s.set("snapToLines",!1),s.alt(e,r[0],["auto"]),2===r.length&&s.alt("lineAlign",r[1],["start",Ly,"end"]);break;case"position":r=t.split(","),s.percent(e,r[0]),2===r.length&&s.alt("positionAlign",r[1],["start",Ly,"end","line-left","line-right","auto"]);break;case"size":s.percent(e,t);break;case"align":s.alt(e,t,["start",Ly,"end","left","right"])}}),/:/,/\s/),t.region=s.get("region",null),t.vertical=s.get("vertical","");let r=s.get("line","auto");"auto"===r&&-1===ky.line&&(r=-1),t.line=r,t.lineAlign=s.get("lineAlign","start"),t.snapToLines=s.get("snapToLines",!0),t.size=s.get("size",100),t.align=s.get("align",Ly);let o=s.get("position","auto");"auto"===o&&50===ky.position&&(o="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=o}(e,t)}function Dy(e){return e.replace(//gi,"\n")}class xy{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Sy,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=Dy(e);i>>0).toString()};function By(e,t,i){return Iy(e.toString())+Iy(t.toString())+Iy(i)}function My(e,t,i,s,r,o,a){const n=new xy,l=Mu(new Uint8Array(e)).trim().replace(Ry,"\n").split("\n"),d=[],h=t?function(e,t=1){return Cg(e,9e4,1/t)}(t.baseTime,t.timescale):0;let c,u="00:00.000",p=0,f=0,m=!0;n.oncue=function(e){const o=i[s];let a=i.ccOffset;const n=(p-h)/9e4;if(null!=o&&o.new&&(void 0!==f?a=i.ccOffset=o.start:function(e,t,i){let s=e[t],r=e[s.prevCC];if(!r||!r.new&&s.new)return e.ccOffset=e.presentationOffset=s.start,void(s.new=!1);for(;null!=(o=r)&&o.new;){var o;e.ccOffset+=s.start-r.start,s.new=!1,s=r,r=e[s.prevCC]}e.presentationOffset=i}(i,s,n)),n){if(!t)return void(c=new Error("Missing initPTS for VTT MPEGTS"));a=n-i.presentationOffset}const l=e.endTime-e.startTime,u=Bg(9e4*(e.startTime+a-f),9e4*r)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=By(e.startTime,e.endTime,m)),e.endTime>0&&d.push(e)},n.onparsingerror=function(e){c=e},n.onflush=function(){c?a(c):o(d)},l.forEach((e=>{if(m){if(Py(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Py(e,"LOCAL:")?u=e.slice(6):Py(e,"MPEGTS:")&&(p=parseInt(e.slice(7)))}));try{f=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),s=parseInt(e.slice(-9,-7)),r=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Mc(t)&&Mc(i)&&Mc(s)&&Mc(r)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*s,t+=36e5*r,t}(u)/1e3}catch(e){c=e}return}""===e&&(m=!1)}n.parse(e+"\n")})),n.flush()}const Fy="stpp.ttml.im1t",Uy=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Oy=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,Ny={left:"start",center:"center",right:"end",start:"start",end:"end"};function jy(e,t,i,s){const r=qu(new Uint8Array(e),["mdat"]);if(0===r.length)return void s(new Error("Could not parse IMSC1 mdat"));const o=r.map((e=>Mu(e))),a=function(e,t,i=1,s=!1){return Cg(e,t,1/i,s)}(t.baseTime,1,t.timescale);try{o.forEach((e=>i(function(e,t){const i=new DOMParser,s=i.parseFromString(e,"text/xml").getElementsByTagName("tt")[0];if(!s)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},o=Object.keys(r).reduce(((e,t)=>(e[t]=s.getAttribute(`ttp:${t}`)||r[t],e)),{}),a="preserve"!==s.getAttribute("xml:space"),n=zy(Gy(s,"styling","style")),l=zy(Gy(s,"layout","region")),d=Gy(s,"body","[begin]");return[].map.call(d,(e=>{const i=Wy(e,a);if(!i||!e.hasAttribute("begin"))return null;const s=Hy(e.getAttribute("begin"),o),r=Hy(e.getAttribute("dur"),o);let d=Hy(e.getAttribute("end"),o);if(null===s)throw $y(e);if(null===d){if(null===r)throw $y(e);d=s+r}const h=new _y(s-t,d-t,i);h.id=By(h.startTime,h.endTime,h.text);const c=function(e,t,i){const s="http://www.w3.org/ns/ttml#styling";let r=null;const o=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(r=i[a]);return o.reduce(((i,o)=>{const a=Vy(t,s,o)||Vy(e,s,o)||Vy(r,s,o);return a&&(i[o]=a),i}),{})}(l[e.getAttribute("region")],n[e.getAttribute("style")],n),{textAlign:u}=c;if(u){const e=Ny[u];e&&(h.lineAlign=e),h.align=u}return Bc(h,c),h})).filter((e=>null!==e))}(e,a))))}catch(e){s(e)}}function Gy(e,t,i){const s=e.getElementsByTagName(t)[0];return s?[].slice.call(s.querySelectorAll(i)):[]}function zy(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function Wy(e,t){return[].slice.call(e.childNodes).reduce(((e,i,s)=>{var r;return"br"===i.nodeName&&s?e+"\n":null!=(r=i.childNodes)&&r.length?Wy(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function Vy(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function $y(e){return new Error(`Could not parse ttml timestamp ${e}`)}function Hy(e,t){if(!e)return null;let i=Ey(e);return null===i&&(Uy.test(e)?i=function(e,t){const i=Uy.exec(e),s=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+s/t.frameRate}(e,t):Oy.test(e)&&(i=function(e,t){const i=Oy.exec(e),s=Number(i[1]);switch(i[2]){case"h":return 3600*s;case"m":return 60*s;case"ms":return 1e3*s;case"f":return s/t.frameRate;case"t":return s/t.tickRate}return s}(e,t))),i}function Jy(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function qy(e,t){return!!e&&e.kind===Jy(t)&&Yg(t,e)}class Ky{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(Oc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(Oc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Oc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Oc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Oc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Oc.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(Oc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(Oc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Oc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Oc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Oc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Oc.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Mc(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&$c.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,Ky.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const 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}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let s=e.length-1;const r=Math.max(t,i);for(let t=0;t=r||i.height>=r)&&(o=i,!(a=e[t+1])||o.width!==a.width||o.height!==a.height)){s=t;break}}var o,a;return s}}const Yy="[eme]";class Qy{constructor(e){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=Qy.CDMCleanupPromise?[Qy.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=$c.debug.bind($c,Yy),this.log=$c.log.bind($c,Yy),this.warn=$c.warn.bind($c,Yy),this.error=$c.error.bind($c,Yy),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const e=this.config;e.requestMediaKeySystemAccessFunc=null,e.licenseXhrSetup=e.licenseResponseCallback=void 0,e.drmSystems=e.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Oc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Oc.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Oc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Oc.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,s=t[e];if(s)return s.licenseUrl;if(e===du.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,s=t.map((e=>e.audioCodec)).filter(i),r=t.map((e=>e.videoCodec)).filter(i);return s.length+r.length===0&&r.push("avc1.42e01e"),new Promise(((t,i)=>{const o=e=>{const a=e.shift();this.getMediaKeysPromise(a,s,r).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?o(e):i(t instanceof Xy?t:new Xy({type:Nc.KEY_SYSTEM_ERROR,details:jc.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};o(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===Au&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const s=function(e,t,i,s){let r;switch(e){case du.FAIRPLAY:r=["cenc","sinf"];break;case du.WIDEVINE:case du.PLAYREADY:r=["cenc"];break;case du.CLEARKEY:r=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,s){return[{initDataTypes:e,persistentState:s.persistentState||"optional",distinctiveIdentifier:s.distinctiveIdentifier||"optional",sessionTypes:s.sessionTypes||[s.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:s.audioRobustness||"",encryptionScheme:s.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:s.videoRobustness||"",encryptionScheme:s.videoEncryptionScheme||null})))}]}(r,t,i,s)}(e,t,i,this.config.drmSystemOptions),r=this.keySystemAccessPromises[e];let o=null==r?void 0:r.keySystemAccess;if(!o){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(s)}`),o=this.requestMediaKeySystemAccess(e,s);const t=this.keySystemAccessPromises[e]={keySystemAccess:o};return o.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),o.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const s=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),s.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return o.then((()=>r.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${Ou(e.keyId||[])}`);const s=i.createSession(),r={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:s,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),s=this.getKeyIdString(t),r="cenc";this.keyIdToKeySessionPromise[s]=this.generateRequestWithPreferredKeySession(i,r,t.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(e)}getKeyIdString(e){if(!e)throw new Error("Could not read keyId of undefined decryptdata");if(null===e.keyId)throw new Error("keyId is null");return Ou(e.keyId)}updateKeySession(e,t){var i;const s=e.mediaKeysSession;return this.log(`Updating key-session "${s.sessionId}" for keyID ${Ou((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),s.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const s=yu(this.config),r=e.map(fu).filter((e=>!!e&&-1!==s.indexOf(e)));return this.getKeySystemSelectionPromise(r).then((({keySystem:e})=>{const s=gu(e);s?t(s):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),s=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${s}`);let r=this.keyIdToKeySessionPromise[i];return r||(r=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:r})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${s}`),this.attemptSetMediaKeys(i,r).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:r,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),r.catch((e=>this.handleError(e)))),r}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof Xy?this.hls.trigger(Oc.ERROR,e.data):this.hls.trigger(Oc.ERROR,{type:Nc.KEY_SYSTEM_ERROR,details:jc.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=fu(e.keyFormat),i=t?[t]:yu(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=yu(this.config)),0===e.length)throw new Xy({type:Nc.KEY_SYSTEM_ERROR,details:jc.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(e)}_onMediaEncrypted(e){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let s,r;if("sinf"===t&&this.config.drmSystems[du.FAIRPLAY]){const e=zu(new Uint8Array(i));try{const t=ou(JSON.parse(e).sinf),i=tp(new Uint8Array(t));if(!i)return;s=i.subarray(8,24),r=du.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),s=i.getUint32(0);if(e.byteLength!==s&&s>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=Ou(new Uint8Array(e,12,16));const r=i.getUint32(28);if(0===t.version){if(s-32this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-key-match")));break}}l||(l=a[o]=this.getKeySystemSelectionPromise([r]).then((({keySystem:e,mediaKeys:r})=>{var a;this.throwIfDestroyed();const n=new hp("ISO-23001-7",o,null!=(a=gu(e))?a:"");return n.pssh=new Uint8Array(i),n.keyId=s,this.attemptSetMediaKeys(e,r).then((()=>{this.throwIfDestroyed();const s=this.createMediaKeySessionContext({decryptdata:n,keySystem:e,mediaKeys:r});return this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const s=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(s),s.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(s),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,s){var r,o;const a=null==(r=this.config.drmSystems)||null==(o=r[e.keySystem])?void 0:o.generateRequest;if(a)try{const s=a.call(this.hls,t,i,e);if(!s)throw new Error("Invalid response from configured generateRequest filter");t=s.initDataType,i=e.decryptdata.pssh=s.initData?new Uint8Array(s.initData):null}catch(e){var n;if(this.warn(e.message),null!=(n=this.hls)&&n.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${s}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${s}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const d=new Hg,h=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void d.emit("error",new Error("invalid state"));const{messageType:s,message:r}=t;this.log(`"${s}" message event for session "${i.sessionId}" message size: ${r.byteLength}`),"license-request"===s||"license-renewal"===s?this.renewLicense(e,r).catch((e=>{this.handleError(e),d.emit("error",e)})):"license-release"===s?e.keySystem===du.FAIRPLAY&&(this.updateKeySession(e,nu("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${s}"`)},c=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void d.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;d.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",h),e.mediaKeysSession.addEventListener("keystatuseschange",c);const u=new Promise(((e,t)=>{d.on("error",t),d.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new Xy({type:Nc.KEY_SYSTEM_ERROR,details:jc.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new Xy({type:Nc.KEY_SYSTEM_ERROR,details:jc.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new Xy({type:Nc.KEY_SYSTEM_ERROR,details:jc.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw d.removeAllListeners(),this.removeSession(e),t})).then((()=>(d.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${Ou("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${Ou(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),s=this.getServerCertificateUrl(e);return s?(this.log(`Fetching server certificate for "${e}"`),new Promise(((r,o)=>{const a={responseType:"arraybuffer",url:s},n=t.certLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{r(e.data)},onError:(t,i,r,n)=>{o(new Xy({type:Nc.KEY_SYSTEM_ERROR,details:jc.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:Rc({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${s}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,r)=>{o(new Xy({type:Nc.KEY_SYSTEM_ERROR,details:jc.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${s})`))},onAbort:(e,t,i)=>{o(new Error("aborted"))}};i.load(a,l,d)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((s,r)=>{e.setServerCertificate(i).then((r=>{this.log(`setServerCertificate ${r?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),s(e)})).catch((e=>{r(new Xy({type:Nc.KEY_SYSTEM_ERROR,details:jc.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new Xy({type:Nc.KEY_SYSTEM_ERROR,details:jc.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const s=(new DOMParser).parseFromString(i,"application/xml"),r=s.querySelectorAll("HttpHeader");if(r.length>0){let t;for(let i=0,s=r.length;i in key message");return nu(atob(l))}setupLicenseXHR(e,t,i,s){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return r.call(this.hls,e,t,i,s)})).catch((o=>{if(!i.decryptdata)throw o;return e.open("POST",t,!0),r.call(this.hls,e,t,i,s)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||s}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:s}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((s,r)=>{const o=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${o}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return r(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,o,e)}catch(e){this.error(e)}s(t)}else{const n=i.errorRetry,l=n?n.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)r(new Xy({type:Nc.KEY_SYSTEM_ERROR,details:jc.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:o,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${o}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(s,r)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,o,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==du.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const e=this.media,t=this.mediaKeySessions;e&&(e.removeEventListener("encrypted",this.onMediaEncrypted),e.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},hp.clearKeyUriToKeyIdMap();const i=t.length;Qy.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=e;if(t){this.log(`Remove licenses and keys and close session ${t.sessionId}`),e._onmessage&&(t.removeEventListener("message",e._onmessage),e._onmessage=void 0),e._onkeystatuseschange&&(t.removeEventListener("keystatuseschange",e._onkeystatuseschange),e._onkeystatuseschange=void 0),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const s=this.mediaKeySessions.indexOf(e);return s>-1&&this.mediaKeySessions.splice(s,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}Qy.CDMCleanupPromise=void 0;class Xy extends Error{constructor(e,t){super(t),this.data=void 0,e.error||(e.error=new Error(t)),this.data=e,e.err=e.error}}var Zy,eA,tA;!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"}(Zy||(Zy={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(eA||(eA={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(tA||(tA={}));const iA={[tA.OBJECT]:["br","d","ot","tb"],[tA.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[tA.SESSION]:["cid","pr","sf","sid","st","v"],[tA.STATUS]:["bs","rtp"]};class sA{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof sA?e:new sA(e)))),this.value=e,this.params=t}}class rA{constructor(e){this.description=void 0,this.description=e}}function oA(e,t,i,s){return new Error(`failed to ${e} "${r=t,Array.isArray(r)?JSON.stringify(r):r instanceof Map?"Map{}":r instanceof Set?"Set{}":"object"==typeof r?JSON.stringify(r):String(r)}" as ${i}`,{cause:s});var r}const aA="Bare Item";const nA=/[\x00-\x1f\x7f]+/;function lA(e,t,i){return oA("serialize",e,t,i)}function dA(e){if(!1===ArrayBuffer.isView(e))throw lA(e,"Byte Sequence");return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function hA(e){if(function(e){return e<-999999999999999||99999999999999912)throw lA(e,"Decimal");const i=t.toString();return i.includes(".")?i:`${i}.0`}function pA(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw lA(t,"Token");return t}function fA(e){switch(typeof e){case"number":if(!Mc(e))throw lA(e,aA);return Number.isInteger(e)?hA(e):uA(e);case"string":return function(e){if(nA.test(e))throw lA(e,"String");return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return pA(e);case"boolean":return function(e){if("boolean"!=typeof e)throw lA(e,"Boolean");return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${hA(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return dA(e);if(e instanceof rA)return pA(e);default:throw lA(e,aA)}}function mA(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw lA(e,"Key");return e}function gA(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${mA(e)}`:`;${mA(e)}=${fA(t)}`)).join("")}function yA(e){return e instanceof sA?`${fA(e.value)}${gA(e.params)}`:fA(e)}function AA(e,t={whitespace:!0}){if("object"!=typeof e)throw lA(e,"Dict");const i=e instanceof Map?e.entries():Object.entries(e),s=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof sA==!1&&(t=new sA(t));let i=mA(e);var s;return!0===t.value?i+=gA(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(s=t).value.map(yA).join(" ")})${gA(s.params)}`:i+=yA(t)),i})).join(`,${s}`)}const bA=e=>Math.round(e),vA=e=>100*bA(e/100),_A={br:bA,d:bA,bl:vA,dl:vA,mtp:vA,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),s=new URL(t);if(i.origin!==s.origin)return e;const r=i.pathname.split("/").slice(1),o=s.pathname.split("/").slice(1,-1);for(;r[0]===o[0];)r.shift(),o.shift();for(;o.length;)o.shift(),r.unshift("..");return r.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:vA,tb:bA};function SA(e,t){const i={};if(null==e||"object"!=typeof e)return i;const s=Object.keys(e).sort(),r=Bc({},_A,null==t?void 0:t.formatters),o=null==t?void 0:t.filter;return s.forEach((s=>{if(null!=o&&o(s))return;let a=e[s];const n=r[s];n&&(a=n(a,t)),"v"===s&&1===a||"pr"==s&&1===a||(e=>"number"==typeof e?Mc(e):null!=e&&""!==e&&!1!==e)(a)&&((e=>"ot"===e||"sf"===e||"st"===e)(s)&&"string"==typeof a&&(a=new rA(a)),i[s]=a)})),i}function EA(e,t={}){return e?function(e,t){return AA(e,t)}(SA(e,t),Bc({whitespace:!1},t)):""}function wA(e,t,i){return Bc(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),s=Object.entries(iA).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),r=i.reduce(((e,t)=>{var i;const[r,o]=t,a=(null==(i=s.find((e=>e[1].includes(r))))?void 0:i[0])||tA.REQUEST;return null!=e[a]||(e[a]={}),e[a][r]=o,e}),{});return Object.entries(r).reduce(((e,[i,s])=>(e[i]=EA(s,t),e)),{})}(t,i))}const TA=/CMCD=[^&#]+/;function kA(e,t,i){const s=function(e,t={}){if(!e)return"";const i=EA(e,t);return`CMCD=${encodeURIComponent(i)}`}(t,i);if(!s)return e;if(TA.test(e))return e.replace(TA,s);const r=e.includes("?")?"&":"?";return`${e}${r}${s}`}function LA(e,t,i,s){e&&Object.keys(t).forEach((r=>{const o=e.filter((e=>e.groupId===r)).map((e=>{const o=Bc({},e);return o.details=void 0,o.attrs=new qc(o.attrs),o.url=o.attrs.URI=CA(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),o.groupId=o.attrs["GROUP-ID"]=t[r],o.attrs["PATHWAY-ID"]=s,o}));e.push(...o)}))}function CA(e,t,i,s){const{HOST:r,PARAMS:o,[i]:a}=s;let n;t&&(n=null==a?void 0:a[t],n&&(e=n));const l=new self.URL(e);return r&&!n&&(l.host=r),o&&Object.keys(o).sort().forEach((e=>{e&&l.searchParams.set(e,o[e])})),l.href}const DA=/^age:\s*[\d.]+\s*$/im;class xA{constructor(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=e&&e.xhrSetup||null,this.stats=new Qc,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,s=this.stats;s.loading.first=0,s.loaded=0,s.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return r(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),r(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,s)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const s=t.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:o}=i.loadPolicy;if(s)for(const t in s)e.setRequestHeader(t,s[t]);t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,self.clearTimeout(this.requestTimeout),i.timeout=r&&Mc(r)?r:o,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const s=t.readyState,r=this.config;if(!i.aborted&&s>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===s)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const s=t.status,o="text"!==t.responseType;if(s>=200&&s<300&&(o&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const r=o?t.response:t.responseText,a="arraybuffer"===t.responseType?r.byteLength:r.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const n=this.callbacks.onProgress;if(n&&n(i,e,r,t),!this.callbacks)return;const l={url:t.responseURL,data:r,code:s};this.callbacks.onSuccess(l,i,e,t)}else{const o=r.loadPolicy.errorRetry;If(o,i.retry,!1,{url:e.url,data:void 0,code:s})?this.retry(o):($c.error(`${s} while loading ${e.url}`),this.callbacks.onError({code:s,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(If(e,this.stats.retry,!0))this.retry(e);else{var t;$c.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=Rf(e,i.retry),i.retry++,$c.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)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&DA.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const RA=/(\d+)-(\d+)\/(\d+)/;class PA{constructor(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||IA,this.controller=new self.AbortController,this.stats=new Qc}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now();const r=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Bc({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),o=i.onProgress,a="arraybuffer"===e.responseType,n=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:d}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,r),self.clearTimeout(this.requestTimeout),t.timeout=l&&Mc(l)?l:d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),t.timeout),self.fetch(this.request).then((r=>{this.response=this.loader=r;const n=Math.max(self.performance.now(),s.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),d-(n-s.loading.start)),!r.ok){const{status:e,statusText:t}=r;throw new BA(t||"fetch, bad network response",e,r)}return s.loading.first=n,s.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=RA.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(Mc(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(r.headers)||s.total,o&&Mc(t.highWaterMark)?this.loadProgressively(r,s,e,t.highWaterMark,o):a?r.arrayBuffer():"json"===e.responseType?r.json():r.text()})).then((r=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),s.loading.end=Math.max(self.performance.now(),s.loading.first);const l=r[n];l&&(s.loaded=s.total=l);const d={url:a.url,data:r,code:a.status};o&&!Mc(t.highWaterMark)&&o(s,e,r,a),i.onSuccess(d,s,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),s.aborted)return;const r=t&&t.code||0,o=t?t.message:null;i.onError({code:r,text:o},e,t?t.details:null,s)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,s=0,r){const o=new zm,a=e.body.getReader(),n=()=>a.read().then((a=>{if(a.done)return o.dataLength&&r(t,i,o.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,d=l.length;return t.loaded+=d,d=s&&r(t,i,o.flush(),e)):r(t,i,l,e),n()})).catch((()=>Promise.reject()));return n()}}function IA(e,t){return new self.Request(e.url,t)}class BA extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const MA=/\s/,FA={newCue(e,t,i,s){const r=[];let o,a,n,l,d;const h=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const s=Dy(d.trim()),p=By(t,i,s);null!=e&&null!=(c=e.cues)&&c.getCueById(p)||(a=new h(t,i,s),a.id=p,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),r.push(a))}return e&&r.length&&(r.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),r.forEach((t=>Xp(e,t)))),r}},UA=Rc(Rc({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:xA,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:class{constructor(e){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:s,media:r}=i;if(!e||!r)return;const o=performance.now(),a=t?t.stats:e.stats,n=t?t.duration:e.duration,l=o-a.loading.start,d=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=d)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!s||r.paused||!r.playbackRate||!r.readyState)return;const h=i.mainForwardBufferInfo;if(null===h)return;const c=this.bwEstimator.getEstimateTTFB(),u=Math.abs(r.playbackRate);if(l<=Math.max(c,n/(2*u)*1e3))return;const p=h.len/u,f=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&f>-1,g=this.getBwEstimate(),y=i.levels,A=y[e.level],b=a.total||Math.max(a.loaded,Math.round(n*A.averageBitrate/8));let v=m?l-f:l;v<1&&m&&(v=Math.min(l,8*a.loaded/g));const _=m?1e3*a.loaded/v:0,S=_?(b-a.loaded)/_:8*b/g+c/1e3;if(S<=p)return;const E=_?8*_:g;let w,T=Number.POSITIVE_INFINITY;for(w=e.level-1;w>d;w--){const e=y[w].maxBitrate;if(T=this.getTimeToLoadFrag(c/1e3,E,n*e,!y[w].details),T=S)return;if(T>10*n)return;i.nextLoadLevel=i.nextAutoLevel=w,m?this.bwEstimator.sample(l-Math.min(c,f),a.loaded):this.bwEstimator.sampleTTFB(l);const k=y[w].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>k&&this.resetEstimator(k),this.clearTimer(),$c.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${p.toFixed(3)} s\n Estimated load time for current fragment: ${S.toFixed(3)} s\n Estimated load time for down switch fragment: ${T.toFixed(3)} s\n TTFB estimate: ${0|f} ms\n Current BW estimate: ${Mc(g)?0|g:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${w} @ ${0|k} bps`),i.trigger(Oc.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&($c.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new Jf(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Oc.FRAG_LOADING,this.onFragLoading,this),e.on(Oc.FRAG_LOADED,this.onFragLoaded,this),e.on(Oc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Oc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Oc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Oc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Oc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(Oc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Oc.FRAG_LOADING,this.onFragLoading,this),e.off(Oc.FRAG_LOADED,this.onFragLoaded,this),e.off(Oc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Oc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Oc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Oc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Oc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(Oc.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(e,t){const i=t.frag;if(!this.ignoreFragment(i)){var s;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(s=t.part)?s:null;this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(e,t){this.clearTimer()}onError(e,t){if(!t.fatal)switch(t.details){case jc.BUFFER_ADD_CODEC_ERROR:case jc.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case jc.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:s}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=s?s.stats:e.stats,r=t-i.loading.start,o=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&o>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(r-Math.min(e,o),i.loaded)}else this.bwEstimator.sampleTTFB(r)}break}}}getTimeToLoadFrag(e,t,i,s){return e+i/t+(s?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:s}=t.stats,r=s.end-s.start;Mc(r)&&(this.lastLevelLoadSec=r/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const s=i?i.stats:t.stats;if(t.type===$p&&this.bwEstimator.sampleTTFB(s.loading.first-s.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,r=this.hls.levels[t.level],o=(r.loaded?r.loaded.bytes:0)+s.loaded,a=(r.loaded?r.loaded.duration:0)+e;r.loaded={bytes:o,duration:a},r.realBitrate=Math.round(8*o/a)}if(t.bitrateTest){const e={stats:s,frag:t,part:i,id:t.type};this.onFragBuffered(Oc.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:s}=t,r=null!=s&&s.stats.loaded?s.stats:i.stats;if(r.aborted)return;if(this.ignoreFragment(i))return;const o=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(o,r.loaded),r.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=o/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==$p||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),s=this.hls.config.maxStarvationDelay,r=this.findBestLevel(i,t,e,0,s,1,1);if(r>-1)return r;const o=this.hls.firstLevel,a=Math.min(Math.max(o,t),e);return $c.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${o} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const s=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,s)&&t[e].loadError<=t[s].loadError)return e}return this._nextAutoLevel=s,this.nextAutoLevelKey=this.getAutoLevelKey(),s}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:s,config:r,minAutoLevel:o}=i,a=t?t.duration:e?e.duration:0,n=this.getBwEstimate(),l=this.getStarvationDelay();let d=r.abrBandWidthFactor,h=r.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(n,o,s,l,0,d,h);if(e>=0)return e}let c=a?Math.min(a,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){c=(a?Math.min(a,r.maxLoadingDelay):r.maxLoadingDelay)-e,$c.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),d=h=1}}const u=this.findBestLevel(n,o,s,l,c,d,h);if($c.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const p=i.levels[o],f=i.levels[i.loadLevel];return(null==p?void 0:p.bitrate)<(null==f?void 0:f.bitrate)?o:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,s=e.mainForwardBufferInfo;return(s?s.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,s,r,o,a){var n;const l=s+r,d=this.lastLoadedFragLevel,h=-1===d?this.hls.firstLevel:d,{fragCurrent:c,partCurrent:u}=this,{levels:p,allAudioTracks:f,loadLevel:m,config:g}=this.hls;if(1===p.length)return 0;const y=p[h],A=!(null==y||null==(n=y.details)||!n.live),b=-1===m||-1===d;let v,_="SDR",S=(null==y?void 0:y.frameRate)||0;const{audioPreference:E,videoPreference:w}=g,T=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const s=t.channels||"2";return i.channels[s]=(i.channels[s]||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:{}})}(f));if(b){if(-1!==this.firstSelection)return this.firstSelection;const s=this.codecTiers||(this.codecTiers=function(e,t,i,s){return e.slice(i,s+1).reduce(((e,i)=>{if(!i.codecSet)return e;const s=i.audioGroups;let r=e[i.codecSet];r||(e[i.codecSet]=r={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!s,fragmentError:0}),r.minBitrate=Math.min(r.minBitrate,i.bitrate);const o=Math.min(i.height,i.width);return r.minHeight=Math.min(r.minHeight,o),r.minFramerate=Math.min(r.minFramerate,i.frameRate),r.maxScore=Math.max(r.maxScore,i.score),r.fragmentError+=i.fragmentError,r.videoRanges[i.videoRange]=(r.videoRanges[i.videoRange]||0)+1,s&&s.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(r.hasDefaultAudio=r.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{r.channels[e]=(r.channels[e]||0)+i.channels[e]})))})),e}),{})}(p,T,t,i)),r=function(e,t,i,s,r){const o=Object.keys(e),a=null==s?void 0:s.channels,n=null==s?void 0:s.audioCodec,l=a&&2===parseInt(a);let d=!0,h=!1,c=1/0,u=1/0,p=1/0,f=0,m=[];const{preferHDR:g,allowedVideoRanges:y}=Xf(t,r);for(let t=o.length;t--;){const i=e[o[t]];d=i.channels[2]>0,c=Math.min(c,i.minHeight),u=Math.min(u,i.minFramerate),p=Math.min(p,i.minBitrate);const s=y.filter((e=>i.videoRanges[e]>0));s.length>0&&(h=!0,m=s)}c=Mc(c)?c:0,u=Mc(u)?u:0;const A=Math.max(1080,c),b=Math.max(30,u);p=Mc(p)?p:i,i=Math.max(p,i),h||(t=void 0,m=[]);const v=o.reduce(((t,s)=>{const r=e[s];if(s===t)return t;if(r.minBitrate>i)return Zf(s,`min bitrate of ${r.minBitrate} > current estimate of ${i}`),t;if(!r.hasDefaultAudio)return Zf(s,"no renditions with default or auto-select sound found"),t;if(n&&s.indexOf(n.substring(0,4))%5!=0)return Zf(s,`audio codec preference "${n}" not found`),t;if(a&&!l){if(!r.channels[a])return Zf(s,`no renditions with ${a} channel sound found (channels options: ${Object.keys(r.channels)})`),t}else if((!n||l)&&d&&0===r.channels[2])return Zf(s,"no renditions with stereo sound found"),t;return r.minHeight>A?(Zf(s,`min resolution of ${r.minHeight} > maximum of ${A}`),t):r.minFramerate>b?(Zf(s,`min framerate of ${r.minFramerate} > maximum of ${b}`),t):m.some((e=>r.videoRanges[e]>0))?r.maxScore=Ep(t)||r.fragmentError>e[t].fragmentError)?t:(f=r.maxScore,s):(Zf(s,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0);return{codecSet:v,videoRanges:m,preferHDR:g,minFramerate:u,minBitrate:p}}(s,_,e,E,w),{codecSet:o,videoRanges:a,minFramerate:n,minBitrate:l,preferHDR:d}=r;v=o,_=d?a[a.length-1]:a[0],S=n,e=Math.max(e,l),$c.log(`[abr] picked start tier ${JSON.stringify(r)}`)}else v=null==y?void 0:y.codecSet,_=null==y?void 0:y.videoRange;const k=u?u.duration:c?c.duration:0,L=this.bwEstimator.getEstimateTTFB()/1e3,C=[];for(let n=i;n>=t;n--){var D;const t=p[n],c=n>h;if(!t)continue;if(g.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&Yf(t,T,_,S,e,E)?(t.supportedPromise=Qf(t,T,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,s=i.indexOf(t);e.error?$c.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${s} ${JSON.stringify(e)}`):e.supported||($c.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${s} ${JSON.stringify(e)}`),s>-1&&i.length>1&&($c.log(`[abr] Removing unsupported level ${s}`),this.hls.removeLevel(s)))}))):t.supportedResult=qf}if(v&&t.codecSet!==v||_&&t.videoRange!==_||c&&S>t.frameRate||!c&&S>0&&S=2*k&&0===r?p[n].averageBitrate:p[n].maxBitrate,P=this.getTimeToLoadFrag(L,x,R*w,void 0===f);if(x>=R&&(n===d||0===t.loadError&&0===t.fragmentError)&&(P<=L||!Mc(P)||A&&!this.bitrateTestDelay||P${n} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-R)} ttfb:${L.toFixed(1)} avgDuration:${w.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${P.toFixed(1)} firstSelection:${b} codecSet:${v} videoRange:${_} hls.loadLevel:${m}`)),b&&(this.firstSelection=n),n}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,s=Math.min(Math.max(e,i),t);this._nextAutoLevel!==s&&(this.nextAutoLevelKey="",this._nextAutoLevel=s)}},bufferController:class{constructor(e){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(Oc.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&$c.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=yp(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=$c.log.bind($c,t),this.warn=$c.warn.bind($c,t),this.error=$c.error.bind($c,t),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){const{hls:e}=this;e.on(Oc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Oc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Oc.BUFFER_RESET,this.onBufferReset,this),e.on(Oc.BUFFER_APPENDING,this.onBufferAppending,this),e.on(Oc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Oc.BUFFER_EOS,this.onBufferEos,this),e.on(Oc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Oc.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(Oc.FRAG_PARSED,this.onFragParsed,this),e.on(Oc.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(Oc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Oc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Oc.BUFFER_RESET,this.onBufferReset,this),e.off(Oc.BUFFER_APPENDING,this.onBufferAppending,this),e.off(Oc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Oc.BUFFER_EOS,this.onBufferEos,this),e.off(Oc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Oc.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(Oc.FRAG_PARSED,this.onFragParsed,this),e.off(Oc.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Xg(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(e,t){let i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,s=yp(this.appendSource);if(i&&s){var r;const e=this.mediaSource=new s;this.log(`created media source: ${null==(r=e.constructor)?void 0:r.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const s=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||s&&e instanceof s,ey(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;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)),e&&(e.removeEventListener("emptied",this._onMediaEmptied),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&ey(e),e.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(Oc.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(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)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,s=Object.keys(t);if(s.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var s;const{id:r,codec:o,levelCodec:a,container:n,metadata:l}=t[e],d=Lp(i.codec,i.levelCodec),h=null==d?void 0:d.replace(Zg,"$1");let c=Lp(o,a);const u=null==(s=c)?void 0:s.replace(Zg,"$1");if(c&&h!==u){"audio"===e.slice(0,5)&&(c=kp(c,this.appendSource));const t=`${n};codecs=${c}`;this.appendChangeType(e,t),this.log(`switching codec ${d} to ${c}`),this.tracks[e]={buffer:i.buffer,codec:o,container:n,levelCodec:a,metadata:l,id:r}}}}else this.pendingTracks[e]=t[e]})),i)return;const r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${s.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,s={execute:()=>{const s=this.sourceBuffer[e];s&&(this.log(`changing ${e} sourceBuffer type to ${t}`),s.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(s,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:s,tracks:r}=this,{data:o,type:a,frag:n,part:l,chunkMeta:d}=t,h=d.buffering[a],c=self.performance.now();h.start=c;const u=n.stats.buffering,p=l?l.stats.buffering:null;0===u.start&&(u.start=c),p&&0===p.start&&(p.start=c);const f=r.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==f?void 0:f.container)&&(m=!this.lastMpegAudioChunk||1===d.id||this.lastMpegAudioChunk.sn!==d.sn,this.lastMpegAudioChunk=d);const g=n.start,y={execute:()=>{if(h.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=g-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${g} (delta: ${t}) sn: ${n.sn})`),e.timestampOffset=g)}}this.appendExecutor(o,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();h.executeEnd=h.end=e,0===u.first&&(u.first=e),p&&0===p.first&&(p.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=um.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(Oc.BUFFER_APPENDED,{type:a,frag:n,part:l,chunkMeta:d,parent:n.type,timeRanges:i})},onError:e=>{const t={type:Nc.MEDIA_ERROR,parent:n.type,details:jc.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:n,part:l,chunkMeta:d,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=jc.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=jc.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(Oc.ERROR,t)}};s.append(y,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,s=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(Oc.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(s(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(s(e),e)}))}onFragParsed(e,t){const{frag:i,part:s}=t,r=[],o=s?s.elementaryStreams:i.elementaryStreams;o[eu]?r.push("audiovideo"):(o[Xc]&&r.push("audio"),o[Zc]&&r.push("video"));0===r.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,s&&(s.stats.buffering.end=e);const t=s?s.stats:i.stats;this.hls.trigger(Oc.FRAG_BUFFERED,{frag:i,part:s,stats:t,id:i.type})}),r)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const s=this.sourceBuffer[i];return!s||t.type&&t.type!==i||(s.ending=!0,s.ended||(s.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(s&&!s.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const s=e.config,r=i.currentTime,o=t.levelTargetDuration,a=t.live&&null!==s.liveBackBufferLength?s.liveBackBufferLength:s.backBufferLength;if(Mc(a)&&a>0){const e=Math.max(a,o),t=Math.floor(r/o)*o-e;this.flushBackBuffer(r,o,t)}if(Mc(s.frontBufferFlushThreshold)&&s.frontBufferFlushThreshold>0){const e=Math.max(s.maxBufferLength,s.frontBufferFlushThreshold),t=Math.max(e,o),i=Math.floor(r/o)*o+t;this.flushFrontBuffer(r,o,i)}}flushBackBuffer(e,t,i){const{details:s,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((o=>{const a=r[o];if(a){const r=um.getBuffered(a);if(r.length>0&&i>r.start(0)){if(this.hls.trigger(Oc.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=s&&s.live)this.hls.trigger(Oc.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&r.end(r.length-1)-e<2*t)return void this.log(`Cannot flush ${o} back buffer while SourceBuffer is in ended state`);this.hls.trigger(Oc.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:o})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((r=>{const o=s[r];if(o){const s=um.getBuffered(o),a=s.length;if(a<2)return;const n=s.start(a-1),l=s.end(a-1);if(i>n||e>=n&&e<=l)return;if(o.ended&&e-l<2*t)return void this.log(`Cannot flush ${r} front buffer while SourceBuffer is in ended state`);this.hls.trigger(Oc.BUFFER_FLUSHING,{startOffset:n,endOffset:1/0,type:r})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:s}=this,r=e.fragments[0].start+e.totalduration,o=i.duration,a=Mc(s.duration)?s.duration:0;e.live&&t.config.liveDurationInfinity?(s.duration=1/0,this.updateSeekableRange(e)):(r>a&&r>o||!Mc(o))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),s.duration=r)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const s=Math.max(0,i[0].start),r=Math.max(s,s+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${s}-${r}.`),t.setLiveSeekableRange(s,r)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,s=Object.keys(i).length;if(s&&(!e||2===s||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(Oc.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const r in e)if(!t[r]){var s;const o=e[r];if(!o)throw Error(`source buffer exists for track ${r}, however track does not`);let a=-1===(null==(s=o.levelCodec)?void 0:s.indexOf(","))?o.levelCodec:o.codec;a&&"audio"===r.slice(0,5)&&(a=kp(a,this.appendSource));const n=`${o.container};codecs=${a}`;this.log(`creating sourceBuffer(${n})`);try{const e=t[r]=i.addSourceBuffer(n),s=r;this.addBufferListener(s,"updatestart",this._onSBUpdateStart),this.addBufferListener(s,"updateend",this._onSBUpdateEnd),this.addBufferListener(s,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(s,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(Oc.BUFFER_FLUSHED,{type:r})})),this.tracks[r]={buffer:e,codec:a,container:o.container,levelCodec:o.levelCodec,metadata:o.metadata,id:o.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:r,mimeType:n})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const s=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${s}`,t),this.hls.trigger(Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:s,fatal:!1});const r=this.operationQueue.current(e);r&&r.onError(s)}removeExecutor(e,t,i){const{media:s,mediaSource:r,operationQueue:o,sourceBuffer:a}=this,n=a[e];if(!s||!r||!n)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void o.shiftAndExecuteNext(e);const l=Mc(s.duration)?s.duration:1/0,d=Mc(r.duration)?r.duration:1/0,h=Math.max(0,t),c=Math.min(i,l,d);c>h&&(!n.ending||n.ended)?(n.ended=!1,this.log(`Removing [${h},${c}] from the ${e} SourceBuffer`),n.remove(h,c)):o.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)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`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,s=t.map((e=>i.appendBlocker(e)));Promise.all(s).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const s=this.sourceBuffer[e];if(!s)return;const r=i.bind(this,e);this.listeners[e].push({event:t,listener:r}),s.addEventListener(t,r)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:Ky,errorController:class{constructor(e){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=e,this.log=$c.log.bind($c,"[info]:"),this.warn=$c.warn.bind($c,"[warning]:"),this.error=$c.error.bind($c,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Oc.ERROR,this.onError,this),e.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Oc.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Oc.ERROR,this.onError,this),e.off(Oc.ERROR,this.onErrorOut,this),e.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Oc.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===$p?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,s;if(t.fatal)return;const r=this.hls,o=t.context;switch(t.details){case jc.FRAG_LOAD_ERROR:case jc.FRAG_LOAD_TIMEOUT:case jc.KEY_LOAD_ERROR:case jc.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case jc.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:Of,flags:zf});case jc.FRAG_GAP:case jc.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=Nf);case jc.LEVEL_EMPTY_ERROR:case jc.LEVEL_PARSING_ERROR:{var a,n;const e=t.parent===$p?t.level:r.loadLevel;t.details===jc.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(n=a.levelDetails)&&n.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case jc.LEVEL_LOAD_ERROR:case jc.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==o?void 0:o.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,o.level)));case jc.AUDIO_TRACK_LOAD_ERROR:case jc.AUDIO_TRACK_LOAD_TIMEOUT:case jc.SUBTITLE_LOAD_ERROR:case jc.SUBTITLE_TRACK_LOAD_TIMEOUT:if(o){const e=r.levels[r.loadLevel];if(e&&(o.type===Wp&&e.hasAudioGroup(o.groupId)||o.type===Vp&&e.hasSubtitleGroup(o.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,r.loadLevel),t.errorAction.action=Nf,void(t.errorAction.flags=Wf)}return;case jc.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=r.levels[r.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:Nf,flags:Vf,hdcpLevel:i}:this.keySystemError(t)}return;case jc.BUFFER_ADD_CODEC_ERROR:case jc.REMUX_ALLOC_ERROR:case jc.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(s=t.level)?s:r.loadLevel));case jc.INTERNAL_EXCEPTION:case jc.BUFFER_APPENDING_ERROR:case jc.BUFFER_FULL_ERROR:case jc.LEVEL_SWITCH_ERROR:case jc.BUFFER_STALLED_ERROR:case jc.BUFFER_SEEK_OVER_HOLE:case jc.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:Of,flags:zf})}t.type===Nc.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=xf(this.hls.config.playlistLoadPolicy,e),s=this.playlistError++;if(If(i,s,Df(e),e.response))return{action:Gf,flags:zf,retryConfig:i,retryCount:s};const r=this.getLevelSwitchAction(e,t);return i&&(r.retryConfig=i,r.retryCount=s),r}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),s=t.levels[i],{fragLoadPolicy:r,keyLoadPolicy:o}=t.config,a=xf(e.details.startsWith("key")?o:r,e),n=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(s){e.details!==jc.FRAG_GAP&&s.fragmentError++;if(If(a,n,Df(e),e.response))return{action:Gf,flags:zf,retryConfig:a,retryCount:n}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=n),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const s=this.hls.levels[t];if(s){var r,o;const t=e.details;s.loadError++,t===jc.BUFFER_APPEND_ERROR&&s.fragmentError++;let l=-1;const{levels:d,loadLevel:h,minAutoLevel:c,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const p=null==(r=e.frag)?void 0:r.type,f=(p===Hp&&t===jc.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===jc.BUFFER_ADD_CODEC_ERROR||t===jc.BUFFER_APPEND_ERROR))&&d.some((({audioCodec:e})=>s.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===jc.BUFFER_ADD_CODEC_ERROR||t===jc.BUFFER_APPEND_ERROR)&&d.some((({codecSet:e,audioCodec:t})=>s.codecSet!==e&&s.audioCodec===t)),{type:g,groupId:y}=null!=(o=e.context)?o:{};for(let i=d.length;i--;){const r=(i+h)%d.length;if(r!==h&&r>=c&&r<=u&&0===d[r].loadError){var a,n;const i=d[r];if(t===jc.FRAG_GAP&&p===$p&&e.frag){const t=d[r].details;if(t){const i=Mf(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(g===Wp&&i.hasAudioGroup(y)||g===Vp&&i.hasSubtitleGroup(y))continue;if(p===Hp&&null!=(a=s.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||p===Jp&&null!=(n=s.subtitleGroups)&&n.some((e=>i.hasSubtitleGroup(e)))||f&&s.audioCodec===i.audioCodec||!f&&s.audioCodec!==i.audioCodec||m&&s.codecSet===i.codecSet)continue}l=r;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:Nf,flags:zf,nextAutoLevel:l}}return{action:Nf,flags:Wf}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case Of:break;case Nf:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===jc.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()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:s,hdcpLevel:r,nextAutoLevel:o}=i;switch(s){case zf:this.switchLevel(e,o);break;case Vf:r&&(t.maxHdcpLevel=uf[uf.indexOf(r)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,o)}switchLevel(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)}},fpsController:class{constructor(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()}setStreamController(e){this.streamController=e}registerListeners(){this.hls.on(Oc.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(Oc.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const s=performance.now();if(t){if(this.lastTime){const e=s-this.lastTime,r=i-this.lastDroppedFrames,o=t-this.lastDecodedFrames,a=1e3*r/e,n=this.hls;if(n.trigger(Oc.FPS_DROP,{currentDropped:r,currentDecoded:o,totalDroppedFrames:i}),a>0&&r>n.config.fpsDroppedMonitoringThreshold*o){let e=n.currentLevel;$c.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===n.autoLevelCapping||n.autoLevelCapping>=e)&&(e-=1,n.trigger(Oc.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:n.currentLevel}),n.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=s,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:Au,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},{cueHandler:FA,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends Gm{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",Jp),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Oc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Oc.ERROR,this.onError,this),e.on(Oc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Oc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(Oc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Oc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(Oc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Oc.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Oc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Oc.ERROR,this.onError,this),e.off(Oc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Oc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(Oc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Oc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(Oc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Oc.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=xm,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(e,t){this.mainDetails=t.details}onSubtitleFragProcessed(e,t){const{frag:i,success:s}=t;if(this.fragPrevious=i,this.state=xm,!s)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let o;const a=i.start;for(let e=0;e=r[e].start&&a<=r[e].end){o=r[e];break}const n=i.start+i.duration;o?o.end=n:(o={start:a,end:n},r.push(o)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:s}=t;if(0===i&&s!==Number.POSITIVE_INFINITY){const e=s-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew bf(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new bf(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,Jp),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const s=this.levels[this.currentTrackId];null!=s&&s.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,s&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:s,levels:r}=this,{details:o,id:a}=t;if(!r)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const n=r[a];if(a>=r.length||!n)return;this.log(`Subtitle track ${a} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""},duration:${o.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(o.live||null!=(i=n.details)&&i.live){const e=this.mainDetails;if(o.deltaUpdateFailed||!e)return;const t=e.fragments[0];var d;if(n.details)l=this.alignPlaylists(o,n.details,null==(d=this.levelLastLoaded)?void 0:d.details),0===l&&t&&(l=t.start,Tf(o,l));else o.hasProgramDateTime&&e.hasProgramDateTime?(Am(o,e),l=o.fragments[0].start):t&&(l=t.start,Tf(o,l))}if(n.details=o,this.levelLastLoaded=n,a===s&&(this.startFragRequested||!this.mainDetails&&o.live||this.setStartPosition(this.mainDetails||o,l),this.tick(),o.live&&!this.fragCurrent&&this.media&&this.state===xm)){Mf(null,o.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),n.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,s=t.decryptdata,r=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=s&&s.key&&s.iv&&"AES-128"===s.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),s.key.buffer,s.iv.buffer).catch((e=>{throw r.trigger(Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const s=performance.now();r.trigger(Oc.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:s}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=xm}))}}doTick(){if(this.media){if(this.state===xm){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:s}=this,r=this.getLoadPosition(),o=um.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,s.maxBufferHole),{end:a,len:n}=o,l=this.getFwdBufferInfo(this.media,$p),d=i.details;if(n>this.getMaxBufferLength(null==l?void 0:l.len)+d.levelTargetDuration)return;const h=d.fragments,c=h.length,u=d.edge;let p=null;const f=this.fragPrevious;if(au-e?0:e;p=Mf(f,h,Math.max(h[0].start,a),t),!p&&f&&f.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=tf(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Oc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Oc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Oc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Oc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Oc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Oc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Oc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Oc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Oc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Oc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media&&(this.queuedDefaultTrack>-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))}pollTrackChange(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)}onMediaDetaching(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId);tf(this.media.textTracks).forEach((e=>{Zp(e)})),this.subtitleTrack=-1,this.media=null}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.subtitleTracks}onSubtitleTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Subtitle track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Subtitle track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!r&&t){this.selectDefaultTrack=!1;const i=em(t,e);if(i>-1)r=e[i];else{const e=em(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const o={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(Oc.SUBTITLE_TRACKS_UPDATED,o),-1!==s&&-1===this.trackId&&this.setSubtitleTrack(s)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let s=0;s-1){const e=this.tracksInGroup[s];return this.setSubtitleTrack(s),e}if(i)return null;{const i=em(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,s=t.groupId;let r=t.url;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(Oc.SUBTITLE_TRACK_LOADING,{url:r,id:i,groupId:s,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=tf(e.textTracks),i=this.currentTrack;let s;if(i&&(s=t.filter((e=>Yg(i,e)))[0],s||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==s&&(e.mode="disabled")})),s){const e=this.subtitleDisplay?"showing":"hidden";s.mode!==e&&(s.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!Mc(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e]||null;if(this.trackId=e,this.currentTrack=s,this.toggleTrackModes(),!s)return void this.hls.trigger(Oc.SUBTITLE_TRACK_SWITCH,{id:e});const r=!!s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;this.log(`Switching to subtitle-track ${e}`+(s?` "${s.name}" lang:${s.lang} group:${s.groupId}`:""));const{id:o,groupId:a="",name:n,type:l,url:d}=s;this.hls.trigger(Oc.SUBTITLE_TRACK_SWITCH,{id:o,groupId:a,name:n,type:l,url:d});const h=this.switchParams(s.url,null==i?void 0:i.details,s.details);this.loadPlaylist(h)}},timelineController:class{constructor(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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(Oc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Oc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Oc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Oc.FRAG_LOADING,this.onFragLoading,this),e.on(Oc.FRAG_LOADED,this.onFragLoaded,this),e.on(Oc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(Oc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(Oc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(Oc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(Oc.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(Oc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Oc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Oc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Oc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Oc.FRAG_LOADING,this.onFragLoading,this),e.off(Oc.FRAG_LOADED,this.onFragLoaded,this),e.off(Oc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(Oc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(Oc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(Oc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(Oc.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){const e=new vy(this,"textTrack1"),t=new vy(this,"textTrack2"),i=new vy(this,"textTrack3"),s=new vy(this,"textTrack4");this.cea608Parser1=new yy(1,e,t),this.cea608Parser2=new yy(3,i,s)}}addCues(e,t,i,s,r){let o=!1;for(let e=r.length;e--;){const s=r[e],h=(a=s[0],n=s[1],l=t,d=i,Math.min(n,d)-Math.max(a,l));if(h>=0&&(s[0]=Math.min(s[0],t),s[1]=Math.max(s[1],i),o=!0,h/(i-t)>.5))return}var a,n,l,d;if(o||r.push([t,i]),this.config.renderTextTracksNatively){const r=this.captionsTracks[e];this.Cues.newCue(r,t,i,s)}else{const r=this.Cues.newCue(null,t,i,s);this.hls.trigger(Oc.CUES_PARSED,{type:"captions",cues:r,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:s,timescale:r}){const{unparsedVttFrags:o}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:s,timescale:r}),o.length&&(this.unparsedVttFrags=[],o.forEach((e=>{this.onFragLoaded(Oc.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let s=0;s{Zp(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===Fy));if(this.config.enableWebVTT||s&&this.config.enableIMSC1){if(qg(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?tf(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let s;if(t){let i=null;for(let s=0;snull!==e)).map((e=>e.label));e.length&&$c.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(Oc.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,s=this.captionsProperties[i];s&&(s.label=e.name,e.lang&&(s.languageCode=e.lang),s.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===$p){var i,s;const{cea608Parser1:e,cea608Parser2:r,lastSn:o}=this,{cc:a,sn:n}=t.frag,l=null!=(i=null==(s=t.part)?void 0:s.index)?i:-1;e&&r&&(n!==o+1||n===o&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),r.reset()),this.lastCc=a,this.lastSn=n,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:s}=t;if(i.type===Jp)if(s.byteLength){const e=i.decryptdata,r="stats"in t;if(null==e||!e.encrypted||r){const e=this.tracks[i.level],r=this.vttCCs;r[i.cc]||(r[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===Fy?this._parseIMSC1(i,s):this._parseVTTs(t)}}else this.hls.trigger(Oc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;jy(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(Oc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{$c.log(`Failed to parse IMSC1: ${t}`),i.trigger(Oc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:s}=e,{initPTS:r,unparsedVttFrags:o}=this,a=r.length-1;if(!r[i.cc]&&-1===a)return void o.push(e);const n=this.hls;My(null!=(t=i.initSegment)&&t.data?sp(i.initSegment.data,new Uint8Array(s)):s,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),n.trigger(Oc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const r="Missing initPTS for VTT MPEGTS"===t.message;r?o.push(e):this._fallbackToIMSC1(i,s),$c.log(`Failed to parse VTT cue: ${t}`),r&&a>i.cc||n.trigger(Oc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||jy(t,this.initPTS[e.cc],(()=>{i.textCodec=Fy,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>Xp(i,e)))}else{const s=this.tracks[t];if(!s)return;const r=s.default?"default":"subtitles"+t;i.trigger(Oc.CUES_PARSED,{type:"subtitles",cues:e,track:r})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===Jp&&this.onFragLoaded(Oc.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:s}=this;if(!this.enabled||!i||!s)return;const{frag:r,samples:o}=t;if(r.type!==$p||"NONE"!==this.closedCaptionsForLevel(r))for(let e=0;eef(e[s],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==s){const{textTracks:e}=this;Object.keys(e).forEach((i=>ef(e[i],t,s)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let s=2;for(let r=0;r0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=xm):(this.loadedmetadata=!1,this.state=Bm),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case xm:this.doTickIdle();break;case Bm:{var e;const{levels:t,trackId:i}=this,s=null==t||null==(e=t[i])?void 0:e.details;if(s){if(this.waitForCdnTuneIn(s))break;this.state=Nm}break}case Im:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=xm}break}case Nm:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:s,complete:r}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Pm;const e={frag:t,part:i,payload:s.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),r&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=um.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Ff(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=xm}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=xm)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:s}=this,r=e.config;if(!i&&(this.startFragRequested||!r.startFragPrefetch)||null==t||!t[s])return;const o=t[s],a=o.details;if(!a||a.live&&this.levelLastLoaded!==o||this.waitForCdnTuneIn(a))return void(this.state=Bm);const n=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&n&&(this.bufferFlushed=!1,this.afterBufferFlushed(n,Xc,Hp));const l=this.getFwdBufferInfo(n,Hp);if(null===l)return;const{bufferedTrack:d,switchingTrack:h}=this;if(!h&&this._streamEnded(l,a))return e.trigger(Oc.BUFFER_EOS,{type:"audio"}),void(this.state=Um);const c=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,$p),u=l.len,p=this.getMaxBufferLength(null==c?void 0:c.len),f=a.fragments,m=f[0].start;let g=this.flushing?this.getLoadPosition():l.end;if(h&&i){const e=this.getLoadPosition();d&&!Kg(h.attrs,d.attrs)&&(g=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=p&&!h&&gc.end+a.targetduration;if(b||(null==c||!c.len)&&l.len){const e=this.getAppendedFrag(y.start,$p);if(null===e)return;if(A||(A=!!e.gap||!!b&&0===c.len),b&&!A||A&&l.nextStart&&l.nextStartnew bf(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:s}=this;s&&(s.abortRequests(),this.removeUnbufferedFrags(s.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=xm,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=Dm),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(e,t){this.mainDetails=t.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(Oc.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:s}=this,{details:r,id:o}=t;if(!s)return void this.warn(`Audio tracks were reset while loading level ${o}`);this.log(`Audio track ${o} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const a=s[o];let n=0;if(r.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(r);const e=this.mainDetails;if(r.deltaUpdateFailed||!e)return;var l;if(!a.details&&r.hasProgramDateTime&&e.hasProgramDateTime)Am(r,e),n=r.fragments[0].start;else n=this.alignPlaylists(r,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=r,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&r.live||this.setStartPosition(this.mainDetails||r,n),this.state!==Bm||this.waitForCdnTuneIn(r)||(this.state=xm),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{config:o,trackId:a,levels:n}=this;if(!n)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=n[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const d=l.details;if(!d)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const h=o.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let c=this.transmuxer;c||(c=this.transmuxer=new Jg(this.hls,Hp,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],p=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=s?s.index:-1,o=-1!==t,a=new pm(i.level,i.sn,i.stats.chunkCount,r.byteLength,t,o);c.push(r,p,h,"",i,s,d.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${d.startSN} ,${d.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:s,cache:new zm,complete:!1};e.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=Nm}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i.type===Hp)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(Oc.AUDIO_TRACK_SWITCHED,Rc({},e)))}this.fragBufferedComplete(i,s)}else if(!this.loadedmetadata&&i.type===$p){const e=this.videoBuffer||this.media;if(e){um.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=Om;else switch(t.details){case jc.FRAG_GAP:case jc.FRAG_PARSING_ERROR:case jc.FRAG_DECRYPT_ERROR:case jc.FRAG_LOAD_ERROR:case jc.FRAG_LOAD_TIMEOUT:case jc.KEY_LOAD_ERROR:case jc.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Hp,t);break;case jc.AUDIO_TRACK_LOAD_ERROR:case jc.AUDIO_TRACK_LOAD_TIMEOUT:case jc.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Bm||(null==(i=t.context)?void 0:i.type)!==Wp||(this.state=xm);break;case jc.BUFFER_APPEND_ERROR:case jc.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===jc.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case jc.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==Zc&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==Zc){this.flushing=!1,this.bufferFlushed=!0,this.state===Um&&(this.state=xm);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,Hp),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{details:h}=d,{audio:c,text:u,id3:p,initSegment:f}=r;if(!this.fragContextChanged(n)&&h){if(this.state=Mm,this.switchingTrack&&c&&this.completeAudioSwitch(this.switchingTrack),null!=f&&f.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,f.tracks,e,o),s.trigger(Oc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}if(c){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=c;l&&(l.elementaryStreams[Xc]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(Xc,e,t,i,s),this.bufferFragmentData(c,n,l,o)}if(null!=p&&null!=(t=p.samples)&&t.length){const e=Bc({id:i,frag:n,details:h},p);s.trigger(Oc.FRAG_PARSING_METADATA,e)}if(u){const e=Bc({id:i,frag:n,details:h},u);s.trigger(Oc.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(n)}_bufferInitSegment(e,t,i,s){if(this.state!==Mm)return;t.video&&delete t.video;const r=t.audio;if(!r)return;r.id="audio";const o=e.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${o}/${r.codec}]`),o&&1===o.split(",").length&&(r.levelCodec=o),this.hls.trigger(Oc.BUFFER_CODECS,t);const a=r.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:s,parent:i.type,data:a};this.hls.trigger(Oc.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);var r;if(this.fragCurrent=e,this.switchingTrack||s===rm||s===am)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(r=t.details)&&r.live&&!this.initPTS[e.cc]){this.log(`Waiting for video PTS in continuity counter ${e.cc} of live stream before loading audio fragment ${e.sn} of level ${this.trackId}`),this.state=Nm;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&Am(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,s=null==i?void 0:i.attrs,r=e.attrs;t&&s&&(s.CHANNELS!==r.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(Oc.AUDIO_TRACK_SWITCHED,Rc({},e))}},audioTrackController:class extends $f{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Oc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Oc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Oc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Oc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(Oc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Oc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Oc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Oc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Oc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(Oc.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Audio track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Audio track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!r&&t){const i=em(t,e,im);if(i>-1)r=e[i];else{const e=em(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(Oc.AUDIO_TRACKS_UPDATED,a);const n=this.trackId;if(-1!==s&&-1===n)this.setAudioTrack(s);else if(e.length&&-1===n){var o;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(o=this.groupIds)?void 0:o.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==Wp||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(this.requestScheduled=-1,this.checkRetry(t)))}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(e){this.selectDefaultTrack=!1,this.setAudioTrack(e)}setAudioOption(e){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const s=this.currentTrack;if(s&&tm(e,s,im))return s;const r=em(e,this.tracksInGroup,im);if(r>-1){const e=this.tracksInGroup[r];return this.setAudioTrack(r),e}if(s){let s=t.loadLevel;-1===s&&(s=t.firstAutoLevel);const r=function(e,t,i,s,r){const o=t[s],a=t.reduce(((e,t,i)=>{const s=t.uri;return(e[s]||(e[s]=[])).push(i),e}),{})[o.uri];a.length>1&&(s=Math.max.apply(Math,a));const n=o.videoRange,l=o.frameRate,d=o.codecSet.substring(0,4),h=sm(t,s,(t=>{if(t.videoRange!==n||t.frameRate!==l||t.codecSet.substring(0,4)!==d)return!1;const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return em(e,o,r)>-1}));return h>-1?h:sm(t,s,(t=>{const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return em(e,o,r)>-1}))}(e,t.levels,i,s,im);if(-1===r)return null;t.nextLoadLevel=r}if(e.channels||e.audioCodec){const t=em(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e],r=s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;if(this.log(`Switching to audio-track ${e} "${s.name}" lang:${s.lang} group:${s.groupId} channels:${s.channels}`),this.trackId=e,this.currentTrack=s,this.hls.trigger(Oc.AUDIO_TRACK_SWITCHING,Rc({},s)),r)return;const o=this.switchParams(s.url,null==i?void 0:i.details,s.details);this.loadPlaylist(o)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Zy.MANIFEST,su:!this.initialized})}catch(e){$c.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],s=this.getObjectType(t),r={d:1e3*t.duration,ot:s};s!==Zy.VIDEO&&s!==Zy.AUDIO&&s!=Zy.MUXED||(r.br=i.bitrate/1e3,r.tb=this.getTopBandwidth(s)/1e3,r.bl=this.getBufferLength(s)),this.apply(e,r)}catch(e){$c.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}))}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Oc.MEDIA_DETACHED,this.onMediaDetached,this),e.on(Oc.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(Oc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Oc.MEDIA_DETACHED,this.onMediaDetached,this),e.off(Oc.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=null}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(e,t){var i,s;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(s=t.tracks.video)?void 0:s.buffer}createData(){var e;return{v:1,sf:eA.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Bc(t,this.createData());const i=t.ot===Zy.INIT||t.ot===Zy.VIDEO||t.ot===Zy.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:s}=this;s&&(t=Object.keys(t).reduce(((e,i)=>(s.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),wA(e.headers,t)):e.url=kA(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Zy.TIMED_TEXT:"initSegment"===e.sn?Zy.INIT:"audio"===t?Zy.AUDIO:"main"===t?this.hls.audioTracks.length?Zy.VIDEO:Zy.MUXED:void 0}getTopBandwidth(e){let t,i=0;const s=this.hls;if(e===Zy.AUDIO)t=s.audioTracks;else{const e=s.maxAutoLevel,i=e>-1?e+1:s.levels.length;t=s.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Zy.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*um.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}},contentSteeringController:class{constructor(e){this.hls=void 0,this.log=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this.pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=e,this.log=$c.log.bind($c,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Oc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Oc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Oc.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Oc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Oc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Oc.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===Nf&&i.flags===Wf){const e=this.levels;let s=this.pathwayPriority,r=this.pathwayId;if(t.context){const{groupId:i,pathwayId:s,type:o}=t.context;i&&e?r=this.getPathwayForGroupId(i,o,r):s&&(r=s)}r in this.penalizedPathways||(this.penalizedPathways[r]=performance.now()),!s&&e&&(s=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),s&&s.length>1&&(this.updatePathwayPriority(s),i.resolved=this.pathwayId!==r),i.resolved||$c.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${r} levels: ${e?e.length:e} priorities: ${JSON.stringify(s)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const 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}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,s=performance.now();Object.keys(i).forEach((e=>{s-i[e]>3e5&&delete i[e]}));for(let s=0;s0){this.log(`Setting Pathway to "${r}"`),this.pathwayId=r,Cf(t),this.hls.trigger(Oc.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[o];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=o);break}}}getPathwayForGroupId(e,t,i){const s=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:r,"BASE-ID":o,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===r)))return;const n=this.getLevelsForPathway(o).map((e=>{const t=new qc(e.attrs);t["PATHWAY-ID"]=r;const o=t.AUDIO&&`${t.AUDIO}_clone_${r}`,n=t.SUBTITLES&&`${t.SUBTITLES}_clone_${r}`;o&&(i[t.AUDIO]=o,t.AUDIO=o),n&&(s[t.SUBTITLES]=n,t.SUBTITLES=n);const l=CA(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),d=new bf({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${s}"`);const o=e.data;if(1!==o.VERSION)return void this.log(`Steering VERSION ${o.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=o.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":n,"PATHWAY-PRIORITY":l}=o;if(a)try{this.uri=new self.URL(a,s).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),n&&this.clonePathways(n);const d={steeringManifest:o,url:s.toString()};this.hls.trigger(Oc.STEERING_MANIFEST_LOADED,d),l&&this.updatePathwayPriority(l)},onError:(e,t,i,s)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let r=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,r);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(r=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${s}`),this.loader.load(r,n,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function OA(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(OA):Object.keys(e).reduce(((t,i)=>(t[i]=OA(e[i]),t)),{}):e}function NA(e){const t=e.loader;if(t!==PA&&t!==xA)$c.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=PA,e.progressive=!0,e.enableSoftwareAES=!0,$c.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let jA;class GA extends $f{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Oc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Oc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Oc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Oc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Oc.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(Oc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Oc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Oc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Oc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Oc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Oc.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,s=[],r={},o={};let a=!1,n=!1,l=!1;t.levels.forEach((e=>{var t,d;const h=e.attrs;let{audioCodec:c,videoCodec:u}=e;-1!==(null==(t=c)?void 0:t.indexOf("mp4a.40.34"))&&(jA||(jA=/chrome|firefox/i.test(navigator.userAgent)),jA&&(e.audioCodec=c=void 0)),c&&(e.audioCodec=c=kp(c,i)),0===(null==(d=u)?void 0:d.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(",");for(let e=0;e2){let s=i.shift()+".";s+=parseInt(i.shift()).toString(16),s+=("000"+parseInt(i.shift()).toString(16)).slice(-4),t[e]=s}}return t.join(",")}(u));const{width:p,height:f,unknownCodecs:m}=e;if(a||(a=!(!p||!f)),n||(n=!!u),l||(l=!!c),null!=m&&m.length||c&&!bp(c,"audio",i)||u&&!bp(u,"video",i))return;const{CODECS:g,"FRAME-RATE":y,"HDCP-LEVEL":A,"PATHWAY-ID":b,RESOLUTION:v,"VIDEO-RANGE":_}=h,S=`${`${b||"."}-`}${e.bitrate}-${v}-${y}-${g}-${_}-${A}`;if(r[S])if(r[S].uri===e.url||e.attrs["PATHWAY-ID"])r[S].addGroupId("audio",h.AUDIO),r[S].addGroupId("text",h.SUBTITLES);else{const t=o[S]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new bf(e);r[S]=i,s.push(i)}else{const t=new bf(e);r[S]=t,o[S]=1,s.push(t)}})),this.filterAndSortMediaOptions(s,t,a,n,l)}filterAndSortMediaOptions(e,t,i,s,r){let o=[],a=[],n=e;if((i||s)&&r&&(n=n.filter((({videoCodec:e,videoRange:t,width:i,height:s})=>{return(!!e||!(!i||!s))&&(!!(r=t)&&pf.indexOf(r)>-1);var r}))),0===n.length)return void Promise.resolve().then((()=>{if(this.hls){t.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(t.levels[0].attrs)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;o=t.audioTracks.filter((t=>!t.audioCodec||bp(t.audioCodec,"audio",e))),zA(o)}t.subtitles&&(a=t.subtitles,zA(a));const l=n.slice(0);n.sort(((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 pf.indexOf(e.videoRange)-pf.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Sp(e.videoCodec),s=Sp(t.videoCodec);if(i!==s)return s-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=Ep(e.codecSet),s=Ep(t.codecSet);if(i!==s)return s-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let d=l[0];if(this.steering&&(n=this.steering.filterParsedLevels(n),n.length!==l.length))for(let e=0;ei&&i===UA.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const c=r&&!s,u={levels:n,audioTracks:o,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:r,video:s,altAudio:!c&&o.some((e=>!!e.url))};this.hls.trigger(Oc.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),s=e<0;if(this.hls.trigger(Oc.ERROR,{type:Nc.OTHER_ERROR,details:jc.LEVEL_SWITCH_ERROR,level:e,fatal:s,error:i,reason:i.message}),s)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,s=this.currentLevel,r=s?s.attrs["PATHWAY-ID"]:void 0,o=t[e],a=o.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=o,i===e&&o.details&&s&&r===a)return;this.log(`Switching to level ${e} (${o.height?o.height+"p ":""}${o.videoRange?o.videoRange+" ":""}${o.codecSet?o.codecSet+" ":""}@${o.bitrate})${a?" with Pathway "+a:""} from level ${i}${r?" with Pathway "+r:""}`);const n={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(Oc.LEVEL_SWITCHING,n);const l=o.details;if(!l||l.live){const e=this.switchParams(o.uri,null==s?void 0:s.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===zp&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===$p){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:s,details:r}=t,o=this._levels[s];var a;if(!o)return this.warn(`Invalid level index ${s}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(r.deltaUpdateFailed=!0));s===this.currentLevelIndex?(0===o.fragmentError&&(o.loadError=0),this.playlistLoaded(s,t,o.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let s=i.uri;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const r=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${r?" Pathway "+r:""} ${s}`),this.clearTimer(),this.hls.trigger(Oc.LEVEL_LOADING,{url:s,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));Cf(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(Oc.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(Oc.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function zA(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class WA{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const s=this.keyUriToKeyInfo[i].loader;if(s){var t;if(e&&e!==(null==(t=s.context)?void 0:t.frag.type))return;s.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=jc.KEY_LOAD_ERROR,i,s,r){return new Em({type:Nc.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:r,error:i,networkDetails:s})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:s}=e;for(let e=0;e{r.setKeyFormat(e)}));break}}}}load(e){return!e.decryptdata&&e.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(e).then((t=>this.loadInternal(e,t))):this.loadInternal(e)}loadInternal(e,t){var i,s;t&&e.setKeyFormat(t);const r=e.decryptdata;if(!r){const i=new Error(t?`Expected frag.decryptdata to be defined after setting format ${t}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(e,jc.KEY_LOAD_ERROR,i))}const o=r.uri;if(!o)return Promise.reject(this.createKeyLoadError(e,jc.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${o}"`)));let a=this.keyUriToKeyInfo[o];if(null!=(i=a)&&i.decryptdata.key)return r.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var n;if(null!=(s=a)&&s.keyLoadPromise)switch(null==(n=a.mediaKeySessionContext)?void 0:n.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(r.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[o]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===r.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,jc.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,s=new(0,i.loader)(i);return t.keyLoader=e.loader=s,e.keyLoadPromise=new Promise(((r,o)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},n=i.keyLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{const{frag:a,keyInfo:n,url:l}=i;if(!a.decryptdata||n!==this.keyUriToKeyInfo[l])return o(this.createKeyLoadError(a,jc.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),s));n.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,n.loader=null,r({frag:a,keyInfo:n})},onError:(e,i,s,r)=>{this.resetLoader(i),o(this.createKeyLoadError(t,jc.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),s,Rc({url:a.url,data:void 0},e)))},onTimeout:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,jc.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),s))},onAbort:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,jc.INTERNAL_ABORTED,new Error("key loading aborted"),s))}};s.load(a,l,d)}))}resetLoader(e){const{frag:t,keyInfo:i,url:s}=e,r=i.loader;t.keyLoader===r&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[s],r&&r.destroy()}}function VA(){return self.SourceBuffer||self.WebKitSourceBuffer}function $A(){if(!yp())return!1;const e=VA();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class HA{constructor(e,t,i,s){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=i,this.hls=s}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:s,stalled:r}=this;if(null===s)return;const{currentTime:o,seeking:a}=s,n=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,o!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==r){if(this.stallReported){const e=self.performance.now()-r;$c.warn(`playback not stuck anymore @${o}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||n)return void(this.stalled=null);if(s.paused&&!a||s.ended||0===s.playbackRate||!um.getBuffered(s).length)return void(this.nudgeRetry=0);const d=um.bufferInfo(s,o,0),h=d.nextStart||0;if(a){const e=d.len>2,i=!h||t&&t.start<=o||h-o>2&&!this.fragmentTracker.getPartialFragment(o);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var c;if(!(d.len>0)&&!h)return;const e=Math.max(h,d.start||0)-o,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(c=t.details)?void 0:c.live)?2*t.details.targetduration:2,r=this.fragmentTracker.getPartialFragment(o);if(e>0&&(e<=i||r))return void(s.paused||this._trySkipBufferHole(r))}const u=self.performance.now();if(null===r)return void(this.stalled=u);const p=u-r;if(!a&&p>=250&&(this._reportStall(d),!this.media))return;const f=um.bufferInfo(s,o,i.maxBufferHole);this._tryFixBufferStall(f,p)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:s,media:r}=this;if(null===r)return;const o=r.currentTime,a=s.getPartialFragment(o);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-o1e3*i.highBufferWatchdogPeriod&&($c.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:s}=this;if(!s&&i){this.stallReported=!0;const s=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);$c.warn(s.message),t.trigger(Oc.ERROR,{type:Nc.MEDIA_ERROR,details:jc.BUFFER_STALLED_ERROR,fatal:!1,error:s,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:s}=this;if(null===s)return 0;const r=s.currentTime,o=um.bufferInfo(s,r,0),a=r0&&o.len<1&&s.readyState<3,d=a-r;if(d>0&&(n||l)){if(d>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===r){const e=t.getAppendedFrag(0,$p);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=xm,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Dm}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case jm:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],s=null==i?void 0:i.details;if(s&&(!s.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(s))break;this.state=xm;break}if(this.hls.nextLoadLevel!==this.level){this.state=xm;break}break}case Im:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=xm}}}this.state===xm&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:s}=this;if(null===t||!s&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const r=e.nextLoadLevel;if(null==i||!i[r])return;const o=i[r],a=this.getMainFwdBufferInfo();if(null===a)return;const n=this.getLevelDetails();if(n&&this._streamEnded(a,n)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(Oc.BUFFER_EOS,e),void(this.state=Um)}e.loadLevel!==r&&-1===e.manualLevel&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=e.nextLoadLevel=r;const l=o.details;if(!l||this.state===jm||l.live&&this.levelLastLoaded!==o)return this.level=r,void(this.state=jm);const d=a.len,h=this.getMaxBufferLength(o.maxBitrate);if(d>=h)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const c=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(c,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==nm){var p;const e=(null!=(p=this.backtrackFragment)?p:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,c)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?Xc:Zc,t=(e===Zc?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,$p)}u=this.getNextFragmentLoopLoading(u,l,a,$p,h)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,o,c))}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);this.fragCurrent=e,s===rm||s===am?"initSegment"===e.sn?this._loadInitSegment(e,t):this.bitrateTest?(this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(e,t)):(this.startFragRequested=!0,super.loadFragment(e,t,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,$p)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const s=this.getAppendedFrag(t.currentTime);s&&s.start>1&&this.flushMainBuffer(0,s.start-1);const r=this.getLevelDetails();if(null!=r&&r.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*r.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],s=this.fragLastKbps;i=s&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*s)+1:0}else i=0;const o=this.getBufferedFrag(t.currentTime+i);if(o){const e=this.followingBufferedFrag(o);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,s=Math.max(o.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(s,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case Rm:case Pm:case Im:case Mm:case Fm:this.state=xm}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new HA(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{media:e}=this;e&&this.onvplaying&&this.onvseeked&&(e.removeEventListener("playing",this.onvplaying),e.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){const e=this.media,t=e?e.currentTime:null;Mc(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(Oc.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}onManifestParsed(e,t){let i=!1,s=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),s=s||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&s&&!function(){var e;const t=VA();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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}onLevelLoading(e,t){const{levels:i}=this;if(!i||this.state!==xm)return;const s=i[t.level];(!s.details||s.details.live&&this.levelLastLoaded!==s||this.waitForCdnTuneIn(s.details))&&(this.state=jm)}onLevelLoaded(e,t){var i;const{levels:s}=this,r=t.level,o=t.details,a=o.totalduration;if(!s)return void this.warn(`Levels were reset while loading level ${r}`);this.log(`Level ${r} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""}, cc [${o.startCC}, ${o.endCC}] duration:${a}`);const n=s[r],l=this.fragCurrent;!l||this.state!==Pm&&this.state!==Im||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let d=0;if(o.live||null!=(i=n.details)&&i.live){var h;if(this.checkLiveUpdate(o),o.deltaUpdateFailed)return;d=this.alignPlaylists(o,n.details,null==(h=this.levelLastLoaded)?void 0:h.details)}if(n.details=o,this.levelLastLoaded=n,this.hls.trigger(Oc.LEVEL_UPDATED,{details:o,level:r}),this.state===jm){if(this.waitForCdnTuneIn(o))return;this.state=xm}this.startFragRequested?o.live&&this.synchronizeToLiveEdge(o):this.setStartPosition(o,d),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{levels:o}=this;if(!o)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=o[i.level],n=a.details;if(!n)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,d=n.PTSKnown||!n.live,h=null==(t=i.initSegment)?void 0:t.data,c=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new Jg(this.hls,$p,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),p=s?s.index:-1,f=-1!==p,m=new pm(i.level,i.sn,i.stats.chunkCount,r.byteLength,p,f),g=this.initPTS[i.cc];u.push(r,h,c,l,i,s,n.totalduration,d,m,g)}onAudioTrackSwitching(e,t){const 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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(Oc.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(Oc.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,s=!!this.hls.audioTracks[i].url;if(s){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=s,this.tick()}onBufferCreated(e,t){const i=t.tracks;let s,r,o=!1;for(const e in i){const t=i[e];if("main"===t.id){if(r=e,s=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else o=!0}o&&s?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=s.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i&&i.type!==$p)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===Fm&&(this.state=xm));const r=s?s.stats:i.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,s)}onError(e,t){var i;if(t.fatal)this.state=Om;else switch(t.details){case jc.FRAG_GAP:case jc.FRAG_PARSING_ERROR:case jc.FRAG_DECRYPT_ERROR:case jc.FRAG_LOAD_ERROR:case jc.FRAG_LOAD_TIMEOUT:case jc.KEY_LOAD_ERROR:case jc.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError($p,t);break;case jc.LEVEL_LOAD_ERROR:case jc.LEVEL_LOAD_TIMEOUT:case jc.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==jm||(null==(i=t.context)?void 0:i.type)!==zp||(this.state=xm);break;case jc.BUFFER_APPEND_ERROR:case jc.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===jc.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case jc.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!um.getBuffered(e).length){const e=this.state!==xm?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=xm,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==Xc||this.audioOnly&&!this.altAudio){const e=(t===Zc?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,$p),this.tick()}}onLevelsUpdated(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=t.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(r{const{hls:s}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=xm,this.startFragRequested=!1,this.bitrateTest=!1;const r=e.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),s.trigger(Oc.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{video:h,text:c,id3:u,initSegment:p}=r,{details:f}=d,m=this.altAudio?void 0:r.audio;if(this.fragContextChanged(n))this.fragmentTracker.removeFragment(n);else{if(this.state=Mm,p){if(null!=p&&p.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,p.tracks,e,o),s.trigger(Oc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:p.tracks})}const e=p.initPTS,t=p.timescale;Mc(e)&&(this.initPTS[n.cc]={baseTime:e,timescale:t},s.trigger(Oc.INIT_PTS_FOUND,{frag:n,id:i,initPTS:e,timescale:t}))}if(h&&f&&"initSegment"!==n.sn){const e=f.fragments[n.sn-1-f.startSN],t=n.sn===f.startSN,i=!e||n.cc>e.cc;if(!1!==r.independent){const{startPTS:e,endPTS:s,startDTS:r,endDTS:a}=h;if(l)l.elementaryStreams[h.type]={startPTS:e,endPTS:s,startDTS:r,endDTS:a};else if(h.firstKeyFrame&&h.independent&&1===o.id&&!i&&(this.couldBacktrack=!0),h.dropped&&h.independent){const r=this.getMainFwdBufferInfo(),o=(r?r.end:this.getLoadPosition())+this.config.maxBufferHole,l=h.firstKeyFramePTS?h.firstKeyFramePTS:e;if(!t&&o2&&(n.gap=!0);n.setElementaryStreamInfo(h.type,e,s,r,a),this.backtrackFragment&&(this.backtrackFragment=n),this.bufferFragmentData(h,n,l,o,t||i)}else{if(!t&&!i)return void this.backtrack(n);n.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=m;l&&(l.elementaryStreams[Xc]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(Xc,e,t,i,s),this.bufferFragmentData(m,n,l,o)}if(f&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:n,details:f,samples:u.samples};s.trigger(Oc.FRAG_PARSING_METADATA,e)}if(f&&c){const e={id:i,frag:n,details:f,samples:c.samples};s.trigger(Oc.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,s){if(this.state!==Mm)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:r,video:o,audiovideo:a}=t;if(r){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=r.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==r.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),r.levelCodec=t,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${r.codec}]`)}o&&(o.levelCodec=e.videoCodec,o.id="main",this.log(`Init video buffer, container:${o.container}, codecs[level/parsed]=[${e.videoCodec||""}/${o.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(Oc.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const r=t[e].initSegment;null!=r&&r.byteLength&&this.hls.trigger(Oc.BUFFER_APPENDING,{type:e,data:r,frag:i,part:null,chunkMeta:s,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,$p)}backtrack(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=xm}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(um.isBuffered(e,i)?t=this.getAppendedFrag(i):um.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(Oc.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(Oc.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&Mc(t)&&Mc(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class qA{static get version(){return"1.5.13"}static isMSESupported(){return $A()}static isSupported(){return function(){if(!$A())return!1;const e=yp();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(_p(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(_p(t,"audio")))))}()}static getMediaSource(){return yp()}static get Events(){return Oc}static get ErrorTypes(){return Nc}static get ErrorDetails(){return jc}static get DefaultConfig(){return qA.defaultConfig?qA.defaultConfig:UA}static set DefaultConfig(e){qA.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new Hg,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){Vc(e,"debug","log","info","warn","error");try{Wc.log(`Debug logs enabled for "${t}" in hls.js version 1.5.13`)}catch(e){Wc=zc}}else Wc=zc}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){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"');const i=OA(e),s=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const r=`${"level"===e?"playlist":e}LoadPolicy`,o=void 0===t[r],a=[];s.forEach((s=>{const n=`${e}Loading${s}`,l=t[n];if(void 0!==l&&o){a.push(n);const e=i[r].default;switch(t[r]={default:e},s){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&$c.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${r}": ${JSON.stringify(t[r])}`)})),Rc(Rc({},i),t)}(qA.DefaultConfig,e);this.userConfig=e,t.progressive&&NA(t);const{abrController:i,bufferController:s,capLevelController:r,errorController:o,fpsController:a}=t,n=new o(this),l=this.abrController=new i(this),d=this.bufferController=new s(this),h=this.capLevelController=new r(this),c=new a(this),u=new Yp(this),p=new hf(this),f=t.contentSteeringController,m=f?new f(this):null,g=this.levelController=new GA(this,m),y=new lm(this),A=new WA(this.config),b=this.streamController=new JA(this,y,A);h.setStreamController(b),c.setStreamController(b);const v=[u,g,b];m&&v.splice(1,0,m),this.networkControllers=v;const _=[l,d,h,c,p,y];this.audioTrackController=this.createController(t.audioTrackController,v);const S=t.audioStreamController;S&&v.push(new S(this,y,A)),this.subtitleTrackController=this.createController(t.subtitleTrackController,v);const E=t.subtitleStreamController;E&&v.push(new E(this,y,A)),this.createController(t.timelineController,_),A.emeController=this.emeController=this.createController(t.emeController,_),this.cmcdController=this.createController(t.cmcdController,_),this.latencyController=this.createController(cf,_),this.coreComponents=_,v.push(n);const w=n.onErrorOut;"function"==typeof w&&this.on(Oc.ERROR,w,n)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,s){this._emitter.off(e,t,i,s)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if($c.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===Oc.ERROR;this.trigger(Oc.ERROR,{type:Nc.OTHER_ERROR,details:jc.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){$c.log("destroy"),this.trigger(Oc.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){$c.log("attachMedia"),this._media=e,this.trigger(Oc.MEDIA_ATTACHING,{media:e})}detachMedia(){$c.log("detachMedia"),this.trigger(Oc.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,s=this.url=Dc.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,$c.log(`loadSource:${s}`),t&&i&&(i!==s||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(Oc.MANIFEST_LOADING,{url:e})}startLoad(e=-1){$c.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){$c.log("stopLoad"),this.started=!1,this.networkControllers.forEach((e=>{e.stopLoad()}))}resumeBuffering(){this.started&&this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.startLoad(-1)}))}pauseBuffering(){this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.stopLoad()}))}swapAudioCodec(){$c.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){$c.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){$c.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){$c.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){$c.log(`set loadLevel:${e}`),this.levelController.manualLevel=e}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(e){this.levelController.nextLoadLevel=e}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(e){$c.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){$c.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&($c.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return uf.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let s=0;s=t)return s;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let s;if(s=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=s;t--;){const s=e[t].attrs["HDCP-LEVEL"];if(s&&s<=i)return t}return s}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(e){this.abrController.nextAutoLevel=e}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}setAudioOption(e){var t;return null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}qA.defaultConfig=void 0;class KA extends Ba{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):qA.isSupported()?(this.$videoElement=this.player.video.$videoElement,this.hls=new qA({}),this._initHls(),this._bindEvents()):this.player.debugError(this.TAG_NAME,"init hls error ,not support "),this.player.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{if(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.player._opt.useCanvasRender&&this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}this.$videoElement=null,this.hlsFps=0,this.player.debugLog(this.TAG_NAME,"destroy"),setTimeout((()=>{e()}),0)}))}checkHlsBufferedDelay(){const e=this.$videoElement;let t=0;const i=e.buffered,s=i.length?i.end(i.length-1):0;return t=s-e.currentTime,t<0&&(this.player.debugWarn(this.TAG_NAME,`checkHlsBufferedDelay ${t} < 0, and buffered is ${s} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${s}`),e.currentTime=s,t=0),t}getFps(){return this.hlsFps}_startCanvasRender(){Da()?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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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(mt.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(oa(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,To()&&(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,s=Da(),r=t(i,ns,(t=>{if(this.hls){const i=parseInt(t.timeStamp,10);this.player._opt.useCanvasRender&&Ea(s)&&e.updateStats({ts:i,dts:i})}}));this.eventsDestroy.push(r),this._startBandwidthEstimateInterval(),this._startFpsInterval(),this.hls.on(qA.Events.ERROR,((e,t)=>{if(t.fatal)switch(t.type){case qA.ErrorTypes.NETWORK_ERROR:this.player.debugWarn(this.TAG_NAME,"fatal network error encountered, try to recover"),this.hls.startLoad();break;case qA.ErrorTypes.MEDIA_ERROR:this.player.debugWarn(this.TAG_NAME,"fatal media error encountered, try to recover"),this.hls.recoverMediaError()}})),this.hls.on(qA.Events.MEDIA_ATTACHING,(()=>{})),this.hls.on(qA.Events.MEDIA_ATTACHED,(()=>{})),this.hls.on(qA.Events.MEDIA_DETACHING,(()=>{})),this.hls.on(qA.Events.MEDIA_DETACHED,(()=>{})),this.hls.on(qA.Events.BUFFER_RESET,(()=>{})),this.hls.on(qA.Events.BUFFER_CODECS,(()=>{})),this.hls.on(qA.Events.BUFFER_CREATED,(()=>{})),this.hls.on(qA.Events.BUFFER_APPENDING,((e,t)=>{this.player.debugLog(this.TAG_NAME,"BUFFER_APPENDING",t.type)})),this.hls.on(qA.Events.BUFFER_APPENDED,(()=>{})),this.hls.on(qA.Events.BUFFER_EOS,(()=>{})),this.hls.on(qA.Events.BUFFER_FLUSHING,(()=>{})),this.hls.on(qA.Events.BUFFER_FLUSHED,(()=>{})),this.hls.on(qA.Events.MANIFEST_LOADING,(()=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_LOADING 开始加载playlist m3u8资源")})),this.hls.on(qA.Events.MANIFEST_LOADED,((e,t)=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_LOADED playlist m3u8文件加载完成",t.url)})),this.hls.on(qA.Events.MANIFEST_PARSED,(()=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_PARSED playlist m3u8解析完成"),e._times.demuxStart||(e._times.demuxStart=co())})),this.hls.on(qA.Events.LEVEL_LOADING,(()=>{})),this.hls.on(qA.Events.LEVEL_LOADED,((e,t)=>{})),this.hls.on(qA.Events.FRAG_LOADING,(()=>{})),this.hls.on(qA.Events.FRAG_LOADED,((t,i)=>{e._times.decodeStart||(e._times.decodeStart=co())})),this.hls.on(qA.Events.BUFFER_APPENDING,(()=>{e._times.videoStart||(e._times.videoStart=co(),e.handlePlayToRenderTimes())})),this.hls.on(qA.Events.FRAG_DECRYPTED,(()=>{})),this.hls.on(qA.Events.KEY_LOADING,(()=>{})),this.hls.on(qA.Events.KEY_LOADING,(()=>{})),this.hls.on(qA.Events.FPS_DROP,(e=>{})),this.hls.on(qA.Events.FPS_DROP_LEVEL_CAPPING,(e=>{})),this.hls.on(qA.Events.FRAG_PARSING_INIT_SEGMENT,((e,t)=>{this.player.debugLog(this.TAG_NAME,"FRAG_PARSING_INIT_SEGMENT",t);const i=!!(t&&t.tracks&&t.tracks.audio),s=!!(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,s=e.codec;this.player.audio&&this.player.audio.updateAudioInfo({encType:s,channels:i,sampleRate:44100})}if(s&&t.tracks.video){let e=t.tracks.video;const i={encTypeCode:-1!==e.codec.indexOf("avc")?Lt:Ct};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,os,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,as,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,ns,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,ls,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,s,r)}loadSource(e){return new Promise(((t,i)=>{this.canVideoPlay?(this.initVideoPlay(e),t()):this.hls.on(qA.Events.MEDIA_ATTACHED,(()=>{this.hls.loadSource(e),t()}))}))}}const YA=2097152,QA="fetch",XA="xhr",ZA="arraybuffer",eb="text",tb="json",ib="real_time_speed",sb=Object.prototype.toString;function rb(e){if("[object Object]"!==sb.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function ob(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 ab(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function nb(e,t){if(!e)return;if(!t)return e;let i;const s=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]"===sb.call(i)?t=t.toISOString():function(e){return null!==e&&"object"==typeof e}(t)&&(t=JSON.stringify(t)),`${ab(e)}=${ab(t)}`})).join("&")})).filter(Boolean).join("&");if(s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}function lb(e,t,i,s,r,o,a,n,l,d,h){r=null!=r?parseFloat(r):null,s=parseInt(s||"0",10),Number.isNaN(s)&&(s=0);return{data:e,done:t,option:{range:l,vid:d,index:n,contentLength:s,age:r,startTime:o,firstByteTime:a,endTime:Date.now(),priOptions:h},response:i}}function db(e,t){return Math.round(8*e*1e3/t/1024)}class hb extends Error{constructor(e,t,i,s){super(s),Ah(this,"retryCount",0),Ah(this,"isTimeout",!1),Ah(this,"loaderType",QA),Ah(this,"startTime",0),Ah(this,"endTime",0),Ah(this,"options",{}),this.url=e,this.request=t,this.response=i}}class cb extends Ba{constructor(e){super(),Ah(this,"_abortController",null),Ah(this,"_timeoutTimer",null),Ah(this,"_reader",null),Ah(this,"_response",null),Ah(this,"_aborted",!1),Ah(this,"_index",-1),Ah(this,"_range",null),Ah(this,"_receivedLength",0),Ah(this,"_running",!1),Ah(this,"_logger",null),Ah(this,"_vid",""),Ah(this,"_onProcessMinLen",0),Ah(this,"_onCancel",null),Ah(this,"_priOptions",null),Ah(this,"TAG_NAME","FetchLoader"),this.player=e}load(e){var t;let{url:i,vid:s,timeout:r,responseType:o,onProgress:a,index:n,onTimeout:l,onCancel:d,range:h,transformResponse:c,request:u,params:p,logger:f,method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:S,referrerPolicy:E,onProcessMinLen:w,priOptions:T}=e;this._aborted=!1,this._onProcessMinLen=w,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=n,this._range=h||[0,0],this._vid=s||i,this._priOptions=T||{};const k={method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:S,referrerPolicy:E,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal};let L=!1;clearTimeout(this._timeoutTimer),i=nb(i,p);const C=ob(h);C&&(g=u?u.headers:k.headers=k.headers||(Headers?new Headers:{}),Headers&&g instanceof Headers?g.append("Range",C):g.Range=C),r&&(this._timeoutTimer=setTimeout((()=>{if(L=!0,this.cancel(),l){const e=new hb(i,k,null,"timeout");e.isTimeout=!0,l(e,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),r));const D=Date.now();return(jo(n)||jo(h))&&this.player.debugLog(this.TAG_NAME,"[fetch load start], index,",n,",range,",h),new Promise(((e,t)=>{fetch(u||i,u?void 0:k).then((async s=>{if(clearTimeout(this._timeoutTimer),this._response=s,this._aborted||!this._running)return;if(c&&(s=c(s,i)||s),!s.ok)throw new hb(i,k,s,"bad network response");const r=Date.now();let l;if(o===eb)l=await s.text(),this._running=!1;else if(o===tb)l=await s.json(),this._running=!1;else{if(a)return this.resolve=e,this.reject=t,void this._loadChunk(s,a,D,r);{l=await s.arrayBuffer(),l=new Uint8Array(l),this._running=!1;const e=Date.now()-D,t=db(l.byteLength,e);this.emit(ib,{speed:t,len:l.byteLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}(jo(n)||jo(h))&&this.player.debugLog(this.TAG_NAME,"[fetch load end], index,",n,",range,",h),e(lb(l,!0,s,s.headers.get("Content-Length"),s.headers.get("age"),D,r,n,h,this._vid,this._priOptions))})).catch((e=>{var s;clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!L||((e=e instanceof hb?e:new hb(i,k,null,null===(s=e)||void 0===s?void 0:s.message)).startTime=D,e.endTime=Date.now(),e.isTimeout=L,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},t(e))}))}))}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,s){if(!e.body||!e.body.getReader){this._running=!1;const t=new hb(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(YA),this._writeIdx=0);const r=this._reader=e.body.getReader();let o,a,n;const l=async()=>{var d;a=Date.now();try{o=await r.read(),n=Date.now()}catch(e){return n=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 h=(null===(d=this._range)||void 0===d?void 0:d.length)>0?this._range[0]:0,c=h+this._receivedLength;if(this._aborted)return this._running=!1,void t(void 0,!1,{range:[c,c],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e);const u=o.value?o.value.byteLength:0;let p;if(this._receivedLength+=u,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress call】,task,",this._range,", start,",c,", end,",h+this._receivedLength,", done,",o.done),this._onProcessMinLen>0){if(this._writeIdx+u>=this._onProcessMinLen||o.done)p=new Uint8Array(this._writeIdx+u),p.set(this._cache.slice(0,this._writeIdx),0),u>0&&p.set(o.value,this._writeIdx),this._writeIdx=0,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress enough】,done,",o.done,",len,",p.byteLength,", writeIdx,",this._writeIdx);else if(u>0&&this._writeIdx+u0){const e=new Uint8Array(this._writeIdx+u+2048);this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress extra start】,size,",this._writeIdx+u+2048,", datalen,",u,", writeIdx,",this._writeIdx),e.set(this._cache.slice(0,this._writeIdx),0),u>0&&e.set(o.value,this._writeIdx),this._writeIdx+=u,delete this._cache,this._cache=e,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",this._writeIdx)}}else p=o.value;if((p&&p.byteLength>0||o.done)&&t(p,o.done,{range:[this._range[0]+this._receivedLength-(p?p.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e),o.done){const t=Date.now()-i,r=db(this._receivedLength,t);this.emit(ib,{speed:r,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this.player.debugLog(this.TAG_NAME,"[fetchLoader onProgress end],task,",this._range,",done,",o.done),this.resolve(lb(o,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),i,s,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 ub{constructor(e,t,i){Ah(this,"TAG_NAME","Task"),this.promise=function(){let e,t;const i=new Promise(((i,s)=>{e=i,t=s}));return i.used=!1,i.resolve=function(){return i.used=!0,e(...arguments)},i.reject=function(){return i.used=!0,t(...arguments)},i}(),this.alive=!!t.onProgress,this._loaderType=e,this.player=i,this._loader=e===QA&&window.fetch?new cb(i):new pb(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:s,...r}=this._config,o=async()=>{try{const e=await this._loader.load(r);this.promise.resolve(e)}catch(a){if(this._loader.running=!1,this.player.debugLog(this.TAG_NAME,"[task request catch err]",a),this._canceled)return;a.loaderType=this._loaderType,a.retryCount=this._retryCount;let n=a;s&&(n=s(n)||n),i&&this._retryCount>0&&i(n,this._retryCount,{index:r.index,vid:r.vid,range:r.range,priOptions:r.priOptions}),this._retryCount++;let l=!0;if(this._retryCheckFunc&&(l=this._retryCheckFunc(a)),l&&this._retryCount<=e)return clearTimeout(this._retryTimer),this.player.debugLog(this.TAG_NAME,"[task request setTimeout],retry",this._retryCount,",retry range,",r.range),void(this._retryTimer=setTimeout(o,t));this.promise.reject(n)}};return o(),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 pb extends Ba{constructor(e){super(),Ah(this,"_xhr",null),Ah(this,"_aborted",!1),Ah(this,"_timeoutTimer",null),Ah(this,"_range",null),Ah(this,"_receivedLength",0),Ah(this,"_url",null),Ah(this,"_onProgress",null),Ah(this,"_index",-1),Ah(this,"_headers",null),Ah(this,"_currentChunkSizeKB",384),Ah(this,"_timeout",null),Ah(this,"_xhr",null),Ah(this,"_withCredentials",null),Ah(this,"_startTime",-1),Ah(this,"_loadCompleteResolve",null),Ah(this,"_loadCompleteReject",null),Ah(this,"_runing",!1),Ah(this,"_logger",!1),Ah(this,"_vid",""),Ah(this,"_responseType",void 0),Ah(this,"_credentials",void 0),Ah(this,"_method",void 0),Ah(this,"_transformResponse",void 0),Ah(this,"_firstRtt",void 0),Ah(this,"_onCancel",null),Ah(this,"_priOptions",null),Ah(this,"TAG_NAME","XhrLoader"),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.debugLog(this.TAG_NAME,"【xhrLoader task】, range",this._range),this._url=nb(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 hb?e:new hb(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===ZA&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const t=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let s=this._range[1];t],tast :",this._range,", SubRange, ",e)}else e=this._range,this.player.debugLog(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=>{var t,i,s;this._running=!1;const r=new hb(this._url,this._request,null==e||null===(t=e.currentTarget)||void 0===t?void 0:t.response,"xhr.onerror.status:"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.status)+",statusText,"+(null==e||null===(s=e.currentTarget)||void 0===s?void 0:s.statusText));r.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(r)},t.ontimeout=e=>{this.cancel();const t=new hb(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||{},s=ob(e);s&&(i.Range=s),i&&Object.keys(i).forEach((e=>{t.setRequestHeader(e,i[e])})),this.player.debugLog(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){var t;const i=e.target.status;if(i<200||i>299){const t=new hb(this._url,null,{...e.target.response,status:i},"bad response,status:"+i);return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}let s,r=null,o=!1;const a=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===ZA){var n;const t=new Uint8Array(e.target.response);if(s=a+this._receivedLength,t&&t.byteLength>0){this._receivedLength+=t.byteLength;const e=Date.now()-this._startTime,i=db(this._receivedLength,e);this.emit(ib,{speed:i,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:[s,a+this._receivedLength],priOptions:this._priOptions})}r=t,o=!((null===(n=this._range)||void 0===n?void 0:n.length)>1&&this._range[1]&&this._receivedLength], tast :",this._range,", start",s,"end ",a+this._receivedLength,",dataLen,",t?t.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",o)}else o=!0,r=e.target.response;let l={ok:i>=200&&i<300,status:i,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(l=this._transformResponse(l,this._url)||l),this._onProgress&&this._onProgress(r,o,{index:this._index,vid:this._vid,range:[s,a+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},l),o?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(lb(this._onProgress?null:r,o,l,l.headers["content-length"],l.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 fb extends Ba{constructor(e,t){super(),Ah(this,"type",QA),Ah(this,"_queue",[]),Ah(this,"_alive",[]),Ah(this,"_currentTask",null),Ah(this,"_config",void 0),this.player=t,this._config=function(e){return{loaderType:QA,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:eb,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!==XA&&cb.isSupported()||(this.type=XA)}destroy(){this._queue=[],this._alive=[],this._currentTask=null}isFetch(){return this.type===QA}static isFetchSupport(){return cb.isSupported()}load(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?t=e:t.url=e||t.url||this._config.url,t=Object.assign({},this._config,t),t.params&&(t.params=Object.assign({},t.params)),t.headers&&rb(t.headers)&&(t.headers=Object.assign({},t.headers)),t.body&&rb(t.body)&&(t.body=Object.assign({},t.body)),t.transformRequest&&(t=t.transformRequest(t)||t);const i=new ub(this.type,t,this.player);return i.loader.on(ib,(e=>{this.emit(ib,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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]: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((()=>{var e,t;null!==(e=this._currentTask)&&void 0!==e&&e.alive&&(null===(t=this._alive)||void 0===t?void 0:t.length)>0&&(this._alive=this._alive.filter((e=>e&&e!==this._currentTask))),this._processTask()}))}}const mb="network",gb="network_timeout",yb="other",Ab="manifest",bb="hls",vb="demux";class _b extends Error{constructor(e,t,i,s,r){super(r||(null==i?void 0:i.message)),this.errorType=e===gb?mb:e,this.originError=i,this.ext=s,this.errorMessage=this.message}static create(e,t,i,s,r){return e instanceof _b?e:(e instanceof Error&&(i=e,e=""),e||(e=yb),new _b(e,t,i,s,r))}static network(e){var t;return new _b(null!=e&&e.isTimeout?gb:mb,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==e||null===(t=e.response)||void 0===t?void 0:t.status})}}const Sb=/^#(EXT[^:]*)(?::(.*))?$/,Eb=/([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g,wb=/^(?:[a-zA-Z0-9+\-.]+:)?\/\//,Tb=/^((?:[a-zA-Z0-9+\-.]+:)?\/\/[^/?#]*)?([^?#]*\/)?/;function kb(e){const t=e.match(Sb);if(t&&t[1])return[t[1].replace("EXT-X-",""),t[2]]}function Lb(e){const t={};let i=Eb.exec(e);for(;i;)t[i[1]]=i[2]||i[3],i=Eb.exec(e);return t}function Cb(e,t){if(!t||!e||wb.test(e))return e;const i=Tb.exec(t);return i?"/"===e[0]?i[1]+e:i[1]+i[2]+e:e}const Db={audio:[/^mp4a/,/^vorbis$/,/^opus$/,/^flac$/,/^[ae]c-3$/],video:[/^avc/,/^hev/,/^hvc/,/^vp0?[89]/,/^av1$/],text:[/^vtt$/,/^wvtt/,/^stpp/]};function xb(e,t){const i=Db[e];if(i&&t&&t.length)for(let e=0;e>8*(15-t)&255}}}class Gb{static parse(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;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 Gb.isMediaPlaylist(e)?function(e,t){const i=new Ob;i.url=t;let s,r=new Nb,o=null,a=null,n=0,l=0,d=0,h=0,c=!1;for(;(s=e[h++])&&!c;){if("#"!==s[0]){r.sn=l,r.cc=d,r.url=Cb(s,t),a&&(r.key=a.clone(l)),o&&(r.initSegment=o),i.segments.push(r),r=new Nb,l++;continue}const e=kb(s);if(!e)continue;const[h,u]=e;switch(h){case"VERSION":i.version=parseInt(u);break;case"PLAYLIST-TYPE":i.type=null==u?void 0: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":r.setByteRange(u,i.segments[i.segments.length-1]);break;case"EXTINF":{const[e,t]=u.split(",");r.start=n,r.duration=parseFloat(e),n+=r.duration,r.title=t}break;case"KEY":{const e=Lb(u);if("NONE"===e.METHOD){a=null;break}if("AES-128"!==e.METHOD)throw new Error(`encrypt ${e.METHOD}/${e.KEYFORMAT} is not supported`);if(a=new jb,a.method=e.METHOD,a.url=/^blob:/.test(e.URI)?e.URI:Cb(e.URI,t),a.keyFormat=e.KEYFORMAT||"identity",a.keyFormatVersions=e.KEYFORMATVERSIONS,e.IV){let t=e.IV.slice(2);t=(1&t.length?"0":"")+t,a.iv=new Uint8Array(t.length/2);for(let e=0,i=t.length/2;e{e.id=t})),o.length&&(o.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.audioGroup&&(e.audioStreams=o.filter((t=>t.group===e.audioGroup)))}))),a.length&&(a.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.subtitleGroup&&(e.subtitleStreams=a.filter((t=>t.group===e.subtitleGroup)))}))),i}(i,t)}static isMediaPlaylist(e){return e.includes("#EXTINF:")||e.includes("#EXT-X-TARGETDURATION:")}}class zb{constructor(e){Ah(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(Gs,{error:_b.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this.TAG_NAME="HlsManifestLoader",this._timer=null;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._loader=new fb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioLoader=new fb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._subtitleLoader=new fb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,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.debugLog(this.TAG_NAME,"load()",e,t,i);const s=[this._loader.load(e)];let r,o,a,n,l,d;t&&s.push(this._audioLoader.load(t)),i&&s.push(this._subtitleLoader.load(i));try{const[e,i,n]=await Promise.all(s);if(!e)return[];r=e.data,t?(o=null==i?void 0:i.data,a=null==n?void 0:n.data):a=null==i?void 0:i.data}catch(e){throw _b.network(e)}try{var h;if(n=Gb.parse(r,e),!1===(null===(h=n)||void 0===h?void 0:h.live)&&n.segments&&!n.segments.length)throw new Error("empty segments list");o&&(l=Gb.parse(o,t)),a&&(d=Gb.parse(a,i))}catch(e){throw new _b(Ab,bb,e)}return n&&(n.isMaster?this.hls.emit(Ms,{playlist:n}):this.hls.emit(Fs,{playlist:n})),[n,l,d]}poll(e,t,i,s,r,o){clearTimeout(this._timer),o=o||3e3;let a=this.hls.config.pollRetryCount;const n=async()=>{clearTimeout(this._timer);try{const r=await this.load(e,t,i);if(!r[0])return;a=this.hls.config.pollRetryCount,s(r[0],r[1],r[2])}catch(e){a--,a<=0&&r(e)}this._timer=setTimeout(n,o)};this._timer=setTimeout(n,o)}stopPoll(){return clearTimeout(this._timer),this.cancel()}cancel(){return Promise.all([this._loader.cancel(),this._audioLoader.cancel()])}}class Wb{constructor(){Ah(this,"_chunkSpeeds",[]),Ah(this,"_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 Vb{constructor(e){Ah(this,"_emitOnLoaded",((e,t)=>{const{data:i,response:s,option:r}=e,{firstByteTime:o,startTime:a,endTime:n,contentLength:l}=r||{},d=n-a;this._bandwidthService.addRecord(l||i.byteLength,d),this.hls.emit(Ws,{time:d,byteLength:l,url:t}),this.hls.emit(Vs,{url:t,elapsed:d||0}),this.hls.emit(js,{url:t,responseUrl:s.url,elapsed:o-a}),this.hls.emit($s,{headers:s.headers})})),Ah(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(Gs,{error:_b.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this._bandwidthService=new Wb;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._segmentLoader=new fb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioSegmentLoader=new fb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._keyLoader=new fb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,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){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i;const r=[];return e&&(r[0]=this.loadVideoSegment(e,i)),t&&(r[1]=this.loadAudioSegment(t,s)),Promise.all(r)}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){var s;let r,o,a,n,l;const d=[];if(this.hls.emit(zs,{url:t.url}),d[0]=e.load(t.url),i&&t.initSegment){var h;const i=t.initSegment.url;r=this._mapCache[i],r||(this.hls.emit(zs,{url:i}),d[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=null===(h=t.initSegment.key)||void 0===h?void 0:h.url;s&&(l=t.initSegment.key.iv,n=this._keyCache[s],n||(this.hls.emit(zs,{url:s}),d[2]=this._keyLoader.load(s).then((e=>{e&&(n=this._keyCache[s]=e.data,this._emitOnLoaded(e,s))}))))}const c=null===(s=t.key)||void 0===s?void 0:s.url;c&&(a=t.key.iv,o=this._keyCache[c],o||(this.hls.emit(zs,{url:c}),d[3]=this._keyLoader.load(c).then((e=>{e&&(o=this._keyCache[c]=e.data,this._emitOnLoaded(e,c))}))));const[u]=await Promise.all(d);if(!u)return;const p=u.data;return this._emitOnLoaded(u,t.url),{data:p,map:r,key:o,mapKey:n,keyIv:a,mapKeyIv:l}}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()])}}class $b{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(){var e;return this.targetDuration||(null===(e=this.segments[0])||void 0===e?void 0:e.duration)||0}get liveEdge(){return this.endTime}get endTime(){var e;return(null===(e=this.lastSegment)||void 0===e?void 0:e.end)||0}get currentSubtitleEndSn(){var e;return(null===(e=this.currentSubtitleStream)||void 0===e?void 0:e.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 s=this.segments;for(let t=0,r=s.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 s=i[i.length-1],r=(null==s?void 0:s.sn)||-1;if(re.sn===r)),a=o<0?e.segments:e.segments.slice(o+1);if(i.length&&a.length){let e=s.end;a.forEach((t=>{t.start=e,e=t.end}));const t=(null==s?void 0:s.cc)||-1;t>a[0].cc&&a.forEach((e=>e.cc+=t))}return t.endSN=e.endSN,t.segments=i.concat(a),a}}else t.segments=e.segments}}class Hb{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(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.lastSegment}get currentSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer]}get nextSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer+1]}get currentSegments(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.segments}get currentSubtitleEndSn(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.currentSubtitleEndSn}get liveEdge(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.liveEdge}get totalDuration(){var e;return(null===(e=this.currentStream)||void 0===e?void 0:e.totalDuration)||0}get seekRange(){const e=this.currentSegments;if(e&&e.length)return[e[0].start,e[e.length-1].end]}get isEmpty(){var e;return!(null!==(e=this.currentSegments)&&void 0!==e&&e.length)}get isLive(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.live}get hasSubtitle(){var e;return!(null===(e=this.currentStream)||void 0===e||!e.currentSubtitleStream)}getAudioSegment(e){var t;return null===(t=this.currentStream)||void 0===t?void 0:t.getAudioSegment(e)}moveSegmentPointer(e){var t;null==e&&(e=this._segmentPointer+1),this._segmentPointer=uo(e,-1,null===(t=this.currentSegments)||void 0===t?void 0:t.length),this.player.debugLog(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){var t;return null===(t=this.currentSegments)||void 0===t?void 0:t[e]}setNextSegmentByIndex(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this._segmentPointer=e-1,this.player.debugLog(this.TAG_NAME,"setNextSegmentByIndex()",e,this._segmentPointer)}findSegmentIndexByTime(e){const t=this.currentSegments;if(t){for(let i,s=0,r=t.length;s=i.start&&ee.url)).forEach(((e,t)=>{this.streams[t]?this.streams[t].update(e):this.streams[t]=new $b(e)})),this.currentStream=this.streams[0];else if(Array.isArray(e.segments)){const s=this.currentStream;if(s){s.update(e,t,i);const r=s.updateSubtitle(i);r&&this.hls.emit(Bs,{list:r})}else this.reset(),this.currentStream=this.streams[0]=new $b(e,t,i)}this.currentStream&&this.hls.isLive&&!this.dvrWindow&&(this.dvrWindow=this.currentSegments.reduce(((e,t)=>e+=t.duration),0))}switchSubtitle(e){var t;null===(t=this.currentStream)||void 0===t||t.switchSubtitle(e)}clearOldSegment(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50;const t=this.currentStream;if(!this.dvrWindow||!t)return;const i=t.endTime-this.dvrWindow;if(i<=0)return void this.player.debugLog(this.TAG_NAME,`clearOldSegment() stream.endTime:${t.endTime}, this.dvrWindow:${this.dvrWindow} startTime <= 0`);const s=t.segments;if(s.length<=e)return void this.player.debugLog(this.TAG_NAME,`clearOldSegment() segments.length:${s.length} <= maxPlaylistSize:${e}`);const r=this._segmentPointer;this._segmentPointer=t.clearOldSegment(i,r),this.player.debugLog(this.TAG_NAME,"clearOldSegment() update _segmentPointer:",r,this._segmentPointer),this.player.debugLog(this.TAG_NAME,"currentSegments",this.currentSegments)}checkSegmentTrackChange(e,t){const i=this.findSegmentIndexByTime(e),s=this.getSegmentByIndex(i);if(!s)return;if(!s.hasAudio&&!s.hasVideo)return;if(2!==t&&s.hasAudio&&s.hasVideo)return s;if(s.end-e>.3)return;const r=this.getSegmentByIndex(i+1);return r&&(r.hasAudio||r.hasVideo)&&(r.hasAudio!==s.hasAudio||r.hasVideo!==s.hasVideo)?r:void 0}}class Jb{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?Ch(e.map,t):t}async _decryptData(e,t,i){if(this.externalDecryptor)return await this.externalDecryptor.decrypt(e,t,i);if(this.subtle){const s=await this.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt","decrypt"]),r=await this.subtle.decrypt({name:"AES-CBC",iv:i},s,e);return new Uint8Array(r)}e=Rd(e),t=Rd(t),i=Rd(i);return function(e){const{words:t}=e,{sigBytes:i}=e,s=new Uint8Array(i);for(let e=0;e>>2]>>>24-e%4*8&255;return s}(Dd.AES.decrypt({ciphertext:e},t,{iv:i,mode:Dd.mode.CBC}))}}class qb extends nh{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=Lt,this._audioCodecType=Rt,this._vps=null,this._sps=null,this._pps=null,this.TAG_NAME="HlsTsLoader",this.videoTrack=qb.initVideoTrack(),this.audioTrack=qb.initAudioTrack(),this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,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.debugLog(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.videoTrack=null,this.audioTrack=null,this.tempSampleListInfo={},this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._hasCalcFps=!1,this._tempSampleTsList=[],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.player.debugLog(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])}_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let r,o;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?(o=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-o>54e5&&(r=o)):o=r),{data:e.subarray(9+t),pts:r,dts:o,originalPts:r,originalDts:o}}_demux(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t&&(this._pmtId=-1,this.videoTrack=qb.initVideoTrack(),this.audioTrack=qb.initAudioTrack()),!i||t?(this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[]):(this.videoTrack.samples=[],this.audioTrack.samples=[],this._remainingPacketData&&(e=Ch(this._remainingPacketData,e),this._remainingPacketData=null));let s=e.length;const r=s%188;r&&(this._remainingPacketData=e.subarray(s-r),s-=r);for(let t=0;t>4>1){if(r=t+5+e[t+4],r===t+188)continue}else r=t+4;switch(s){case 0:i&&(r+=e[r]+1),this._pmtId=(31&e[r+10])<<8|e[r+11];break;case this._pmtId:{i&&(r+=e[r]+1);const t=r+3+((15&e[r+1])<<8|e[r+2])-4;for(r+=12+((15&e[r+10])<<8|e[r+11]);r=t)return[];const r=[];for(;s{const t=s?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(!s&&5!==t||s&&5===t)break;r.isIFrame=!0,this._gopId++;break;case 6:case 39:case 40:if(!s&&6!==t||s&&6===t)break;const o=ro(function(e){const t=e.byteLength,i=[];let s=1;for(;s=i)return;const r=s,o=[],a=(60&e[s+2])>>>2,n=Nr[a];if(!n)throw new Error(`Invalid sampling index: ${a}`);const l=1+((192&e[s+2])>>>6),d=(1&e[s+2])<<2|(192&e[s+3])>>>6;let h,c,u=0;const p=Hr(n);for(;s+7>5,i-s=i?void 0:e.subarray(s),frames:o,samplingFrequencyIndex:a,sampleRate:n,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=zr({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});this._isSendAACSeqHeader=!0,this.player.debugLog(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,s=new Uint8Array(t.data.length+2);s.set([175,1],0),s.set(t.data,2);const r={type:Oe,pts:i,dts:i,payload:s};e.push(r)})),this.audioTrack.samples=this.audioTrack.samples.concat(e)}else this.player.debugWarn(this.TAG_NAME,"aac seq header not send")}else this.player.debugWarn(this.TAG_NAME,"aac parseADTS error")}this._audioPesData=[]}else e&&"startPrefixError"===e.code&&(this._audioPesData=[])}_fix(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=Math.round(9e4*e);const s=this.videoTrack,r=this.audioTrack,o=s.samples,a=r.samples;if(!o.length&&!a.length)return;const n=o[0],l=a[0];let d=0;if(o.length&&a.length&&(d=n.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=n?n.dts-this._baseDts-this._videoNextDts:0,i=l?l.pts-this._baseDts-this._audioNextPts:0;Math.abs(t||i)>Sr&&(this._calculateBaseDts(this.audioTrack,this.videoTrack),this._baseDts-=e)}this._resetBaseDtsWhenStreamBreaked(),this._fixAudio(r),this._fixVideo(s);let h=s.samples.concat(r.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})})),Ea(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(h))}_calculateBaseDts(){const e=this.audioTrack,t=this.videoTrack,i=e.samples,s=t.samples;if(!i.length&&!s.length)return!1;let r=1/0,o=1/0;i.length&&(e.baseDts=r=i[0].pts),s.length&&(t.baseDts=o=s[0].dts),this._baseDts=Math.min(r,o);const a=o-r;return Number.isFinite(a)&&Math.abs(a)>45e3&&this.player.debugWarn(this.TAG_NAME,`large av first frame gap,\n video pts: ${o},\n audio pts: ${r},\n base dts: ${this._baseDts},\n detect is: ${a}`),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 s=0;const r=t[0],o=t[1],a=this._videoNextDts-r.dts;let n;Math.abs(a)>45e3&&(r.dts+=a,r.pts+=a,this.player.debugWarn(this.TAG_NAME,`large video gap between chunk,\n next dts is ${this._videoNextDts},\n first dts is ${r.dts},\n next dts is ${o&&o.dts},\n duration is ${a}`),o&&Math.abs(o.dts-r.dts)>Sr&&(this._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=a,e.pts+=a)}))));const l=e.samples[0],d=e.samples[i-1];n=1===i?9e3:Math.floor((d.dts-l.dts)/(i-1));for(let r=0;rSr||s<0){this._videoTimestampBreak=!0,s=this._audioTimestampBreak?n:Math.max(s,2700);const i=this._audioNextPts||0;a&&a.dts>i&&(s=n),this.player.debugWarn(this.TAG_NAME,`large video gap between frames,\n time is ${o/e.timescale},\n dts is ${o},\n origin dts is ${t[r].originalDts},\n next dts is ${this._videoNextDts},\n sample Duration is ${s} ,\n ref Sample DurationInt is ${n}`)}t[r].duration=s,this._videoNextDts+=s}}_doFixAudioInternal(e,t,i){e.sampleDuration||(e.sampleDuration=Hr(e.timescale,i));const s=e.sampleDuration;if(void 0===this._audioNextPts){const e=t[0];this._audioNextPts=e.pts}for(let i=0;i=3*s&&a<=vr&&!To()){$r(e.codec,e.channelCount)||t[0].data.subarray();const n=Math.floor(a/s);Math.abs(o.pts-this._lastAudioExceptionGapDot)>_r&&(this._lastAudioExceptionGapDot=o.pts),this.player.debugWarn(this.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${n},\n nextPts is ${r},\n ref sample duration is ${s}`);for(let e=0;e=-9e4?(Math.abs(o.pts-this._lastAudioExceptionOverlapDot)>_r&&(this._lastAudioExceptionOverlapDot=o.pts,this.player.debugWarn(this.TAG_NAME,`audio overlap detected,\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n ref sample duration is ${s}`)),t.splice(i,1),i--):(Math.abs(a)>=vr&&(this._audioTimestampBreak=!0,Math.abs(o.pts-this._lastAudioExceptionLargeGapDot)>_r&&(this._lastAudioExceptionLargeGapDot=o.pts,this.player.debugWarn(this.TAG_NAME,`large audio gap detected,\n time is ${o.pts/1e3}\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n sample duration is ${a}\n ref sample duration is ${s}`))),o.dts=o.pts=r,this._audioNextPts+=s)}}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=fa(this._tempSampleTsList,Ne);if(i)this._tempSampleTsList=[],this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debugLog(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debugLog(this.TAG_NAME,"_initLoopWorker()");const e=Ca(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(`JbPro:[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((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=Math.round(s.duration/90))):s.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 if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};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 s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),se),s.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=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debugWarn(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=this.cryptoPayloadAudio(t);this._doDecodeByHls(i,Oe,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?sl(t,e.isIFrame):Wn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,Ne,e.dts,e.isIFrame,s)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}}function Kb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function Yb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=Math.pow(2,32);return Yb(e,t)*i+Yb(e,t+4)}const Xb="aac",Zb="g7110a",ev="g7110m",tv="avc",iv="hevc";class sv{static getFrameDuration(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}static getRateIndexByRate(e){return sv.FREQ.indexOf(e)}}function rv(e,t,i,s,r,o){const a=[],n=null==r?void 0:r.entries,l=t.entries,d=s.entries,h=i.entrySizes,c=null==o?void 0:o.entries;let u,p,f;c&&(u={},c.forEach((e=>{u[e-1]=!0}))),n&&(p=[],n.forEach((e=>{let{count:t,offset:i}=e;for(let e=0;e{let{count:t,delta:s}=e;for(let e=0;e=S&&(b++,S=l[b+1]?l[b+1].firstChunk-1:1/0),_+=l[b].samplesPerChunk)})),a}function ov(e,t){return e.dataReferenceIndex=Kb(t,6),e.width=Kb(t,24),e.height=Kb(t,26),e.horizresolution=Yb(t,28),e.vertresolution=Yb(t,32),e.frameCount=Kb(t,40),e.depth=Kb(t,74),78}function av(e,t){return e.dataReferenceIndex=Kb(t,6),e.channelCount=Kb(t,16),e.sampleSize=Kb(t,18),e.sampleRate=Yb(t,24)/65536,28}function nv(e,t,i){if(!e)return;if(e.size!==e.data.length)throw new Error(`box ${e.type} size !== data.length`);const s={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(s.version=e.data[e.headerSize],s.flags=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),s.headerSize+=4),i(s,e.data.subarray(s.headerSize),s.start+s.headerSize),s}Ah(sv,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);const lv=function(e,t,i){const s=String(i),r=t>>0;let o=Math.ceil(r/s.length);const a=[],n=String(e);for(;o--;)a.push(s);return a.join("").substring(0,r-n.length)+n},dv=function(){const e=[];for(var t=arguments.length,i=new Array(t),s=0;s{e.push(lv(Number(t).toString(16),2,0))})),e[0]};class hv{static probe(e){return!!hv.findBox(e,["ftyp"])}static findBox(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=[];if(!e)return s;let r=0,o="",a=0;for(;e.length>7;){if(r=Yb(e),o=String.fromCharCode.apply(null,e.subarray(4,8)),a=8,1===r?(r=Qb(e,8),a+=8):r||(r=e.length),!t[0]||o===t[0]){const n=e.subarray(0,r);if(!(t.length<2))return hv.findBox(n.subarray(a),t.slice(1),i+a);s.push({start:i,size:r,headerSize:a,type:o,data:n})}i+=r,e=e.subarray(r)}return s}static tfhd(e){return nv(e,!0,((e,t)=>{e.trackId=Yb(t);let i=4;const s=1&e.flags,r=2&e.flags,o=8&e.flags,a=16&e.flags,n=32&e.flags;s&&(i+=4,e.baseDataOffset=Yb(t,i),i+=4),r&&(e.sampleDescriptionIndex=Yb(t,i),i+=4),o&&(e.defaultSampleDuration=Yb(t,i),i+=4),a&&(e.defaultSampleSize=Yb(t,i),i+=4),n&&(e.defaultSampleFlags=Yb(t,i))}))}static sidx(e){return nv(e,!0,((e,t)=>{let i=0;e.reference_ID=Yb(t,i),i+=4,e.timescale=Yb(t,i),i+=4,0===e.version?(e.earliest_presentation_time=Yb(t,i),i+=4,e.first_offset=Yb(t,i),i+=4):(e.earliest_presentation_time=Qb(t,i),i+=8,e.first_offset=Qb(t,i),i+=8),i+=2,e.references=[];const s=Kb(t,i);i+=2;for(let r=0;r>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=Yb(t,i),i+=4,r=Yb(t,i),i+=4,s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}}))}static moov(e){return nv(e,!1,((e,t,i)=>{e.mvhd=hv.mvhd(hv.findBox(t,["mvhd"],i)[0]),e.trak=hv.findBox(t,["trak"],i).map((e=>hv.trak(e))),e.pssh=hv.pssh(hv.findBox(t,["pssh"],i)[0])}))}static mvhd(e){return nv(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=Yb(t,16),e.duration=Qb(t,20),i+=28):(e.timescale=Yb(t,8),e.duration=Yb(t,12),i+=16),e.nextTrackId=Yb(t,i+76)}))}static trak(e){return nv(e,!1,((e,t,i)=>{e.tkhd=hv.tkhd(hv.findBox(t,["tkhd"],i)[0]),e.mdia=hv.mdia(hv.findBox(t,["mdia"],i)[0])}))}static tkhd(e){return nv(e,!0,((e,t)=>{let i=0;1===e.version?(e.trackId=Yb(t,16),e.duration=Qb(t,24),i+=32):(e.trackId=Yb(t,8),e.duration=Yb(t,16),i+=20),e.width=Yb(t,i+52),e.height=Yb(t,i+56)}))}static mdia(e){return nv(e,!1,((e,t,i)=>{e.mdhd=hv.mdhd(hv.findBox(t,["mdhd"],i)[0]),e.hdlr=hv.hdlr(hv.findBox(t,["hdlr"],i)[0]),e.minf=hv.minf(hv.findBox(t,["minf"],i)[0])}))}static mdhd(e){return nv(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=Yb(t,16),e.duration=Qb(t,20),i+=28):(e.timescale=Yb(t,8),e.duration=Yb(t,12),i+=16);const s=Kb(t,i);e.language=String.fromCharCode(96+(s>>10&31),96+(s>>5&31),96+(31&s))}))}static hdlr(e){return nv(e,!0,((e,t)=>{0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}static minf(e){return nv(e,!1,((e,t,i)=>{e.vmhd=hv.vmhd(hv.findBox(t,["vmhd"],i)[0]),e.smhd=hv.smhd(hv.findBox(t,["smhd"],i)[0]),e.stbl=hv.stbl(hv.findBox(t,["stbl"],i)[0])}))}static vmhd(e){return nv(e,!0,((e,t)=>{e.graphicsmode=Kb(t),e.opcolor=[Kb(t,2),Kb(t,4),Kb(t,6)]}))}static smhd(e){return nv(e,!0,((e,t)=>{e.balance=Kb(t)}))}static stbl(e){return nv(e,!1,((e,t,i)=>{var s,r,o;e.stsd=hv.stsd(hv.findBox(t,["stsd"],i)[0]),e.stts=hv.stts(hv.findBox(t,["stts"],i)[0]),e.ctts=hv.ctts(hv.findBox(t,["ctts"],i)[0]),e.stsc=hv.stsc(hv.findBox(t,["stsc"],i)[0]),e.stsz=hv.stsz(hv.findBox(t,["stsz"],i)[0]),e.stco=hv.stco(hv.findBox(t,["stco"],i)[0]),e.stco||(e.co64=hv.co64(hv.findBox(t,["co64"],i)[0]),e.stco=e.co64);const a=null===(s=e.stsd.entries[0])||void 0===s||null===(r=s.sinf)||void 0===r||null===(o=r.schi)||void 0===o?void 0:o.tenc.default_IV_size;e.stss=hv.stss(hv.findBox(t,["stss"],i)[0]),e.senc=hv.senc(hv.findBox(t,["senc"],i)[0],a)}))}static senc(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return nv(e,!0,((e,i)=>{let s=0;const r=Yb(i,s);s+=4,e.samples=[];for(let o=0;o{const i=[],s=[];let r=0;for(let e=0;e<16;e++)s.push(dv(t[r+e]));if(r+=16,e.version>0){const e=Yb(t,r);r+=4;for(let s=0;s<(""+e).length;s++)for(let e=0;e<16;e++){const e=t[r];r+=1,i.push(dv(e))}}const o=Yb(t,r);e.data_size=o,r+=4,e.kid=i,e.system_id=s,e.buffer=t}))}static stsd(e){return nv(e,!0,((e,t,i)=>{e.entryCount=Yb(t),e.entries=hv.findBox(t.subarray(4),[],i+4).map((e=>{switch(e.type){case"avc1":case"avc2":case"avc3":case"avc4":return hv.avc1(e);case"hvc1":case"hev1":return hv.hvc1(e);case"mp4a":return hv.mp4a(e);case"alaw":case"ulaw":return hv.alaw(e);case"enca":return nv(e,!1,((e,t,i)=>{e.channelCount=Kb(t,16),e.samplesize=Kb(t,18),e.sampleRate=Yb(t,24)/65536,t=t.subarray(28),e.sinf=hv.sinf(hv.findBox(t,["sinf"],i)[0]),e.esds=hv.esds(hv.findBox(t,["esds"],i)[0])}));case"encv":return nv(e,!1,((e,t,i)=>{e.width=Kb(t,24),e.height=Kb(t,26),e.horizresolution=Yb(t,28),e.vertresolution=Yb(t,32),t=t.subarray(78),e.sinf=hv.sinf(hv.findBox(t,["sinf"],i)[0]),e.avcC=hv.avcC(hv.findBox(t,["avcC"],i)[0]),e.hvcC=hv.hvcC(hv.findBox(t,["hvcC"],i)[0]),e.pasp=hv.pasp(hv.findBox(t,["pasp"],i)[0])}))}})).filter(Boolean)}))}static tenc(e){return nv(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 s=0;s<16;s++)e.default_KID.push(dv(t[i])),i+=1}))}static schi(e){return nv(e,!1,((e,t,i)=>{e.tenc=hv.tenc(hv.findBox(t,["tenc"],i)[0])}))}static sinf(e){return nv(e,!1,((e,t,i)=>{e.schi=hv.schi(hv.findBox(t,["schi"],i)[0]),e.frma=hv.frma(hv.findBox(t,["frma"],i)[0])}))}static frma(e){return nv(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 nv(e,!1,((e,t,i)=>{const s=ov(e,t),r=t.subarray(s);i+=s,e.avcC=hv.avcC(hv.findBox(r,["avcC"],i)[0]),e.pasp=hv.pasp(hv.findBox(r,["pasp"],i)[0])}))}static avcC(e){return nv(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 s=0;s<3;s++)t=e[s].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 s=0;s{const s=ov(e,t),r=t.subarray(s);i+=s,e.hvcC=hv.hvcC(hv.findBox(r,["hvcC"],i)[0]),e.pasp=hv.pasp(hv.findBox(r,["pasp"],i)[0])}))}static hvcC(e){return nv(e,!1,((t,i)=>{t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=i[0];const s=i[1];t.generalProfileSpace=s>>6,t.generalTierFlag=(32&s)>>5,t.generalProfileIdc=31&s,t.generalProfileCompatibility=Yb(i,2),t.generalConstraintIndicatorFlags=i.subarray(6,12),t.generalLevelIdc=i[12],t.avgFrameRate=Kb(i,19),t.numOfArrays=i[22],t.vps=[],t.sps=[],t.pps=[];let r=23,o=0,a=0,n=0;for(let e=0;e{e.hSpacing=Yb(t),e.vSpacing=Yb(t,4)}))}static mp4a(e){return nv(e,!1,((e,t,i)=>{const s=av(e,t);e.esds=hv.esds(hv.findBox(t.subarray(s),["esds"],i+s)[0])}))}static esds(e){return nv(e,!0,((e,t)=>{e.codec="mp4a.";let i=0,s=0,r=0,o=0;for(;t.length;){for(i=0,o=t[i],s=t[i+1],i+=2;128&s;)r=(127&s)<<7,s=t[i],i+=1;if(r+=127&s,3===o)t=t.subarray(i+3);else{if(4!==o){if(5===o){const s=e.config=t.subarray(i,i+r);let o=(248&s[0])>>3;return 31===o&&s.length>=2&&(o=32+((7&s[0])<<3)+((224&s[1])>>5)),e.objectType=o,e.codec+=o.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 nv(e,!1,((e,t)=>{av(e,t)}))}static stts(e){return nv(e,!0,((e,t)=>{const i=Yb(t),s=[];let r=4;for(let e=0;e{const i=Yb(t),s=[];let r=4;if(1===e.version)for(let e=0;e{const i=Yb(t),s=[];let r=4;for(let e=0;e{const i=Yb(t),s=Yb(t,4),r=[];if(!i){let e=8;for(let i=0;i{const i=Yb(t),s=[];let r=4;for(let e=0;e{const i=Yb(t),s=[];let r=4;for(let e=0;e{const i=Yb(t),s=[];let r=4;for(let e=0;e{e.mfhd=hv.mfhd(hv.findBox(t,["mfhd"],i)[0]),e.traf=hv.findBox(t,["traf"],i).map((e=>hv.traf(e)))}))}static mfhd(e){return nv(e,!0,((e,t)=>{e.sequenceNumber=Yb(t)}))}static traf(e){return nv(e,!1,((e,t,i)=>{e.tfhd=hv.tfhd(hv.findBox(t,["tfhd"],i)[0]),e.tfdt=hv.tfdt(hv.findBox(t,["tfdt"],i)[0]),e.trun=hv.trun(hv.findBox(t,["trun"],i)[0])}))}static trun(e){return nv(e,!0,((e,t)=>{const{version:i,flags:s}=e,r=t.length,o=e.sampleCount=Yb(t);let a=4;if(r>a&&1&s&&(e.dataOffset=-(1+~Yb(t,a)),a+=4),r>a&&4&s&&(e.firstSampleFlags=Yb(t,a),a+=4),e.samples=[],r>a){let r;for(let n=0;n{1===e.version?e.baseMediaDecodeTime=Qb(t):e.baseMediaDecodeTime=Yb(t)}))}static probe(e){return!!hv.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){var s,r;const o=e.trak;if(!o||!o.length)return;const a=o.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),n=o.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(a&&t){var l,d,h,c,u,p,f;const i=t,s=null===(l=a.tkhd)||void 0===l?void 0:l.trackId;null!=s&&(i.id=a.tkhd.trackId),i.tkhdDuration=a.tkhd.duration,i.mvhdDurtion=e.mvhd.duration,i.mvhdTimecale=e.mvhd.timescale,i.timescale=i.formatTimescale=a.mdia.mdhd.timescale,i.duration=a.mdia.mdhd.duration||i.mvhdDurtion/i.mvhdTimecale*i.timescale;const r=a.mdia.minf.stbl.stsd.entries[0];if(i.width=r.width,i.height=r.height,r.pasp&&(i.sarRatio=[r.pasp.hSpacing,r.pasp.vSpacing]),r.hvcC)i.codecType=iv,i.codec=r.hvcC.codec,i.vps=r.hvcC.vps,i.sps=r.hvcC.sps,i.pps=r.hvcC.pps,i.hvcC=r.hvcC.data;else{if(!r.avcC)throw new Error("unknown video stsd entry");i.codecType=tv,i.codec=r.avcC.codec,i.sps=r.avcC.sps,i.pps=r.avcC.pps}var m,g,y,A,b,v,_,S;if(i.present=!0,i.ext={},i.ext.stss=null===(d=a.mdia)||void 0===d||null===(h=d.minf)||void 0===h||null===(c=h.stbl)||void 0===c?void 0:c.stss,i.ext.ctts=null===(u=a.mdia)||void 0===u||null===(p=u.minf)||void 0===p||null===(f=p.stbl)||void 0===f?void 0:f.ctts,r&&"encv"===r.type)i.isVideoEncryption=!0,r.default_KID=null===(m=r.sinf)||void 0===m||null===(g=m.schi)||void 0===g?void 0:g.tenc.default_KID,r.default_IsEncrypted=null===(y=r.sinf)||void 0===y||null===(A=y.schi)||void 0===A?void 0:A.tenc.default_IsEncrypted,r.default_IV_size=null===(b=r.sinf)||void 0===b||null===(v=b.schi)||void 0===v?void 0:v.tenc.default_IV_size,i.videoSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,r.data_format=null===(_=r.sinf)||void 0===_||null===(S=_.frma)||void 0===S?void 0:S.data_format,i.useEME=e.useEME,i.kidValue=e.kidValue,i.pssh=e.pssh,i.encv=r}if(n&&i){var E,w,T,k,L,C,D,x,R;const t=i,o=null===(E=n.tkhd)||void 0===E?void 0:E.trackId;null!=o&&(t.id=n.tkhd.trackId),t.tkhdDuration=n.tkhd.duration,t.mvhdDurtion=e.mvhd.duration,t.mvhdTimecale=e.mvhd.timescale,t.timescale=t.formatTimescale=n.mdia.mdhd.timescale,t.duration=n.mdia.mdhd.duration||t.mvhdDurtion/t.mvhdTimecale*t.timescale;const a=n.mdia.minf.stbl.stsd.entries[0];switch(t.sampleSize=a.sampleSize,t.sampleRate=a.sampleRate,t.channelCount=a.channelCount,t.present=!0,a.type){case"alaw":t.codecType=t.codec=Zb,t.sampleRate=8e3;break;case"ulaw":t.codecType=t.codec=ev,t.sampleRate=8e3;break;default:t.codecType=Xb,t.sampleDuration=sv.getFrameDuration(t.sampleRate,t.timescale),t.sampleRateIndex=sv.getRateIndexByRate(t.sampleRate),t.objectType=(null===(s=a.esds)||void 0===s?void 0:s.objectType)||2,a.esds&&(t.config=Array.from(a.esds.config)),t.codec=(null===(r=a.esds)||void 0===r?void 0:r.codec)||"mp4a.40.2"}var P,I,B,M,F,U,O,N;if(t.sampleDuration=sv.getFrameDuration(t.sampleRate,t.timescale),t.objectType=(null===(w=a.esds)||void 0===w?void 0:w.objectType)||2,a.esds&&(a.esds.config?t.config=Array.from(a.esds.config):console.warn("esds config is null")),t.codec=(null===(T=a.esds)||void 0===T?void 0:T.codec)||"mp4a.40.2",t.sampleRateIndex=sv.getRateIndexByRate(t.sampleRate),t.ext={},t.ext.stss=null===(k=n.mdia)||void 0===k||null===(L=k.minf)||void 0===L||null===(C=L.stbl)||void 0===C?void 0:C.stss,t.ext.ctts=null===(D=n.mdia)||void 0===D||null===(x=D.minf)||void 0===x||null===(R=x.stbl)||void 0===R?void 0:R.ctts,t.present=!0,a&&"enca"===a.type)t.isAudioEncryption=!0,a.data_format=null===(P=a.sinf)||void 0===P||null===(I=P.frma)||void 0===I?void 0:I.data_format,a.default_KID=null===(B=a.sinf)||void 0===B||null===(M=B.schi)||void 0===M?void 0:M.tenc.default_KID,a.default_IsEncrypted=null===(F=a.sinf)||void 0===F||null===(U=F.schi)||void 0===U?void 0:U.tenc.default_IsEncrypted,a.default_IV_size=null===(O=a.sinf)||void 0===O||null===(N=O.schi)||void 0===N?void 0:N.tenc.default_IV_size,t.audioSenc=n.mdia.minf.stbl.senc&&n.mdia.minf.stbl.senc.samples,t.useEME=e.useEME,t.kidValue=e.kidValue,t.enca=a}if(i&&(i.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!i&&i.isAudioEncryption),null!=t&&t.encv||null!=i&&i.enca){var j,G;const e=null==t||null===(j=t.encv)||void 0===j?void 0:j.default_KID,s=null==i||null===(G=i.enca)||void 0===G?void 0:G.default_KID,r=e||s?(e||s).join(""):null;t&&(t.kid=r),i&&(i.kid=r)}return t&&(t.flags=3841),i&&(i.flags=1793),{videoTrack:t,audioTrack:i}}static evaluateDefaultDuration(e,t,i){var s;const r=null==t||null===(s=t.samples)||void 0===s?void 0:s.length;if(!r)return 1024;return 1024*r/t.timescale*e.timescale/i}static moofToSamples(e,t,i){const s={};return e.mfhd&&(t&&(t.sequenceNumber=e.mfhd.sequenceNumber),i&&(i.sequenceNumber=e.mfhd.sequenceNumber)),e.traf.forEach((e=>{let{tfhd:r,tfdt:o,trun:a}=e;if(!r||!a)return;o&&(t&&t.id===r.trackId&&(t.baseMediaDecodeTime=o.baseMediaDecodeTime),i&&i.id===r.trackId&&(i.baseMediaDecodeTime=o.baseMediaDecodeTime));const n=r.defaultSampleSize||0,l=r.defaultSampleDuration||hv.evaluateDefaultDuration(t,i,a.samples.length||a.sampleCount);let d=a.dataOffset||0,h=0,c=-1;if(!a.samples.length&&a.sampleCount){s[r.trackId]=[];for(let e=0;e((e={offset:d,dts:h,pts:h+(e.cts||0),duration:e.duration||l,size:e.size||n,gopId:c,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(c++,e.gopId=c),h+=e.duration,d+=e.size,e)))})),s}static moovToSamples(e){const t=e.trak;if(!t||!t.length)return;const i=t.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),s=t.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(!i&&!s)return;let r,o;if(i){var a,n;const e=null===(a=i.mdia)||void 0===a||null===(n=a.minf)||void 0===n?void 0:n.stbl;if(!e)return;const{stts:t,stsc:s,stsz:o,stco:l,stss:d,ctts:h}=e;if(!(t&&s&&o&&l&&d))return;r=rv(t,s,o,l,h,d)}if(s){var l,d,h;const e=null===(l=s.mdia)||void 0===l||null===(d=l.minf)||void 0===d?void 0:d.stbl;if(!e)return;const t=null===(h=s.mdia.mdhd)||void 0===h?void 0:h.timescale,{stts:i,stsc:r,stsz:a,stco:n}=e;if(!(t&&i&&r&&a&&n))return;o=rv(i,r,a,n)}return{videoSamples:r,audioSamples:o}}}class cv extends nh{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._tempSampleTsList=[],this._basefps=25,this._isUseWorker()&&this._initLoopWorker(),e.debugLog(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._tempSampleTsList=[],this.videoTrack=null,this.audioTrack=null,this.isInitVideo=!1,this.isInitAudio=!1,this._basefps=25,this.player.debugLog(this.TAG_NAME,"destroy")}demux(e,t){let i=this.audioTrack,s=this.videoTrack;if(this.checkInitAudio(),this.checkInitVideo(),i.samples=[],s.samples=[],t){if(this.player.updateStats({abps:t.byteLength}),Ea(this.isInitAudio)){const e=hv.findBox(t,["moov"])[0];if(!e)return void this.player.debugError(this.TAG_NAME,"cannot found moov box");hv.moovToTrack(hv.moov(e),null,i),this.checkInitAudio()&&(this.player.debugLog(this.TAG_NAME,"audioData audio init success"),this._sendAccADTSHeader(i))}const e=hv.findBox(t,["moof"])[0];if(e){const s=hv.moofToSamples(hv.moof(e),null,i)[i.id],r=i.baseMediaDecodeTime;if(s){const o=e.start;s.map((e=>{e.offset+=o;const s=t.subarray(e.offset,e.offset+e.size),a=e.dts+r,n=new Uint8Array(s.length+2);n.set([175,1],0),n.set(s,2),i.samples.push({type:Oe,pts:a,dts:a,payload:n,duration:e.duration,size:n.byteLength})}))}}}if(e){if(this.player.updateStats({vbps:e.byteLength}),Ea(this.isInitVideo)&&Ea(this.isInitAudio)){const t=hv.findBox(e,["moov"])[0];if(!t)throw new Error("cannot found moov box");if(hv.moovToTrack(hv.moov(t),s,i),Ea(this.isInitAudio)&&this.checkInitAudio()&&(this.player.debugLog(this.TAG_NAME,"videoData audio init success",i),this._sendAccADTSHeader(i)),this.checkInitVideo()){this.player.debugLog(this.TAG_NAME,"video init success");let e=null;s.codecType===cs?s.sps.length&&s.vps.length&&s.pps.length&&(e=il({sps:s.sps[0],pps:s.pps[0],vps:s.vps[0]})):s.sps.length&&s.pps.length&&(e=zn({sps:s.sps[0],pps:s.pps[0]})),e&&(this.player.debugLog(this.TAG_NAME,"seqHeader"),this._doDecodeByHls(e,Ne,0,!0,0))}}const t=hv.findBox(e,["moof"])[0];if(t){const r=hv.moofToSamples(hv.moof(t),s,i),o=s.baseMediaDecodeTime,a=i.baseMediaDecodeTime,n=t.start;Object.keys(r).forEach((t=>{s.id==t?r[t].map((t=>{t.offset+=n;const i={type:Ne,pts:(t.pts||t.dts)+o,dts:t.dts+o,units:[],payload:null,isIFrame:!1};i.duration=t.duration,i.gopId=t.gopId,t.keyframe&&(i.isIFrame=!0);const r=e.subarray(t.offset,t.offset+t.size);i.payload=r,s.samples.push(i)})):i.id==t&&r[t].map((t=>{t.offset+=n;const s=e.subarray(t.offset,t.offset+t.size),r=t.dts+a,o=new Uint8Array(s.length+2);o.set([175,1],0),o.set(s,2),i.samples.push({type:Oe,pts:r,dts:r,payload:o,duration:t.duration,size:o.byteLength})}))}))}}const r=s.samples.concat(i.samples);r.sort(((e,t)=>e.dts-t.dts)),r.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})})),Ea(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(r))}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=zr({profile:e.objectType,sampleRate:e.sampleRateIndex,channel:e.channelCount});this._doDecodeByHls(t,Oe,0,!0,0)}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=fa(this._tempSampleTsList,Ne);if(i)this._tempSampleTsList=[],this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debugLog(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debugLog(this.TAG_NAME,"_initLoopWorker()");const e=Ca(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(`JbPro:[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((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=s.duration)):s.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 if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};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 s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),se),s.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=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debugWarn(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}),this.cryptoPayloadAudio(t),this._doDecodeByHls(t,Oe,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?sl(t,e.isIFrame):Wn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,Ne,e.dts,e.isIFrame,s)}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 uv{constructor(e,t){this.hls=e,this.player=this.hls.player,this.isMP4=t,this._initSegmentId="",this.TAG_NAME="HlsTransmuxer",this._demuxer=t?new cv(this.hls.player):new qb(this.hls.player),this.player.debugLog(this.TAG_NAME,`init and isMP4 is ${t}`)}destroy(){this._demuxer&&(this._demuxer.destroy(),this._demuxer=null)}transmux(e,t,i,s,r,o){this.player.debugLog(this.TAG_NAME,`transmux videoChunk:${e&&e.byteLength}, audioChunk:${t&&t.byteLength}, discontinuity:${i}, contiguous:${s}, startTime:${r}, needInit:${o}`);const a=this._demuxer;try{this.isMP4?a.demux(e,t):a.demuxAndFix(Ch(e,t),i,s,r)}catch(e){throw new _b(vb,bb,e)}}}class pv{constructor(e){this.hls=e,this.player=e.player,this._decryptor=new Jb(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(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t._baseDts}get nbSb(){return 0}async updateDuration(e){this.player.debugLog(this.TAG_NAME,"updateDuration()",e)}getBuferredDuration(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getBuferredDuration()}getBufferedSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleListLength()}getBufferedAudioSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleAudioListLength()}getBufferedVideoSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleVideoListLength()}createSource(e,t,i,s){if(this._sourceCreated)return;const r=e||t;r&&(qb.probe(r)?this._transmuxer||(this._transmuxer=new uv(this.hls,!1)):hv.probe(r)?this._transmuxer||(this._transmuxer=new uv(this.hls,!0)):this.player.debugError(this.TAG_NAME,"createSource error: chunk is not ts"))}async appendBuffer(e,t,i,s,r,o,a){if(null!=i&&i.length||null!=s&&s.length)return this._needInitSegment,this._transmuxer.transmux(i,s,r,o,a,this._needInitSegment||r),!0}async clearAllBuffer(){this.player.debugLog(this.TAG_NAME,"clearAllBuffer")}decryptBuffer(e,t){return this._decryptor.decrypt(e,t)}async reset(){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 fv{constructor(e){this.emitter=e,this._seiSet=new Set,e.on(Hs,(e=>{e&&this._seiSet.add(e)}))}throw(e){if(null==e||!this._seiSet.size)return;const t=e-.2,i=e+.2,s=[];this._seiSet.forEach((e=>{e.time>=t&&e.time<=i&&s.push(e)})),s.forEach((e=>{this._seiSet.delete(e),this.emitter.emit(Js,e)}))}reset(){this._seiSet.clear()}}class mv{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(e){var t;let{data:i}=e;const s=null==i||null===(t=i.onMetaData)||void 0===t?void 0:t.framerate;s&&s>0&&s<100&&(this.fps=s)}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 gv{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3;Ah(this,"_core",null),Ah(this,"_samples",[]),this._core=e,this._timescale=t,this._stats=new mv(t),this._bindEvents()}getStats(){var e,t,i,s,r,o,a;const{currentTime:n=0,decodeFps:l=0}=(null===(e=this._core)||void 0===e?void 0:e.media)||{};return{...this._stats.getStats(),downloadSpeed:(null===(t=this._core)||void 0===t||null===(i=t.speedInfo)||void 0===i?void 0:i.call(t).speed)||0,avgSpeed:(null===(s=this._core)||void 0===s||null===(r=s.speedInfo)||void 0===r?void 0:r.call(s).avgSpeed)||0,currentTime:n,bufferEnd:(null===(o=this._core)||void 0===o||null===(a=o.bufferInfo())||void 0===a?void 0:a.remaining)||0,decodeFps:l}}_bindEvents(){this._core.on(Us,(e=>this._stats.updateBitrate(e.samples))),this._core.on(Os,(e=>{this._stats.setFpsFromScriptData(e)})),this._core.on(Ns,(e=>{"video"===e.type?this._stats.setVideoMeta(e.track):this._stats.setAudioMeta(e.track)})),this._core.on(js,(e=>{this._stats.setDomain(e.responseUrl)}))}reset(){this._samples=[],this._stats=new mv(this._timescale)}}class yv extends Ba{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),Ah(this,"_loadSegment",(async()=>{if(this._segmentProcessing)return void this.player.debugWarn("_loadSegment()","_segmentProcessing is ture and return");if(!this._playlist)return void this.player.debugWarn("_loadSegment()","this._playlist is null and return");const e=this._playlist.currentSegment,t=this._playlist.nextSegment;if(this.player.debugLog(this.TAG_NAME,"_loadSegment()","curSeg",e&&e.url,"nextSeg",t&&t.url),t)return this._loadSegmentDirect();this.player.debugLog(this.TAG_NAME,"nextSeg is null and return")})),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 zb(this),this._segmentLoader=new Vb(this),this._playlist=new Hb(this),this._bufferService=new pv(this),this._seiService=new fv(this),this._stats=new gv(this,9e4),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){this.player.debugLog(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.debugLog(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.debugLog(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(){var e;return null===(e=this._bufferService)||void 0===e?void 0:e.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 _b(yb,yb,null,null,"m3u8 url is missing"));const t=await this._loadM3U8(e),{currentStream:i}=this._playlist;if(this._urlSwitching){var s,r;if(0===i.bitrate&&null!==(s=this._switchUrlOpts)&&void 0!==s&&s.bitrate)i.bitrate=null===(r=this._switchUrlOpts)||void 0===r?void 0:r.bitrate;const e=this._getSeamlessSwitchPoint();this.config.startTime=e;const t=this._playlist.findSegmentIndexByTime(e),o=this._playlist.getSegmentByIndex(t+1);if(o){const e=o.start;this.player.debugWarn(this.TAG_NAME,`clear buffer from ${e}`)}}t&&(this.isLive?(this.player.debugLog(this.TAG_NAME,"is live"),this._bufferService.setLiveSeekableRange(0,4294967295),this.config.targetLatency{let[t,i,a]=e;t?(this._playlist.upsertPlaylist(t,i,a),this.isLive&&this._pollM3U8(s,r,o)):this.player.debugWarn(this.TAG_NAME,"_refreshM3U8() mediaPlaylist is empty")})).catch((e=>{throw this._emitError(_b.create(e))}))}_pollM3U8(e,t,i){var s;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(_b.create(e))}),1e3*((null===(s=this._playlist.lastSegment)||void 0===s?void 0:s.duration)||0))}async _loadSegmentDirect(){const e=this._playlist.nextSegment;if(!e)return void this.player.debugLog(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(_b.create(i)):(t?(this._urlSwitching&&(this._urlSwitching=!1,this.emit(Ks,{url:this.config.url})),this._playlist.moveSegmentPointer(),this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast",e.isLast),e.isLast?(this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast"),this._end()):(this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","and next _loadSegment()"),this._loadSegment())):this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect() not appended"),t)}async _reqAndBufferSegment(e,t){this.player.debugLog(this.TAG_NAME,"video seg",e&&e.url,"audio seg",t&&t.url);const i=e?e.cc:t.cc,s=this._prevSegCc!==i;let r=[];try{r=await this._segmentLoader.load(e,t,s)}catch(e){throw e.fatal=!1,this._segmentLoader.error=e,e}if(!r[0])return;const o=await this._bufferService.decryptBuffer(...r);if(!o)return void this.player.debugLog(this.TAG_NAME,"decryptBuffer return null");const a=e?e.sn:t.sn,n=e?e.start:t.start,l=this._playlist.currentStream;return this._bufferService.createSource(o[0],o[1],null==l?void 0:l.videoCodec,null==l?void 0:l.audioCodec),await this._bufferService.appendBuffer(e,t,o[0],o[1],s,this._prevSegSn===a-1,n),this._prevSegCc=i,this._prevSegSn=a,!0}async _clear(){this.player.debugLog(this.TAG_NAME,"_clear()"),clearTimeout(this._disconnectTimer),this._stopTick(),await Promise.all([this._segmentLoader.cancel(),this._manifestLoader.stopPoll()]),this._segmentProcessing=!1}async _reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.player.debugLog(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.debugLog(this.TAG_NAME,"_end()"),this._clear()}_emitError(e){var t;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var s;!1===(null===(t=e.originError)||void 0===t?void 0:t.fatal)?console.warn(e):(console.table(e),console.error(e),console.error(null===(s=this.media)||void 0===s?void 0:s.error),this._stopTick(),this._urlSwitching&&(this._urlSwitching=!1,this.emit(qs,e)),i&&this._end(),this._seiService.reset(),this.emit(Xs,e));return e}_getSeamlessSwitchPoint(){const{media:e}=this;let t=e.currentTime;if(!e.paused){var i;const s=this._playlist.findSegmentIndexByTime(e.currentTime),r=this._playlist.getSegmentByIndex(s),o=null===(i=this._stats)||void 0===i?void 0:i.getStats().downloadSpeed;if(o&&r){t+=r.duration*this._playlist.currentStream.bitrate/o+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 Av extends Ba{constructor(e){super(),Ah(this,"TAG_NAME","Hls256Decoder"),this.player=e,this.$videoElement=this.player.video.$videoElement,this.hls=null,this.eventsDestroy=[],this.bandwidthEstimateInterval=null,this.hls=new yv(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.debugLog(this.TAG_NAME,"destroy"),!0}_bindEvents(){this.hls.on(Xs,(e=>{this.player.emitError(At.hlsError,e)})),this._startBandwidthEstimateInterval()}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{const e=this.hls.speedInfo();this.player.emit(mt.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 bv extends Ba{constructor(e,t){if(super(),this.player=e,this.player.$container.classList.add("jb-pro-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=!!Sa(t.isUseFpsRender),this._rate=1,this._audioTimestamp=0,this._videoTimestamp=0,this.controlType=t.controlType||Q.normal,t.controlType&&-1===[Q.normal,Q.simple].indexOf(t.controlType)&&(this.player.debugWarn("Playback","constructor()","controlType is not in [normal,simple]",t.controlType),this.controlType=Q.normal),this._currentLocalTimestamp=0,this._localOneFrameTimestamp=t.localOneFrameTimestamp||40,this._localCalculateTimeInterval=null,this._isUseLocalCalculateTime=!!Sa(t.isUseLocalCalculateTime),this._isPlaybackPauseClearCache=!Ea(t.isPlaybackPauseClearCache),this._isCacheBeforeDecodeForFpsRender=!!Sa(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===Q.normal)this.initPlaybackList(t.playList,t.showPrecision,t.startTime);else if(t.controlType===Q.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(mt.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};try{e.debugLog("Playback","init",JSON.stringify(i))}catch(t){e.debugLog("Playback","init",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("jb-pro-container-playback"),this.off(),this.player.debugLog("Playback","destroy")}_listen(){this.player.on(mt.stats,(e=>{const t=e.ts;this._playStartTime||(this._playStartTime=t-1e3);let i=t-this._playStartTime;if(this.setPlayingTimestamp(i),this.player.isPlaybackUseMSE()&&this.player.isPlaying()&&0===e.videoCurrentTimeDiff&&(this.player.debugWarn(this.TAG_NAME,`updateStats and videoCurrentTimeDiff is 0 and\n videoCurrentTime is ${e.videoCurrentTime}\n and next update video currentTime`),this.player.mseDecoder.updateVideoCurrentTimeByBufferStart()),this.player.isStreamEnd()&&this.player.isPlaying()&&this.player.isPlaybackUseMSE()&&0===e.videoCurrentTimeDiff){this.player.mseDecoder.isCurrentTimeInBufferEnd()&&this.player.emit(mt.playbackEnd)}}))}pause(){this.clearStatsInterval()}resume(){this.startCheckStatsInterval()}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._startFpsTimestamp||(this._startFpsTimestamp=co()),jo(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=co(),i=t-this._startFpsTimestamp;if(i<1e3)return;let s=null;this._startfpsTime&&(s=this._playbackTs-this._startfpsTime),this.player.emit(mt.playbackStats,{fps:this._renderFps,rate:this.rate,start:this._startfpsTime,end:this._playbackTs,timestamp:i,dataTimestamp:s,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 s=0;if(this.playbackList.forEach(((e,t)=>{10===Qo(e.start)?(e.startTimestamp=1e3*e.start,e.startTime=ko(e.startTimestamp)):(e.startTimestamp=e.start,e.startTime=ko(e.startTimestamp)),10===Qo(e.end)?(e.endTimestamp=1e3*e.end,e.endTime=ko(e.endTimestamp)):(e.endTimestamp=e.end,e.endTime=ko(e.endTimestamp)),e.duration=e.end-e.start,s+=e.duration})),this._totalDuration=s,this.player.debugLog("Playback",this.playbackList),this.playbackList.length>0){const e=this.playbackList[0].startTimestamp;this._playbackListStartTimestamp=e;let t=e;i&&(10===Qo(i)&&(i*=1e3),this._isTimeInPlaybackList(i)&&(t=i)),this.setStartTime(t)}const r=t||Ri;this.setShowPrecision(r)}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(mt.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===Ri}get is30Min(){return this.showPrecision===Pi}get is10Min(){return this.showPrecision===Ii}get is5Min(){return this.showPrecision===Bi}get is1Min(){return this.showPrecision===Bi}get isPlaybackPauseClearCache(){return this._isPlaybackPauseClearCache}get isCacheBeforeDecodeForFpsRender(){return this._isCacheBeforeDecodeForFpsRender}setShowPrecision(e){Fi.includes(e)||(this.player.debugWarn("Playback","setShowPrecision()","type is not in PLAYBACK_CONTROL_TIME_PRECISION_ARRAY",e),e=Ri),this._showPrecision&&this._showPrecision===e||(this._showPrecision=e,this.player.emit(mt.playbackPrecision,this._showPrecision,this.playbackList),this.player.emit(mt.playbackShowPrecisionChange,this._showPrecision))}setPlayingTimestamp(e){let t;if(this.controlType===Q.normal){t=this.startTime+e,this._playingTimestamp=t,this.player.emit(mt.playbackTime,t);const i=new Date(t);this.player.emit(mt.playbackTimestamp,{ts:t,hour:i.getHours(),min:i.getMinutes(),second:i.getSeconds()})}else this.controlType===Q.simple&&(t=this.startTime+Math.round(e/1e3),t>this.totalDuration&&(this.player.debugLog("Playback","setPlayingTimestamp()",`timestamp ${t} > this.totalDuration ${this.totalDuration}`),t=this.totalDuration),this._playingTimestamp=t,this.player.emit(mt.playbackTime,t),this.player.emit(mt.playbackTimestamp,{ts:t}))}get playingTimestamp(){return this._playingTimestamp}narrowPrecision(){const e=Fi.indexOf(this.showPrecision)-1;if(e>=0){const t=Fi[e];this.setShowPrecision(t)}}expandPrecision(){const e=Fi.indexOf(this.showPrecision)+1;if(e<=Fi.length-1){const t=Fi[e];this.setShowPrecision(t)}}seek(e){if(this.player.debugLog("Playback","seek()",e),this.controlType===Q.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(mt.playbackSeek,i)}}else if(this.controlType===Q.simple){let t=e.time;this.player.emit(mt.playbackSeek,{ts:t})}}currentTimeScroll(){this.player.emit(mt.playbackTimeScroll)}_findMoreInfoByTimestamp(e){let t=null;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=i)})),t}_isTimeInPlaybackList(e){let t=!1;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=!0)})),t}getControlType(){return this.controlType}isControlTypeNormal(){return this.controlType===Q.normal}isControlTypeSimple(){return this.controlType===Q.simple}isPlaybackPauseNotClearCacheAndCacheBeforeDecode(){return Ea(this.isPlaybackPauseClearCache)&&this.isCacheBeforeDecodeForFpsRender}isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender(){return this.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.isUseFpsRender}}class vv extends Ba{constructor(e){super(),this.player=e,this.TAG_NAME="zoom",this.bindEvents=[],this.isDragging=!1,this.isGesturing=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.prevGestureScale=null,this.prevGestureTouches=[],this._isZooming=!1,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.player,this.player.on(mt.zooming,this._handleZooming.bind(this)),e.debugLog("zoom","init")}destroy(){this._unbindEvents(),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.debugLog("zoom","destroy")}_handleZooming(e){if(e){this.player.$container.classList.add("jb-pro-zoom-control"),this._bindEvents();const e=this.player.video.$videoElement.style.transform;let t=this.player.video.$videoElement.offsetLeft,i=this.player.video.$videoElement.offsetTop;t=parseFloat(t),i=parseFloat(i),t&&(this.videoPosition.left=t),i&&(this.videoPosition.top=i),this.prevVideoElementStyleTransform=e;let s=e.match(/scale\([0-9., ]*\)/g);if(s&&s[0]){let e=s[0].replace("scale(","").replace(")","");this.prevVideoElementStyleScale=e.split(",")}this._isZooming=!0}else{this.player.$container.classList.remove("jb-pro-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,bo()&&this.player._opt.useWebFullScreen&&this.player.resize(),this._isZooming=!1}}_bindEvents(){const{events:{proxy:e}}=this.player,t=Pa(),i=e(this.player.$container,t.move,this.handleMouseMove.bind(this)),s=e(this.player.$container,t.down,this.handleMouseDown.bind(this)),r=e(window,t.up,this.handleMouseUp.bind(this));if(this.bindEvents.push(i,s,r),bo()&&this.player._opt.zoomSupportGestureInMobile)if(_o()){this.handleGestureChangeThrottle=xo(this.handleGestureChangeForAndroid.bind(this),100);const t=e(this.player.$container,"touchstart",this.handleGestureStartForAndroid.bind(this)),i=e(this.player.$container,"touchmove",this.handleGestureChangeThrottle.bind(this)),s=e(this.player.$container,"touchend",this.handleGestureEndForAndroid.bind(this));this.bindEvents.push(t,i,s)}else{this.handleGestureChangeThrottle=xo(this.handleGestureChange.bind(this),100);const t=e(this.player.$container,"gesturestart",this.handleGestureStart.bind(this)),i=e(this.player.$container,"gesturechange",this.handleGestureChangeThrottle.bind(this)),s=e(this.player.$container,"gestureend",this.handleGestureEnd.bind(this));this.bindEvents.push(t,i,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),s=this.tempPosition.x-t,r=this.tempPosition.y-i;this.videoPosition.left=this.videoPosition.left-s,this.videoPosition.top=this.videoPosition.top-r,this.tempPosition.x=t,this.tempPosition.y=i,this.updateVideoPosition()}}handleMouseDown(e){e.stopPropagation();const t=sa(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.debugLog("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.debugLog("zoom","handleMouseUp is dragging false"))}handleGestureStart(e){e.stopPropagation(),this.player.zooming&&(null===this.prevGestureScale&&(this.prevGestureScale=e.scale),this.isGesturing=!0)}handleGestureStartForAndroid(e){e.stopPropagation(),this.player.zooming&&e.touches.length>=2&&(this.isGesturing=!0,this.prevGestureTouches=e.touches)}handleGestureChangeForAndroid(e){if(e.stopPropagation(),e.preventDefault(),this.player.zooming&&this.isGesturing&&e.touches.length>=2){const s=e.touches,r=t(s[0],s[1])/t(this.prevGestureTouches[0],this.prevGestureTouches[1]);i(s[0],s[1]),i(this.prevGestureTouches[0],this.prevGestureTouches[1]),null===this.prevGestureScale&&(this.prevGestureScale=r);const o=r-this.prevGestureScale,a=this.player._opt.zoomSupportGestureInMobileSpeed;o>0?this.expandPrecision(a):o<0&&this.narrowPrecision(a)}function t(e,t){var i=t.pageX-e.pageX,s=t.pageY-e.pageY;return Math.sqrt(i*i+s*s)}function i(e,t){var i=e.pageX-t.pageX,s=e.pageY-t.pageY;return 180*Math.atan2(s,i)/Math.PI}}handleGestureEndForAndroid(e){e.stopPropagation(),this.player.zooming&&(this.prevGestureScale=null,this.isGesturing=!1,this.prevGestureTouches=[])}handleGestureChange(e){if(e.stopPropagation(),this.player.zooming&&this.isGesturing&&null!==this.prevGestureScale){const t=e.scale,i=t-this.prevGestureScale,s=this.player._opt.zoomSupportGestureInMobileSpeed;i>0?this.expandPrecision(s):i<0&&this.narrowPrecision(s),this.prevGestureScale=t}}handleGestureEnd(e){e.stopPropagation(),this.player.zooming&&(this.prevGestureScale=null,this.isGesturing=!1)}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(e){this.currentZoom<=1||(this.currentZoom-=1,this.updateVideoElementScale(e))}expandPrecision(e){this.currentZoom>=this.player._opt.zoomMaxScale||(this.currentZoom+=1,this.updateVideoElementScale(e))}updateCurrentZoom(e,t){e<1||e>this.player._opt.zoomMaxScale||(this.currentZoom=e,this.updateVideoElementScale(t))}updatePrevVideoElementStyleScale(e){this.prevVideoElementStyleScale=e}updateVideoElementScale(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5;const t=this.player.video.$videoElement;let i=t.style.transform,s=1,r=1;if(this.prevVideoElementStyleScale){const e=this.prevVideoElementStyleScale[0];void 0!==e&&(s=e,r=e);const t=this.prevVideoElementStyleScale[1];void 0!==t&&(r=t)}r=Co(r),s=Co(s);const o=e*s*(this.currentZoom-1)+s,a=e*r*(this.currentZoom-1)+r;let n;n=-1===i.indexOf("scale(")?i+` scale(${o},${a})`:i.replace(/scale\([0-9., ]*\)/,`scale(${o},${a})`),this.player.debugLog("zoom",`updateVideoElementScale end is X: ${s} -> ${o}, Y: ${r} -> ${a} style is ${n}`),t.style.transform=n}isZooming(){return this._isZooming}}class _v extends Ba{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.debugLog("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.debugLog("AiLoader","destroy")}initFaceDetector(){if(this.player._opt.useFaceDetector&&window.JessibucaProFaceDetector){const e=new JessibucaProFaceDetector({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.debugLog("AiLoader","init face detector success"),this.faceDetector=e,this.faceDetector.on("jessibuca-pro-face-detector-info",(e=>{if(this.player.emit(mt.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.JessibucaProObjectDetector){const e=new JessibucaProObjectDetector({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.debugLog("AiLoader","init object detector success"),this.objectDetector=e,this.objectDetector.on("jessibuca-pro-object-detector-info",(e=>{if(this.player.emit(mt.aiObjectDetectorInfo,e),this.player._opt.aiObjectDetectShowRect){const t=[],i=this.player._opt.aiObjectDetectRectConfig||{};(e.list||[]).forEach((e=>{const s={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},r={type:"text",color:i.color||"#000",fontSize:i.fontSize||14,text:e.zh,x:e.rect.x,y:e.rect.y-25};t.push(s,r)})),this.player.video&&this.player.video.addAiContentToCanvas(t)}}))}))}}initImageDetector(){if(this.player._opt.useImageDetector&&window.JessibucaProImageDetector){const e=new JessibucaProImageDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debugLog("AiLoader","init image detector success"),this.imageDetector=e}))}}initOcclusionDetector(){if(this.player._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector){const e=new JessibucaProOcclusionDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debugLog("AiLoader","init occlusion detector success"),this.occlusionDetector=e}))}}updateFaceDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.faceDetector&&this.faceDetector.updateConfig(e)}updateObjectDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.objectDetector&&this.objectDetector.updateConfig(e)}updateImageDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.imageDetector&&this.imageDetector.updateConfig(e)}updateOcclusionDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.occlusionDetector&&this.occlusionDetector.updateConfig(e)}}class Sv extends Ba{constructor(e){super(),this.player=e,this.LOG_NAME="Contextmenu",this.menuList=[],this.$contextmenus=e.control.$contextmenus,bo()?this.player.debugWarn(this.LOG_NAME,"not support mobile"):this.init(),e.debugLog(this.LOG_NAME,"init")}destroy(){this.menuList=[],this.player.debugLog(this.LOG_NAME,"destroy")}get isShow(){return fc(this.player.$container,"jb-pro-contextmenus-show")}show(){uc(this.player.$container,"jb-pro-contextmenus-show")}hide(){pc(this.player.$container,"jb-pro-contextmenus-show")}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:s,width:r,left:o,top:a}=this.player.$container.getBoundingClientRect(),{height:n,width:l}=this.$contextmenus.getBoundingClientRect();let d=t-o,h=i-a;t+l>o+r&&(d=r-l),i+n>a+s&&(h=s-n),po(this.$contextmenus,{left:`${d}px`,top:`${h}px`})})),e(this.player.$container,"click",(e=>{yc(e,this.$contextmenus)||this.hide()})),this.player.on(mt.blur,(()=>{this.hide()}))}_validateMenuItem(e){let t=!0;return e.content||(this.player.debugWarn(this.LOG_NAME,"content is required"),t=!1),t}addMenuItem(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Aa(Ps);if(e=Object.assign({},t,e),!this._validateMenuItem(e))return;const{events:{proxy:i},debug:s}=this.player,r=Do(),o=`\n
    \n ${e.content}\n
    \n `,a=Array.from(this.$contextmenus.children)[e.index];a?a.insertAdjacentHTML("beforebegin",o):mc(this.$contextmenus,o);const n=this.$contextmenus.querySelector(`.jb-pro-contextmenu-${r}`);e.click&&i(n,"click",(t=>{t.preventDefault(),e.click.call(this.player,this,t),this.hide()})),this.menuList.push({uuid:r,$menuItem:n})}}class Ev extends Ba{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"),To()&&(this.$videoElement.style.position="absolute"),this._initVideoEvents()),this.$videoElement.muted=!0,this._initRtcPeerConnection()}destroy(){if(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))if(this.player._opt.webrtcUseCanvasRender){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}else this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject"));this.$videoElement=null,this.rtcPeerConnection&&(this.rtcPeerConnection.onicecandidate=ao,this.rtcPeerConnection.ontrack=ao,this.rtcPeerConnection.onconnectionstatechange=ao,this.rtcPeerConnection.ondatachannel=ao,this.rtcPeerConnection.close(),this.rtcPeerConnection=null)}_initVideoEvents(){this.player.debugLog(this.TAG_NAME,"_initVideoEvents()");const{proxy:e}=this.player.events,t=e(this.$videoElement,os,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,as,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,ds,(()=>{this.player.debugLog(this.TAG_NAME,"video loadedmetadata")})),r=e(this.$videoElement,ns,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),o=e(this.$videoElement,ls,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,r,o,s)}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debugLog(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debugLog(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debugLog(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debugLog(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(mt.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(mt.webrtcFailed);break;case"disconnected":t.emit(mt.webrtcDisconnect);break;case"closed":t.emit(mt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debugLog(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debugLog(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=t=>{if(this.player.debugLog(this.TAG_NAME,"ontrack",t),"video"===t.track.kind){this.player.debugLog(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.debugLog(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.debugLog(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(At.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debugLog(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(mt.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(mt.webrtcFailed)}},this.rtcPeerConnection=e}_startBandwidthEstimateInterval(){this.player.debugLog(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 mr:("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 Ar:this.currentWebrtcStats.remoteCandidate=e||{};break;case yr:this.currentWebrtcStats.localCandidate=e||{};break;case gr:this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcVideoStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcVideoStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.vbps=o,this.prevWebrtcVideoStats=e;break;case br: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===gr){this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcAudioStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcAudioStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.abps=o,this.prevWebrtcAudioStats=e}})),this.player.updateStats(t),this.player.emit(mt.kBps,(i/1024).toFixed(2))})):(this.player.updateStats(t),this.player.emit(mt.kBps,(i/1024).toFixed(2)))}))}),1e3)}_stopBandwidthEstimateInterval(){this.player.debugLog(this.TAG_NAME,"_stopBandwidthEstimateInterval"),this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startCanvasRender(){Da()?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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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.updateStats({dts:i}),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}isVideoPlaying(){return this.$videoElement&&Ea(this.$videoElement.paused)&&Ea(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class wv extends Ev{constructor(e){super(e),this.TAG_NAME="WebrtcForSRSDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debugError(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r})).then((()=>{t()})).catch((e=>{this.player&&this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"response sdp is null"),i("response sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class Tv extends Ev{constructor(e){super(e),this.TAG_NAME="WebrtcForOthersDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`),e.text().then((e=>{this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp response");try{let t=JSON.parse(e);this.player.debugLog(this.TAG_NAME,"this is json sdp response"),0!=t.code&&(this.player.debugError(this.TAG_NAME,`response json code ${t.code}`),i(new Error(`response sdp json code: ${t.code}`))),e=t.sdp}catch(e){this.player.debugLog(this.TAG_NAME,"this is raw sdp response")}e?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{t()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"loadSource sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class kv extends Ev{constructor(e){super(e),this.rtcPeerConnectionDataChannel=null,this.player.isWebrtcH265()&&(this.streamRate=go((t=>{e.emit(mt.kBps,(t/1024).toFixed(2))}))),this.TAG_NAME="WebrtcForM7SDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.stopStreamRateInterval(),this.rtcPeerConnectionDataChannel&&(this.rtcPeerConnectionDataChannel.onopen=ao,this.rtcPeerConnectionDataChannel.onclose=ao,this.rtcPeerConnectionDataChannel.onmessage=ao,this.rtcPeerConnectionDataChannel.close(),this.rtcPeerConnectionDataChannel=null),this.player.debugLog(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.debugLog(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debugLog(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debugLog(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debugLog(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(mt.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(mt.webrtcFailed);break;case"disconnected":t.emit(mt.webrtcDisconnect);break;case"closed":t.emit(mt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debugLog(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debugLog(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=i=>{this.player.debugLog(this.TAG_NAME,"ontrack",i);const s=t.getWebrtcVideo();if(t.isWebrtcH264())if("video"===i.track.kind){this.player.debugLog(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];s.autoplay=!0,s.srcObject=t,this.videoStream=t}else"audio"===i.track.kind&&(this.player.debugLog(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.debugLog(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(At.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debugLog(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(mt.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(mt.webrtcFailed)}},e.ondatachannel=e=>{const t=e.channel;this.player.debugLog(this.TAG_NAME,"ondatachannel"),t.onopen=()=>{this.player.debugLog(this.TAG_NAME,"ondatachannel and onopen")},t.onmessage=e=>{const t=e.data;if(this.player.isWebrtcH264())return this.player.debugWarn(this.TAG_NAME,"ondatachannel is H265 but decode is h264 so emit webrtcStreamH265 "),void this.player.emit(mt.webrtcStreamH265);this.player.isDestroyedOrClosed()?this.player.debugWarn(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.debugWarn(this.TAG_NAME,"ondatachannel and onclose")},this.rtcPeerConnectionDataChannel=t};e.createDataChannel("signal").onmessage=e=>{this.player.debugLog(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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{const r=this.rtcPeerConnection;r.createOffer().then((o=>{r.setLocalDescription(o),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t,i){let s={"Content-Type":"application/sdp"};return i.username&&i.password&&(s.Authorization="Basic "+btoa(i.username+":"+i.password)),fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:s,body:t})}(e,o.sdp,t).then((e=>{e.text().then((e=>{this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp response"),e?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{this.player.isWebrtcH265()&&this.startStreamRateInterval(),i()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),s(e)})):(this.player.debugError(this.TAG_NAME,"loadSource sdp is null"),s("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),s(e)}))}))}}class Lv extends Ev{constructor(e){super(e),this.TAG_NAME="WebrtcForZLMDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return Ol({url:e,type:"POST",data:t,contentType:"text/plain;charset=utf-8",processData:!1,dataType:"json"})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debugError(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r&&r.sdp?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r.sdp})).then((()=>{t()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"response sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class Cv extends Ba{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.debugLog(this.TAG_NAME,"init")}destroy(){this.aliyunRtc&&(this.aliyunRtcRemoteStream&&(this.aliyunRtcRemoteStream=null),this.aliyunRtc.unsubscribe(),this.aliyunRtc=null),this.$videoElement=null,this.off(),this.player.debugLog(this.TAG_NAME,"destroy")}listenEvents(){this.aliyunRtc.on("onError",(e=>{this.player.debugLog(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),10400!==e.errorCode&&(this.player.debugError(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),this.player.emitError(At.aliyunRtcError,e))})),this.aliyunRtc.on("reconnect",(e=>{this.player.debugLog(this.TAG_NAME,"reconnect",e)}));const e="canplay",t="waiting",i="playing",s="media";this.aliyunRtc.on("onPlayEvent",(r=>{if(r.event===e)this.player.debugLog(this.TAG_NAME,"onPlayEvent and canplay");else if(r.event===t)this.player.debugLog(this.TAG_NAME,"onPlayEvent and playing - > waiting");else if(r.event===i)this.player.debugLog(this.TAG_NAME,"onPlayEvent and waiting -> playing");else if(r.event===s){const e=r.data;let t={},i=0;if(e.audio){const s=Math.floor(e.audio.bytesReceivedPerSecond);i+=s,t.abps=s}if(e.video){const s=Math.floor(e.video.bytesReceivedPerSecond);i+=s,t.vbps=s}this.player.updateStats(t),this.player.emit(mt.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.debugError(this.TAG_NAME,"loadSource and subscribe is not success: ",e.message),i(e.message)}))})).catch((e=>{this.player.debugError(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}isVideoPlaying(){return this.$videoElement&&Ea(this.$videoElement.paused)&&Ea(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class Dv{constructor(e){this.player=e,this.TAG_NAME="PressureObserverCpu",this.observer=null,this.latestCpuInfo=null,this.currentLevel=-1,this.observeCpuSuccess=!1,this._init(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.observer&&(this.observeCpuSuccess&&this.observer.disconnect(),this.observer=null),this.latestCpuInfo=null,this.currentLevel=-1,this.player.debugLog(this.TAG_NAME,"destroy")}getCurrentCpuState(){return this.currentLevel}_init(){Ea(xa())?this.player.debugLog(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(mt.pressureObserverCpu,this.currentLevel)}})),this.observer&&this.observer.observe("cpu",{sampleInterval:1e3}).then((()=>{this.observeCpuSuccess=!0,this.player.debugLog(this.TAG_NAME,"observe cpu success")})).catch((()=>{this.observeCpuSuccess=!1,this.player.debugLog(this.TAG_NAME,"observe cpu fail")})))}}class xv extends Ja{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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(mt.start,(()=>{const e=Ea(Ao)?decodeURIComponent("JessibucaPro%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.debugLog(this.TAG_NAME,"int")}destroy(){super.destroy(),this.shadowRootDynamicDom=null,this.stopAnimation(),this.rafID&&(cancelAnimationFrame(this.rafID),this.rafID=null)}startAnimation(){if(!this.rafID){let e=1,t=1,i=Math.random(),s={width:0,height:0};const r=()=>{try{if(Ea(this.isPauseAnimation)&&this.shadowRootDynamicDom&&this.shadowRootInnerDom){const o=this.shadowRootInnerDom,a=this.shadowRootDynamicDom,n=o.getBoundingClientRect(),l=a.getBoundingClientRect();if(l.width&&l.height&&(s.width=l.width,s.height=l.height),!this.shadowRootInnerDom.contains(this.shadowRootDynamicDom))return this.isGhost?Ea(this.waterMarkWillAdd)&&(this.waterMarkWillAdd=!0,setTimeout((()=>{this._addDom(n,s),this.waterMarkWillAdd=!1}),1e3*this.ghostConfig.off)):this._addDom(n,s),void(0!==this.speed&&requestAnimationFrame(r));const d=Math.min(1,0===this.speed?0:this.speed?this.speed:.2);let h=l.left-n.left,c=l.top-n.top;h+=d*t*i,c+=d*e*(1-i),h+s.width>n.width?(t=-1,i=Math.random()):h<0&&(t=1,i=Math.random()),c+s.height>n.height?(e=-1,i=Math.random()):c<0&&(e=1,i=Math.random()),h=Math.min(n.width-s.width,h),c=Math.min(n.height-s.height,c);const u=h/n.width*100,p=c/n.height*100;this.shadowRootDynamicDom.style.left=`${u}%`,this.shadowRootDynamicDom.style.top=`${p}%`,Ea(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(r)};this.rafID=requestAnimationFrame(r)}}_addDom(e,t){if(this.shadowRootInnerDom&&this.shadowRootDynamicDom){this.shadowRootInnerDom.appendChild(this.shadowRootDynamicDom);let i=e.width*Math.random(),s=e.height*Math.random();i=Math.min(e.width-2*t.width,i),s=Math.min(e.height-2*t.height,s),this.shadowRootDynamicDom.style.left=`${i}px`,this.shadowRootDynamicDom.style.top=`${s}px`}}resumeAnimation(){this.isPauseAnimation=!1}pauseAnimation(){this.isPauseAnimation=!0}stopAnimation(){this.isStopAnimation=!0}}class Rv extends Ba{constructor(e){super(),this.player=e,this.TAG_NAME="DrawRectangle",this.drawingRectangle=!1,this.isDragging=!1,this.bindEvents=[],this.$rectBox=null,this._resetPoint(),this.player.on(mt.drawingRect,this._handleDrawingRect.bind(this)),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this._unbindEvents(),this.drawingRectangle=!1,this.isDragging=!1,this._removeRectBox(),this.off(),this.player.debugLog(this.TAG_NAME,"destroy")}_resetPoint(){this.startPagePoint={x:0,y:0},this.startPoint={x:0,y:0},this.endPoint={x:0,y:0}}_handleDrawingRect(e){this.drawingRectangle=e,e?this._bindEvents():(this._unbindEvents(),this._removeRectBox())}_bindEvents(){const{events:{proxy:e}}=this.player,t=e(this.player.$container,"mousemove",this.handleMouseMove.bind(this)),i=e(this.player.$container,"mousedown",this.handleMouseDown.bind(this)),s=e(window,"mouseup",this.handleMouseUp.bind(this));this.bindEvents.push(t,i,s)}_unbindEvents(){this.bindEvents.forEach((e=>{e&&e()})),this.bindEvents=[]}_removeRectBox(){if(this.$rectBox){if(!Ac(this.$rectBox)){const e=this.player.$container.querySelector(".jb-pro-drawing-rect-box");e&&this.player.$container&&this.player.$container.removeChild(e)}this.$rectBox=null}}handleMouseDown(e){if(e.stopPropagation(),!this.drawingRectangle)return;this._removeRectBox();const t=e.offsetX,i=e.offsetY;this.startPoint.x=t,this.startPoint.y=i,this.startPagePoint.x=e.pageX-this.player.$container.offsetLeft,this.startPagePoint.y=e.pageY-this.player.$container.offsetTop,this.$rectBox=document.createElement("div"),this.$rectBox.classList.add("jb-pro-drawing-rect-box"),this.$rectBox.style.border=`${this.player._opt.drawingRectLineWidth}px solid ${this.player._opt.drawingRectColor}`,this.$rectBox.style.position="absolute",this.$rectBox.style.left=`${this.startPoint.x}px`,this.$rectBox.style.top=`${this.startPoint.y}px`,this.player.$container.appendChild(this.$rectBox),this.isDragging=!0}handleMouseMove(e){if(e.stopPropagation(),!this.isDragging)return;if(!this.drawingRectangle)return;if(!this.$rectBox)return;const t=this.player.$container,i=this.player.getControlHeight(),s=e.pageX-t.offsetLeft,r=e.pageY-t.offsetTop;if(sn&&(o=n,this.endPoint.x=this.startPoint.x+o),a>l&&(a=l,this.endPoint.y=this.startPoint.y+a),this.$rectBox.style.width=`${o}px`,this.$rectBox.style.height=`${a}px`}handleMouseUp(e){if(e.stopPropagation(),this.drawingRectangle&&this.isDragging){e.preventDefault(),this.isDragging=!1,this.player._opt.drawingRectEndRemoveDom&&this._removeRectBox();const t={startPoint:this.startPoint,endPoint:this.endPoint,width:Math.abs(this.endPoint.x-this.startPoint.x),height:Math.abs(this.endPoint.y-this.startPoint.y)};this.player._opt.isResize,this.player.emit(mt.drawingRectInfo,t),this._resetPoint()}}}class Pv extends Ba{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this._opt={},this.TAG_NAME="Player",this.$container=e;const i=va();if(this._opt=Object.assign({},i,t),this.debug=new Br(this),this.debugLog(this.TAG_NAME,"init and version is",yo),this._opt.forceNoOffscreen=!0,this._canPlayAppleMpegurl=!1,(To()||wo())&&(this._canPlayAppleMpegurl=na(),this.debugLog(this.TAG_NAME,"isIOS or isSafari and canPlayAppleMpegurl",this._canPlayAppleMpegurl)),Sa(Ur.isEnabled)&&Sa(this._opt.useWebFullScreen)&&(this.debugLog(this.TAG_NAME,"screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),Ea(Ur.isEnabled)&&Ea(this._opt.useWebFullScreen)&&(this.debugLog(this.TAG_NAME,"screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0),Ta()&&(this.debugLog(this.TAG_NAME,"isIphone and set _opt.videoRenderSupportScale false"),this._opt.videoRenderSupportScale=!1,ta()&&Sa(this._opt.isHls)&&Ea(this._opt.supportHls265)&&(this.debugLog(this.TAG_NAME,"isIphone and is in wechat and is hls so set supportHls265 true"),this._opt.supportHls265=!0)),Ea(this._opt.playFailedAndReplay)&&(this.debugLog(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.streamErrorReplay=!1,this._opt.streamEndReplay=!1,this._opt.mseWaitVideoCanplayAutoWasm=!1),this._opt.hiddenControl&&(this.debugLog(this.TAG_NAME,"_opt.hiddenControl is true and set others show btn to false"),Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(this._opt.operateBtns[e]=!1)})),this._opt.showBandwidth=!1,this._opt.extendOperateBtns=[],this._opt.controlHtml="",this.isPlayback()&&(this._opt.playbackConfig.showControl=!1)),this._opt.watermarkConfig={image:{src:"data:image/png;base64,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",width:75,height:24},opacity:.1,right:10,top:10},this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.isMpeg4&&(this.debugLog(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()&&(Sa(this._opt.useMSE)&&Sa(this._opt.mseDecoderUseWorker)&&this.debugLog(this.TAG_NAME,"isPlayback and mseDecoderUseWorker is true, so set mseDecoderUseWorker false"),this._opt.mseDecoderUseWorker=!1,Sa(this._opt.useWCS)&&Sa(this._opt.wcsDecodeAudio)&&this.debugLog(this.TAG_NAME,"isPlayback and wcsDecodeAudio is true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1),this._opt.poster&&(this._opt.background=this._opt.poster),Ea(this._opt.muted)&&(this._opt.isNotMute=!0),this._opt.mseDecoderUseWorker&&(this._opt.mseDecoderUseWorker=!!(Ir.Worker&&Ir.MediaSource&&"canConstructInDedicatedWorker"in Ir.MediaSource&&!0===Ir.MediaSource.canConstructInDedicatedWorker),Ea(this._opt.mseDecoderUseWorker)&&this.debugLog(this.TAG_NAME,"mseDecoderUseWorker is true but not support so set _opt.mseDecoderUseWorker = false")),(this.isOldHls()||this.isWebrtcH264()||this.isAliyunRtc())&&(this.debugLog(this.TAG_NAME,"isOldHls or isWebrtcH264 or isAliyunRtc is true, so set some params false and set _opt.recordType = 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=E),this._opt.isNakedFlow&&(this.debugLog(this.TAG_NAME,"isNakedFlow is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),So()&&(this.debugLog(this.TAG_NAME,"isFirefox is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),!this.isOldHls()&&!this.isWebrtcH264()){if(this._opt.useWCS){const e=function(){let e=!1;return"VideoDecoder"in window&&(e=!0),e}(),t=Bo();this._opt.useWCS=e,this._opt.useWCS&&this._opt.isH265&&(this._opt.useWCS=t),this._opt.useWCS||this.debugWarn(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.wcsDecodeAudio&&(this._opt.wcsDecodeAudio=function(){let e=!1;return"AudioDecoder"in window&&(e=!0),e}(),this._opt.wcsDecodeAudio||this.debugWarn(this.TAG_NAME,"wcsDecodeAudio is true, but not support so set wcsDecodeAudio false")),this._opt.useOffscreen?this._opt.wcsUseVideoRender=!1:this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=Mo()&&Fo(),this._opt.wcsUseVideoRender||this.debugWarn(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 Ir&&(e=!0),e}()||function(){let e=!1;return!("MediaSource"in Ir)&&"ManagedMediaSource"in Ir&&(e=!0),e}(),t=Io()||function(){let e=!1;return!("MediaSource"in Ir)&&"ManagedMediaSource"in Ir&&Ir.ManagedMediaSource&&(Ir.ManagedMediaSource.isTypeSupported(vi)||Ir.ManagedMediaSource.isTypeSupported(_i)||Ir.ManagedMediaSource.isTypeSupported(Si)||Ir.ManagedMediaSource.isTypeSupported(Ei)||Ir.ManagedMediaSource.isTypeSupported(wi))&&(e=!0),e}();this._opt.useMSE=e,this._opt.useMSE&&this._opt.isH265&&(this._opt.useMSE=t),this._opt.useMSE||this.debugWarn(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(Ea(this._opt.useMSE)&&(this._opt.mseDecodeAudio=!1),Ea(this._opt.useWCS)&&(this._opt.wcsDecodeAudio=!1),this._opt.useMSE?(this._opt.useWCS&&this.debugWarn(this.TAG_NAME,"useMSE is true and useWCS is true then useWCS set true->false"),this._opt.forceNoOffscreen||this.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(this.TAG_NAME,"is stream use webTransport is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.wcsDecodeAudio&&this._opt.demuxUseWorker&&(this.debugWarn(this.TAG_NAME,"is wcsDecodeAudio true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),Ea(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.debugWarn(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=Ta();this._opt.useSIMD=e&&Ea(t),this._opt.useSIMD||this.debugWarn(this.TAG_NAME,`useSIMD is true, but not support(isSupportSimd is ${e} ,isIphone is ${t}) so set useSIMD false`)}var s;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.decoderOld=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-old.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.decoderOld=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-old.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.decoderOld=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-old.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"),this._opt.decoderOld=this._opt.decoder.replace("decoder-pro.js","decoder-pro-old.js")),Ea(this._opt.hasAudio)&&(this._opt.operateBtns.audio=!1),Ea(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.debugWarn(this.TAG_NAME,"_opt.qualityConfig is empty, so set operateBtns.quality false")),Sa(this._opt.useWebGPU)&&(this._opt.useWebGPU=function(){let e=!1;return"gpu"in navigator&&(e=!0),e}(),Ea(this._opt.useWebGPU)&&this.debugWarn(this.TAG_NAME,"useWebGPU is true, but not support so set useWebGPU false")),this._opt.useMSE&&this._opt.mseWaitVideoCanplayTimeout>this._opt.loadingTimeout&&(this.debugWarn(this.TAG_NAME,`mseWaitVideoCanplayTimeout ${this._opt.mseWaitVideoCanplayTimeout} is greater than loadingTimeout ${this._opt.loadingTimeout}, so set mseWaitVideoCanplayTimeout = loadingTimeout -1`),this._opt.mseWaitVideoCanplayTimeout=Math.max(this._opt.loadingTimeout-1,1)),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._playbackPause=!1,this._hasLoaded=!1,this._zooming=!1,this._drawingRect=!1,this._destroyed=!1,this._destroyLock=!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._tempTsList=[],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._serverInfo=null,this._mseWorkerData={},this._isStreamEnd=!1,Ea(this._opt.useMSE)&&Ea(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=Lo()&&Mo()&&Fo(),this._opt.wasmUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false"),this._opt.wasmUseVideoRender&&this._opt.wasmPlayAudioUseVideoRender&&(this._opt.wasmPlayAudioUseVideoRender="AudioData"in window,this._opt.wasmPlayAudioUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render play audio, but not support so set wasmPlayAudioUseVideoRender false"))),this._opt.useSIMD?this.debugLog(this.TAG_NAME,"use simd wasm"):this.debugLog(this.TAG_NAME,"use wasm")),this._opt.useWasm&&(this._opt.useFaceDetector&&window.JessibucaProFaceDetector||this._opt.useObjectDetector&&window.JessibucaProObjectDetector||this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||this._opt.useImageDetector&&window.JessibucaProImageDetector)?(this.ai=new _v(this),this._opt.useFaceDetector&&window.JessibucaProFaceDetector||(this._opt.operateBtns.aiFace=!1),this._opt.useObjectDetector&&window.JessibucaProObjectDetector||(this._opt.operateBtns.aiObject=!1),this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||(this._opt.operateBtns.aiOcclusion=!1),this._opt.useImageDetector&&this._opt.aiImageDetectActive&&window.JessibucaProImageDetector&&(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.JessibucaProFaceDetector||this.debugWarn(this.TAG_NAME,`use face detector, useWasm is ${this._opt.useWasm} and window.JbProFaceDetector is null`)),this._opt.useObjectDetector&&(this._opt.useWasm&&window.JessibucaProObjectDetector||this.debugWarn(this.TAG_NAME,`use object detector, useWasm is ${this._opt.useWasm} and window.JbProObjectDetector is null`)),this._opt.useOcclusionDetector&&(this._opt.useWasm&&window.JessibucaProOcclusionDetector||this.debugWarn(this.TAG_NAME,`use occlusion detector, useWasm is ${this._opt.useWasm} and window.JessibucaProOcclusionDetector is null`)),this._opt.useImageDetector&&(this._opt.useWasm&&window.JessibucaProImageDetector||this.debugWarn(this.TAG_NAME,`use image detector, useWasm is ${this._opt.useWasm} and window.JessibucaProImageDetector is null`)),this._opt.videoRenderType&&(this.debugLog(this.TAG_NAME,`videoRenderType is ${this._opt.videoRenderType}`),this._opt.videoRenderType===H?(this._opt.useVideoRender=!0,this._opt.useCanvasRender=!1):this._opt.videoRenderType===$&&(this._opt.useVideoRender=!1,this._opt.useCanvasRender=!0)),this._opt.useVideoRender&&(this._opt.useWasm&&!this._opt.useOffscreen?(this._opt.wasmUseVideoRender=Lo()&&Mo()&&Fo(),this._opt.wasmUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")):this._opt.useWCS&&!this._opt.useOffscreen&&(this._opt.wcsUseVideoRender=Mo()&&Fo(),this._opt.wcsUseVideoRender||this.debugWarn(this.TAG_NAME,"use wcs video render, but not support so set wcsUseVideoRender false"))),this._opt.useCanvasRender&&(this._opt.useMSE&&Ea(this._opt.mseDecoderUseWorker)&&(this._opt.mseUseCanvasRender=!0),this._opt.useWasm&&(this._opt.wasmUseVideoRender=!1),this._opt.useWCS&&(this._opt.wcsUseVideoRender=!1),this.isOldHls()&&!To()&&(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),this._opt.useCanvasRender&&this.useVideoPlayAudio()&&(this.debugLog(this.TAG_NAME,"useCanvasRender is true and useVideoPlayAudio() return true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1,this._opt.wasmPlayAudioUseVideoRender=!1),s=this,Object.defineProperty(s,"rect",{get:()=>{let e={};return s.$container&&(e=s.$container.getBoundingClientRect(),e.width=Math.max(e.width,s.$container.clientWidth),e.height=Math.max(e.height,s.$container.clientHeight)),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(s,e,{get:()=>s.rect[e]||0})})),this.events=new Ia(this),this._opt.hasVideo&&(this.video=new ln(this),this.recorder=new bl(this)),this.isOldHls()?(this.hlsDecoder=new KA(this),this.loaded=!0):this.isWebrtcH264()?(this._opt.isWebrtcForZLM?this.webrtc=new Lv(this):this._opt.isWebrtcForSRS?this.webrtc=new wv(this):this._opt.isWebrtcForOthers?this.webrtc=new Tv(this):this.webrtc=new kv(this),this.loaded=!0):this.isAliyunRtc()?(this.aliyunRtcDecoder=new Cv(this),this.loaded=!0):(this.isUseHls265()&&(this.hlsDecoder=new Av(this)),this.isWebrtcH265()&&(this.webrtc=new kv(this)),Ea(la(this._opt))?this.decoderWorker=new Tl(this):this.loaded=!0),this._opt.hasAudio&&(this.audio=new Ln(this)),this.stream=null,this.demux=null,this._lastVolume=null,this._isMute=null,this._isInZoom=!1,this._playingStartTimestamp=null,this.isMSEVideoDecoderInitializationFailedNotSupportHevc=!1,this.isMSEAudioDecoderError=!1,this.isMSEPlaybackRateChangePause=!1,this.isMSECurrentMoreThanBufferedPause=!1,this.isPlayFailedAndPaused=!1,this._seiList=[],this._opt.useWCS&&(this.webcodecsDecoder=new tc(this),!this._opt.hasAudio&&Ea(this._opt.demuxUseWorker)&&(this.loaded=!0)),this._opt.useMSE&&Ea(this._opt.mseDecoderUseWorker)&&(this.mseDecoder=new wc(this),!this._opt.hasAudio&&Ea(this._opt.demuxUseWorker)&&(this.loaded=!0)),this.control=new _c(this),this._opt.contextmenuBtns.length>0&&Ea(this._opt.disableContextmenu)&&vo()?this.contextmenu=new Sv(this):Sa(this._opt.disableContextmenu)&&this._opt.contextmenuBtns.length>0&&vo()&&this.debugWarn(this.TAG_NAME,"disableContextmenu is true, but contextmenuBtns is not empty, so Contextmenu can not be created,please check"),this.isPlayback()&&(this.playback=new bv(this,this._opt.playbackConfig)),this._opt.operateBtns.zoom&&(this.zoom=new vv(this)),/(iphone|ipad|ipod|ios|android)/i.test(window.navigator.userAgent.toLowerCase())&&Ea(this._opt.supportLockScreenPlayAudio&&wo())&&(this.keepScreenOn=new kc(this)),(e=>{try{const t=t=>{sa(t)===e.$container&&(e.emit(gt.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};Ur.on("change",t),e.events.destroys.push((()=>{Ur.off("change",t)}))}catch(e){}if(e.on(mt.decoderWorkerInit,(()=>{e.debugLog("player","listen decoderWorkerInit and set loaded true"),e.loaded=!0})),e.on(mt.play,(()=>{e.loading=!1})),e.on(mt.fullscreen,(t=>{if(t)try{Ur.request(e.$container).then((()=>{})).catch((t=>{e.debugError("player","fullscreen request error",t,t.toString()),e.emitError(At.fullscreenError,t.toString()),bo()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){bo()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{Ur.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((t=>{e.debugError("player","fullscreen exit error",t,t.toString()),e.emitError(At.fullscreenError,t.toString()),e.webFullscreen&&(e.webFullscreen=!1)}))}catch(t){e.webFullscreen&&(e.webFullscreen=!1)}})),bo()&&e.on(mt.webFullscreen,(t=>{t?e.$container.classList.add("jb-pro-fullscreen-web"):e.$container.classList.remove("jb-pro-fullscreen-web"),e.emit(gt.fullscreen,e.fullscreen)})),e.on(mt.resize,(()=>{e.resize()})),e._opt.debug){const t=[mt.timeUpdate,mt.currentPts,mt.videoSEI,mt.videoSEISyncPts,mt.performance,mt.videoSmooth],i=[mt.stats,mt.playbackStats,mt.playbackTimestamp,mt.flvMetaData,mt.playToRenderTimes,mt.audioInfo,mt.videoInfo];Object.keys(mt).forEach((s=>{e.on(mt[s],(function(r){if(!t.includes(s)){i.includes(s)&&(r=JSON.stringify(r));for(var o=arguments.length,a=new Array(o>1?o-1:0),n=1;n{e.on(At[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.updateOption({rotate:e?270:0}),this.resize()}),10)}get webFullscreen(){return this.$container.classList.contains("jb-pro-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded||this.isOldHls()||this.isWebrtcH264()||this._opt.useMSE&&Ea(this._opt.hasAudio)&&Ea(this._opt.demuxUseWorker)||this._opt.useWCS&&!this._opt.hasAudio&&Ea(this._opt.demuxUseWorker)}set playing(e){this.isClosed()&&e?this.debugLog(this.TAG_NAME,"player is closed, so can not play"):(e&&Sa(this.loading)&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(mt.playing,e),this.emit(mt.volumechange,this.volume),e?this.emit(mt.play):this.emit(mt.pause)))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio?(this.audio.setVolume(e),this._lastVolume=this.volume,this._isMute=0===this.volume):this.debugWarn(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(mt.loading,this._loading))}get loading(){return this._loading}set zooming(e){this.isDestroyedOrClosed()||this.zooming!==e&&(this.zoom||(this.zoom=new vv(this)),this._zooming=e,this.emit(mt.zooming,this.zooming))}get zooming(){return this._zooming}set drawingRect(e){this.isDestroyedOrClosed()||this.drawingRect!==e&&(this.drawRectangle||(this.drawRectangle=new Rv(this)),this._drawingRect=e,this.emit(mt.drawingRect,this.drawingRect))}get drawingRect(){return this._drawingRect}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(mt.streamQualityChange,e))}get streamQuality(){return this._streamQuality}get isDebug(){return Sa(this._opt.debug)}get scaleType(){const e=this._opt,t=e.isResize,i=e.isFullResize;let s=ai;return Ea(i)&&Ea(t)?s=ai:Ea(i)&&Sa(t)?s=ni:Sa(i)&&Sa(t)&&(s=li),s}set visibility(e){this._visibility!==e&&(this._visibility=e,this.emit(mt.visibilityChange,e),this._lastestVisibilityChangeTimestamp=co(),e?this.clearVisibilityHiddenTimeout():this.startVisibilityHiddenTimeout())}get visibility(){return this._visibility}set playbackPause(e){this._playbackPause!==e&&(this._playbackPause=e,this.emit(mt.playbackPause,e),this.emit(mt.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(mt.faceDetectActive,e))}get faceDetectActive(){return this._faceDetectActive}set objectDetectActive(e){this._objectDetectActive!==e&&(this._objectDetectActive=e,this.emit(mt.objectDetectActive,e))}get objectDetectActive(){return this._objectDetectActive}set occlusionDetectActive(e){this._occlusionDetectActive!==e&&(this._occlusionDetectActive=e,this.emit(mt.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}isDestroying(){return this._destroyed&&this._destroyLock}isClosed(){return this._closed}isDestroyedOrClosed(){return this.isDestroyed()||this.isClosed()}isLoading(){return this.loading}isPlaying(){let e=!1;return this._opt.playType===b?e=this.playing:this._opt.playType===_&&(e=Ea(this.playbackPause)&&this.playing),e}updateOption(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._opt=Object.assign({},this._opt,e),Sa(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 ln(this)),this.audio||this._opt.hasAudio&&(this.audio=new Ln(this)),this.stream||(this.stream=new Un(this)),this.isOldHls()?(this.hlsDecoder||(this.hlsDecoder=new KA(this),this.loaded=!0),e()):this.isWebrtcH264()?(this.webrtc||(this._opt.isWebrtcForZLM?this.webrtc=new Lv(this):this._opt.isWebrtcForSRS?this.webrtc=new wv(this):this._opt.isWebrtcForOthers?this.webrtc=new Tv(this):this.webrtc=new kv(this),this.loaded=!0),e()):this.isAliyunRtc()?(this.aliyunRtcDecoder||(this.aliyunRtcDecoder=new Cv(this),this.loaded=!0),e()):(this.demux||this._opt.hasVideo&&!this.isUseWorkerDemuxAndDecode&&(this.demux=new Jh(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new tc(this))),this._opt.useMSE&&Ea(this._opt.mseDecoderUseWorker)&&(this.mseDecoder||(this.mseDecoder=new wc(this))),this.isUseHls265()&&(this.hlsDecoder||(this.hlsDecoder=new Av(this))),this.isWebrtcH265()&&(this.webrtc||(this.webrtc=new kv(this))),this.decoderWorker?this.loaded?e():this.once(mt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debugError(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())})):Ea(la(this._opt))?(this.decoderWorker=new Tl(this),this.once(mt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debugError(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())}))):e())}))}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!e&&!this._opt.url)return s("url is empty");this._closed=!1,this.loading=!0,this.playing=!1,this._times.playInitStart=co(),e||(e=this._opt.url),this._opt.url=e,this.control&&this._opt.loadingBackground&&this.control.initLoadingBackground(),this.init().then((()=>{this.debugLog(this.TAG_NAME,"play() init and next fetch stream"),this._times.playStart=co(),this._opt.isNotMute&&this.mute(!1),this.enableWakeLock(),this.checkLoadingTimeout(),this.stream?(this.stream.once(At.fetchError,(e=>{this.emitError(At.fetchError,e)})),this.stream.once(At.websocketError,(e=>{this.emitError(At.websocketError,e)})),this.stream.once(mt.streamEnd,(e=>{this.emit(mt.streamEnd,e)})),this.stream.once(At.hlsError,(e=>{this.emitError(At.hlsError,e)})),this.stream.once(At.webrtcError,(e=>{this.emitError(At.webrtcError,e)})),this.stream.once(mt.streamSuccess,(()=>{i(),this._times.streamResponse=co(),this.video&&this.video.play(),this.checkStatsInterval(),this.isPlayback()&&this.playback&&this.playback.startCheckStatsInterval();{const e=Number("1")||1;setTimeout((()=>{this.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码)"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload()}),60*e*60*1e3)}})),this.stream.fetchStream(e,t)):(this.debugWarn(this.TAG_NAME,`play() this.stream is null and is isDestroyedOrClosed is ${this.isDestroyedOrClosed()}`),s("this.stream is null"))})).catch((e=>{s(e)}))}))}playForControl(){return new Promise(((e,t)=>{this.debugLog(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&&Ea(this._isMute)&&(this.volume=this.lastVolume)}async _close(){this._closed=!0,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.loading=!1,this.recording=!1,this.zooming=!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:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.stream&&(await this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.webcodecsDecoder&&(await this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.hlsDecoder&&(await this.hlsDecoder.destroy(),this.hlsDecoder=null),this.webrtc&&(this.webrtc.destroy(),this.webrtc=null),this.aliyunRtcDecoder&&(this.aliyunRtcDecoder.destroy(),this.aliyunRtcDecoder=null),this.audio&&(await this.audio.destroy(),this.audio=null),this.playing=!1}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];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.debugLog(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.debugLog(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.debugWarn(this.TAG_NAME,"pauseForControl() and videoInfo is null")}else this.debugWarn(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)}cancelRecord(){return new Promise(((e,t)=>{this.recorder||t("recorder is null"),this.recording&&(this._opt.useWasm&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})))}))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{this.recorder||s("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=>{s(e)}))):s("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),this._opt.controlHtml&&(e=!0),e}useWasmDecode(){return Ea(this._opt.useMSE)&&Ea(this._opt.useWCS)}canVideoTrackWritter(){const e=this._opt;return!this.isOldHls()&&!this.isWebrtcH264()&&Ea(e.useMSE)&&!this.isAliyunRtc()&&(e.useWCS&&Ea(e.useOffscreen)&&e.wcsUseVideoRender||this.useWasmDecode())}checkHeartTimeout$2(){if(Ea(this.playbackPause)&&this.playing){if(this.isDestroyedOrClosed())return void this.debugWarn(this.TAG_NAME,"checkHeartTimeout$2 but player is destroyed");if(Ea(this.isHistoryFpsListAllZero()))return void this.debugWarn(this.TAG_NAME,"checkHeartTimeout$2 but fps is not all zero");if(0!==this._stats.fps)return void this.debugWarn(this.TAG_NAME,`checkHeartTimeout$2 but fps is ${this._stats.fps}`);const e=this._historyFpsList.join(",");this.debugWarn(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(mt.timeout,mt.delayTimeout),this.emit(mt.delayTimeout)}else this.debugLog(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.debugWarn(this.TAG_NAME,`checkLoadingTimeout but loading is ${this.loading} and playing is ${this.playing}`):this.isDestroyedOrClosed()?this.debugWarn(this.TAG_NAME,"checkLoadingTimeout but player is destroyed"):(this.debugWarn(this.TAG_NAME,"checkLoadingTimeout and pause and emit loadingTimeout event"),this.emit(mt.timeout,mt.loadingTimeout),this.emit(mt.loadingTimeout))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(this.debugLog(this.TAG_NAME,"clearCheckLoadingTimeout"),clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.isDestroyedOrClosed()?this.debugWarn(this.TAG_NAME,"handleRender but player is destroyed"):(this.loading&&(this.clearCheckLoadingTimeout(),this.loading=!1,this.emit(mt.start)),this.playing||(this.playing=!0))}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.isDestroyedOrClosed())return void this.debugLog(this.TAG_NAME,"updateStats but player is closed or destroyed");if(this._startBpsTime||(this._startBpsTime=co()),jo(e.ts)){const t=parseInt(e.ts,10);this._stats.ts=t,this._tempTsList.push(t),null===this._playingStartTimestamp&&t>0&&(this._playingStartTimestamp=t)}jo(e.dts)&&(this._stats.dts=parseInt(e.dts,10)),jo(e.mseTs)&&(this._stats.mseTs=e.mseTs),jo(e.buf)&&(this._stats.buf=e.buf),jo(e.netBuf)&&(this._stats.netBuf=e.netBuf),jo(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=co();if(t-this._startBpsTime<1e3)return;null!==this._playingStartTimestamp&&this._stats.fps>0&&(this._stats.pTs+=1);let i=0,s=0,r=0,o=0,a=0;this._opt.useMSE&&(this.mseDecoder?(i=this.mseDecoder.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.mseDecoder.checkSourceBufferStore(),s=s.toFixed(2),o=this.mseDecoder.getDecodePlaybackRate(),a=this.mseDecoder.getPendingSegmentsLength()):this.isMseDecoderUseWorker()&&(i=this.video.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.video.checkSourceBufferStore(),s=s.toFixed(2),o=this.video.getDecodePlaybackRate())),this._opt.useWCS&&this.webcodecsDecoder&&(r=this.webcodecsDecoder.getDecodeDiffTimes()),this.isOldHls()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=parseInt(1e3*i,10));let n=0,l=0,d=0;this.isUseHls265()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=i.toFixed(2),n=this.hlsDecoder.getDemuxBufferedListLength(),d=this.hlsDecoder.getDemuxVideoBufferedListLength(),l=this.hlsDecoder.getDemuxAudioBufferedListLength());let h=0,c=0,u=0,p=!1,f=0,m=0;this._opt.useWasm||this._opt.demuxUseWorker?this._tempWorkerStats&&(c=this._tempWorkerStats.demuxBufferDelay,u=this._tempWorkerStats.audioDemuxBufferDelay,h=this._tempWorkerStats.streamBufferByteLength,this._stats.netBuf=this._tempWorkerStats.netBuf,f=this._tempWorkerStats.pushLatestDelay,p=this._tempWorkerStats.isStreamTsMoreThanLocal,this._stats.buf=this._tempWorkerStats.latestDelay,m=this._tempWorkerStats.wasmDecodeDelay):this.demux&&(h=this.demux.getInputByteLength(),f=this.demux.getPushLatestDelay(),p=this.demux.getIsStreamTsMoreThanLocal(),this.demux.bufferList&&(c=this.demux.bufferList.length));let g=0,y=0;this.audio&&this.audio.bufferList&&(g=this.audio.bufferList.length,y=parseInt(g*this.audio.oneBufferDuration,10));let A=0,b=0;if(this.isPlayback()&&this.video){this._opt.playbackConfig.isUseFpsRender&&(A=this.video.bufferList&&this.video.bufferList.length||0);let e=this.video.getStreamFps();const t=e>0?1e3/e:0;b=parseInt(t*A+t*c,10)}let v=0;this.videoTimestamp>0&&(v=this._stats.dts-this.videoTimestamp);const _=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 S=this.getVideoCurrentTime();const E=this._stats.videoCurrentTime;let w=-1;E&&S&&(w=Co((S-E).toFixed(2)),S=S.toFixed(2));let k=0;this.audioTimestamp>0&&(k=this.audioTimestamp-this.getRenderCurrentPts()),this._allStatsData=Object.assign(this._stats,{audioBuffer:g,audioBufferDelayTs:y,audioTs:this.audioTimestamp,latestAudioTs:this.latestAudioTimestamp,playbackVideoBuffer:A,playbackVideoWaitingBuffer:0,playbackAudioWaitingBuffer:0,playbackCacheDataDuration:b,demuxBuffer:c,pushLatestDelay:f,audioDemuxBuffer:u,streamBuffer:h,mseDelay:i,mseStore:s,mseDecodeDiffTimes:r,mseDecodePlaybackRate:o,msePendingBuffer:a,wcsDecodeDiffTimes:r,wasmDecodeDelay:m,hlsDelay:i,hlsDemuxLength:n,hlsDemuxAudioLength:l,hlsDemuxVideoLength:d,delayTs:v,totalDelayTs:_,isStreamTsMoreThanLocal:p,videoCurrentTime:S,videoCurrentTimeDiff:w,audioSyncVideo:k});let L=null,C=null,D="";if(this.isPlayer()&&this._opt.hasVideo&&this.playing){L=function(e,t){let i=3;const s=t||25;return e<=s*(1/4)?i=0:e<=.5*s?i=1:e<=s*(3/4)&&(i=2),i}(this._stats.fps,this._flvMetaDataFps),this._allStatsData.performance=L;const e=this.checkVideoSmooth(this._allStatsData);D=e.reason,C=e.result,this._allStatsData.videoSmooth=C}this.emit(mt.stats,this._allStatsData),this._allStatsData.streamBuffer>this._opt.flvDemuxBufferSizeMaxLarge&&this.getDemuxType()===T&&this.emit(At.flvDemuxBufferSizeTooLarge,this._allStatsData.streamBuffer),this._opt.hasVideo?(this.updateHistoryFpsList(this._stats.fps,this._allStatsData.videoCurrentTimeDiff),jo(L)&&this.emit(mt.performance,L),jo(C)&&this.emit(mt.videoSmooth,C,D)):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._tempTsList=[],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={},this._tempTsList=[]}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&&Ea(this._opt.isHls)&&(i="vbpsIsZero",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&e.isDropping&&(i="isDroppingIsTrue",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&this.visibility&&this._historyFpsList.length>=this._opt.heartTimeout){const s=function(e){const t=Math.max(...e),i=Math.min(...e);return e.filter((e=>e!==t&&e!==i))}(this._historyFpsList),r=s.reduce(((e,t)=>e+t),0)/s.length,o=.83*r;e.fps=1.5||e.videoCurrentTimeDiff<=.5)&&-1!==e.videoCurrentTimeDiff){if(i="videoCurrentTimeDiffIsNotNormal",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because videoCurrentTimeDiff is ${e.videoCurrentTimeDiff}`),0===Number(e.videoCurrentTimeDiff)){const e=this.isVideoPlaying(),t=this.getVideoCurrentTime(),i=this.getVideoBufferTimeRange();let s=-1,r=-1;i&&(s=i.start,r=i.end),this.debugLog(this.TAG_NAME,`checkVideoSmooth and videoCurrentTimeDiff is 0 so check\n videoCurrentTime is ${t} and isPlaying is ${e}\n bufferStartTime is ${s} and bufferEndTime is ${r}`)}t=!1}return{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(mt.beforeDestroy)}handlePlayToRenderTimes(){if(this.isDestroyedOrClosed())return void this.debugLog(this.TAG_NAME,"handlePlayToRenderTimes but player is closed or destroyed");const e=this.getPlayToRenderTimes();this.emit(mt.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===b}isPlayback(){return this._opt.playType===_}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()?z:this.isAliyunRtc()?V:this.isOldHls()?W:(t.useMSE&&(e+=F+" ",t.mseDecoderUseWorker&&(e+="worker")),t.useWCS&&(e+=U+" "),t.useWasm&&(e+=N+" ",t.useSIMD&&(e+=j+" "),t.useMThreading&&(e+=G+" ")),t.useOffscreen&&(e+=O+" "),e)}getDemuxType(){return this._opt.demuxType}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}isStreamTypeNotWorker(){return-1===this.getStreamType().indexOf(y)}getAllStatsData(){return this._allStatsData}isFlvDemux(){return this._opt.demuxType===T}isM7SDemux(){return this._opt.demuxType===k}isNakedFlowDemux(){return this._opt.demuxType===x}isMpeg4Demux(){return this._opt.demuxType===P}isTsDemux(){return this._opt.demuxType===B}isFmp4Demux(){return this._opt.demuxType===R}togglePerformancePanel(e){this.updateOption({showPerformance:e}),this.emit(mt.togglePerformancePanel,e)}setScaleMode(e){let t={isFullResize:!1,isResize:!1,aspectRatio:"default"};switch(e=Number(e)){case ai:t.isFullResize=!1,t.isResize=!1;break;case ni:t.isFullResize=!1,t.isResize=!0;break;case li:t.isFullResize=!0,t.isResize=!0}this.updateOption(t),this.resize(),this.emit(mt.viewResizeChange,e)}startVisibilityHiddenTimeout(){this.clearVisibilityHiddenTimeout(),this._opt.pageVisibilityHiddenTimeout>0&&(this.visibilityHiddenTimeout=setTimeout((()=>{this.emit(mt.visibilityHiddenTimeout)}),1e3*this._opt.pageVisibilityHiddenTimeout))}clearVisibilityHiddenTimeout(){this._checkVisibleHiddenTimeout&&(clearTimeout(this._checkVisibleHiddenTimeout),this._checkVisibleHiddenTimeout=null)}faceDetect(e){this.faceDetectActive=e,Ea(e)&&this.video&&this.video.addAiContentToCanvas([])}objectDetect(e){this.objectDetectActive=e,Ea(e)&&this.video&&this.video.addAiContentToCanvas([])}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 s=!1;if(e&&t&&i){s=1e3/i*t>e}return s}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.video&&this.video.addContentToCanvas(e)}addContentToContainer(){}sendWebsocketMessage(e){const t=this.getStreamType();t===f||t===y+" "+f?this.stream.sendMessage(e):this.debugWarn(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="")}toggleControlHtml(e){this.control&&this.control.toggleControlHtml(e)}getControlHtmlIsShow(){return!!this.control&&this.control.getControlHtmlIsShow()}getControlHtml(){return this.control?this.control.getControlHtml():null}setExtendHtml(e){this.control&&(this.control.$extendDom?this.control.updateExtendDom(e):this.control.addExtendDom({html:e,showBeforePlay:!0}))}clearExtendHtml(){this.control&&this.control.removeExtendDom()}toggleExtendHtml(e){this.control&&this.control.toggleExtendDom(e)}getExtendHtmlIsShow(){return!!this.control&&this.control.getExtendDomIsShow()}getExtendHtml(){return this.control?this.control.getExtendDom():null}updateWatermark(e){this.singleWatermark||(this.singleWatermark=new Ja(this)),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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(mt.error,e,t),this.emit(e,t)}updateHistoryFpsList(e,t){this.playbackPause||Ea(this.visibility)||(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 Sa(this._opt.isHls)&&Sa(this._opt.supportHls265)}isHls(){return Sa(this._opt.isHls)}isOldHls(){return Sa(this._opt.isHls)&&Ea(this._opt.supportHls265)}isWebrtcNotH265(){return Sa(this._opt.isWebrtc)&&Ea(this._opt.isWebrtcH265)}isWebrtcH264(){return Sa(this._opt.isWebrtc)&&Ea(this._opt.isWebrtcH265)}isWebrtcH265(){return Sa(this._opt.isWebrtc)&&Sa(this._opt.isWebrtcH265)}isAliyunRtc(){return Sa(this._opt.isAliyunRtc)}isUseHls265UseMse(){return this.isUseHls265()&&this.isUseMSE()}isStreamWebTransport(){return this.getStreamType()===g}isPlaybackCacheBeforeDecodeForFpsRender(){return this.isPlayback()&&Sa(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)&&Sa(this._opt.useWCS)}isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender(){return this.isPlayback()&&Ea(this._opt.playbackConfig.isPlaybackPauseClearCache)&&Sa(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)}isPlaybackUseWCS(){return this.isPlayback()&&Sa(this._opt.useWCS)}isPlaybackUseMSE(){return this.isPlayback()&&Sa(this._opt.useMSE)}isPlaybackUseWASM(){return this.isPlayback()&&Sa(this._opt.useWasm)}isPlayUseMSE(){return this.isPlayer()&&Sa(this._opt.useMSE)}isMSEDecodeAudio(){return this._opt.useMSE&&this._opt.mseDecodeAudio}isWCSDecodeAudio(){this._opt.useWCS&&this._opt.wcsDecodeAudio}isInWebFullscreen(){return this._opt.useWebFullScreen&&bo()&&this.fullscreen}getPlaybackRate(){let e=1;return Sa(this.isPlayback())&&this.playback&&(e=this.playback.rate),e}isPlaybackOnlyDecodeIFrame(){return Sa(this.isPlayback())&&this.getPlaybackRate()>=this._opt.playbackForwardMaxRateDecodeIFrame&&!this.isMSEDecodeAudio()}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}getVideoBufferTimeRange(){let e=null;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.getVideoBufferTimeRange():this.isMseDecoderUseWorker()&&(e=this.video.getVideoBufferTimeRange()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.getVideoBufferTimeRange():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.getVideoBufferTimeRange())),e}isVideoPlaying(){let e=!0;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.isVideoPlaying():this.isMseDecoderUseWorker()&&(e=this.video.isVideoPlaying()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.isVideoPlaying():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.isVideoPlaying())),e}addMemoryLog(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s0){const e=t/1e3;this._flvMetaDataFps=e}}No(e.hasAudio)&&Ea(e.hasAudio)&&(this.debugLog("updateMetaData","hasAudio",e.hasAudio,"and update _opt.hasAudio"),this._opt.hasAudio=e.hasAudio),No(e.hasVideo)&&Ea(e.hasVideo)&&(this.debugLog("updateMetaData","hasVideo",e.hasVideo,"and update _opt.hasVideo"),this._opt.hasVideo=e.hasVideo),e.server&&(this._serverInfo=(e.server+"").substring(0,10)),e.MetaDataCreator&&(this._serverInfo=e.MetaDataCreator)}this.emit(mt.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===w}isRecordTypeMp4(){return this.recorder&&this._opt.recordType===S}isRecordTypeWebm(){return this.recorder&&this._opt.recordType===E}isDemuxInWorker(){return this._opt.useWasm||this._opt.demuxUseWorker}isUseMSE(){return Sa(this._opt.useMSE)}isUseWCS(){return Sa(this._opt.useWCS)}isUseWASM(){return Sa(this._opt.useWasm)}isMseDecoderUseWorker(){return this.isUseMSE()&&Sa(this._opt.mseDecoderUseWorker)}getAudioSyncVideoDiff(){return this.audioTimestamp-this.getRenderCurrentPts()}getCurrentVideoAndAudio(){return{video:this.getRenderCurrentPts(),audio:this.audioTimestamp}}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(mt.currentPts,e),this.emitVideSeiSyncPts(e)}emitVideoSei(e){this.emit(mt.videoSEI,e),this._seiList.push(e)}emitVideSeiSyncPts(e){if(0===this._seiList.length||Ea(this._opt.isEmitSEI))return;const t=1e3*this._opt.videoSEISyncPtsDiff,i=e-t,s=e+t,r=[];this._seiList.forEach((t=>{t.ts>=i&&t.ts<=s&&(t.pts=e,r.push(t))})),r.forEach((e=>{this.emit(mt.videoSEISyncPts,e)})),this._seiList=this._seiList.filter((e=>e.ts>s))}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(){Sa(this._opt.checkFirstIFrame)&&(this.mseDecoder?this.mseDecoder.isDecodeFirstIIframe=!1:this.webcodecsDecoder&&(this.webcodecsDecoder.isDecodeFirstIIframe=!1))}isHlsCanVideoPlay(){return this._canPlayAppleMpegurl&&this.isOldHls()}setPtzPosition(e){this.control&&this.control.updatePtzPosition(e)}setRotate(e){this.updateOption({rotate:e}),this.resize()}setPlayFailedAndPaused(){this.isPlayFailedAndPaused=!0}getMseMineType(){let e={};return this.mseDecoder&&(e=this.mseDecoder.getMimeType()),e}getMaxDelayTs(){return this._opt.videoBuffer+this._opt.videoBufferDelay}isMseVideoStateInited(){return!this.video||this.video.getReadyStateInited()}showPlayBtn(){this.control&&this.control.showPlayBtn()}toggleControlExtendBtn(e,t){this.control&&this.control.toggleExtendBtn(e,t)}getControlExtendBtnActive(e){let t=!1;return this.control&&(t=this.control.getExtendBtnActive(e)),t}useVideoPlayAudio(){return this._opt.hasAudio&&(this._opt.useWCS&&this._opt.wcsDecodeAudio||this._opt.useWasm&&this._opt.wasmPlayAudioUseVideoRender)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}debugLog(e){if(this._opt.debug&&this.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s1?t-1:0),s=1;s1?t-1:0),s=1;s1&&0===e[e.length-1]&&0===e[e.length-2]}getShowVideoRect(){let e=this.width,t=this.height;const i=this.getControlHeight();return bo()&&this.fullscreen&&(this._opt.useWebFullScreen||this._opt.androidMobileFullscreenRotate)?e-=i:t-=i,{width:e,height:t}}updateControlSize(e){this.updateOption({controlSize:e}),this.control&&this.control.updateControlSize(),this.resize()}isStreamEnd(){let e=!1;return Ea(this._opt.checkStreamEnd)&&(e=this._isStreamEnd),e}updateStreamEndInner(){this._isStreamEnd=!0}checkPlaybackEnd(){return this.isPlayback()&&Ea(this._opt.checkStreamEnd),!1}getWebrtcVideo(){let e=null;return this.webrtc&&(e=this.webrtc.$videoElement),e}}class Iv{constructor(e){this.player=e,this.globalSetting=null;const t=Do();this.defaultSettings={watermark_id:`JbPro_${t}`,watermark_prefix:`JbPro_mask_${t}`,watermark_txt:"JbPro 测试水印",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.load({text:decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),color:"white"}),this.player.debugLog("Watermark","int")}destroy(){this._removeMark(),this.globalSetting=null,this.defaultSettings=null,this.player.debugLog("Watermark","destroy")}remove(){}load(e){this.globalSetting=e,this._loadMark(e)}resize(){this.player.debugLog("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 s="string"==typeof e.watermark_parent_node?document.getElementById(e.watermark_parent_node):e.watermark_parent_node,r=s||document.body;const o=r.getBoundingClientRect();var a=Math.max(r.scrollWidth,r.clientWidth,o.width),n=Math.max(r.scrollHeight,r.clientHeight,o.height),l=arguments[0]||{},d=r;(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=r.children,p=Math.floor(Math.random()*(u.length-1))+1;u[p]?r.insertBefore(h,u[p]):r.appendChild(h)}e.watermark_cols=parseInt((a-e.watermark_x)/(e.watermark_width+e.watermark_x_space));var f,m=parseInt((a-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((n-e.watermark_y)/(e.watermark_height+e.watermark_y_space));var g,y,A,b=parseInt((n-e.watermark_y-e.watermark_height*e.watermark_rows)/e.watermark_rows);e.watermark_y_space=b?e.watermark_y_space:b,s?(f=e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),g=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),g=0+e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1));for(var v=0;v\n \n \n ${m.watermark_txt}\n \n \n ${m.watermark_txt}\n \n \n \n \n `,_=window.btoa(unescape(encodeURIComponent(v)));var S=document.createElement("div");S.style.position="absolute",S.style.left="0px",S.style.top="0px",S.style.overflow="hidden",S.style.zIndex="9999999",S.style.width=a+"px",S.style.height=n+"px",S.style.display="block",S.style["-ms-user-select"]="none",S.style.backgroundImage=`url(data:image/svg+xml;base64,${_})`,c.appendChild(S)}_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,s=document.createElement("span");s.innerHTML=e,s.setAttribute("style",`font-family: ${t}; font-size: ${i}px; visibility: hidden; display: inline-block`),document.querySelector("body").appendChild(s);const r={width:s.offsetWidth,height:s.offsetHeight};return s.remove(),r}}const Mv="right",Fv="left",Uv="up",Ov="down",Nv="leftUp",jv="leftDown",Gv="rightUp",zv="rightDown",Wv="zoomExpand",Vv="zoomNarrow",$v="apertureFar",Hv="apertureNear",Jv="focusFar",qv="focusNear",Kv="setPos",Yv="calPos",Qv="delPos",Xv="wiperOpen",Zv="wiperClose",e_="cruiseStart",t_={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,setCruise:132,decCruise:133,cruiseStart:136,cruiseStop:0},i_=[25,50,75,100,125,150,175,200,225,250],s_=[1,2,3,4,5,6,7,8,9,16],r_=[16,48,80,112,144,160,176,192,208,224];function o_(e){const{type:t,speed:i=5,index:s=0}=e,r=function(e){return i_[(e=e||5)-1]||i_[4]}(i);let o,a,n,l;if(o=t_[t],!o)return"";switch(t){case Uv:case Ov:case $v:case Hv:n=r;break;case Mv:case Fv:case Jv:case qv:a=r;break;case Nv:case jv:case Gv:case zv:a=r,n=r;break;case Wv:case Vv:l=function(e){return r_[(e=e||5)-1]||r_[4]}(i);break;case Yv:case Qv:case Kv:n=a_(s);break;case Zv:case Xv:a=1;break;case e_:a=a_(s)}return function(e,t,i,s){let r=[];r[0]=165,r[1]=15,r[2]=1,r[3]=0,r[4]=0,r[5]=0,r[6]=0,e&&(r[3]=e);t&&(r[4]=t);i&&(r[5]=i);s&&(r[6]=s);return r[7]=(r[0]+r[1]+r[2]+r[3]+r[4]+r[5]+r[6])%256,function(e){let t="";for(let i=0;it)){for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i===t?s[r]=l_(e[r]):"object"==typeof e[r]?s[r]=d_(e[r],t,i+1):s[r]=e[r]);return s}}function h_(){return(new Date).toLocaleString()}class c_{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player=e,this.TAG_NAME="MemoryLogger",this.logMaxSize=(null==t?void 0:t.logMaxSize)||204800,this.logSize=0,this.logTextArray=[],this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.clear(),this.player.debugLog(this.TAG_NAME,"destroy")}clear(){this.logSize=0,this.logTextArray=[]}logCache(){let e="";try{for(var t=arguments.length,i=new Array(t),s=0;sd_(e)));e="[JbPro] "+h_()+JSON.stringify(r)}catch(e){return}if(this.logSize+=e.length,this.logTextArray.push(e),this.logSize>this.logMaxSize){const e=this.logTextArray.shift();this.logSize-=e.length}}getLog(){return this.logTextArray.join("\n")}getLogBlob(){const e=this.getLog();return new Blob([e],{type:"text/plain"})}download(){const e=this.getLog();this.clear();const t=new Blob([e],{type:"text/plain"});en(t,"JbPro-"+h_()+".log")}}class u_ extends Ba{constructor(e){super(),this.player=e,this.TAG_NAME="Network",this.online=this.isOnline(),this.prevOnline=this.online,this.interval=null,this._initListener(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.off(),this._stopCheck(),window.removeEventListener("online",this._updateOnlineStatus),window.removeEventListener("offline",this._updateOfflineStatus),this.player.debugLog(this.TAG_NAME,"destroy")}_initListener(){window.addEventListener("online",this._updateOnlineStatus.bind(this)),window.addEventListener("offline",this._updateOfflineStatus.bind(this))}_stopCheck(){this.interval&&(clearInterval(this.interval),this.interval=null)}_startCheck(){this.interval=setInterval((()=>{this.isOnline()!==this.prevOnline&&(this.isOnline()?this._updateOnlineStatus():this._updateOfflineStatus())}),1e3)}_updateOnlineStatus(){this.prevOnline=this.online,this.online=!0,this.logStatus(),this.emit("online")}_updateOfflineStatus(){this.prevOnline=this.online,this.online=!1,this.logStatus(),this.emit("offline")}logStatus(){const e=this.prevOnline?"online":"offline",t=this.online?"online":"offline";this.player.debugLog(this.TAG_NAME,`prevOnline: ${this.prevOnline}, online: ${this.online}, status: ${e} -> ${t}`)}isOnline(){return void 0===navigator.onLine||navigator.onLine}isOffline(){return!this.isOnline()}}class p_ extends Ba{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this._opt={},this.TAG_NAME="JbPro",this.$container=null,Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`JbPro option "${t}" can not be undefined`)})),this.originalOptions=e;const t=ba();let i=Object.assign({},t,e);i.url="",i.isMulti&&(i.debugUuid=ya()),this.debug=new Br(this);let s=e.container;if("string"==typeof e.container&&(s=document.querySelector(e.container)),!s)throw this.debugError("JbPro","JbPro need container option and now container is",e.container),new Error("JbPro need container option");if(Ea(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%",s.appendChild(e),this.$videoElement=e,this.$container=s,void(this._opt=i)}if(i.decoder&&Ea(-1!==i.decoder.indexOf("decoder-pro.js")||-1!==i.decoder.indexOf("decoder-pro-simd.js")))throw this.debugError("JbPro",`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`),new Error(`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`);if("CANVAS"===s.nodeName||"VIDEO"===s.nodeName)throw this.debugError("JbPro",`JbPro container type can not be ${s.nodeName} type`),new Error(`JbPro container type can not be ${s.nodeName} type`);if(i.videoBuffer>=i.heartTimeout)throw this.debugError("JbPro",`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`),new Error(`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`);if(!s.classList)throw this.debugError(this.TAG_NAME,"JbPro container is invalid, must be a DOM Element",s),new Error("JbPro container is invalid, must be a DOM Element",s);if(this._checkHasCreated(s))throw this.debugError("JbPro","JbPro container has been created and can not be created again",s),new Error("JbPro container has been created and can not be created again",s);var r,o,a;if(s.classList.add("jb-pro-container"),r=s,o=ie,a=Do(),r&&(r.dataset?r.dataset[o]=a:r.setAttribute("data-"+o,a)),delete i.container,jo(i.videoBuffer)&&(i.videoBuffer=1e3*Number(i.videoBuffer)),jo(i.videoBufferDelay)&&(i.videoBufferDelay=1e3*Number(i.videoBufferDelay)),jo(i.networkDelay)&&(i.networkDelay=1e3*Number(i.networkDelay)),jo(i.aiFaceDetectInterval)&&(i.aiFaceDetectInterval=1e3*Number(i.aiFaceDetectInterval)),jo(i.aiObjectDetectInterval)&&(i.aiObjectDetectInterval=1e3*Number(i.aiObjectDetectInterval)),jo(i.timeout)&&(Oo(i.loadingTimeout)&&(i.loadingTimeout=i.timeout),Oo(i.heartTimeout)&&(i.heartTimeout=i.timeout)),jo(i.autoWasm)&&(Oo(i.decoderErrorAutoWasm)&&(i.decoderErrorAutoWasm=i.autoWasm),Oo(i.hardDecodingNotSupportAutoWasm)&&(i.hardDecodingNotSupportAutoWasm=i.autoWasm),Oo(i.mseWaitVideoCanplayAutoWasm)&&(i.mseWaitVideoCanplayAutoWasm=i.autoWasm)),jo(i.aiFaceDetectLevel)&&Oo(i.aiFaceDetectWidth)){const e=Zs[i.aiFaceDetectLevel];e&&(i.aiFaceDetectWidth=e)}if(jo(i.aiObjectDetectLevel)&&Oo(i.aiObjectDetectWidth)){const e=er[i.aiObjectDetectLevel];e&&(i.aiObjectDetectWidth=e)}Sa(i.isCrypto)&&(i.isM7sCrypto=!0),this._opt=i,this.debugLog("JbPro","init"),i.videoBuffer>1e4&&this.debugWarn(this.TAG_NAME,`videoBuffer ${i.videoBuffer/1e3}s is too long, will black screen for ${i.videoBuffer/1e3}s , it is recommended to set it to less than 10s`),this._destroyed=!1,this._destroyLock=!1,this.$container=s,this._tempPlayBgObj={},this._tempVideoLastIframeInfo={},this._tempPlayerIsMute=!0,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this.events=new Ia(this),this._opt.isUseNewFullscreenWatermark?this.watermark=new Bv(this):this.watermark=new Iv(this),this.memoryLogger=new c_(this),this.network=new u_(this),this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[],this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.widthOrHeightChangeReplayDelayTimeout=null,this.streamErrorReplayDelayTimeout=null,this.streamEndReplayDelayTimeout=null,this.playbackPauseTimeout=null,this.playbackResumeTimeout=null,this.initDecoderWorkerTimeout=null,this.$loadingBgImage=null,this.$loadingBg=null,this._initOnLock(),this._initPlayer(s,i),this._initWatermark(),this._initNetwork(),this.debugLog("JbPro",'init success and version is "9-1-2024"'),console.log('JbPro Version is "9-1-2024" '+(Ea(Ao)?"and is Trial Version[试用版本]":""))}destroy(){return new Promise(((e,t)=>{if(this.debugLog("JbPro","destroy()"),this._destroyLock)return t("JbPro is destroying");this._destroyLock=!0,this._destroyed=!0,this.off(),this._removeTimeout(),this._clearInitDecoderWorkerTimeout(),this._initOnLock(),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._removeLoadingBackgroundForIOS(),this.player?this.player.destroy().then((()=>{this.player=null,this._destroy(),this._destroyLock=!1,e()})).catch((e=>{this._destroyLock=!1,t(e)})):(this._destroy(),this._destroyLock=!1,e())}))}_removeTimeout(){this.widthOrHeightChangeReplayDelayTimeout&&(clearTimeout(this.widthOrHeightChangeReplayDelayTimeout),this.widthOrHeightChangeReplayDelayTimeout=null),this.streamErrorReplayDelayTimeout&&(clearTimeout(this.streamErrorReplayDelayTimeout),this.streamErrorReplayDelayTimeout=null),this.streamEndReplayDelayTimeout&&(clearTimeout(this.streamEndReplayDelayTimeout),this.streamEndReplayDelayTimeout=null),this.playbackPauseTimeout&&(clearTimeout(this.playbackPauseTimeout),this.playbackPauseTimeout=null),this.playbackResumeTimeout&&(clearTimeout(this.playbackResumeTimeout),this.playbackResumeTimeout=null)}_destroy(){var e,t;this.events&&(this.events.destroy(),this.events=null),this.watermark&&(this.watermark.destroy(),this.watermark=null),this.network&&(this.network.destroy(),this.network=null),this.memoryLogger&&(this.memoryLogger.destroy(),this.memoryLogger=null),this.$container&&(this.$container.classList.remove("jb-pro-container"),this.$container.classList.remove("jb-pro-fullscreen-web"),e=this.$container,t=ie,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this._tempPlayBgObj=null,this._tempVideoLastIframeInfo=null,this._isNetworkOfflinePaused=!1,this._playerOnLock=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this._tempPlayerIsMute=!0,this._resetReplayTimes(),this.debugLog("JbPro","destroy end"),this._opt={},this.debug=null}_resetReplayTimes(){this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[]}_getOriginalOpt(){const e=ba();return Object.assign({},e,this.originalOptions)}_initPlayer(e,t){this.player=new Pv(e,t),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(((t,i)=>{try{this.debugLog(this.TAG_NAME,"_resetPlayer()",JSON.stringify(e))}catch(t){this.debugLog(this.TAG_NAME,"_resetPlayer()",e)}const s=()=>{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,s(),this.debugLog(this.TAG_NAME,"_resetPlayer() end"),t()})).catch((e=>{this.debugError(this.TAG_NAME,"_resetPlayer() error",e),i(e)})):(s(),this.debugLog(this.TAG_NAME,"_resetPlayer() end"),t())}))}_bindEvents(){var e=this;Object.keys(gt).forEach((t=>{this.player.on(gt[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.player&&this.player.showTipsMessageByCode(e)})),this.player.once(mt.beforeDestroy,(()=>{this.emit(mt.close),this.destroy().then((()=>{})).catch((e=>{}))})),this.player.on(mt.resize,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(mt.fullscreen,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(mt.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(mt.memoryLog,(function(){e.memoryLogger.logCache(...arguments)})),this.player.on(mt.downloadMemoryLog,(()=>{this.downloadMemoryLog()}))}_initWatermark(){if(this._opt.fullscreenWatermarkConfig.text=decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),this._opt.fullscreenWatermarkConfig.color="white",Zo(this._opt.fullscreenWatermarkConfig)){const e=zo(this.$container,this._opt.fullscreenWatermarkConfig);if(!e.watermark_txt)return void this.debugWarn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(e)}}_initNetwork(){this.network.on(mt.online,(()=>{if(this.emit(mt.networkState,mt.online),this.isDestroyed())this.debugLog(this.TAG_NAME,"network online and JbPro is destroyed");else if(this.debugLog(this.TAG_NAME,"network online"),this._isNetworkOfflinePaused&&this._isNetworkOfflinePausedAndNextPlayConfig&&this._isNetworkOfflinePausedAndNextPlayConfig.url){const e=this._isNetworkOfflinePausedAndNextPlayConfig.url,t=this._isNetworkOfflinePausedAndNextPlayConfig.playOptions;this._streamErrorReplayTimes++;const i=this._isNetworkOfflinePausedAndNextPlayConfig.type||"unknown";this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.debugLog(this.TAG_NAME,`${i} and network online and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and reset player and play`),this.play(e,t).then((()=>{this.debugLog(this.TAG_NAME,`${i} and network online and play success`)})).catch((e=>{this.emit(mt.playFailedAndPaused,At.fetchError,{},e),this.debugError(this.TAG_NAME,`${i} and network online and play error`,e.toString(),e)}))}})),this.network.on(mt.offline,(()=>{this.emit(mt.networkState,mt.offline),this.debugLog(this.TAG_NAME,"network offline")}))}_checkHasCreated(e){if(!e)return!1;const t=function(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}(e,ie);return!!t}_initOnLock(){this.webglAlignmentErrorOnLock=!1,this.webglContextLostErrorOnLock=!1,this.mediaSourceH265NotSupportOnLock=!1,this.mediaSourceFullOnLock=!1,this.mediaSourceAppendBufferErrorOnLock=!1,this.mseSourceBufferErrorOnLock=!1,this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.mseAddSourceBufferErrorOnLock=!1,this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.mediaSourceTsIsMaxDiffOnLock=!1,this.mseWidthOrHeightChangeOnLock=!1,this.mediaSourceAudioG711NotSupportOnLock=!1,this.mediaSourceAudioInitTimeoutOnLock=!1,this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.mseWorkerAddSourceBufferErrorOnLock=!1,this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.webcodecsH265NotSupportOnLock=!1,this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.webcodecsDecodeConfigureErrorOnLock=!1,this.webcodecsDecodeErrorOnLock=!1,this.wcsWidthOrHeightChangeOnLock=!1,this.webcodecsAudioNoDataTimeoutOnLock=!1,this.webcodecsAudioInitTimeoutOnLock=!1,this.simdDecodeErrorOnLock=!1,this.wasmWidthOrHeightChangeOnLock=!1,this.wasmUseVideoRenderErrorOnLock=!1,this.videoElementPlayingFailedOnLock=!1,this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.networkDelayTimeoutOnLock=!1,this.flvDemuxBufferSizeTooLargeOnLock=!1,this.fetchErrorOnLock=!1,this.streamEndOnLock=!1,this.websocketErrorOnLock=!1,this.webrtcErrorOnLock=!1,this.hlsErrorOnLock=!1,this.aliyunRtcErrorOnLock=!1,this.decoderWorkerInitErrorOnLock=!1,this.decoderWorkerWasmErrorOnLock=!1,this.videoElementPlayingFailedForWebrtcOnLock=!1,this.videoInfoErrorOnLock=!1,this.playbackEndOnLock=!1,this.webrtcStreamH265OnLock=!1,this.mseWaitVideoCanplayTimeoutOnLock=!1}isDestroyed(){return this._destroyed}getOption(){return this.player?this.player.getOption():{}}setDebug(e){this.debugLog("JbPro",`setDebug() ${e}`),this._opt.debug=!!e,this.player?this.player.updateOption({debug:!!e},!0):this.debugWarn("JbPro","player is not init")}getIsDebug(){let e=!1;return this.player&&(e=this.player._opt.debug),e}mute(){this.debugLog("JbPro","mute()"),this.player&&this.player.mute(!0)}cancelMute(){this.debugLog("JbPro","cancelMute() and is mute is ",this.isMute()),this.player&&this.player.isAudioMute()&&this.player.mute(!1)}setVolume(e){this.debugLog("JbPro",`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.debugLog("JbPro","audioResume() and call cancelMute()"),this.cancelMute()}setTimeout(e){this.debugLog("JbPro",`setTimeout() ${e}`),e=Number(e),isNaN(e)?this.debugWarn("JbPro",`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.debugLog("JbPro",`setScaleMode() ${e}`),this.player?this.player.setScaleMode(e):this.debugWarn("JbPro","setScaleMode() player is null")}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{this.debugLog("JbPro",`pause() ${e}`),this.isDestroyed()&&i("JbPro is destroyed"),(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&(this._tempPlayBgObj=this._getVideoLastIframeInfo()),this._tempPlayerIsMute=this.isMute(),this._pause(e).then((e=>{t(e)})).catch((e=>{i(e)}))}))}_pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{if(this.debugLog("JbPro",`_pause() ${e}`),this.isDestroyed())return i("JbPro is destroyed");this._resetReplayTimes(),this.player?this.player.pause(e).then((e=>{t(e)})).catch((e=>{i(e)})):i("player is null")}))}close(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("JbPro is destroyed");this.debugLog("JbPro","close() and inner destroy()"),this.destroy().then((()=>{e()})).catch((e=>{t(e)}))}))}clearView(){this.debugLog("JbPro","clearView()"),this.player&&this.player.video?this.getRenderType()===$?this.player.video.clearView():this.debugWarn("JbPro","clearView","render type is video, not support clearView, please use canvas render type"):this.debugWarn("JbPro","clearView","player is null")}play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debugLog("JbPro",`play() ${e}`,JSON.stringify(t))}catch(i){this.debugLog("JbPro",`play() ${e}`,t)}if(!e&&!this._opt.url)return this.emit(mt.error,At.playError),void s("url is null and this._opt.url is null");if(e&&(e=(""+e).trim(),-1===e.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 s(`url ${e} must be "http:" or "https:" or "webrtc:" or "ws:" or "wss:" or "wt:" or "artc:" protocol`);if(Ea(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 r=t.cryptoKey||this._opt.playOptions.cryptoKey,o=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.m7sCryptoKey&&(!r||!o)){const e=this._opt.m7sCryptoKey.split(".");r=ma(e[0]),o=ma(e[1])}if(!r||!o){const r=e||this._opt.url;return void this._cryptoPlay(r).then((r=>{let{cryptoIV:o,cryptoKey:a}=r;this._opt.playOptions.cryptoKey=a,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=a,this._playBefore(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}this._opt.playOptions.cryptoKey=r,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=r}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=ma(t[0]),i=ma(t[1])}e&&i&&(this._opt.playOptions.cryptoKey=e,this._opt.playOptions.cryptoIV=i,t.cryptoIV=i,t.cryptoKey=e)}else if(this._opt.isSm4Crypto){let e=t.cryptoKey||this._opt.playOptions.cryptoKey,i=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.sm4CryptoKey&&(!e||!i)){const t=this._opt.sm4CryptoKey.split(".");2===t.length&&(e=fl(t[0]),i=fl(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=>{s(e)}))}))}_playBefore(e,t){return new Promise(((i,s)=>{if(this.player)if(e)if(this._opt.url)if(e===this._opt.url)if(this.player.playing)this.debugLog("JbPro","_playBefore","playing and resolve()"),i();else{this.debugLog("JbPro","_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)),Ea(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore this.player.play error",e),this.emit(mt.crashLog,this.getCrashLog("this.player.play 1",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e),s(e)}))}else{this.debugLog("JbPro","_playBefore",`\n this._url.url is ${this._opt.url}\n and new url is ${e}\n and destroy and play new url`);const r=this._getOriginalOpt();this._resetPlayer(r).then((()=>{this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(mt.crashLog,this.getCrashLog("this.player.play 2",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e)}))}else this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(mt.crashLog,this.getCrashLog("this.player.play 3",e)),s(e)}));else{let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj)),Ea(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(mt.crashLog,this.getCrashLog("this.player.play 4",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e)}))}else e?this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(mt.crashLog,this.getCrashLog("this.player.play 5",e)),s(e)})):this._play(this._opt.url,this._opt.playOptions).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(mt.crashLog,this.getCrashLog("this.player.play 6",e)),s(e)}))}))}_cryptoPlay(e){return new Promise(((t,i)=>{const s=function(e){const t=(e||document.location.toString()).split("//"),i=t[1].indexOf("/");let s=t[1].substring(i);return-1!=s.indexOf("?")&&(s=s.split("?")[0]),s}(e);let r=this._opt.cryptoKeyUrl,o="";const a=ga(e);if(r){if(o=r,this._opt.isM7sCrypto&&-1===o.indexOf("/crypto/?stream=")){const e=ga(r);o=e.origin+te+`?stream=${s}`}}else r=a.origin+te,o=r+`?stream=${s}`;var n;this.player.debugLog("JbPro",`_cryptoPlay() cryptoKeyUrl: ${o} and opt.cryptoKeyUrl: ${this._opt.cryptoKeyUrl}`),(n=o,new Promise(((e,t)=>{Ol.get(n).then((t=>{e(t)})).catch((e=>{t(e)}))}))).then((e=>{if(e){const s=e.split("."),r=ma(s[0]),o=ma(s[1]);o&&r?t({cryptoIV:o,cryptoKey:r}):i("get cryptoIV or cryptoKey error")}else i(`cryptoKeyUrl: getM7SCryptoStreamKey ${o} res is null`)})).catch((e=>{i(e)}))}))}playback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debugLog("JbPro",`playback() ${e}, options: `,JSON.stringify(t))}catch(i){this.debugLog("JbPro",`playback() ${e}, options: `,t)}if(Ea(this._opt.isLive))return s("this._opt.isLive is false, can not playback");const r=va(),o=Object.assign({},r.playbackConfig,this._opt.playbackConfig,t);Ea(o.isUseFpsRender)&&o.isCacheBeforeDecodeForFpsRender&&(o.isCacheBeforeDecodeForFpsRender=!1,this.debugWarn("JbPro","playbackConfig.isUseFpsRender is false, isCacheBeforeDecodeForFpsRender can not be ture, isCacheBeforeDecodeForFpsRender is set to false")),0===o.rateConfig.length&&o.showRateBtn&&(o.showRateBtn=!1,this.debugWarn("JbPro","playbackConfig.rateConfig.length is 0, showRateBtn can not be ture, showRateBtn is set to false")),o.controlType,Q.simple,this._resetPlayer({videoBuffer:0,playbackConfig:o,playType:_,openWebglAlignment:!0,useMSE:o.useMSE,useWCS:o.useWCS,useSIMD:!0}).then((()=>{this.play(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}))}playbackPause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro",`playbackPause() ${e}`),this._opt.playType===b?Promise.reject("playType is player, can not call playbackPause method"):new Promise(((t,i)=>{if(!this.player)return i("player is null");Sa(e)?this._pause().then((()=>{t()})).catch((e=>{i(e)})):(this.player.playbackPause=!0,this.player.recording=!1,this.player.zooming=!1,this.playbackPauseTimeout=setTimeout((()=>{this.playbackPauseTimeout=null,t()}),100))})))}playbackResume(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro","playbackResume()"),this._opt.playType===b?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,this.playbackResumeTimeout=setTimeout((()=>{this.playbackResumeTimeout=null,e()}),100)})))}forward(e){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro",`forward() ${e}`),Ea(this._opt.isLive)||this._opt.playType===b?(this.debugLog("JbPro",`forward() and this._opt.isLive is ${this._opt.isLive} and this._opt.playType is ${this._opt.playType}`),Promise.reject("forward() method only just for playback type")):Po(Number(e))?new Promise(((t,i)=>{this.player?(e=uo(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&&Ea(this.player.isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender())&&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.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((t,i)=>{this.forward(e).then((()=>{t()})).catch((e=>{i(e)}))}))}normal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.forward(1).then((()=>{e()})).catch((e=>{t(e)}))}))}playbackNormal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.normal().then((()=>{e()})).catch((e=>{t(e)}))}))}updatePlaybackForwardMaxRateDecodeIFrame(e){this.isDestroyed()||(this.debugLog("JbPro",`updatePlaybackForwardMaxRateDecodeIFrame() ${e}`),e=Number(e),e=uo(e=parseInt(e,10),1,8),this._opt.playbackForwardMaxRateDecodeIFrame=e,this.player?this.player.updateOption({playbackForwardMaxRateDecodeIFrame:e},!0):this.debugWarn("JbPro","updatePlaybackForwardMaxRateDecodeIFrame() player is null"))}setPlaybackStartTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setPlaybackStartTime() ${e}`);const t=Qo(e);this.player?this.player.isPlayback()?t<10&&0!==e&&this.player.playback.isControlTypeNormal()?this.debugWarn("JbPro",`setPlaybackStartTime() control type is normal and timestamp: ${e} is not valid`):this.player.playback.isControlTypeSimple()&&e>this.player.playback.totalDuration?this.debugWarn("JbPro",`setPlaybackStartTime() control type is simple and timestamp: ${e} is more than ${this.player.playback.totalDuration}`):this.player.playing&&(this.player.playback.isControlTypeNormal()&&10===t&&(e*=1e3),this.player.playback.setStartTime(e),this.playbackClearCacheBuffer()):this.debugWarn("JbPro","setPlaybackStartTime() playType is not playback"):this.debugWarn("JbPro","setPlaybackStartTime() player is null")}setPlaybackShowPrecision(e){this.isDestroyed()||(this.debugLog("JbPro",`setPlaybackShowPrecision() ${e}`),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.setShowPrecision(e):this.debugWarn("JbPro","control type is not normal , not support!"):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}playbackCurrentTimeScroll(){this.isDestroyed()||(this.debugLog("JbPro","playbackCurrentTimeScroll()"),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.currentTimeScroll():this.debugWarn("JbPro","control type is not normal , not support!"):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}playbackClearCacheBuffer(){this.isDestroyed()||(this.debugLog("JbPro","playbackClearCacheBuffer()"),this.player?this.player.isPlayback()?(this.player.video&&this.player.video.clear(),this.player.audio&&this.player.audio.clear(),this.clearBufferDelay()):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}getPlaybackCurrentRate(){return this.player?this.player.isPlayback()?this.player.getPlaybackRate():(this.debugWarn("JbPro","playType is not playback"),1):(this.debugWarn("JbPro","player is null"),1)}updatePlaybackLocalOneFrameTimestamp(e){this.isDestroyed()||(this.debugLog("JbPro",`updatePlaybackLocalOneFrameTimestamp() ${e}`),this.player?this.player.isPlayback()?this.player.playback.updateLocalOneFrameTimestamp(e):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}setStreamQuality(e){if(this.isDestroyed())return;if(this.debugLog("JbPro",`setStreamQuality() ${e}`),!this.player)return void this.debugWarn("JbPro","player is null");if(!this.player._opt.operateBtns.quality)return void this.debugWarn("JbPro","player._opt.operateBtns.quality is false");(this.player._opt.qualityConfig||[]).includes(e)?this.player.streamQuality=e:this.debugWarn("JbPro",`quality: ${e} is not in qualityList`)}_play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!this.player)return s("player is null");let r=!1;this._opt.url&&this._opt.url!==e&&(r=!0),this._opt.url=e,this._opt.playOptions=t;const u=e.split("?")[0],p=u.startsWith("http://")||u.startsWith("https://"),f=u.startsWith("webrtc://"),m=u.startsWith("artc://"),g=u.startsWith("wt://"),y=u.startsWith("ws://")||u.startsWith("wss://"),A=p||y,b=p&&u.endsWith(".m3u8"),v=A&&u.endsWith(".flv"),_=A&&(u.endsWith(".fmp4")||u.endsWith(".mp4")),S=A&&u.endsWith(".mpeg4"),E=A&&(u.endsWith(".h264")||u.endsWith(".h265")),w=A&&u.endsWith(".ts");let M=this._opt.isWebrtcForZLM||!1,F=this._opt.isWebrtcForSRS||!1,U=this._opt.isWebrtcForOthers||!1;f&&(-1!==e.indexOf("/index/api/webrtc")?(M=!0,F=!1,U=!1):-1!==e.indexOf("/rtc/v1/play/")&&(F=!0,M=!1,U=!1));let O=null,N=null;if(v&&Ea(this._opt.isFlv)&&this._resetDemuxType("isFlv"),_&&Ea(this._opt.isFmp4)&&this._resetDemuxType("isFmp4"),S&&Ea(this._opt.isMpeg4)&&this._resetDemuxType("isMpeg4"),E&&Ea(this._opt.isNakedFlow)&&this._resetDemuxType("isNakedFlow"),w&&Ea(this._opt.isTs)&&this._resetDemuxType("isTs"),p?O=b?n:a:g?O=d:f?O=l:m?O=h:y&&(O=o),this._opt.isNakedFlow?N=x:this._opt.isFmp4?N=R:this._opt.isMpeg4?N=P:this._opt.isFlv?N=T:this._opt.isTs?N=B:b?N=L:f?N=C:m?N=I:g?N=D:y&&(N=k),!O||!N)return this._opt.playFailedAndPausedShowMessage&&this.showErrorMessageTips("url is not support"),s(`play url ${e} is invalid, protocol is ${c[O]}, demuxType is ${N}`);this.debugLog("JbPro",`play url ${e} protocol is ${c[O]}, demuxType is ${N}`);const j=()=>{this.player.on(At.webglAlignmentError,this._handleWebglAlignmentError.bind(this)),this.player.on(At.webglContextLostError,this._handleWebglContextLostError.bind(this)),this.player.on(At.mediaSourceH265NotSupport,this._handleMediaSourceH265NotSupport.bind(this)),this.player.on(At.mseWaitVideoCanplayTimeout,this._handleMseWaitVideoCanplayTimeout.bind(this)),this.player.on(At.mediaSourceFull,this._handleMediaSourceFull.bind(this)),this.player.on(At.mediaSourceAppendBufferError,this._handleMediaSourceAppendBufferError.bind(this)),this.player.on(At.mseSourceBufferError,this._handleMseSourceBufferError.bind(this)),this.player.on(At.mediaSourceBufferedIsZeroError,this._handleMediaSourceBufferedIsZeroError.bind(this)),this.player.on(At.mseAddSourceBufferError,this._handleMseAddSourceBufferError.bind(this)),this.player.on(At.mediaSourceDecoderConfigurationError,this._handleMediaSourceDecoderConfigurationError.bind(this)),this.player.on(At.mediaSourceTsIsMaxDiff,this._handleMediaSourceTsIsMaxDiff.bind(this)),this.player.on(At.mseWidthOrHeightChange,this._handleMseWidthOrHeightChange.bind(this)),this.player.on(At.mediaSourceAudioG711NotSupport,this._handleMediaSourceAudioG711NotSupport.bind(this)),this.player.on(At.mediaSourceAudioInitTimeout,this._handleMediaSourceAudioInitTimeout.bind(this)),this.player.once(At.mediaSourceAudioNoDataTimeout,this._handleMediaSourceAudioNoDataTimeout.bind(this)),this.player.on(At.mseWorkerAddSourceBufferError,this._handleMseWorkerAddSourceBufferError.bind(this)),this.player.on(At.mediaSourceUseCanvasRenderPlayFailed,this._handleMediaSourceUseCanvasRenderPlayFailed.bind(this)),this.player.on(At.webcodecsH265NotSupport,this._handleWebcodecsH265NotSupport.bind(this)),this.player.on(At.webcodecsUnsupportedConfigurationError,this._handleWebcodecsUnsupportedConfigurationError.bind(this)),this.player.on(At.webcodecsDecodeConfigureError,this._handleWebcodecsDecodeConfigureError.bind(this)),this.player.on(At.webcodecsDecodeError,this._handleWebcodecsDecodeError.bind(this)),this.player.on(At.wcsWidthOrHeightChange,this._handleWcsWidthOrHeightChange.bind(this)),this.player.on(At.webcodecsAudioNoDataTimeout,this._handleWebcodecsAudioNoDataTimeout.bind(this)),this.player.on(At.webcodecsAudioInitTimeout,this._handleWebcodecsAudioInitTimeout.bind(this)),this.player.on(At.simdDecodeError,this._handleSimdDecodeError.bind(this)),this.player.on(At.wasmWidthOrHeightChange,this._handleWasmWidthOrHeightChange.bind(this)),this.player.on(At.wasmUseVideoRenderError,this._handleWasmUseVideoRenderError.bind(this)),this.player.on(At.videoElementPlayingFailed,this._handleVideoElementPlayingFailed.bind(this)),this.player.on(At.simdH264DecodeVideoWidthIsTooLarge,this._handleSimdH264DecodeVideoWidthIsTooLarge.bind(this)),this.player.on(mt.networkDelayTimeout,this._handleNetworkDelayTimeout.bind(this)),this.player.on(mt.flvDemuxBufferSizeTooLarge,this._handleFlvDemuxBufferSizeTooLarge.bind(this)),this.player.on(At.fetchError,this._handleFetchError.bind(this)),this.player.on(mt.streamEnd,this._handleStreamEnd.bind(this)),this.player.on(At.websocketError,this._handleWebsocketError.bind(this)),this.player.on(At.webrtcError,this._handleWebrtcError.bind(this)),this.player.on(At.hlsError,this._handleHlsError.bind(this)),this.player.on(At.aliyunRtcError,this._handleAliyunRtcError.bind(this)),this.player.on(At.decoderWorkerInitError,this._handleDecoderWorkerInitError.bind(this)),this.player.on(At.decoderWorkerWasmError,this._handleDecoderWorkerWasmError.bind(this)),this.player.on(At.videoElementPlayingFailedForWebrtc,this._handleVideoElementPlayingFailedForWebrtc.bind(this)),this.player.on(At.videoInfoError,this._handleVideoInfoError.bind(this)),this.player.on(mt.webrtcStreamH265,this._handleWebrtcStreamH265.bind(this)),this.player.on(mt.playbackEnd,this._handlePlaybackEnd.bind(this)),this.player.on(mt.delayTimeout,this._handleDelayTimeout.bind(this)),this.player.on(mt.loadingTimeout,this._handleLoadingTimeout.bind(this)),this._hasLoaded()?(this.debugLog(this.TAG_NAME,"_playNext and _hasLoaded() is true"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_hasLoaded() and play error",e),this.emit(mt.crashLog,this.getCrashLog("_hasLoaded() and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debugError("JbPro","_hasLoaded() and play error and next pause error",e)}))}))):(this.debugLog(this.TAG_NAME,"_playNext and waiting decoderWorkerInit callback"),this._checkInitDecoderWorkerTimeout(),this.player.once(mt.decoderWorkerInit,(()=>{this._clearInitDecoderWorkerTimeout(),this.isDestroyed()?this.debugLog("JbPro","decoderWorkerInit but player is destroyed"):(this.debugLog(this.TAG_NAME,"_playNext and decoderWorkerInit callback and next play"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","decoderWorkerInit and play error",e),this.emit(mt.crashLog,this.getCrashLog("decoderWorkerInit and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debugError("JbPro","decoderWorkerInit and play error and next pause error",e)}))})))})))},G=this.player.getOption(),z=b&&Ea(this._opt.supportHls265),W=f&&Ea(this._opt.isWebrtcH265),V=b&&!!na(),$=b&&G.demuxUseWorker;if(z||W||m||r||S||V||$)this.debugLog("JbPro",`need reset player and\n isOldHls is ${z} and isOldWebrtc is ${W} and\n isAliyunRtc is ${m} and\n needResetPlayer(url change) is ${r} and\n isMpeg4 is ${S} and\n isHlsCanVideoPlay is ${V} and\n isHlsButDemuxUseWorker is ${$}`),this._resetPlayer({protocol:O,demuxType:N,isHls:b,isWebrtc:f,isWebrtcForZLM:M,isWebrtcForSRS:F,isWebrtcForOthers:U,isAliyunRtc:m,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||"",url:e,playOptions:t}).then((()=>{j()})).catch((e=>{s("reset player error")}));else{const e={protocol:O,demuxType:N,isHls:b,isWebrtc:f,isAliyunRtc:m,isFlv:this._opt.isFlv,isFmp4:this._opt.isFmp4,isMpeg4:this._opt.isMpeg4,isNakedFlow:this._opt.isNakedFlow,isTs:this._opt.isTs,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||""};this._opt.isNakedFlow&&(e.mseDecodeAudio=!1,e.wcsDecodeAudio=!1),this.player.updateOption(e),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.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)}resize(){this.isDestroyed()||(this.debugLog("JbPro","resize()"),this.player&&this.player.resize())}setBufferTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setBufferTime() ${e}`),(e=Number(e))>10&&this.debugWarn("JbPro",`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.debugWarn("JbPro","setBufferTime() player is null")}setBufferDelayTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setBufferDelayTime() ${e}`),(e=Number(e))<.2&&this.debugWarn("JbPro",`setBufferDelayTime() buffer time delay is ${e} second, is too small`);const t=1e3*(e=uo(e,.2,100));this._opt.videoBufferDelay=t,this.player?this.player.updateOption({videoBufferDelay:t},!0):this.debugWarn("JbPro","setBufferDelayTime() player is null")}setRotate(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.setRotate(e):this.debugWarn("JbPro","setRotate() player is null")):this.debugWarn("JbPro",`setRotate() rotate is ${e} and this._opt.rotate is ${this._opt.rotate}`)}setMirrorRotate(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.debugWarn("JbPro","setMirrorRotate() player is null")):this.debugWarn("JbPro",`setMirrorRotate() mirrorRotate is ${e} and this._opt.mirrorRotate is ${this._opt.mirrorRotate}`)}setAspectRatio(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.debugWarn("JbPro","setAspectRatio() player is null")):this.debugWarn("JbPro",`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.isDestroyed()||(this.debugLog("JbPro","setKeepScreenOn()"),this._opt.keepScreenOn=!0,this.player?this.player.updateOption({keepScreenOn:!0}):this.debugWarn("JbPro","setKeepScreenOn() player is not ready"))}setFullscreen(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setFullscreen() ${e}`);const t=!!e;this.player?this.player.fullscreen!==t?this.player.fullscreen=t:this.debugWarn("JbPro",`setFullscreen() fullscreen is ${t} and this.player.fullscreen is ${this.player.fullscreen}`):this.debugWarn("JbPro","setFullscreen() player is not ready")}setWebFullscreen(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setWebFullscreen() ${e}`);const t=!!e;this.player?this.player.webFullscreen=t:this.debugWarn("JbPro","setWebFullscreen() player is not ready")}screenshot(e,t,i,s){if(!this.isDestroyed())return this.debugLog("JbPro",`screenshot() ${e} ${t} ${i} ${s}`),this.player&&this.player.video?this.player.video.screenshot(e,t,i,s):(this.debugWarn("JbPro","screenshot() player is not ready"),null)}screenshotWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debugLog("JbPro","screenshotWatermark()",e),this.player&&this.player.video?this.player.video.screenshotWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debugWarn("JbPro","screenshotWatermark() player is not ready"),i("player is not ready"))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debugLog("JbPro","screenshotCopyrightWatermark()",e),this.player&&this.player.video?this.player.video.screenshotCopyrightWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debugWarn("JbPro","screenshotCopyrightWatermark() player is not ready"),i("player is not ready"))}))}startRecord(e,t){return new Promise(((i,s)=>this.isDestroyed()?s("player is destroyed"):(this.debugLog("JbPro",`startRecord() ${e} ${t}`),this.player?void(this.player.playing?(this.player.startRecord(e,t),i()):(this.debugWarn("JbPro","startRecord() player is not playing"),s("not playing"))):(this.debugWarn("JbPro","startRecord() player is not ready"),s("player is not ready")))))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{if(this.isDestroyed())return s("player is destroyed");this.debugLog("JbPro",`stopRecordAndSave() ${e} ${t}`),this.player&&this.player.recording?this.player.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{s(e)})):s("not recording")}))}cancelRecord(){return new Promise(((e,t)=>this.isDestroyed()?t("player is destroyed"):(this.debugLog("JbPro","cancelRecord()"),this.player?void this.player.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})):(this.debugWarn("JbPro","cancelRecord() player is not ready"),t("player is not ready")))))}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===b?e=!this.isPlaying()&&!this.isLoading():this._opt.playType===_&&this.player&&(e=this.player.playbackPause),e}isPaused(){return this.isPause()}isPlaybackPause(){let e=!1;return this._opt.playType===_&&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.isDestroyed()||(this.debugLog("JbPro","clearBufferDelay()"),this.player?this.player.clearBufferDelay():this.debugWarn("JbPro","clearBufferDelay() player is not init"))}setNetworkDelayTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setNetworkDelayTime() ${e}`),(e=Number(e))<1&&this.debugWarn("JbPro",`setNetworkDelayTime() network delay is ${e} second, is too small`);const t=1e3*(e=uo(e,1,100));this._opt.networkDelay=t,this.player?this.player.updateOption({networkDelay:t},!0):this.debugWarn("JbPro","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=Ts;return this.player&&(e=this.player.loading?Ss:this.player.playing?Es:ws),e}getPlayType(){return this.player?this.player._opt.playType:b}togglePerformancePanel(e){if(this.isDestroyed())return;this.debugLog("JbPro",`togglePerformancePanel() ${e}`);const t=this.player._opt.showPerformance;let i=!t;No(e)&&(i=e),i!==t?this.player?this.player.togglePerformancePanel(i):this.debugWarn("JbPro","togglePerformancePanel() failed, this.player is not init"):this.debugWarn("JbPro",`togglePerformancePanel() failed, showPerformance is prev: ${t} === now: ${i}`)}openZoom(){if(!this.isDestroyed())if(this.debugLog("JbPro","openZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debugWarn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!0}else this.debugWarn("JbPro","openZoom() failed, this.player is not init")}closeZoom(){if(!this.isDestroyed())if(this.debugLog("JbPro","closeZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debugWarn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!1}else this.debugWarn("JbPro","closeZoom() failed, this.player is not init")}isZoomOpen(){let e=!1;return this.player&&(e=this.player.zooming),e}toggleZoom(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleZoom() ${e}`),No(e)||(e=!this.isZoomOpen()),Sa(e)?this.openZoom():Ea(!1)&&this.closeZoom())}expandZoom(){this.isDestroyed()||(this.debugLog("JbPro","expandZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.expandPrecision():this.debugWarn("JbPro","expandZoom() failed, zoom is not open or not init"))}narrowZoom(){this.isDestroyed()||(this.debugLog("JbPro","narrowZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.narrowPrecision():this.debugWarn("JbPro","narrowZoom failed, zoom is not open or not init"))}updateCurrentZoom(e){this.isDestroyed()||(this.debugLog("JbPro","updateCurrentZoom()",e),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.updateCurrentZoom(e):this.debugWarn("JbPro","narrowZoom failed, zoom is not open or not init"))}getCurrentZoomIndex(){if(this.isDestroyed())return;let e=1;return this.player&&this.player.zoom&&(e=this.player.zoom.currentZoom),e}setNakedFlowFps(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");if(this.debugLog("JbPro","setNakedFlowFps()",e),Oo(e))return i("setNakedFlowFps() fps is empty");let s=Number(e);s=uo(s,1,100),this._opt.nakedFlowFps=s,this.player?this.player.updateOption({nakedFlowFps:s}):this.debugWarn("JbPro","setNakedFlowFps() player is null"),t()}))}getCrashLog(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!this.player)return;const i=this.player.getAllStatsData(),s=this.player;let r={url:this._opt.url,playType:s.isPlayback()?"playback":"live",demuxType:s.getDemuxType(),decoderType:s.getDecodeType(),renderType:s.getRenderType(),videoInfo:{encType:"",width:"",height:""},audioInfo:{encType:"",sampleRate:"",channels:""},audioEngine:s.getAudioEngineType(),allTimes:i.pTs,timestamp:co(),type:e,error:pa(t)||e};if(s.video){const e=s.video.videoInfo||{};r.videoInfo={encType:e.encType||"",width:e.width||"",height:e.height||""}}if(s.audio){const e=s.audio.audioInfo||{};r.audioInfo={encType:e.encType||"",sampleRate:e.sampleRate||"",channels:e.channels||""}}return r}updateDebugLevel(e){this.isDestroyed()||(this.debugLog("JbPro","updateDebugLevel()",e),e===J||e===q?e!==this.player._opt.debugLevel?(this._opt.debugLevel=e,this.player?this.player.updateOption({debugLevel:e},!0):this.debugWarn("JbPro","updateDebugLevel() player is null")):this.debugWarn("JbPro",`updateDebugLevel() level is same, level: ${e}`):this.debugWarn("JbPro",`updateDebugLevel() level is not valid, level: ${e}`))}updateWatermark(e){this.isDestroyed()||(this.debugLog("JbPro","updateWatermark()",e),this.player?this.player.updateWatermark(e):this.debugWarn("JbPro","updateWatermark() player is not init"))}removeWatermark(){this.isDestroyed()||(this.debugLog("JbPro","removeWatermark()"),this.player?this.player.removeWatermark():this.debugWarn("JbPro","removeWatermark() player is not init"))}updateFullscreenWatermark(e){if(!this.isDestroyed())if(this.debugLog("JbPro","updateFullscreenWatermark()",e),Zo(e)){this._opt.fullscreenWatermarkConfig=e;const t=zo(this.$container,e);if(!t.watermark_txt)return void this.debugWarn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(t)}else this.debugWarn("JbPro",`updateFullscreenWatermark() config is not valid, config: ${e}`)}removeFullscreenWatermark(){this.isDestroyed()||(this.debugLog("JbPro","removeFullscreenWatermark()"),this.watermark?this.watermark.remove():this.debugWarn("JbPro","removeFullscreenWatermark() watermark is not init"))}faceDetectOpen(){this.isDestroyed()||(this.debugLog("JbPro","faceDetectOpen()"),this.player?this.player.faceDetect(!0):this.debugWarn("JbPro","faceDetectOpen() player is not init"))}faceDetectClose(){this.isDestroyed()||(this.debugLog("JbPro","faceDetectClose()"),this.player?this.player.faceDetect(!1):this.debugWarn("JbPro","faceDetectClose() player is not init"))}objectDetectOpen(){this.isDestroyed()||(this.debugLog("JbPro","objectDetectOpen()"),this.player?this.player.objectDetect(!0):this.debugWarn("JbPro","objectDetectOpen() player is not init"))}objectDetectClose(){this.isDestroyed()||(this.debugLog("JbPro","objectDetectClose()"),this.player?this.player.objectDetect(!1):this.debugWarn("JbPro","objectDetectClose() player is not init"))}sendWebsocketMessage(e){this.isDestroyed()||(this.debugLog("JbPro","sendWebsocketMessage()",e),this.player?this.player.sendWebsocketMessage(e):this.debugWarn("JbPro","sendWebsocketMessage() player is not init"))}addContentToCanvas(e){this.isDestroyed()||(this.debugLog("JbPro","addContentToCanvas()"),this.player?this.player.addContentToCanvas(e):this.debugWarn("JbPro","addContentToCanvas() player is not init"))}clearContentToCanvas(){this.isDestroyed()||(this.debugLog("JbPro","clearContentToCanvas()"),this.player?this.player.addContentToCanvas([]):this.debugWarn("JbPro","clearContentToCanvas() player is not init"))}addContentToContainer(e){this.isDestroyed()||(this.debugLog("JbPro","addContentToContainer()"),this.player?this.player.addContentToContainer(e):this.debugWarn("JbPro","addContentToContainer() player is not init"))}clearContentToContainer(){this.isDestroyed()||(this.debugLog("JbPro","clearContentToContainer()"),this.player?this.player.addContentToContainer([]):this.debugWarn("JbPro","clearContentToContainer() player is not init"))}setControlHtml(e){this.isDestroyed()||(this.debugLog("JbPro","setControlHtml()",e),this.player?this.player.setControlHtml(e):this.debugWarn("JbPro","setControlHtml() player is not init"))}clearControlHtml(){this.isDestroyed()||(this.debugLog("JbPro","clearControlHtml()"),this.player?this.player.clearControlHtml():this.debugWarn("JbPro","clearControlHtml() player is not init"))}toggleControlHtml(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleControlHtml() ${e}`),this.player?this.player.toggleControlHtml(e):this.debugWarn("JbPro","toggleControlHtml() player is not init"))}getControlHtmlIsShow(){return!!this.player&&this.player.getControlHtmlIsShow()}getControlHtml(){return this.player?this.player.getControlHtml():null}setExtendHtml(e){this.isDestroyed()||(this.debugLog("JbPro","setExtendHtml()",e),this.player?this.player.setExtendHtml(e):this.debugWarn("JbPro","setExtendHtml() player is not init"))}clearExtendHtml(){this.isDestroyed()||(this.debugLog("JbPro","clearExtendHtml()"),this.player?this.player.clearExtendHtml():this.debugWarn("JbPro","clearExtendHtml() player is not init"))}toggleExtendHtml(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleExtendHtml() ${e}`),this.player?this.player.toggleExtendHtml(e):this.debugWarn("JbPro","toggleExtendHtml() player is not init"))}getExtendHtmlIsShow(){return!!this.player&&this.player.getExtendHtmlIsShow()}getExtendHtml(){return this.player?this.player.getExtendHtml():null}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){if(this.isDestroyed())return;this.debugLog("JbPro","setSm4CryptoKey()",e);const t=(e=""+e).split(".");if(32!==e.length&&2!==t.length)return void this.debugWarn("JbPro",`setSm4CryptoKey() key is invalid and length is ${e.length} !== 32`);if(2===t.length&&(32!==t[0].length||32!==t[1].length))return void this.debugWarn("JbPro",`setSm4CryptoKey() key is invalid and key length is ${t[0].length} !== 32 or iv length ${t[1].length} !== 32`);this._opt.sm4CryptoKey=e;let i=2===t.length;if(i&&(this._opt.playOptions.cryptoKey=fl(t[0]),this._opt.playOptions.cryptoIV=fl(t[1])),this.player){const t={sm4CryptoKey:e};i&&(t.cryptoKey=this._opt.playOptions.cryptoKey,t.cryptoIV=this._opt.playOptions.cryptoIV),this.player.updateOption(t,!0)}else this.debugWarn("JbPro","setSm4CryptoKey() player is null")}setM7sCryptoKey(e){this.isDestroyed()||(this.debugLog("JbPro","setM7sCryptoKey()",e),e=""+e,this._opt.m7sCryptoKey=e,this.player?this.player.updateOption({m7sCryptoKey:e},!0):this.debugWarn("JbPro","setM7sCryptoKey() player is null"))}setXorCryptoKey(e){this.isDestroyed()||(this.debugLog("JbPro","setXorCryptoKey()",e),e=""+e,this._opt.xorCryptoKey=e,this.player?this.player.updateOption({xorCryptoKey:e},!0):this.debugWarn("JbPro","setXorCryptoKey() player is null"))}updateLoadingText(e){this.isDestroyed()||(this.debugLog("JbPro","updateLoadingText()",e),this.player?this.player.updateLoadingText(e):this.debugWarn("JbPro","updateLoadingText() player is null"))}updateIsEmitSEI(e){this.isDestroyed()||(this.debugLog("JbPro","updateIsEmitSEI()",e),this._opt.isEmitSEI=e,this.player?this.player.updateOption({isEmitSEI:e},!0):this.debugWarn("JbPro","updateIsEmitSEI() player is null"))}getPTZCmd(e,t){return this.debugLog("JbPro","getPTZCmd()",e),e?this.player?o_({type:e,index:0,speed:t}):(this.debugWarn("JbPro","getPTZCmd() player is null"),null):(this.debugWarn("JbPro","getPTZCmd() ptz is null"),null)}downloadTempNakedFlowFile(){return new Promise(((e,t)=>{this.player?(this.player.downloadNakedFlowFile(),e()):t("player is not init")}))}downloadTempFmp4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadFmp4File(),e()):t("player is not init")}))}downloadTempMpeg4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadMpeg4File(),e()):t("player is not init")}))}downloadMemoryLog(){this.isDestroyed()||this.memoryLogger&&this.memoryLogger.download()}_getVideoLastIframeInfo(){const e=this.getVideoInfo()||{},t={loadingBackground:this.screenshot("","png",.92,"base64"),loadingBackgroundWidth:e.width||0,loadingBackgroundHeight:e.height||0};return t.loadingBackground&&t.loadingBackgroundWidth&&t.loadingBackgroundHeight&&(this._tempVideoLastIframeInfo=t),this._tempVideoLastIframeInfo||{}}getExtendBtnList(){this.debugLog("JbPro","getExtendBtnList()");let e=[];return this.player?e=this.player.getExtendBtnList():this.debugWarn("JbPro","getExtendBtnList() player is null"),e}getFlvMetaData(){this.debugLog("JbPro","getFlvMetaData()");let e=null;return this.player?e=this.player.getMetaData():this.debugWarn("JbPro","getFlvMetaData() player is null"),e}updateAiFaceDetectInterval(e){if(this.isDestroyed())return;this.debugLog("JbPro","updateAiFaceDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiFaceDetectInterval=t,this.player?this.player.updateOption({aiFaceDetectInterval:t}):this.debugWarn("JbPro","updateAiFaceDetectInterval() player is null")}updateAiFaceDetectLevel(e){if(this.isDestroyed())return;if(this.debugLog("JbPro","updateAiFaceDetectLevel()",e),!Zs[e])return void this.debugWarn("JbPro",`'updateAiFaceDetectLevel() level ${e} is invalid'`);const t=Zs[e];this._opt.aiFaceDetectWidth=t,this.player?(this.player.updateOption({aiFaceDetectWidth:t}),this.player.ai&&this.player.ai.updateFaceDetectorConfig({detectWidth:t})):this.debugWarn("JbPro","updateAiFaceDetectLevel() player is null")}updateAiObjectDetectInterval(e){if(this.isDestroyed())return;this.debugLog("JbPro","updateAiObjectDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiObjectDetectInterval=t,this.player?this.player.updateOption({aiObjectDetectInterval:t}):this.debugWarn("JbPro","updateAiObjectDetectInterval() player is null")}updateAiObjectDetectLevel(e){if(this.isDestroyed())return;if(this.debugLog("JbPro","updateAiObjectDetectLevel()",e),!er[e])return void this.debugWarn("JbPro",`'updateAiObjectDetectLevel() level ${e} is invalid'`);const t=er[e];this._opt.aiObjectDetectWidth=t,this.player?(this.player.updateOption({aiObjectDetectWidth:t}),this.player.ai&&this.player.ai.updateObjectDetectorConfig({detectWidth:t})):this.debugWarn("JbPro","updateAiObjectDetectLevel() player is null")}setCryptoKeyUrl(e){this.isDestroyed()||(this.debugLog("JbPro","setCryptoKeyUrl()",e),e&&(this._opt.cryptoKeyUrl=e))}showErrorMessageTips(e){this.isDestroyed()||(this.debugLog("JbPro","showErrorMessageTips()",e),e&&(this.player?this.player.showTipsMessageByContent(e):this.debugWarn("JbPro","showErrorMessageTips() player is null")))}setPtzPosition(e){this.debugLog("JbPro","setPtzPosition()",e),e&&!Xo(e)&&(this.player?this.player.setPtzPosition(e):this.debugWarn("JbPro","setPtzPosition() player is null"))}hideErrorMessageTips(){this.isDestroyed()||(this.debugLog("JbPro","hideErrorMessageTips()"),this.player?this.player.hideTipsMessage():this.debugWarn("JbPro","hideErrorMessageTips() player is null"))}getContainerRect(){return this._getContainerRect()}proxy(e,t,i,s){return this.events.proxy(e,t,i,s)}getUrl(){return this._opt.url}toggleControlExtendBtn(e,t){this.isDestroyed()||(this.debugLog(this.TAG_NAME,`toggleControlExtendBtn() ${e} ${t}`),this.player?this.player.toggleControlExtendBtn(e,t):this.debugWarn(this.TAG_NAME,"toggleControlExtendBtn() player is null"))}getControlExtendBtnActive(e){if(this.isDestroyed())return;this.debugLog(this.TAG_NAME,`getControlExtendBtnActive() ${e}`);let t=!1;return this.player?t=this.player.getControlExtendBtnActive(e):this.debugWarn(this.TAG_NAME,"getControlExtendBtnActive() player is null"),t}toggleControlBar(e){this.isDestroyed()||(this.debugLog(this.TAG_NAME,`toggleControlBar() ${e}`),this.player?this.player.toggleControlBar(e):this.debugWarn(this.TAG_NAME,"toggleControlBar() player is null"))}getControlBarShow(){if(this.isDestroyed())return!1;this.debugLog(this.TAG_NAME,"getControlBarShow()");let e=!1;return this.player?e=this.player.getControlBarShow():this.debugWarn(this.TAG_NAME,"getControlBarShow() player is null"),e}static getCopyrightWatermarkHash(e){return Vo(e)}static extractScreenshotCopyrightWatermark(e){return function(e){for(var t=e,i=0,s=0,r=0;r<32;r++)s|=(1&t[i])<=5){const s=i[0],r=i[i.length-1],o=r-s;o<=1e4&&(this.debugWarn(this.TAG_NAME,`retry type is ${e}, and retry length is ${i.length}, and start is ${s} and end is ${r} and diff is ${o}`),t=!1)}return t}_initLoadingBackgroundForIOS(e){(wo()||To())&&e.loadingBackground&&e.loadingBackgroundWidth&&e.loadingBackgroundHeight&&(this._initLoadingBg(),"default"===this.player._opt.aspectRatio||bo()?this.player.getRenderType()===$?this._doInitLoadingBackgroundForCanvas(e):this.player.getRenderType()===H&&this._doInitLoadingBackgroundForVideo(e):this._doInitLoadingBackgroundForRatio(e))}_doInitLoadingBackgroundForVideo(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForVideo");const t=this._getContainerRect();let i=t.width,s=t.height;const r=this.player._opt;s-=this.player.getControlHeight();let o=i,a=s;const n=r.rotate;270!==n&&90!==n||(o=s,a=i),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,this.$loadingBgImage.src=e.loadingBackground;let l=(i-o)/2,d=(s-a)/2,h="contain";r.isResize||(h="fill"),r.isFullResize&&(h="none");let c="";"none"===r.mirrorRotate&&n&&(c+=" rotate("+n+"deg)"),"level"===r.mirrorRotate?c+=" rotateY(180deg)":"vertical"===r.mirrorRotate&&(c+=" rotateX(180deg)"),this._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=h),this.$loadingBgImage.style.transform=c,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px",this.$loadingBgImage.complete?uc(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{uc(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_doInitLoadingBackgroundForCanvas(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForCanvas");const t=this._getContainerRect();let i=t.width,s=t.height;const r=this.player._opt;s-=this.player.getControlHeight();let o=i,a=s;const n=r.rotate;let l=(i-o)/2,d=(s-a)/2;270!==n&&90!==n||(o=s,a=i),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,this.$loadingBgImage.src=e.loadingBackground;const h=i/o,c=s/a;let u=h>c?c:h;Ea(r.isResize)&&h!==c&&(u=h+","+c),r.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===r.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===r.mirrorRotate?p+=" rotateY(180deg)":"vertical"===r.mirrorRotate&&(p+=" rotateX(180deg)"),this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.transform=p,this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px",this.$loadingBgImage.complete?uc(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{uc(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_doInitLoadingBackgroundForRatio(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForRatio");const t=this.player._opt.aspectRatio.split(":").map(Number),i=this._getContainerRect();let s=i.width,r=i.height,o=this.player.getControlHeight();r-=o;const a=e.loadingBackgroundWidth,n=e.loadingBackgroundHeight,l=a/n,d=t[0]/t[1];if(this.$loadingBgImage.src=e.loadingBackground,l>d){const e=d*n/a;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${o}px)`,this.$loadingBgImage.style.padding=`0 ${(s-s*e)/2}px`}else{const e=a/d/n;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${o}px)`,this.$loadingBgImage.style.padding=(r-r*e)/2+"px 0"}this.$loadingBgImage.complete?uc(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{uc(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_initLoadingBg(){if(!this.$loadingBg){const e=document.createElement("div"),t=document.createElement("img");e.className="jb-pro-loading-bg-for-ios",this.$loadingBg=e,this.$loadingBgImage=t,e.appendChild(t),this.$container.appendChild(e)}}_removeLoadingBackgroundForIOS(){if(this.$loadingBg){this.debugLog(this.TAG_NAME,"_removeLoadingBackgroundForIOS()");if(!Ac(this.$loadingBg)){const e=this.$container.querySelector(".jb-pro-loading-bg-for-ios");e&&this.$container&&this.$container.removeChild(e)}this.$loadingBg=null,this.$loadingBgImage=null}}_getContainerRect(){let e={};return this.$container&&(e=this.$container.getBoundingClientRect(),e.width=Math.max(e.width,this.$container.clientWidth),e.height=Math.max(e.height,this.$container.clientHeight)),e}_isNeedNetworkDisconnectReplay(){return this._opt.networkDisconnectReplay&&this.network.isOffline()}_handleWebglAlignmentError(e){if(this.isDestroyed())this.debugLog("JbPro","webglAlignmentError but player is destroyed");else if(this.webglAlignmentErrorOnLock)this.debugLog("JbPro","webglAlignmentErrorOnLock is true");else if(this.emit(mt.crashLog,this.getCrashLog(At.webglAlignmentError,e)),this.webglAlignmentErrorOnLock=!0,this.player&&this.player._opt.webglAlignmentErrorReplay){this.debugLog("JbPro","webglAlignmentError");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({openWebglAlignment:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webglAlignmentError and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.webglAlignmentError,{},e),this.debugError("JbPro","webglAlignmentError and play error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))})).catch((e=>{this.webglAlignmentErrorOnLock=!1,this.debugError("JbPro","webglAlignmentError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.webglAlignmentError,{},e),this.debugLog("JbPro","webglAlignmentError and webglAlignmentErrorReplay is false")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.webglAlignmentError,{},e),this.debugError("JbPro","webglAlignmentError and pause error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))}}_handleWebglContextLostError(e){if(this.isDestroyed())return void this.debugLog("JbPro","webglContextLostError but player is destroyed");if(this.webglContextLostErrorOnLock)return void this.debugLog("JbPro","webglContextLostErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.webglContextLostError,e));const t=this._getVideoLastIframeInfo();if(this.webglContextLostErrorOnLock=!0,this.player&&this.player._opt.webglContextLostErrorReplay){this.debugLog("JbPro","webglContextLostError");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","webglContextLostError and play success")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.webglContextLostError,t,e),this.debugError("JbPro","webglContextLostError and play error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))})).catch((i=>{this.webglContextLostErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.webglContextLostError,t,e),this.debugError("JbPro","webglContextLostError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.webglContextLostError,t,e),this.debugLog("JbPro","webglContextLostError and webglContextLostErrorReplay is false")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.webglContextLostError,t,e),this.debugError("JbPro","webglAlignmentError and pause error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))}}_handleMediaSourceH265NotSupport(e){if(this.isDestroyed())this.debugLog("JbPro","mediaSourceH265NotSupport but player is destroyed");else if(this.mediaSourceH265NotSupportOnLock)this.debugLog("JbPro","mediaSourceH265NotSupportOnLock is true");else if(this.emit(mt.crashLog,this.getCrashLog(At.mediaSourceH265NotSupport,e)),this.mediaSourceH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.mediaSourceH265NotSupport,e),this.debugError("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))})).catch((t=>{this.mediaSourceH265NotSupportOnLock=!1,this.emit(mt.playFailedAndPaused,At.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.mediaSourceH265NotSupport,{},e),this.debugLog("JbPro","mediaSourceH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))}}_handleMseWaitVideoCanplayTimeout(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mseWaitVideoCanplayTimeout but player is destroyed");else if(this.mseWaitVideoCanplayTimeoutOnLock)this.debugLog("JbPro","mseWaitVideoCanplayTimeoutOnLock is true");else if(this.emit(mt.crashLog,this.getCrashLog(At.mseWaitVideoCanplayTimeout,e)),this.mseWaitVideoCanplayTimeoutOnLock=!0,this.player&&this.player._opt.mseWaitVideoCanplayAutoWasm){this.debugLog("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.mseWaitVideoCanplayTimeout,e),this.debugError("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))})).catch((t=>{this.mseWaitVideoCanplayTimeoutOnLock=!1,this.emit(mt.playFailedAndPaused,At.mseWaitVideoCanplayTimeout,{},e),this.debugError("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.mseWaitVideoCanplayTimeout,{},e),this.debugLog("JbPro","mseWaitVideoCanplayTimeout and autoWasm is false")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))}}_handleMediaSourceFull(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceFull but player is destroyed"));if(this.mediaSourceFullOnLock)return void this.debugLog("JbPro","mediaSourceFullOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.mediaSourceFull,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceFullOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(wr)?this._mseDecodeErrorRetryLog.push(co()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mediaSourceFull and auto wasm ${Ea(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceFull and reset player and play success")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and reset player and play error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))})).catch((i=>{this.mediaSourceFullOnLock=!1,this.emit(mt.playFailedAndPaused,At.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.mediaSourceFull,t,e),this.debugLog("JbPro","mediaSourceFull and autoWasm is false")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and pause error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))}}_handleMediaSourceAppendBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAppendBufferError but player is destroyed"));if(this.mediaSourceAppendBufferErrorOnLock)return void this.debugLog("JbPro","mediaSourceAppendBufferErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.mediaSourceAppendBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceAppendBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(wr)?this._mseDecodeErrorRetryLog.push(co()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEAudioDecoderError&&(this.player.debugLog("JbPro","mediaSourceAppendBufferError and isMSEAudioDecoderError is true so set mseDecodeAudio = false"),r.mseDecodeAudio=!1),this.debugLog("JbPro",`mediaSourceAppendBufferError and auto wasm ${Ea(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceAppendBufferError and reset player and play success")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and reset player and play error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))})).catch((i=>{this.mediaSourceAppendBufferErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAppendBufferError,t,e),this.debugLog("JbPro","mediaSourceAppendBufferError and autoWasm is false")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and pause error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))}}_handleMseSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseSourceBufferError but player is destroyed"));if(this.mseSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseSourceBufferErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.mseSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseSourceBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={};if(this.player._opt.mseDecoderUseWorker)r={mseDecoderUseWorker:!1},this.debugLog("JbPro","mseSourceBufferError auto wasm [mse worker -> mse] reset player and play");else{let e=this.player._opt.decoderErrorAutoWasm,t=!0;e?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(wr)?this._mseDecodeErrorRetryLog.push(co()):(e=!0,t=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc&&(this.debugLog("JbPro","mseSourceBufferError and isMSEVideoDecoderInitializationFailedNotSupportHevc is true so auto wasm"),r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mseSourceBufferError auto wasm ${Ea(t)?" and is not meaningful Retry":""} [mse-> ${e?"wasm":"mse"}] reset player and play`)}this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mseSourceBufferError reset player and play success")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError reset player and play error",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseSourceBufferErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.mseSourceBufferError,t,e),this.debugLog("JbPro","mseSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError and pause error:",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))}}_handleMediaSourceBufferedIsZeroError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceBufferedIsZeroError but player is destroyed"));if(this.mediaSourceBufferedIsZeroErrorOnLock)return void this.debugLog("JbPro","mediaSourceBufferedIsZeroErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.mediaSourceBufferedIsZeroError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceBufferedIsZeroErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(wr)?this._mseDecodeErrorRetryLog.push(co()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mediaSourceBufferedIsZeroError auto wasm ${Ea(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceBufferedIsZeroError reset player and play success")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError reset player and play error",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))})).catch((i=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.mediaSourceBufferedIsZeroError,t,e),this.debugLog("JbPro","mediaSourceBufferedIsZeroError and autoWasm is false")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError and pause error:",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))}}_handleMseAddSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseAddSourceBufferError but player is destroyed"));if(this.mseAddSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseAddSourceBufferErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.mseAddSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useWCS:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play success")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseAddSourceBufferErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.mseAddSourceBufferError,t,e),this.debugLog("JbPro","mseAddSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError and pause error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceDecoderConfigurationError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mediaSourceDecoderConfigurationError but player is destroyed");else if(this.mediaSourceDecoderConfigurationErrorOnLock)this.debugLog("JbPro","mediaSourceDecoderConfigurationErrorOnLock is true");else if(this.emit(mt.crashLog,this.getCrashLog(At.mediaSourceDecoderConfigurationError,e)),this.mediaSourceDecoderConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;let s={useMSE:!1,useWCS:!1};this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))})).catch((t=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.mediaSourceDecoderConfigurationError,e),this.debugLog("JbPro","mediaSourceDecoderConfigurationError and autoWasm is false")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError and pause error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))}}_handleMediaSourceTsIsMaxDiff(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceTsIsMaxDiff but player is destroyed"));if(this.mediaSourceTsIsMaxDiffOnLock)return void this.debugLog("JbPro","mediaSourceTsIsMaxDiffOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.mediaSourceTsIsMaxDiff,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceTsIsMaxDiffOnLock=!0,this.player&&this.player._opt.mediaSourceTsIsMaxDiffReplay){this.debugLog("JbPro","mediaSourceTsIsMaxDiff reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceTsIsMaxDiff replay success")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff replay error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))})).catch((i=>{this.mediaSourceTsIsMaxDiffOnLock=!1,this.emit(mt.playFailedAndPaused,At.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.mediaSourceTsIsMaxDiff,t,e),this.debugLog("JbPro","mediaSourceTsIsMaxDiff and replay is false")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff and pause error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))}}_handleMseWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseWidthOrHeightChange but player is destroyed"));if(this.mseWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","mseWidthOrHeightChangeOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.mseWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.mseWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.player._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","mseWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}),1e3*this.player._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.mseWidthOrHeightChangeOnLock=!1,this.emit(mt.playFailedAndPaused,At.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(mt.playFailedAndPaused,At.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(mt.playFailedAndPaused,At.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange error and pause error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}}_handleMediaSourceAudioG711NotSupport(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioG711NotSupport but player is destroyed"));if(this.mediaSourceAudioG711NotSupportOnLock)return void this.debugLog("JbPro","mediaSourceAudioG711NotSupportOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioG711NotSupportOnLock=!0,this.player&&this.player._opt.mediaSourceAudioG711NotSupportReplay){this.debugLog("JbPro","mediaSourceAudioG711NotSupport and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioG711NotSupport and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))})).catch((e=>{this.mediaSourceAudioG711NotSupportOnLock=!1,this.emit(mt.playFailedAndPaused,At.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)})).catch((e=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport error and pause error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))}}_handleMediaSourceAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioInitTimeout but player is destroyed"));if(this.mediaSourceAudioInitTimeoutOnLock)return void this.debugLog("JbPro","mediaSourceAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioInitTimeoutReplay){this.debugLog("JbPro","mediaSourceAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAudioInitTimeout,i,t),this.debugError("JbPro","mediaSourceAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioInitTimeoutOnLock=!1,this.emit(mt.playFailedAndPaused,At.mediaSourceAudioInitTimeout,i,t),this.debugError("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAudioInitTimeout,i),this.debugError("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAudioInitTimeout,i),this.debugError("JbPro","mediaSourceAudioInitTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))}}_handleMediaSourceAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioNoDataTimeout but player is destroyed"));if(this.mediaSourceAudioNoDataTimeoutOnLock)return void this.debugLog("JbPro","mediaSourceAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioNoDataTimeoutReplay){this.debugLog("JbPro","mediaSourceAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAudioNoDataTimeout,i,t),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.emit(mt.playFailedAndPaused,At.mediaSourceAudioNoDataTimeout,i,t),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAudioNoDataTimeout,i),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(mt.playFailedAndPaused,At.mediaSourceAudioNoDataTimeout,i),this.debugError("JbPro","mediaSourceAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))}}_handleMseWorkerAddSourceBufferError(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseWorkerAddSourceBufferError but player is destroyed"));if(this.mseWorkerAddSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseWorkerAddSourceBufferErrorOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mseWorkerAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mseWorkerAddSourceBufferError and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecoderUseWorker:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mseWorkerAddSourceBufferError and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.mseWorkerAddSourceBufferError,i,t),this.debugError("JbPro","mseWorkerAddSourceBufferError and reset player and play error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))})).catch((e=>{this.mseWorkerAddSourceBufferErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.mseWorkerAddSourceBufferError,i,t),this.debugError("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.mseWorkerAddSourceBufferError,i),this.debugError("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)})).catch((e=>{this.emit(mt.playFailedAndPaused,At.mseWorkerAddSourceBufferError,i),this.debugError("JbPro","mseWorkerAddSourceBufferError error and pause error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceUseCanvasRenderPlayFailed(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed but player is destroyed");else if(this.mediaSourceUseCanvasRenderPlayFailedOnLock)this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailedOnLock is true");else if(this.emit(mt.crashLog,this.getCrashLog(At.mediaSourceUseCanvasRenderPlayFailed,e)),this.mediaSourceUseCanvasRenderPlayFailedOnLock=!0,this.player&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplay&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType){this.debugLog("JbPro",`mediaSourceUseCanvasRenderPlayFailed relayType is ${this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType} and reset player and play`);const t=this._opt.url,i=this._opt.playOptions;let s={};const r=this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType;r===$?s={useMSE:!1,useWCS:!1}:r===H&&(s={useVideoRender:!0,useCanvasRender:!1}),this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play error",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))})).catch((t=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.emit(mt.playFailedAndPaused,At.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed auto and _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause player success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))}}_handleWebcodecsH265NotSupport(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsH265NotSupport but player is destroyed");else if(this.webcodecsH265NotSupportOnLock)this.debugLog("JbPro","webcodecsH265NotSupportOnLock is true");else if(this.emit(mt.crashLog,this.getCrashLog(At.webcodecsH265NotSupport,e)),this.webcodecsH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.webcodecsH265NotSupport,e),this.debugError("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))})).catch((e=>{this.webcodecsH265NotSupportOnLock=!1,this.debugError("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.webcodecsH265NotSupport,e),this.debugLog("JbPro","webcodecsH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.webcodecsH265NotSupport,e),this.debugError("JbPro","webcodecsH265NotSupport and pause error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))}}_handleWebcodecsUnsupportedConfigurationError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsUnsupportedConfigurationError but player is destroyed");else if(this.webcodecsUnsupportedConfigurationErrorOnLock)this.debugLog("JbPro","webcodecsUnsupportedConfigurationErrorOnLock is true");else if(this.emit(mt.crashLog,this.getCrashLog(At.webcodecsUnsupportedConfigurationError,e)),this.webcodecsUnsupportedConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))})).catch((t=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.webcodecsUnsupportedConfigurationError,e),this.debugLog("JbPro","webcodecsUnsupportedConfigurationError and autoWasm is false")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError and pause error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))}}_handleWebcodecsDecodeConfigureError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsDecodeConfigureError but player is destroyed");else if(this.webcodecsDecodeConfigureErrorOnLock)this.debugLog("JbPro","webcodecsDecodeConfigureErrorOnLock is true");else if(this.emit(mt.crashLog,this.getCrashLog(At.webcodecsDecodeConfigureError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))})).catch((t=>{this.webcodecsDecodeConfigureErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.webcodecsDecodeConfigureError,e),this.debugLog("JbPro","webcodecsDecodeConfigureError and autoWasm is false")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError and pause error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))}}_handleWebcodecsDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsDecodeError but player is destroyed"));if(this.webcodecsDecodeErrorOnLock)return void this.debugLog("JbPro","webcodecsDecodeErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.webcodecsDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.webcodecsDecodeErrorOnLock=!0,this.player&&this.player._opt.wcsDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Tr)?this._wcsDecodeErrorRetryLog.push(co()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`webcodecs decode error autoWasm ${Ea(a)?" and is not meaningful Retry":""} [wcs-> ${o?"wasm":"wcs"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","webcodecs decode error reset player and play success")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error reset player and play error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))})).catch((()=>{this.webcodecsDecodeErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.webcodecsDecodeError,t,e),this.debugLog("JbPro","webcodecs decode error and autoWasm is false")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error and pause error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))}}_handleWcsWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wcsWidthOrHeightChange but player is destroyed"));if(this.wcsWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","wcsWidthOrHeightChangeOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.wcsWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wcsWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","wcsWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wcsWidthOrHeightChangeOnLock=!1,this.emit(mt.playFailedAndPaused,At.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(mt.playFailedAndPaused,At.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(mt.playFailedAndPaused,At.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}}_handleWebcodecsAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsAudioNoDataTimeout but player is destroyed"));if(this.webcodecsAudioNoDataTimeoutOnLock)return void this.debugLog("JbPro","webcodecsAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioNoDataTimeoutReplay){this.debugLog("JbPro","webcodecsAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","webcodecsAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.webcodecsAudioNoDataTimeout,i,t),this.debugError("JbPro","webcodecsAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioNoDataTimeoutOnLock=!1,this.emit(mt.playFailedAndPaused,At.webcodecsAudioNoDataTimeout,i,t),this.debugError("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.webcodecsAudioNoDataTimeout,i),this.debugError("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(mt.playFailedAndPaused,At.webcodecsAudioNoDataTimeout,i),this.debugError("JbPro","webcodecsAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))}}_handleWebcodecsAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsAudioInitTimeout but player is destroyed"));if(this.webcodecsAudioInitTimeoutOnLock)return void this.debugLog("JbPro","webcodecsAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioInitTimeoutReplay){this.debugLog("JbPro","webcodecsAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","webcodecsAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.webcodecsAudioInitTimeout,i,t),this.debugError("JbPro","webcodecsAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioInitTimeoutOnLock=!1,this.emit(mt.playFailedAndPaused,At.webcodecsAudioInitTimeout,i,t),this.debugError("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.webcodecsAudioInitTimeout,i),this.debugError("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(mt.playFailedAndPaused,At.webcodecsAudioInitTimeout,i),this.debugError("JbPro","webcodecsAudioInitTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))}}_handleSimdDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","simdDecodeError but player is destroyed"));if(this.simdDecodeErrorOnLock)return void this.debugLog("JbPro","simdDecodeErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.simdDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.simdDecodeErrorOnLock=!0,this.player&&this.player._opt.simdDecodeErrorReplay){this.debugLog("JbPro",`simdDecodeError error simdDecodeErrorReplayType is ${this.player._opt.simdDecodeErrorReplayType} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.simdDecodeErrorReplayType===N&&(r={useSIMD:!1}),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","simdDecodeError and reset player and play success")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and reset player and play error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))})).catch((i=>{this.simdDecodeErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and simdDecodeErrorReplay is false")})).catch((i=>{this.emit(mt.playFailedAndPaused,At.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError error and pause error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))}}_handleWasmWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wasmWidthOrHeightChange but player is destroyed"));if(this.wasmWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","wasmWidthOrHeightChangeOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.wasmWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wasmWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","wasmWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(mt.playFailedAndPaused,At.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wasmWidthOrHeightChangeOnLock=!1,this.emit(mt.playFailedAndPaused,At.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(mt.playFailedAndPaused,At.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(mt.playFailedAndPaused,At.wasmWidthOrHeightChange,i),this.debugError("JbPro","wasmWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}}_handleWasmUseVideoRenderError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wasmUseVideoRenderError but player is destroyed"));if(this.wasmUseVideoRenderErrorOnLock)return void this.debugLog("JbPro","wasmUseVideoRenderErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.wasmUseVideoRenderError,e)),this.debugLog("JbPro","wasmUseVideoRenderError and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.wasmUseVideoRenderErrorOnLock=!0,this._resetPlayer({useVideoRender:!1,useCanvasRender:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","wasmUseVideoRenderError and reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.wasmUseVideoRenderError,{},e),this.debugError("JbPro","wasmUseVideoRenderError and reset player and play error",t)})).finally((()=>{this.wasmUseVideoRenderErrorOnLock=!1}))})).catch((t=>{this.wasmUseVideoRenderErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.wasmUseVideoRenderError,{},e),this.debugError("JbPro","wasmUseVideoRenderError and _resetPlayer error",t)}))}_handleVideoElementPlayingFailed(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoElementPlayingFailed but player is destroyed"));if(this.videoElementPlayingFailedOnLock)return void this.debugLog("JbPro","videoElementPlayingFailedOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.videoElementPlayingFailed,e));const t=this._getVideoLastIframeInfo();if(this.videoElementPlayingFailedOnLock=!0,this.player&&this.player._opt.videoElementPlayingFailedReplay){this.debugLog("JbPro",`videoElementPlayingFailed and useMSE is ${this._opt.useMSE} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useVideoRender:!1,useCanvasRender:!0};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","videoElementPlayingFailed and reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and reset player and play error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))})).catch((t=>{this.videoElementPlayingFailedOnLock=!1,this.emit(mt.playFailedAndPaused,At.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and videoElementPlayingFailedReplay is false")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and _pause error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))}}_handleSimdH264DecodeVideoWidthIsTooLarge(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge but player is destroyed");else if(this.simdH264DecodeVideoWidthIsTooLargeOnLock)this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLargeOnLock is true");else if(this.emit(mt.crashLog,this.getCrashLog(At.simdH264DecodeVideoWidthIsTooLarge,e)),this.simdH264DecodeVideoWidthIsTooLargeOnLock=!0,this.player&&this.player._opt.simdH264DecodeVideoWidthIsTooLargeReplay){this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useSIMD:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))})).catch((t=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.emit(mt.playFailedAndPaused,At.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and simdDecodeErrorReplay is false")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and pause error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))}}_handleNetworkDelayTimeout(e){if(this.player._opt.networkDelayTimeoutReplay){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","networkDelayTimeout but player is destroyed"));if(this.networkDelayTimeoutOnLock)return void this.debugLog("JbPro","networkDelayTimeoutOnLock is true");this.emit(mt.crashLog,this.getCrashLog(mt.networkDelayTimeout,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","network delay time out and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this.networkDelayTimeoutOnLock=!0,this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(mt.playFailedAndPaused,mt.networkDelayTimeout,t,e),this.debugError("JbPro","wasm decode error and reset player and play error",i)})).finally((()=>{this.networkDelayTimeoutOnLock=!1}))})).catch((()=>{this.networkDelayTimeoutOnLock=!1,this.emit(mt.playFailedAndPaused,mt.networkDelayTimeout,t,e),this.debugError("JbPro","wasm decode error and _resetPlayer error")}))}}_handleFlvDemuxBufferSizeTooLarge(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","flvDemuxBufferSizeTooLarge but player is destroyed"));if(this.flvDemuxBufferSizeTooLargeOnLock)return void this.debugLog("JbPro","flvDemuxBufferSizeTooLargeOnLock is true");const t=this._getVideoLastIframeInfo();if(this.flvDemuxBufferSizeTooLargeOnLock=!0,this.player._opt.flvDemuxBufferSizeTooLargeReplay){this.emit(mt.crashLog,this.getCrashLog(mt.flvDemuxBufferSizeTooLarge,e)),this.debugLog("JbPro","flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeReplay = true and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play success")})).catch((i=>{this.emit(mt.playFailedAndPaused,mt.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play error",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))})).catch((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1,this.emit(mt.playFailedAndPaused,mt.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large and _resetPlayer error")}))}else if(this._opt.flvDemuxBufferSizeTooLargeEmitFailed){this.debugLog(this.TAG_NAME,"flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeEmitFailed = true and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.flvDemuxBufferSizeTooLarge,t,e)})).catch((i=>{this.emit(mt.playFailedAndPaused,At.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))}}_handleFetchError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","fetchError but player is destroyed"));if(this.fetchErrorOnLock)return void this.debugLog("JbPro","fetchErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.fetchError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.fetchErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debugLog("JbPro","fetch error and network is disconnect and reset player and play"):this.debugLog("JbPro",`fetch error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes}, streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())this.debug&&this.debugLog("JbPro","fetch error and _resetPlayer but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","fetch error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:At.fetchError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debugLog("JbPro","fetch error and reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.fetchError,{},e),this.debugError("JbPro","fetch error and reset player and play error",t)})).finally((()=>{this.fetchErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.fetchErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.fetchError,{},e),this.debugError("JbPro","fetch error and _resetPlayer error",t)}))}else{this.debugLog("JbPro","fetch error and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.fetchError,t,e)})).catch((i=>{this.emit(mt.playFailedAndPaused,At.fetchError,t,e),this.debugError("JbPro","fetch error and pause",i)})).finally((()=>{this.fetchErrorOnLock=!1}))}}_handleStreamEnd(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","streamEnd but player is destroyed and return"));if(this.streamEndOnLock)return void this.debugLog("JbPro","streamEndOnLock is true");this.emit(mt.crashLog,this.getCrashLog(mt.streamEnd,e));const t=this._getVideoLastIframeInfo(),i=""+e=="1006"&&this.player._opt.websocket1006ErrorReplay,s=!!i&&this._checkIsMeaningfulRetry(Er),r=i&&s,o=this.player._opt.streamEndReplay,a=this._isNeedNetworkDisconnectReplay();if(this.streamEndOnLock=!0,r||o||a){a?this.debugLog("JbPro","streamEnd and network is disconnect and reset player and play"):r?this.debugLog("JbPro",`streamEnd and websocket1006ErrorReplay is true and error is 1006 and _websocket1006ErrorReplayTimes is ${this._websocket1006ErrorReplayTimes} , delay ${this._opt.websocket1006ErrorReplayDelayTime}s reset player and play`):this.debugLog("JbPro",`streamEnd and isStreamEndReplay is true and and _streamEndReplayTimes is ${this._streamEndReplayTimes} , delay ${this._opt.streamEndReplayDelayTime}s reset player and play`);const s=this._opt.playOptions,o=this._opt.url;i&&this._websocket1006ErrorRetryLog.push(co());let n={};this.player._opt.replayUseLastFrameShow&&(n=Object.assign({},n,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(n.isNotMute=!0);let l=r?this._opt.websocket1006ErrorReplayDelayTime:this._opt.streamEndReplayDelayTime;a&&(l=1),this._resetPlayer(n).then((()=>{this.streamEndReplayDelayTimeout=setTimeout((()=>{if(this.streamEndReplayDelayTimeout=null,this._removeLoadingBackgroundForIOS(),this.isDestroyed())a?this.debug&&this.debugLog("JbPro","streamEnd and network is disconnect and _resetPlayer() but player is destroyed and return"):r?this.debug&&this.debugLog("JbPro","streamEnd and 1006 error and _resetPlayer() but player is destroyed and return"):this.debug&&this.debugLog("JbPro","streamEnd and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return r?this.debugLog("JbPro","streamEnd and 1006 error network is offline and wait network online to play , so return"):this.debugLog("JbPro","streamEnd and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:s,type:r?At.websocket1006Error:At.streamEnd});r?this._websocket1006ErrorReplayTimes++:this._streamEndReplayTimes++,this.play(o,s).then((()=>{r?this.debugLog("JbPro","streamEnd and 1006 error and reset player and play success"):this.debugLog("JbPro","streamEnd and reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.streamEnd,{},e),r?this.debugError("JbPro","streamEnd and 1006 error and reset player and play error",t):this.debugError("JbPro","streamEnd and reset player and play error",t)})).finally((()=>{this.streamEndOnLock=!1}))}}),1e3*l)})).catch((t=>{this.streamEndOnLock=!1,this.emit(mt.playFailedAndPaused,At.streamEnd,{},e),r?this.debugError("JbPro","streamEnd and 1006 and _resetPlayer error",t):this.debugError("JbPro","streamEnd and _resetPlayer error",t)}))}else{i?this.debugLog("JbPro","streamEnd pause player "+(Ea(s)?"and is not meaningful retry":"")):this.debugLog("JbPro","streamEnd pause player");const r=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(r).then((()=>{this.emit(mt.playFailedAndPaused,mt.streamEnd,t,e)})).catch((i=>{this.emit(mt.playFailedAndPaused,mt.streamEnd,t,e),this.debugError("JbPro","streamEnd pause",i)})).finally((()=>{this.streamEndOnLock=!1}))}}_handleWebsocketError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","websocketError but player is destroyed"));if(this.websocketErrorOnLock)return void this.debugLog("JbPro","websocketErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.websocketError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.websocketErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debugLog("JbPro","websocketError error and network is disconnect and reset player and play"):this.debugLog("JbPro",`websocketError error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())i?this.debug&&this.debugLog("JbPro","websocketError error and network is disconnect and _resetPlayer() but player is destroyed and return"):this.debug&&this.debugLog("JbPro","websocketError error and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","websocketError error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:At.websocketError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debugLog("JbPro","websocketError error and reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,At.fetchError,{},e),this.debugError("JbPro","websocketError error and reset player and play error",t)})).finally((()=>{this.websocketErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.websocketErrorOnLock=!1,this.emit(mt.playFailedAndPaused,At.fetchError,{},e),this.debugError("JbPro","websocketError error and _resetPlayer error",t)}))}else{this.debugLog("JbPro","websocketError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.websocketError,t,e)})).catch((i=>{this.emit(mt.playFailedAndPaused,At.websocketError,t,e),this.debugError("JbPro","websocketError and pause",i)})).finally((()=>{this.websocketErrorOnLock=!1}))}}_handleWebrtcError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webrtcError but player is destroyed"));if(this.webrtcErrorOnLock)return void this.debugLog("JbPro","webrtcErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.webrtcError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debugLog("JbPro","webrtcError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:At.webrtcError}})).catch((()=>{this.emit(mt.playFailedAndPaused,At.webrtcError,t,e),this.debugError("JbPro","webrtcError and _resetPlayer error")})).finally((()=>{this.webrtcErrorOnLock=!1}))}else{this.debugLog("JbPro","webrtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.webrtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.webrtcError,t,e)})).catch((i=>{this.emit(mt.playFailedAndPaused,At.webrtcError,t,e),this.debugError("JbPro","webrtcError and pause",i)})).finally((()=>{this.webrtcErrorOnLock=!1}))}}_handleHlsError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","hlsError but player is destroyed"));if(this.hlsErrorOnLock)return void this.debugLog("JbPro","hlsErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.hlsError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debugLog("JbPro","hlsError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Ea(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:At.hlsError}})).catch((()=>{this.emit(mt.playFailedAndPaused,At.hlsError,t,e),this.debugError("JbPro","hlsError and _resetPlayer error")})).finally((()=>{this.hlsErrorOnLock=!1}))}else{this.debugLog("JbPro","hlsError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.hlsErrorOnLock=!0,this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.hlsError,t,e)})).catch((i=>{this.emit(mt.playFailedAndPaused,At.hlsError,t,e),this.debugError("JbPro","hlsError and pause",i)})).finally((()=>{this.hlsErrorOnLock=!1}))}}_handleAliyunRtcError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","aliyunRtcError but player is destroyed"));if(this.aliyunRtcErrorOnLock)return void this.debugLog("JbPro","aliyunRtcErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.aliyunRtcError,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","aliyunRtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.aliyunRtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.aliyunRtcError,t,e)})).catch((i=>{this.emit(mt.playFailedAndPaused,At.aliyunRtcError,t,e),this.debugError("JbPro","aliyunRtcError and pause",i)})).finally((()=>{this.aliyunRtcErrorOnLock=!1}))}_handleDecoderWorkerInitError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","decoderWorkerInitError but player is destroyed"));if(this.decoderWorkerInitErrorOnLock)return void this.debugLog("JbPro","decoderWorkerInitErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.decoderWorkerInitError,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","decoderWorkerInitError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerInitErrorOnLock=!0,this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.decoderWorkerInitError,t,e)})).catch((i=>{this.emit(mt.playFailedAndPaused,At.decoderWorkerInitError,t,e),this.debugError("JbPro","decoderWorkerInitError and pause",i)})).finally((()=>{this.decoderWorkerInitErrorOnLock=!1}))}_handleDecoderWorkerWasmError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","decoderWorkerWasmError but player is destroyed"));if(this.decoderWorkerWasmErrorOnLock)return void this.debugLog("JbPro","decoderWorkerWasmErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.decoderWorkerWasmError,e)),this.debugLog("JbPro","decoderWorkerWasmError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerWasmErrorOnLock=!0,this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.decoderWorkerWasmError,{},e)})).catch((t=>{this.emit(mt.playFailedAndPaused,At.decoderWorkerWasmError,{},e),this.debugError("JbPro","decoderWorkerWasmError and pause",t)})).finally((()=>{this.decoderWorkerWasmErrorOnLock=!1}))}_handleVideoElementPlayingFailedForWebrtc(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoElementPlayingFailedForWebrtc but player is destroyed"));if(this.videoElementPlayingFailedForWebrtcOnLock)return void this.debugLog("JbPro","videoElementPlayingFailedForWebrtcOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.videoElementPlayingFailedForWebrtc,e)),this.debugLog("JbPro","videoElementPlayingFailedForWebrtc and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoElementPlayingFailedForWebrtcOnLock=!0,this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.videoElementPlayingFailedForWebrtc,{},e)})).catch((t=>{this.emit(mt.playFailedAndPaused,At.videoElementPlayingFailedForWebrtc,{},e),this.debugError("JbPro","videoElementPlayingFailedForWebrtc and pause",t)})).finally((()=>{this.videoElementPlayingFailedForWebrtcOnLock=!1}))}_handleVideoInfoError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoInfoError but player is destroyed"));if(this.videoInfoErrorOnLock)return void this.debugLog("JbPro","videoInfoErrorOnLock is true");this.emit(mt.crashLog,this.getCrashLog(At.videoInfoError,e)),this.debugLog("JbPro","videoInfoError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoInfoErrorOnLock=!0,this._pause(t).then((()=>{this.emit(mt.playFailedAndPaused,At.videoInfoError,{},e)})).catch((t=>{this.emit(mt.playFailedAndPaused,At.videoInfoError,{},e),this.debugError("JbPro","videoInfoError and pause",t)})).finally((()=>{this.videoInfoErrorOnLock=!1}))}_handleWebrtcStreamH265(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webrtcStreamH265 but player is destroyed"));if(this.webrtcStreamH265OnLock)return void this.debugLog("JbPro","webrtcStreamH265OnLock is true");this.debugLog("JbPro","webrtcStreamH265 and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.webrtcStreamH265OnLock=!0,this._resetPlayer({isWebrtcH265:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webrtcStreamH265 and reset player and play success")})).catch((t=>{this.emit(mt.playFailedAndPaused,mt.webrtcStreamH265,{},e),this.debugError("JbPro","webrtcStreamH265 and reset player and play error",t)})).finally((()=>{this.webrtcStreamH265OnLock=!1}))})).catch((()=>{this.webrtcStreamH265OnLock=!1,this.emit(mt.playFailedAndPaused,mt.webrtcStreamH265,{},e),this.debugError("JbPro","webrtcStreamH265 and _resetPlayer error")}))}_handlePlaybackEnd(){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","playbackEnd but player is destroyed"));if(this.playbackEndOnLock)return void this.debugLog("JbPro","playbackEndOnLock is true");const e=!1===this._opt.playFailedUseLastFrameShow,t=this._getVideoLastIframeInfo();this.player.setPlayFailedAndPaused(),this.playbackEndOnLock=!0,this._pause(e).then((()=>{this.emit(mt.playFailedAndPaused,mt.playbackEnd,t,"")})).catch((e=>{this.emit(mt.playFailedAndPaused,mt.playbackEnd,t,""),this.debugError("JbPro","playbackEnd and pause",e)})).finally((()=>{this.playbackEndOnLock=!1}))}_handleDelayTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debugWarn("JbPro","delay timeout replay but player is destroyed"));this.emit(mt.crashLog,this.getCrashLog(mt.delayTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","delayTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:mt.delayTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(mt.playFailedAndPaused,mt.delayTimeout,t,e),this.debugError("JbPro","delay timeout replay error",i)}))})).catch((i=>{this.emit(mt.playFailedAndPaused,mt.delayTimeout,t,e),this.debugError("JbPro","delay timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,mt.delayTimeout,t,e),this.player&&(this.emit(mt.delayTimeoutRetryEnd),this.emit(mt.playFailedAndPaused,mt.delayTimeoutRetryEnd)),this.debugWarn("JbPro",`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(mt.playFailedAndPaused,mt.delayTimeout,t,e),this.debugError("JbPro","delay timeout and pause error",i)}))}}_handleLoadingTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","loading timeout but player is destroyed"));this.emit(mt.crashLog,this.getCrashLog(mt.loadingTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","loadingTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:mt.loadingTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(mt.playFailedAndPaused,mt.loadingTimeout,t,e),this.debugError("JbPro","loading timeout replay error",i)}))})).catch((i=>{this.emit(mt.playFailedAndPaused,mt.loadingTimeout,t,e),this.debugError("JbPro","loading timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,mt.loadingTimeout,t,e),this.player&&(this.emit(mt.loadingTimeoutRetryEnd),this.emit(mt.playFailedAndPaused,mt.loadingTimeoutRetryEnd,t,e),this._opt.loadingTimeoutRetryEndShowPlayBtn&&this.player.showPlayBtn()),this.debugLog("JbPro",`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((i=>{this.emit(mt.playFailedAndPaused,mt.loadingTimeout,t,e),this.debugError("JbPro","loading timeout and pause error",i)}))}}_handleInitDecoderWorkerTimeout(e){if(this.isDestroyed())return void this.debugLog("JbPro","InitDecoderWorkerTimeout but player is destroyed");this.emit(mt.crashLog,this.getCrashLog(At.initDecoderWorkerTimeout,e)),this.debugLog("JbPro","InitDecoderWorkerTimeout and pause player");const t=this._getVideoLastIframeInfo(),i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(mt.playFailedAndPaused,At.initDecoderWorkerTimeout,t,e)})).catch((i=>{this.emit(mt.playFailedAndPaused,At.initDecoderWorkerTimeout,t,e),this.debugError("JbPro","videoInfoError and pause",i)}))}_checkInitDecoderWorkerTimeout(){this._clearInitDecoderWorkerTimeout(),this.initDecoderWorkerTimeout=setTimeout((()=>{this._handleInitDecoderWorkerTimeout(At.initDecoderWorkerTimeout)}),1e3*this._opt.initDecoderWorkerTimeout)}_clearInitDecoderWorkerTimeout(){this.initDecoderWorkerTimeout&&(clearTimeout(this.initDecoderWorkerTimeout),this.initDecoderWorkerTimeout=null)}debugLog(e){if(this._opt.debug&&this.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s1?t-1:0),s=1;s1?t-1:0),s=1;s{if(this.isDestroyed())return t("player is destroyed");this.debugLog("JbPro","resetPlayer()");const i=this._getOriginalOpt();this._resetPlayer(i).then((()=>{this.debugLog("JbPro","resetPlayer() success"),e()})).catch((e=>{this.debugWarn("JbPro","resetPlayer() error",e.toString(),e),t(e)}))}))}}return p_.ERROR=At,p_.EVENTS=gt,window.JessibucaPro=p_,window.JbPro=p_,window.WebPlayerPro=p_,p_})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["jessibuca-demo"]=t(e.crypto$1)}(this,(function(t){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=s(t);const o=1,a=2,n=3,l=4,d=5,h=6,c=["","websocket","fetch","hls","webrtc","webTransport","aliyunRtc","ts"],u="fetch",p="hls",f="websocket",m="webrtc",g="webTransport",y="worker",A="aliyunRtc",b="player",v="playerAudio",_="playbackTF",S="mp4",E="webm",w="flv",T="flv",k="m7s",L="hls",C="webrtc",D="webTransport",x="nakedFlow",R="fmp4",P="mpeg4",I="aliyunRtc",B="ts",M={flv:"FLV",m7s:"M7S",hls:"HLS",fmp4:"FMP4",mpeg4:"MPEG4",webrtc:"Webrtc",webTransport:"WebTransport",nakedFlow:"裸流",aliyunRtc:"AliyunRtc",ts:"TS"},F="mse",U="wcs",O="offscreen",N="wasm",j="simd",G="mt",z="webrtc",W="hls",V="aliyunRtc",$="canvas",H="video",J="debug",q="warn",K="click",Y="mouseDownAndUp",Q={normal:"normal",simple:"simple"},X="normal",Z="small",ee=36e5,te="/crypto/",ie="jbprov",se=1e4,re={url:"",container:"",playbackConfig:{},fullscreenWatermarkConfig:{},playType:b,playbackForwardMaxRateDecodeIFrame:4,playbackForwardMaxRatePlayAudio:!1,playOptions:{},isLive:!0,isMulti:!0,isM7sCrypto:!1,supportHls265:!0,playFailedUseLastFrameShow:!0,playFailedAndPausedShowMessage:!0,pauseAndNextPlayUseLastFrameShow:!1,widthOrHeightChangeReplayDelayTime:0,isUseNewFullscreenWatermark:!0,websocket1006ErrorReplay:!0,websocket1006ErrorReplayDelayTime:1,streamErrorReplay:!1,streamErrorReplayDelayTime:1,streamEndReplay:!1,streamEndReplayDelayTime:1,networkDisconnectReplay:!0,loadingTimeoutRetryEndShowPlayBtn:!0,initDecoderWorkerTimeout:10,controlSize:X},oe={playType:b,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:!1,isNakedFlow:!1,isMpeg4:!1,isAliyunRtc:!1,isTs:!1,debug:!1,debugLevel:q,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,mseCorrectAudioTimeDuration:20,keepScreenOn:!0,isNotMute:!1,muted:!0,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,controlAutoHideDelayTime:5,hasControl:!1,controlSize:X,loadingIcon:!0,loadingIconStyle:{},loadingText:"",background:"",poster:"",backgroundLoadingShow:!0,loadingBackground:"",loadingBackgroundWidth:0,loadingBackgroundHeight:0,decoder:"decoder-pro.js",decoderOld:"decoder-pro-old.js",decoderAudio:"decoder-pro-audio.js",decoderHard:"decoder-pro-hard.js",decoderHardNotWasm:"decoder-pro-hard-not-wasm.js",wasmMp4RecorderDecoder:"jessibuca-pro-mp4-recorder-decoder.js",decoderWASM:"",isDecoderUseCDN:!1,url:"",rotate:0,mirrorRotate:"none",aspectRatio:"default",playbackConfig:{playList:[],fps:"",showControl:!0,controlType:Q.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:a,demuxType:T,useWasm:!1,useOldWasm:!1,useMSE:!1,useWCS:!1,useSIMD:!0,useMThreading:!1,wcsUseVideoRender:!0,wcsUseWebgl2Render:!1,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:!1,hardDecodingNotSupportAutoWasm:!0,webglAlignmentErrorReplay:!0,webglContextLostErrorReplay:!0,openWebglAlignment:!1,syncAudioAndVideo:!0,syncAudioAndVideoDiff:400,playbackDelayTime:1e3,playbackFps:25,playbackForwardMaxRateDecodeIFrame:4,playbackCurrentTimeMove:!0,useVideoRender:!0,useCanvasRender:!1,videoRenderType:"",networkDelayTimeoutReplay:!1,recordType:S,checkFirstIFrame:!0,nakedFlowFps:25,audioEngine:null,isShowRecordingUI:!0,isShowZoomingUI:!0,useFaceDetector:!1,useObjectDetector:!1,useImageDetector:!1,useOcclusionDetector:!1,ptzPositionConfig:{},ptzShowType:"vertical",ptzClickType:K,ptzStopEmitDelay:.3,ptzZoomShow:!1,ptzApertureShow:!1,ptzFocusShow:!1,ptzMoreArrowShow:!1,ptzCruiseShow:!1,ptzFogShow:!1,ptzWiperShow:!1,ptzSupportDraggable:!1,weiXinInAndroidAudioBufferSize:4800,isCryptoAudio:!1,isM7sCrypto:!1,isSm4Crypto:!1,isSm4CryptoH265V2:!1,isXorCrypto:!1,sm4CryptoKey:"",m7sCryptoKey:"",xorCryptoKey:"",cryptoKey:"",cryptoIV:"",cryptoKeyUrl:"",listenWindowResizeAuoResize:!0,orientationChangeResize:!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:!0,playFailedAndReplay:!0,showMessageConfig:{playIsNotPauseOrUrlIsNull:"播放地址不能为空",webglAlignmentError:"Webgl 渲染失败",webglContextLostError:"webgl 上下文丢失",mediaSourceH265NotSupport:"不支持硬解码H265",mseSourceBufferFull:"缓冲区已满",mediaSourceAppendBufferError:"初始化解码器失败",mseSourceBufferError:"解码失败",mseAddSourceBufferError:"初始化解码器失败",mseWorkerAddSourceBufferError:"初始化解码器失败",mediaSourceDecoderConfigurationError:"初始化解码器失败",mediaSourceTsIsMaxDiff:"流异常",mseWidthOrHeightChange:"流异常",mediaSourceAudioG711NotSupport:"硬解码不支持G711a/u音频格式",mediaSourceAudioInitTimeout:"初始化音频解码器失败",mediaSourceAudioNoDataTimeout:"等待音频数据超时",mediaSourceUseCanvasRenderPlayFailed:"MediaSource解码使用canvas渲染失败",mediaSourceBufferedIsZeroError:"流异常",webcodecsH265NotSupport:"不支持硬解码H265",webcodecsUnsupportedConfigurationError:"初始化解码器失败",webcodecsDecodeConfigureError:"初始化解码器失败",webcodecsDecodeError:"解码失败",webcodecsAudioInitTimeout:"初始化音频解码器失败",webcodecsAudioNoDataTimeout:"等待音频数据超时",wcsWidthOrHeightChange:"解码失败",wasmDecodeError:"解码失败",simdDecodeError:"解码失败",wasmWidthOrHeightChange:"流异常",wasmUseVideoRenderError:"video自动渲染失败",videoElementPlayingFailed:"video自动渲染失败",simdH264DecodeVideoWidthIsTooLarge:"不支持该分辨率的视频",networkDelayTimeout:"网络超时重播失败",fetchError:"请求失败",streamEnd:"请求结束",websocket1006Error:"流异常结束",websocketError:"请求失败",webrtcError:"请求失败",hlsError:"请求失败",decoderWorkerInitError:"初始化worker失败",decoderWorkerWasmError:"wasm解码失败",videoElementPlayingFailedForWebrtc:"video自动渲染失败",videoInfoError:"解析视频分辨率失败",webrtcStreamH265:"webrtc不支持H265",delayTimeout:"播放超时重播失败",loadingTimeout:"加载超时重播失败",loadingTimeoutRetryEnd:"加载超时重播失败",delayTimeoutRetryEnd:"播放超时重播失败",flvDemuxBufferSizeTooLarge:"FLV待解封装buffer过大",audioChannelError:"音频通道错误",aliyunRtcError:"请求失败",mseWaitVideoCanplayTimeout:"流异常",initDecoderWorkerTimeout:"初始化解码worker超时"},videoElementPlayingFailedReplay:!0,mp4RecordUseWasm:!0,mseAutoCleanupSourceBuffer:!0,mseAutoCleanupMaxBackwardDuration:30,mseAutoCleanupMinBackwardDuration:10,widthOrHeightChangeReplay:!0,simdH264DecodeVideoWidthIsTooLargeReplay:!0,mediaSourceAudioG711NotSupportReplay:!0,mediaSourceAudioInitTimeoutReplay:!0,mediaSourceAudioNoDataTimeoutReplay:!0,mediaSourceUseCanvasRenderPlayFailedReplay:!0,mediaSourceUseCanvasRenderPlayFailedReplayType:H,webcodecsAudioInitTimeoutReplay:!0,webcodecsAudioNoDataTimeoutReplay:!0,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:!0,wcsDecodeAudio:!0,nakedFlowH265DemuxUseNew:!0,nakedFlowDemuxUseNew:!0,extendDomConfig:{html:"",showBeforePlay:!1,showAfterLoading:!0},disableContextmenu:!1,mseDecoderUseWorker:!0,openMemoryLog:!1,mainThreadFetchUseWorker:!0,playFailedAndPausedShowPlayBtn:!0,mseCorrectionTimestamp:!0,flvDemuxBufferSizeTooLargeReplay:!1,flvDemuxBufferSizeTooLargeEmitFailed:!1,flvDemuxBufferSizeMaxLarge:1048576,isCheckInView:!1,hiddenControl:!1,androidMobileFullscreenRotate:!0,disableModule:{ptz:!1,record:!1,zoom:!1,watermark:!1,playback:!1},recordWebMSupportSeek:!1,wasmPlayAudioUseVideoRender:!1,mseWaitVideoCanplayTimeout:6,mseWaitVideoCanplayAutoWasm:!0,zoomMaxScale:5,zoomSupportGestureInMobile:!1,zoomSupportGestureInMobileSpeed:.2,drawingRectColor:"red",drawingRectLineWidth:1,drawingRectEndRemoveDom:!0,videoSEISyncPtsDiff:.2,initShowPlayBtn:!1,checkStreamEnd:!0},ae="init",ne="initVideo",le="render",de="playAudio",he="initAudio",ce="audioCode",ue="audioNalu",pe="audioAACSequenceHeader",fe="videoCode",me="videoCodec",ge="videoNalu",ye="videoPayload",Ae="audioPayload",be="workerFetch",ve="iframeIntervalTs",_e="isDropping",Se="workerEnd",Ee="playbackStreamVideoFps",we="wasmWidthOrHeightChange",Te="simdDecodeError",ke="simdH264DecodeVideoWidthIsTooLarge",Le="closeEnd",Ce="tempStream",De="videoSEI",xe="flvScriptData",Re="aacSequenceHeader",Pe="videoSequenceHeader",Ie="flvBufferData",Be="checkFirstIFrame",Me="mseHandle",Fe="mseFirstRenderTime",Ue="mseError",Oe="notSupportNewWasm",Ne=1,je=2,Ge=8,ze=9,We=18,Ve="init",$e="decode",He="audioDecode",Je="videoDecode",qe="close",Ke="updateConfig",Ye="clearBuffer",Qe="fetchStream",Xe="sendWsMessage",Ze="mseUpdateVideoTimestamp",et="playbackIsPause",tt="fetch",it="destroy",st="destroyEnd",rt="buffer",ot="fetchError",at="fetchClose",nt="fetchSuccess",lt="fetch",dt="sendMessage",ht="destroy",ct="destroyEnd",ut="buffer",pt="websocketError",ft="websocketClose",mt="websocketOpen",gt={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",zooming:"zooming",drawingRect:"drawingRect",drawingRectInfo:"drawingRectInfo",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",recordCancel:"recordCancel",buffer:"buffer",videoFrame:"videoFrame",videoSEI:"videoSEI",videoSEISyncPts:"videoSEISyncPts",start:"start",metadata:"metadata",resize:"resize",volumechange:"volumechange",volume:"volume",destroy:"destroy",beforeDestroy:"beforeDestroy",streamEnd:"streamEnd",streamRate:"streamRate",streamAbps:"streamAbps",streamVbps:"streamVbps",streamDts:"streamDts",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",streamStats:"streamStats",streamEndInner:"streamEndInner",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceended:"mseSourceended",mseSourceStartStreaming:"mseSourceStartStreaming",mseSourceEndStreaming:"mseSourceEndStreaming",mseSourceBufferError:"mseSourceBufferError",mseAddSourceBufferError:"mseAddSourceBufferError",mseWorkerAddSourceBufferError:"mseWorkerAddSourceBufferError",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",playbackEnd:"playbackEnd",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",talkStreamClose:"talkStreamClose",talkStreamError:"talkStreamError",talkStreamInactive:"talkStreamInactive",talkStreamMsg:"talkStreamMsg",webrtcDisconnect:"webrtcDisconnect",webrtcFailed:"webrtcFailed",webrtcClosed:"webrtcClosed",webrtcChecking:"webrtcChecking",webrtcConnected:"webrtcConnected",webrtcCompleted:"webrtcCompleted",webrtcOnConnectionStateChange:"webrtcOnConnectionStateChange",webrtcOnIceConnectionStateChange:"webrtcOnIceConnectionStateChange",crashLog:"crashLog",focus:"focus",blur:"blur",inView:"inView",visibilityHiddenTimeout:"visibilityHiddenTimeout",websocketOpen:"websocketOpen",websocketClose:"websocketClose",websocketError:"websocketError",websocketMessage:"websocketMessage",aiObjectDetectorInfo:"aiObjectDetectorInfo",aiFaceDetectorInfo:"aiFaceDetectorInfo",aiOcclusionDetectResult:"aiOcclusionDetectResult",aiImageDetectResult:"aiImageDetectResult",playFailedAndPaused:"playFailedAndPaused",audioResumeState:"audioResumeState",webrtcStreamH265:"webrtcStreamH265",flvMetaData:"flvMetaData",talkFailedAndStop:"talkFailedAndStop",removeLoadingBgImage:"removeLoadingBgImage",memoryLog:"memoryLog",downloadMemoryLog:"downloadMemoryLog",pressureObserverCpu:"pressureObserverCpu",currentPts:"currentPts",online:"online",offline:"offline",networkState:"networkState",clickInitPlayer:"clickInitPlayer"},yt={load:gt.load,timeUpdate:gt.timeUpdate,videoInfo:gt.videoInfo,audioInfo:gt.audioInfo,error:gt.error,kBps:gt.kBps,start:gt.start,timeout:gt.timeout,loadingTimeout:gt.loadingTimeout,loadingTimeoutRetryEnd:gt.loadingTimeoutRetryEnd,delayTimeout:gt.delayTimeout,delayTimeoutRetryEnd:gt.delayTimeoutRetryEnd,fullscreen:"fullscreen",webFullscreen:gt.webFullscreen,play:gt.play,pause:gt.pause,mute:gt.mute,stats:gt.stats,performance:gt.performance,recordingTimestamp:gt.recordingTimestamp,recordStart:gt.recordStart,recordCreateError:gt.recordCreateError,recordEnd:gt.recordEnd,recordBlob:gt.recordBlob,recordCancel:gt.recordCancel,playToRenderTimes:gt.playToRenderTimes,playbackSeek:gt.playbackSeek,playbackStats:gt.playbackStats,playbackTimestamp:gt.playbackTimestamp,playbackPauseOrResume:gt.playbackPauseOrResume,playbackPreRateChange:gt.playbackPreRateChange,playbackRateChange:gt.playbackRateChange,playbackShowPrecisionChange:gt.playbackShowPrecisionChange,playbackEnd:gt.playbackEnd,ptz:gt.ptz,streamQualityChange:gt.streamQualityChange,zooming:gt.zooming,crashLog:gt.crashLog,focus:gt.focus,blur:gt.blur,visibilityHiddenTimeout:gt.visibilityHiddenTimeout,visibilityChange:gt.visibilityChange,websocketOpen:gt.websocketOpen,websocketClose:gt.websocketClose,networkDelayTimeout:gt.networkDelayTimeout,aiObjectDetectorInfo:gt.aiObjectDetectorInfo,aiFaceDetectorInfo:gt.aiFaceDetectorInfo,aiOcclusionDetectResult:gt.aiOcclusionDetectResult,aiImageDetectResult:gt.aiImageDetectResult,playFailedAndPaused:gt.playFailedAndPaused,streamEnd:gt.streamEnd,audioResumeState:gt.audioResumeState,videoSEI:gt.videoSEI,videoSEISyncPts:gt.videoSEISyncPts,flvMetaData:gt.flvMetaData,webrtcOnConnectionStateChange:gt.webrtcOnConnectionStateChange,webrtcOnIceConnectionStateChange:gt.webrtcOnIceConnectionStateChange,currentPts:gt.currentPts,videoSmooth:gt.videoSmooth,networkState:gt.networkState,volume:gt.volume,drawingRectInfo:gt.drawingRectInfo,clickInitPlayer:gt.clickInitPlayer},At={talkStreamError:gt.talkStreamError,talkStreamClose:gt.talkStreamClose},bt={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsDecodeError:"webcodecsDecodeError",webcodecsUnsupportedConfigurationError:"webcodecsUnsupportedConfigurationError",webcodecsDecodeConfigureError:"webcodecsDecodeConfigureError",webcodecsAudioInitTimeout:"webcodecsAudioInitTimeout",webcodecsAudioNoDataTimeout:"webcodecsAudioNoDataTimeout",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceAudioG711NotSupport:"mediaSourceAudioG711NotSupport",mediaSourceAudioInitTimeout:"mediaSourceAudioInitTimeout",mediaSourceAudioNoDataTimeout:"mediaSourceAudioNoDataTimeout",mediaSourceDecoderConfigurationError:"mediaSourceDecoderConfigurationError",mediaSourceFull:gt.mseSourceBufferFull,mseSourceBufferError:gt.mseSourceBufferError,mseAddSourceBufferError:gt.mseAddSourceBufferError,mseWorkerAddSourceBufferError:gt.mseWorkerAddSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceTsIsMaxDiff:"mediaSourceTsIsMaxDiff",mediaSourceUseCanvasRenderPlayFailed:"mediaSourceUseCanvasRenderPlayFailed",mediaSourceBufferedIsZeroError:"mediaSourceBufferedIsZeroError",wasmDecodeError:"wasmDecodeError",wasmUseVideoRenderError:"wasmUseVideoRenderError",simdH264DecodeVideoWidthIsTooLarge:"simdH264DecodeVideoWidthIsTooLarge",simdDecodeError:"simdDecodeError",hlsError:"hlsError",webrtcError:"webrtcError",webrtcClosed:gt.webrtcClosed,webrtcIceCandidateError:"webrtcIceCandidateError",webglAlignmentError:"webglAlignmentError",wasmWidthOrHeightChange:"wasmWidthOrHeightChange",mseWidthOrHeightChange:"mseWidthOrHeightChange",wcsWidthOrHeightChange:"wcsWidthOrHeightChange",widthOrHeightChange:"widthOrHeightChange",tallWebsocketClosedByError:"tallWebsocketClosedByError",flvDemuxBufferSizeTooLarge:gt.flvDemuxBufferSizeTooLarge,audioChannelError:"audioChannelError",webglContextLostError:"webglContextLostError",videoElementPlayingFailed:"videoElementPlayingFailed",videoElementPlayingFailedForWebrtc:"videoElementPlayingFailedForWebrtc",decoderWorkerInitError:"decoderWorkerInitError",decoderWorkerWasmError:"decoderWorkerWasmError",videoInfoError:"videoInfoError",streamEnd:gt.streamEnd,websocket1006Error:"websocket1006Error",delayTimeout:gt.delayTimeout,loadingTimeout:gt.loadingTimeout,networkDelayTimeout:gt.networkDelayTimeout,fullscreenError:"fullscreenError",aliyunRtcError:"aliyunRtcError",mseWaitVideoCanplayTimeout:"mseWaitVideoCanplayTimeout",initDecoderWorkerTimeout:"initDecoderWorkerTimeout",notSupportNewWasm:"notSupportNewWasm",...At},vt="notConnect",_t="open",St="close",Et="error",wt={download:"download",base64:"base64",blob:"blob"},Tt="download",kt="blob",Lt={7:"H264(AVC)",12:"H265(HEVC)",99:"MPEG4"},Ct=7,Dt=12,xt="H264(AVC)",Rt="H265(HEVC)",Pt=10,It=7,Bt=2,Mt={AAC:"AAC",ALAW:"ALAW(g711a)",MULAW:"MULAW(g711u)",MP3:"MP3"},Ft={10:"AAC",7:"ALAW",8:"MULAW",2:"MP3"},Ut=7,Ot=8,Nt=5,jt=1,Gt=5,zt=6,Wt=7,Vt=8,$t=14,Ht=19,Jt=19,qt=20,Kt=20,Yt=21,Qt=21,Xt=32,Zt=32,ei=33,ti=33,ii=34,si=34,ri=39,oi=39,ai=40,ni=0,li=1,di=2,hi="webcodecs",ci="webgl",ui="webgl2",pi="webgpu",fi="offscreen",mi="mse",gi="hls",yi="webrtc",Ai="key",bi="delta",vi='video/mp4; codecs="avc1.64002A"',_i='video/mp4; codecs="hev1.1.6.L123.b0"',Si='video/mp4;codecs="hev1.1.6.L120.90"',Ei='video/mp4;codecs="hev1.2.4.L120.90"',wi='video/mp4;codecs="hev1.3.E.L120.90"',Ti='video/mp4;codecs="hev1.4.10.L120.90"',ki="ended",Li="open",Ci="closed",Di=27,xi=38,Ri=40,Pi="oneHour",Ii="halfHour",Bi="tenMin",Mi="fiveMin",Fi={oneHour:"one-hour",halfHour:"half-hour",tenMin:"ten-min",fiveMin:"five-min"},Ui=["oneHour","halfHour","tenMin","fiveMin"],Oi=["up","right","down","left","left-up","right-up","left-down","right-down"],Ni="stop",ji="fiStop",Gi="zoomExpand",zi="zoomNarrow",Wi="apertureFar",Vi="apertureNear",$i="focusFar",Hi="focusNear",Ji="cruiseStart",qi="cruiseStop",Ki="fogOpen",Yi="fogClose",Qi="wiperOpen",Xi="wiperClose",Zi={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"},es="sourceclose",ts="sourceopen",is="sourceended",ss="startstreaming",rs="endstreaming",os="qualitychange",as="canplay",ns="waiting",ls="timeupdate",ds="ratechange",hs="loadedmetadata",cs="avc",us="hevc",ps="A key frame is required after configure() or flush()",fs="Cannot call 'decode' on a closed codec",ms="Unsupported configuration",gs="Decoder failure",ys="Decoding error",As="Decoder error",bs="HEVC decoding is not supported",vs="The user aborted a request",_s="AbortError",Ss="AbortError",Es="loading",ws="playing",Ts="paused",ks="destroy",Ls=0,Cs=1,Ds="worklet",xs="script",Rs="active",Ps={name:"",index:0,icon:"",iconHover:"",iconTitle:"",activeIcon:"",activeIconHover:"",activeIconTitle:"",click:null,activeClick:null},Is={content:"",click:null,index:0},Bs=1,Ms="subtitle-segments",Fs="hls-manifest-loaded",Us="hls-level-loaded",Os="demuxed-track",Ns="flv-script-data",js="metadata-parsed",Gs="ttfb",zs="load-retry",Ws="load-start",Vs="speed",$s="load-complete",Hs="load-response-headers",Js="sei",qs="sei-in-time",Ks="switch-url-failed",Ys="switch-url-success",Qs="subtitle-playlist",Xs="stream-parsed",Zs="error",er=[0,160,240,320,480,640],tr=[0,160,240,320,480,640],ir=["轻松","正常","较高","高"],sr="idle",rr="buffering",or="complete",ar={1:"MEDIA_ERR_ABORTED",2:"MEDIA_ERR_NETWORK",3:"MEDIA_ERR_DECODE",4:"MEDIA_ERR_SRC_NOT_SUPPORTED"},nr="video decoder initialization failed",lr="audio packet",dr="memory access out of bounds",hr=1,cr=2,ur=0,pr=1,fr=3,mr=16,gr="candidate-pair",yr="inbound-rtp",Ar="local-candidate",br="remote-candidate",vr="track",_r=9e4,Sr=45e4,Er=9e4,wr="ws1006",Tr="mseDecodeError",kr="wcsDecodeError",Lr="ulaw",Cr="alaw",Dr="mp3",xr=48e3,Rr="created",Pr="loading",Ir="playing",Br="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0;class Mr{constructor(e){this.log=function(t){if(e._opt.debugLevel==J){const o=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var i=arguments.length,s=new Array(i>1?i-1:0),r=1;r1?i-1:0),r=1;r1?s-1:0),o=1;o32&&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 s=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-s;return this._current_word<<=s,this._current_word_bits_left-=s,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)}}const jr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Gr=jr,zr=jr;function Wr(e){let{profile:t,sampleRate:i,channel:s}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|s<<3])}function Vr(e){return $r(e)&&e[1]===Ls}function $r(e){return e[0]>>4===Pt}function Hr(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 Jr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return 1024*t/e}const qr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Kr(e){let t=new Uint8Array(e),i=null,s=0,r=0,o=0,a=null;if(s=r=t[0]>>>3,o=(7&t[0])<<1|t[1]>>>7,o<0||o>=qr.length)return void console.error("Flv: AAC invalid sampling frequency index!");let n=qr[o],l=(120&t[1])>>>3;if(l<0||l>=8)return void console.log("Flv: AAC invalid channel configuration");5===s&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let d=Br.navigator.userAgent.toLowerCase();return-1!==d.indexOf("firefox")?o>=6?(s=5,i=new Array(4),a=o-3):(s=2,i=new Array(2),a=o):-1!==d.indexOf("android")?(s=2,i=new Array(2),a=o):(s=5,a=o,i=new Array(4),o>=6?a=o-3:1===l&&(s=2,i=new Array(2),a=o)),i[0]=s<<3,i[0]|=(15&o)>>>1,i[1]=(15&o)<<7,i[1]|=(15&l)<<3,5===s&&(i[1]|=(15&a)>>>1,i[2]=(1&a)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:n,channelCount:l,objectType:s,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+r}}class Yr{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,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}read_golomb(){let e;for(e=0;0==this.read(1)&&!this.iserro;e++);return(1<=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(8&e[i+1])>>>3,r=(6&e[i+1])>>>1,o=1&e[i+1],a=(192&e[i+2])>>>6,n=(60&e[i+2])>>>2,l=(1&e[i+2])<<2|(192&e[i+3])>>>6,d=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+d>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let h=1===o?7:9,c=d-h;i+=h;let u=this.findNextSyncwordOffset(i+c);if(this.current_syncword_offset_=u,0!==s&&1!==s||0!==r)continue;let p=e.subarray(i,i+c);t={},t.audio_object_type=a+1,t.sampling_freq_index=n,t.sampling_frequency=Gr[n],t.channel_config=l,t.data=p}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class io{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let s=0;s<=t;s++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let s=this.current_syncword_offset_,r=(31&t[s+1])<<8|t[s+2];if(s+3+r>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let o=new Nr(t.subarray(s+3,s+3+r)),a=null;if(o.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(s+3+r),o.destroy();continue}a=e}else{let e=o.readBool();if(e&&o.readBool()){console.error("audioMuxVersionA is Not Supported"),o.destroy();break}if(e&&this.getLATMValue(o),!o.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),o.destroy();break}if(0!==o.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),o.destroy();break}if(0!==o.readBits(4)){console.error("more than 2 numProgram Not Supported"),o.destroy();break}if(0!==o.readBits(3)){console.error("more than 2 numLayer Not Supported"),o.destroy();break}let t=e?this.getLATMValue(o):0,i=o.readBits(5);t-=5;let s=o.readBits(4);t-=4;let r=o.readBits(4);t-=4,o.readBits(3),t-=3,t>0&&o.readBits(t);let n=o.readBits(3);if(0!==n){console.error(`frameLengthType = ${n}. Only frameLengthType = 0 Supported`),o.destroy();break}o.readByte();let l=o.readBool();if(l)if(e)this.getLATMValue(o);else{let e=0;for(;;){e<<=8;let t=o.readBool();if(e+=o.readByte(),!t)break}console.log(e)}o.readBool()&&o.readByte(),a={},a.audio_object_type=i,a.sampling_freq_index=s,a.sampling_frequency=Gr[a.sampling_freq_index],a.channel_config=r,a.other_data_present=l}let n=0;for(;;){let e=o.readByte();if(n+=e,255!==e)break}let l=new Uint8Array(n);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function ro(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return[];const i=e.length,s=[];let r,o=0;for(;o+t>>=8),o+=t,r){if(o+r>i)break;s.push(e.subarray(o,o+r)),o+=r}return s}function oo(e,t){const i=e.length;let s=t?2:1,r=0,o=0,a="";for(;255===e[s];)r+=255,s++;for(r+=e[s++];255===e[s];)o+=255,s++;if(o+=e[s++],5===r&&i>s+16)for(let t=0;t<16;t++)a+=e[s].toString(16),s++;return{payload:e.subarray(s),type:r,size:o,uuid:a}}function ao(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 s=new Uint8Array(t+4);return s.set(i,0),s.set(e,4),s}function no(){}function lo(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let s=0;for(;!t&&s0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),s=t[0].replace("data:","").replace(";base64","");let r=i.length,o=new Uint8Array(r);for(;r--;)o[r]=i.charCodeAt(r);return new File([o],"file",{type:s})}function uo(){return(new Date).getTime()}function po(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function fo(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{fo(e,i,t[i])})),e.style[t]=i,e}function mo(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const s=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(s):s}function go(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function yo(e){let t=0,i=go();return s=>{if(!Io(s))return;t+=s;const r=go(),o=r-i;o>=1e3&&(e(t/o*1e3),i=r,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 Ao='"9-2-2024"',bo=!1;function vo(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function _o(){return!(vo()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))}function So(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}function Eo(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function wo(){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 s in i)if(i[s]){let i="";if("IE"===s){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"===s){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(s="360");const t=e.match(/chrome\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Firefox"===s){const t=e.match(/firefox\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Opera"===s){const t=e.match(/opera\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Safari"===s){const t=e.match(/version\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Edge"===s){const t=e.match(/edge\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("QQBrowser"===s){const t=e.match(/qqbrowser\/([\d.]+)/);t&&t.length>1&&(i=t[1])}t.type=s,t.version=parseInt(i)}return t}function To(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function ko(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function Lo(e,t){if(0===arguments.length)return null;var i,s=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 r={y:i.getFullYear(),m:i.getMonth()+1,d:i.getDate(),h:i.getHours(),i:i.getMinutes(),s:i.getSeconds(),a:i.getDay()},o=s.replace(/{(y|m|d|h|i|s|a)+}/g,((e,t)=>{var i=r[t];return"a"===t?["一","二","三","四","五","六","日"][i-1]:(e.length>0&&i<10&&(i="0"+i),i||0)}));return o}function Co(){return"VideoFrame"in window}function Do(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function xo(){return"xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function Ro(e,t){let i,s,r=!1;return function o(){for(var a=arguments.length,n=new Array(a),l=0;l{r=!1,i&&(o.apply(s,i),i=null,s=null)}),t)}}function Po(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 s=parseFloat(e);i=Math.floor(Math.log(s)/Math.log(1024));var r=s/Math.pow(1024,i);return(r=r.toFixed(2))+t[i]}function Io(e){return"[object Number]"===Object.prototype.toString.call(e)}function Bo(){let e=!1;return"MediaSource"in Br&&Br.MediaSource&&(Br.MediaSource.isTypeSupported(_i)||Br.MediaSource.isTypeSupported(Si)||Br.MediaSource.isTypeSupported(Ei)||Br.MediaSource.isTypeSupported(wi)||Br.MediaSource.isTypeSupported(Ti))&&(e=!0),e}function Mo(){const e=wo();return"chrome"===e.type.toLowerCase()&&e.version>=107}function Fo(){let e=!1;return"MediaStreamTrackGenerator"in window&&(e=!0),e}function Uo(){let e=!1;return"MediaStream"in window&&(e=!0),e}function Oo(e,t){let i=window.URL.createObjectURL(t),s=window.document.createElement("a");s.download=e,s.href=i;let r=window.document.createEvent("MouseEvents");r.initEvent("click",!0,!0),s.dispatchEvent(r),setTimeout((()=>{window.URL.revokeObjectURL(i)}),To()?1e3:0)}function No(e){return null==e}function jo(e){return!0===e||!1===e}function Go(e){return!No(e)}function zo(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||{}),s=Object.assign(t.text,e.text||{}),r=Object.assign(t.rect,e.rect||{}),o=Object.assign(t.line,e.line||{});return t=Object.assign(t,e,{image:i,text:s,rect:r,line:o}),t}function Wo(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 Vo(e,t){return new Promise(((i,s)=>{let r=zo(t);if(!r.image.src&&!r.text.content)return i(e);let o=document.createElement("canvas");o.width=t.width,o.height=t.height;let a=o.getContext("2d");a.imageSmoothingEnabled=!0,a.imageSmoothingEnabled&&(a.imageSmoothingQuality="high");let n=0,l=0;Io(r.left)?n=r.left:Io(r.right)&&(n=o.width-r.right),Io(r.top)?l=r.top:Io(r.bottom)&&(l=o.height-r.bottom);const d=new Image;d.src=e,d.onload=()=>{if(a.drawImage(d,0,0),r.image&&r.image.src){const e=new Image;e.src=r.image.src,e.setAttribute("crossOrigin","Anonymous"),e.onload=()=>{n-=r.image.width,a.drawImage(e,n,l,r.image.width,r.image.height),i(o.toDataURL(t.format,t.quality))},e.onerror=e=>{s()}}else r.text&&r.text.content&&(a.font=r.text.fontSize+"px 宋体",a.fillStyle=r.text.color,a.textAlign="right",a.fillText(r.text.content,n,l),i(o.toDataURL(t.format,t.quality)))},d.onerror=e=>{s(e)}}))}function $o(e){var t,i=0;if(0===e.length)return i;for(t=0;t{if(!t.copyright)return i(e);let r=document.createElement("canvas");r.width=t.width,r.height=t.height;let o=r.getContext("2d");o.imageSmoothingEnabled=!0,o.imageSmoothingEnabled&&(o.imageSmoothingQuality="high");const a=new Image;a.src=e,a.onload=()=>{o.drawImage(a,0,0);const e=$o(t.copyright),s=o.getImageData(0,0,r.width,r.height);!function(e,t){for(var i=e.data,s=0,r=0;r<32;r++){var o=t>>r&1,a=254&i[s]|o;i[s]=a,s+=4}}(s,e),o.putImageData(s,0,0),i(r.toDataURL(t.format,t.quality))},a.onerror=e=>{s(e)}}))}function Jo(e){var t;if(e>-1){var i=Math.floor(e/3600),s=Math.floor(e/60)%60,r=e%60;t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",(r=Math.round(r))<10&&(t+="0"),t+=r.toFixed(0)}return t}function qo(e,t){let i="";if(e>-1){const s=Math.floor(e/60)%60;let r=e%60;r=Math.round(r),i=s<10?"0"+s+":":s+":",r<10&&(i+="0"),i+=r,No(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function Ko(e){let t="";if(e>-1){const i=Math.floor(e/60/60)%60;let s=Math.floor(e/60)%60,r=e%60;s=Math.round(s),t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",r<10&&(t+="0"),t+=r}return t}function Yo(e,t){const i=Math.floor(t/60)%60,s=Math.floor(t%60);return new Date(e).setHours(i,s,0,0)}function Qo(e,t){const i=Math.floor(t/60/60)%60,s=Math.floor(t/60)%60,r=t%60;return new Date(e).setHours(i,s,r,0)}function Xo(e){return(""+e).length}function Zo(e){return e&&0===Object.keys(e).length}function ea(e){return!Zo(e)}function ta(e){return"string"==typeof e}const ia=()=>{const e=window.navigator.userAgent;return/MicroMessenger/i.test(e)},sa=()=>{const e=window.navigator.userAgent;return/Chrome/i.test(e)};function ra(e){const t=e||window.event;return t.target||t.srcElement}function oa(){return Eo()&&function(){const e=navigator.userAgent.toLowerCase();return/macintosh|mac os x/i.test(e)}()}function aa(e){return"function"==typeof e}function na(e){if(vo()){let t=0,i=0;if(1===e.touches.length){let s=e.touches[0];t=s.clientX,i=s.clientY}return{posX:t,posY:i}}let t=0,i=0;const s=e||window.event;return s.pageX||s.pageY?(t=s.pageX,i=s.pageY):(s.clientX||s.clientY)&&(t=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft,i=e.clientY+document.documentElement.scrollTop+document.body.scrollTop),{posX:t,posY:i}}function la(){let e=document.createElement("video"),t=e.canPlayType("application/vnd.apple.mpegurl");return e=null,t}function da(e){let t=wa(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)&&wa(e.demuxUseWorker);return!!(wa(t)&&e.useMSE&&e.mseDecodeAudio&&wa(e.demuxUseWorker))||(!!(wa(t)&&e.useWCS&&e.wcsDecodeAudio)||t)}function ha(e){let t=null,i=31&e[0];return i!==Ut&&i!==Ot||(t=xt),t||(i=(126&e[0])>>1,i!==Xt&&i!==ei&&i!==ii||(t=Rt)),t}function ca(e){e.close()}function ua(e){e.close()}function pa(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function fa(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 ma(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],s=null,r=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,r=2)}if(i)for(let o=r;o=1e3){e[o-1].ts-i.ts<1e3&&(s=o+1)}}}return s}function ga(e){for(var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(t),s=new Uint8Array(i.length),r=0;r>4===Cs&&e[1]===Ls}function Ea(e){return!0===e||"true"===e}function wa(e){return!0!==e&&"true"!==e}function Ta(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function ka(){return/iphone/i.test(navigator.userAgent)}function La(){return window.performance&&window.performance.memory?window.performance.memory:null}function Ca(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}}function Da(e){return e.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function xa(){let e=!1;return"requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e=!0),e}function Ra(){let e=!1;return"PressureObserver"in window&&(e=!0),e}function Pa(e,t){const i=ro(e.slice(5));let s=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===Ht||i===qt||i===Yt)||wa(t)&&i===Nt)&&(s=!0)})),s}function Ia(){let e={down:"mousedown",move:"mousemove",up:"mouseup",click:"click"};return vo()&&(e={down:"touchstart",move:"touchmove",up:"touchend",click:"click"}),e}class Ba{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,s)));e.addEventListener(t,i,s);const r=()=>{aa(e.removeEventListener)&&e.removeEventListener(t,i,s)};return this.destroys.push(r),r}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class Ma{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(){s.off(e,r);for(var o=arguments.length,a=new Array(o),n=0;n1?i-1:0),r=1;r{delete i[e]})),void delete this.e;const s=i[e],r=[];if(s&&t)for(let e=0,i=s.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,s=i.createShader(e);return i.shaderSource(s,t),i.compileShader(s),i.getShaderParameter(s,i.COMPILE_STATUS)?s:(console.log("An error occurred compiling the shaders: "+i.getShaderInfoLog(s)),i.deleteShader(s),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 s=[];s=s.concat([0,1],[1,1],[1,0],[0,0]);const r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(s),e.STATIC_DRAW);const o=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,o);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{positions:i,position:t,texPosition:r,indices:o}}_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,s,r,o){let a=2*e/r-1,n=2*(o-t-s)/o-1,l=2*(e+i)/r-1,d=2*(o-t)/o-1;return[a,n,l,n,l,d,a,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,s,r){const o=this.gl;this._clear(),o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._ytexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,t,0,o.LUMINANCE,o.UNSIGNED_BYTE,i),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this._utexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,s),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this._vtexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,r),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}renderYUV(e,t,i){let s=i.slice(0,e*t),r=i.slice(e*t,e*t*5/4),o=i.slice(e*t*5/4,e*t*3/2);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,s),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,o),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}drawDom(e,t,i,s,r){const o=this.gl;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._rgbatexture),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,r),this._buffers.positions=this._calRect(i,s,r.width,r.height,e,t),this._drawScene(e,t,!1)}}const Va=1,$a=2,Ha=4;class Ja{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.isDestroyed=!1,this._initPipeline().then((e=>{this.isDestroyed||(this.pipeline=e,this.matrixGroupInfo=this._initMatrixGroupInfo(),this.matrixGroupInfo&&(this.hasInited=!0))}))}destroy(){this.isDestroyed=!1,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 s=new Float32Array([0,1,1,1,1,0,0,0]),r=e.createBuffer({size:s.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(r,0,s);const o=new Uint16Array([0,1,2,0,2,3]),a=e.createBuffer({size:o.byteLength,usage:window.GPUBufferUsage.INDEX|window.GPUBufferUsage.COPY_DST});return e.queue.writeBuffer(a,0,o),{positionBuffer:i,texpositionBuffer:r,indexBuffer:a}}_initPipeline(){return new Promise(((e,t)=>{const i=this.gpu.device,s=this.gpu.format,r={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 pixelType: i32;\n @group(1) @binding(2) var yTexture: texture_2d;\n @group(1) @binding(3) var uTexture: texture_2d;\n @group(1) @binding(4) var vTexture: texture_2d;\n @group(1) @binding(5) var uvTexture: texture_2d;\n @group(1) @binding(6) var rgbaTexture: 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 if(pixelType == 1){\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 } else if (pixelType == 2) {\n\n var y : f32= textureSample(yTexture, mySampler, vTexturePosition).r;\n var u : f32 = textureSample(uvTexture, mySampler, vTexturePosition).r;\n var v : f32 = textureSample(uvTexture, mySampler, vTexturePosition).g;\n\n return vec4(y, u, v, 1.0)*YUV2RGB;\n } else {\n\n return textureSample(rgbaTexture, mySampler, vTexturePosition);\n }\n\n }\n\n "}),entryPoint:"main",targets:[{format:s}]},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}};i.createRenderPipelineAsync(r).then((t=>{e(t)})).catch((e=>{t(e)}))}))}_initMatrixGroupInfo(){if(!this.gpu)return null;const e=this.gpu.device,t=this.pipeline,i=Oa();Ga(i,-1,1,-1,1,.1,100);const s=Oa();Na(s);const r=Oa();!function(e,t,i,s){var r,o,a,n,l,d,h,c,u,p,f=t[0],m=t[1],g=t[2],y=s[0],A=s[1],b=s[2],v=i[0],_=i[1],S=i[2];Math.abs(f-v)zo(e)));this.configList=i,this._updateDom()}_resizeDomForVideo(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;let t=e.width,i=e.height;const s=this.player._opt,r=this.player.getShowVideoRect();let o=r.height,a=r.width;const n=s.rotate;let l=(a-t)/2,d=(o-i)/2;270!==n&&90!==n||(t=e.height,i=e.width);const h=a/t,c=o/i;let u=h>c?c:h;s.isResize||h!==c&&(u=h+","+c),s.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===s.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===s.mirrorRotate?p+=" rotateY(180deg)":"vertical"===s.mirrorRotate&&(p+=" rotateX(180deg)"),this.scale=-1!==(""+u).indexOf(",")?h:u,this.shadowRootInnerDom.style.transform=p,this.shadowRootInnerDom.style.left=l+"px",this.shadowRootInnerDom.style.top=d+"px",this.shadowRootInnerDom.style.width=e.width+"px",this.shadowRootInnerDom.style.height=e.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,i=this.player.getShowVideoRect();let s=i.width,r=i.height,o=e.width,a=e.height;const n=t.rotate;let l=(s-o)/2,d=(r-a)/2;270!==n&&90!==n||(o=e.height,a=e.width);const h=s/o,c=r/a;let u=h>c?c:h;t.isResize||h!==c&&(u=h+","+c),t.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===t.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===t.mirrorRotate?p+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(p+=" 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=p,this.shadowRootInnerDom.style.left=l+"px",this.shadowRootInnerDom.style.top=d+"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),i=this.player.getShowVideoRect();let s=i.width,r=i.height,o=this.player.getControlHeight();const a=e.width/e.height,n=t[0]/t[1];if(a>n){const t=n*e.height/e.width;this.shadowRootInnerDom.style.width=100*t+"%",this.shadowRootInnerDom.style.height=`calc(100% - ${o}px)`,this.shadowRootInnerDom.style.padding=`0 ${(s-s*t)/2}px`}else{const t=e.width/n/e.height;this.shadowRootInnerDom.style.width="100%",this.shadowRootInnerDom.style.height=`calc(${100*t}% - ${o}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,Go(e.left)&&(Io(e.left)?t.style.left=e.left+"px":t.style.left=e.left),Go(e.right)&&(Io(e.right)?t.style.right=e.right+"px":t.style.right=e.right),Go(e.top)&&(Io(e.top)?t.style.top=e.top+"px":t.style.top=e.top),Go(e.bottom)&&(Io(e.bottom)?t.style.bottom=e.bottom+"px":t.style.bottom=e.bottom),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 s=e.polygon.color,r=e.polygon.lineWidth;if(i=i.sort(((e,t)=>(e.index||0)-(t.index||0))),e.polygon.fill){const s=document.createElement("div");s.style.position="absolute",s.style.width="100%",s.style.height="100%";const r="polygon("+i.map((e=>`${e.x}px ${e.y}px`)).join(", ")+")";s.style.clipPath=r,s.style.backgroundColor=e.polygon.fill,e.polygon.fillOpacity&&(s.style.opacity=e.polygon.fillOpacity),t.appendChild(s)}i.forEach(((e,o)=>{const a=document.createElement("div");if(o===i.length-1){const o=i[0],n={x1:e.x,y1:e.y,x2:o.x,y2:o.y,color:s,lineWidth:r};return this.settingLine(a,n),void t.appendChild(a)}const n=i[o+1],l={x1:e.x,y1:e.y,x2:n.x,y2:n.y,color:s,lineWidth:r};this.settingLine(a,l),t.appendChild(a)}))}this.isDynamic&&(this.shadowRootDynamicDom=t),this.shadowRootInnerDom.appendChild(t)}}))}settingLine(e,t){const i=t.x1,s=t.y1,r=t.x2,o=t.y2;var a=Math.sqrt((i-r)**2+(s-o)**2),n=180*Math.atan2(o-s,r-i)/Math.PI;e.style.backgroundColor=t.color,e.style.width=a+"px",e.style.height=t.lineWidth+"px",e.style.position="absolute",e.style.top=s+"px",e.style.left=i+"px",e.style.transform="rotate("+n+"deg)",e.style.transformOrigin="0 0"}remove(){this._removeDom()}_removeDom(){this.shadowRootInnerDom&&(this.shadowRootInnerDom.innerHTML="")}}class Ka extends Ma{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){Go(e.encTypeCode)&&(this.videoInfo.encType=Lt[e.encTypeCode],this.videoInfo.encTypeCode=e.encTypeCode),Go(e.encType)&&(this.videoInfo.encType=e.encType),Go(e.width)&&(this.videoInfo.width=e.width),Go(e.height)&&(this.videoInfo.height=e.height),Go(this.videoInfo.encType)&&Go(this.videoInfo.height)&&Go(this.videoInfo.width)&&!this.init&&(this.player.emit(gt.videoInfo,this.videoInfo),this.init=!0)}getVideoInfo(){return this.videoInfo}clearView(){this.tempContentList=[],this.tempAiContentList=[]}resize(){if(this.player.debugLog("CommonVideo","resize()"),"default"===this.player._opt.aspectRatio||vo()?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.debugLog("CommonVideo","_resizeRatio()");const e=this.player._opt.aspectRatio.split(":").map(Number),t=this.player.getShowVideoRect();let i=t.width,s=t.height,r=this.player.getControlHeight();const o=this.videoInfo,a=o.width/o.height,n=e[0]/e[1];if(this.getType()===$&&(this.$videoElement.style.left="0",this.$videoElement.style.top="0",this.$videoElement.style.transform="none"),this.getType()===H&&this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit="fill"),a>n){const e=n*o.height/o.width;this.$videoElement.style.width=100*e+"%",this.$videoElement.style.height=`calc(100% - ${r}px)`,this.$videoElement.style.padding=`0 ${(i-i*e)/2}px`}else{const e=o.width/n/o.height;this.$videoElement.style.width="100%",this.$videoElement.style.height=`calc(${100*e}% - ${r}px)`,this.$videoElement.style.padding=(s-s*e)/2+"px 0"}}play(){}pause(){}setRate(e){}getType(){return""}getCanvasType(){return""}getCurrentTime(){return 0}getStreamFps(){return this.streamFps}isPlaying(){return!0}isVideoPlaying(){return this.isPlaying()}getPlaybackQuality(){return null}setStreamFps(e){this.player.debugLog("CommonVideo","setStreamFps",e),this.streamFps=e}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempContentList=e,this.doAddContentToWatermark()}addAiContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempAiContentList=e,this.doAddAiContentToWatermark()}doAddContentToWatermark(){if(this.tempContentList.length>0){this.contentWatermark||(this.contentWatermark=new qa(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 qa(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}getReadyStateInited(){return!0}screenshotByCurrentWatermark(){}initCanvasViewSize(){}bindMediaStream(){}}var Ya="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 s=new XMLHttpRequest;s.open("GET",e),s.responseType="blob",s.onload=function(){tn(s.response,t,i)},s.onerror=function(){console.error("could not download file")},s.send()}function Xa(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function Za(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 en=Ya.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),tn="object"!=typeof window||window!==Ya?function(){}:"download"in HTMLAnchorElement.prototype&&!en?function(e,t,i){var s=Ya.URL||Ya.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?Xa(r.href)?Qa(e,t,i):Za(r,r.target="_blank"):Za(r)):(r.href=s.createObjectURL(e),setTimeout((function(){s.revokeObjectURL(r.href)}),4e4),setTimeout((function(){Za(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(Xa(e))Qa(e,t,i);else{var s=document.createElement("a");s.href=e,s.target="_blank",setTimeout((function(){Za(s)}))}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,s){if((s=s||open("","_blank"))&&(s.document.title=s.document.body.innerText="downloading..."),"string"==typeof e)return Qa(e,t,i);var r="application/octet-stream"===e.type,o=/constructor/i.test(Ya.HTMLElement)||Ya.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||r&&o||en)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),s?s.location.href=e:location=e,s=null},n.readAsDataURL(e)}else{var l=Ya.URL||Ya.webkitURL,d=l.createObjectURL(e);s?s.location=d:location.href=d,s=null,setTimeout((function(){l.revokeObjectURL(d)}),4e4)}};function sn(e){return new Promise(((t,i)=>{navigator.gpu?navigator.gpu.requestAdapter().then((s=>{s?s.requestDevice().then((r=>{if(r){const o=e.getContext("webgpu");if(o){const e=navigator.gpu.getPreferredCanvasFormat();o.configure({device:r,format:e,alphaMode:"opaque"}),t({adapter:s,device:r,context:o,format:e})}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!!")}))}class rn{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 s=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(s,"\n varying highp vec2 uv;\n uniform sampler2D texture;\n void main(void) {\n gl_FragColor = texture2D(texture, uv);\n }\n "),t.compileShader(s),!t.getShaderParameter(s,t.COMPILE_STATUS))throw t.getShaderInfoLog(s);const r=t.createProgram();if(t.attachShader(r,i),t.attachShader(r,s),t.linkProgram(r),!t.getProgramParameter(r,t.LINK_STATUS))throw t.getProgramInfoLog(r);t.useProgram(r);const o=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),t.STATIC_DRAW);const a=t.getAttribLocation(r,"xy");t.vertexAttribPointer(a,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(a);const n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n),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=r,this.buffer=o,this.vertexShader=i,this.fragmentShader=s,this.texture=n}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,this.gl=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 on extends Ka{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.isWcsWebgpu=!1,this.bitmaprenderer=null,this.renderType=null,this.proxyDestroyList=[],this._initCanvasRender()}destroy(){super.destroy(),this.proxyDestroyList.length>0&&(this.proxyDestroyList.forEach((e=>{e&&e()})),this.proxyDestroyList=[]),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.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height),this.context2D=null),this.renderType=null,this.isWebglContextLost=!1,this.isWcsWebgpu=!1,this.isWcsWebgl2=!1,this.videoInfo={width:"",height:"",encType:""},this.$videoElement.width=0,this.$videoElement.height=0,this.player.$container.removeChild(this.$videoElement),this.$videoElement=null,this.init=!1,this.off()}_initContext2D(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.context2D=this.$videoElement.getContext("2d",e)}_initContextGl(){if(this.player.events,this.contextGl=lo(this.$videoElement),!this.contextGl)throw this.player.debugError("CommonCanvasLoader","_initContextGl() createContextGL error"),new Error("CommonCanvasLoader and _initContextGl createContextGL error");this._bindContextGlEvents(),this.webglRender=new Wa(this.contextGl,this.player._opt.openWebglAlignment)}_initContextGl2(){if(this.contextGl=ho(this.$videoElement),this.contextGl){this._bindContextGlEvents(2);try{this.webglRender=new rn(this.$videoElement,this.contextGl)}catch(e){this.player.debugError("CommonCanvasLoader",`create webgl2Render error is ${e} and next use context2d.draw render`),this.contextGl=null,this.webglRender=null,this._initContext2D()}}else this.player.debugError("CommonCanvasLoader","_initContextGl2() createContextGL2 error")}_bindContextGlEvents(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const{proxy:t}=this.player.events,i=t(this.$videoElement,"webglcontextlost",(t=>{t.preventDefault(),this.player.debugError("canvasVideo","webglcontextlost error",t),this.isWebglContextLost=!0,this.webglRender&&(this.player.debugLog("CommonCanvasLoader","webglcontextlost error and destroy webglRender"),this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.player.debugLog("CommonCanvasLoader","webglcontextlost error and destroy webglRectRender"),this.webglRectRender.destroy(),this.webglRectRender=null),this.contextGl=null,setTimeout((()=>{if(this.player.debugLog("CommonCanvasLoader",`createContextGL() version ${e}`),1===e?this.contextGl=lo(this.$videoElement):2===e&&(this.contextGl=ho(this.$videoElement)),this.player.debugLog("CommonCanvasLoader","createContextGL success"),this.contextGl&&this.contextGl.getContextAttributes){const t=this.contextGl.getContextAttributes();t&&t.stencil?(1===e?this.webglRender=new Wa(this.contextGl,this.player._opt.openWebglAlignment):2===e&&(this.webglRender=new rn(this.$videoElement,this.contextGl)),this.isWebglContextLost=!1,this.player.debugLog("CommonCanvasLoader","webglcontextlost error reset and getContextAttributes().stencil is true")):(this.player.debugError("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(bt.webglContextLostError))}else this.player.debugError("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(bt.webglContextLostError)}),500)})),s=t(this.$videoElement,"webglcontextrestored",(e=>{e.preventDefault(),this.player.debugLog("CommonCanvasLoader","webglcontextrestored ",e)}));this.proxyDestroyList.push(i,s)}_initContextGPU(){sn(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new Ja(e),this.player.debugLog("CommonCanvasLoader","webGPURender init success")):(this.player.debugWarn("CommonCanvasLoader","webGPURender init failed because context is null and next use webgl render"),this.renderType=ci,this._initContextGl()))})).catch((e=>{this.player.isDestroyedOrClosed()||(this.player.debugWarn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=ci,this._initContextGl())}))}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}screenshot(e,t,i,s){e=e||uo(),s=s||wt.download;let r=.92;!Zi[t]&&wt[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=Zi[t]||Zi.png,a=this.$videoElement.toDataURL(o,r);if(s===wt.base64)return a;{const t=co(a);if(s===wt.blob)return t;if(s===wt.download){const i=o.split("/")[1];tn(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{ta(e)&&(e={filename:e}),(e=e||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||uo(),e.format=e.format?Zi[e.format]:Zi.png,e.quality=Number(e.quality)||.92,e.type=e.type||wt.download;const s=this.$videoElement.toDataURL(e.format,e.quality);Vo(s,e).then((i=>{if(e.type===wt.base64)t(s);else{const s=co(i);if(e.type===wt.blob)t(s);else if(e.type===wt.download){t();const i=e.format.split("/")[1];tn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(ta(e)){(e=(e={filename:e})||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||uo(),e.format=e.format?Zi[e.format]:Zi.png,e.quality=Number(e.quality)||.92,e.type=e.type||wt.download;const s=this.$videoElement.toDataURL(e.format,e.quality);Ho(s,e).then((i=>{if(e.type===wt.base64)t(s);else{const s=co(i);if(e.type===wt.blob)t(s);else if(e.type===wt.download){t();const i=e.format.split("/")[1];tn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}}))}screenshotByCurrentWatermark(e){}render(){}clearView(){super.clearView()}play(){}pause(){}_resize(){this.player.debugLog("canvasVideo","_resize()");const e=this.player._opt,t=this.player.getShowVideoRect();let i=t.width,s=t.height,r=this.$videoElement.width,o=this.$videoElement.height;const a=e.rotate;let n=(i-r)/2,l=(s-o)/2;270!==a&&90!==a||(r=this.$videoElement.height,o=this.$videoElement.width);const d=i/r,h=s/o;let c=d>h?h:d;wa(e.isResize)&&d!==h&&(c=d+","+h),e.isFullResize&&(c=d>h?d:h);let u="scale("+c+")";"none"===e.mirrorRotate&&a&&(u+=" rotate("+a+"deg)"),"level"===e.mirrorRotate?u+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(u+=" 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=u,this.$videoElement.style.left=n+"px",this.$videoElement.style.top=l+"px"}initFps(){}setStreamFps(e){}getStreamFps(){return 25}getType(){return $}getCanvasType(){let e=this.renderType===pi?pi:ci;return this.isWcsWebgl2?e=ui:this.isWcsWebgpu&&(e=pi),e}}class an extends on{constructor(e){super(e),this.TAG_NAME="CanvasVideo",this.yuvList=[],this.tempTextCanvas=null,this.tempTextCanvasCtx=null,this.player.debugLog("CanvasVideo","init")}async 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.debugLog("CanvasVideoLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=hi,this.player._opt.useWebGPU?sn(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new Ja(e),this.isWcsWebgpu=!0,this.player.debugLog(this.TAG_NAME,"webGPURender init success")):(this.player.debugWarn(this.TAG_NAME,"webGPURender init failed because context is null and next use webgl render"),this._initWebglRenderForWCS()))})).catch((()=>{this.player.isDestroyedOrClosed()||(this.player.debugWarn(this.TAG_NAME,`createWebGPUContext error is ${e} and next use webgl render`),this._initWebglRenderForWCS())})):this._initWebglRenderForWCS()):this.player._opt.useMSE&&this.player._opt.mseUseCanvasRender?(this.renderType=mi,this._initContext2D()):this.player.isOldHls()&&this.player._opt.useCanvasRender?(this.renderType=gi,this._initContext2D()):this.player.isWebrtcH264()&&this.player._opt.webrtcUseCanvasRender?(this.renderType=yi,this._initContext2D()):this._supportOffscreen()?(this.renderType=fi,this._bindOffscreen()):this.player._opt.useWebGPU?(this.renderType=pi,this._initContextGPU()):(this.renderType=ci,this._initContextGl())}_initWebglRenderForWCS(){this.player._opt.wcsUseWebgl2Render&&Ca()?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()}_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!==mi){const t={ts:e.ts||0,fps:!0};this.player.updateStats(t)}switch(this.renderType){case fi:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case ci:case pi:if(this.isWebglContextLost)return void this.player.debugWarn("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=uo());const i=uo();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=uo());const i=uo();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=uo());const t=uo();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(gt.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(gt.aiImageDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debugLog("CanvasVideoLoader",`doRender() and ai image detect result type is ${t.type} and drop`)}if(this.renderType===pi)try{if(!this.webGPURender)return void this.player.debugWarn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debugError("CanvasVideoLoader",`doRender webgpu render and error: ${e.toString()}`)}else if(this.renderType===ci)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debugError("CanvasVideoLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}break;case hi:if(this.webGPURender)this.webGPURender.render(e.videoFrame),ca(e.videoFrame);else if(this.webglRender)this.webglRender.render(e.videoFrame),ca(e.videoFrame);else if(this.context2D)if(aa(e.videoFrame.createImageBitmap))try{e.videoFrame.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),ca(e.videoFrame)}))}catch(e){}else this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),ca(e.videoFrame);else this.player.debugWarn("CanvasVideoLoader","doRender() and webcodecs context is lost");break;case mi:case gi:case yi:this.context2D.drawImage(e.$video,0,0,this.$videoElement.width,this.$videoElement.height)}let t=e.ts||0;this.renderType===mi&&(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 fi:(function(e,t){const i=document.createElement("canvas");i.width=e,i.height=t;const s=window.createImageBitmap(i,0,0,e,t);return i.width=0,i.height=0,s})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case ci:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case pi:this.webGPURender.clear();break;case hi:this.webGPURender?this.webGPURender.clear():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 mi:case gi:case yi: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(e){let{ctx:t,list:i}=e;t.save(),(i||[]).forEach((e=>{"text"===e.type?(t.font=`${e.fontSize||12}px Arial`,t.fillStyle=e.color||"green",t.fillText(e.text,e.x,e.y)):"rect"===e.type&&(t.strokeStyle=e.color||"green",t.lineWidth=e.lineWidth||2,t.strokeRect(e.x,e.y,e.width,e.height))})),t.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 r=e.width,o=e.height,a=(s=e.color||"#008000",[parseInt(s.substring(1,3),16)/255,parseInt(s.substring(3,5),16)/255,parseInt(s.substring(5,7),16)/255,1]),n=e.lineWidth||4;if(!r||!o)return;this.webglRectRender.drawBox({x:t,y:i,width:r,height:o,lineColor:a,lineWidth:n,canvasWidth:this.$videoElement.width,canvasHeight:this.$videoElement.height})}else if("text"===e.type){const s=e.text||"";if(!s)return;const r=e.fontSize||20,o=e.color||"#008000";this.tempTextCanvas||this._initTempTextCanvas(),this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvasCtx.font=`${r}px Arial`,this.tempTextCanvasCtx.fillStyle=o,this.tempTextCanvasCtx.textBaseline="top",this.tempTextCanvasCtx.fillText(s,0,0),this.webglRender.drawDom(this.$videoElement.width,this.$videoElement.height,t,i,this.tempTextCanvas)}var s}))}}class nn extends Ka{constructor(e){super(),this.player=e,this.TAG_NAME="Video";const t=document.createElement("video");t.muted=!0,t.disablePictureInPicture=!0,So()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.$videoElement=t,this.$canvasElement=null,this.canvasContext=null,this.mediaStream=null,this.vwriter=null,this.awriter=null,this.trackGenerator=null,this.audioTrackGenerator=null,this.fixChromeVideoFlashBug(),this.fixMobileAutoFullscreen(),this.resize(),this.eventListenList=[],this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.progressProxyDestroy=null,this.checkVideoCanplayTimeout=null,this.visibilityChangePlayTimeout=null,this.pauseDelayTimeout=null,this.replayTimeout=null,this.detectAndFixStuckPlaybackStartTime=null;const i=xa();this.supportVideoFrameCallbackHandle=null;const{proxy:s}=this.player.events,r=s(this.$videoElement,"canplay",(()=>{this.player.debugLog("Video","canplay"),this.player.isDestroyedOrClosed()||(this.canplayReceived=!0,this._delayPlay?(this.clearCheckVideoCanplayTimeout(),this._play(),xa()?this.supportVideoFrameCallbackHandle||(this.player.debugLog("Video","support requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.debugWarn("Video","not support requestVideoFrameCallback and use timeupdate event to update stats")):this.$videoElement.paused&&(this.player.isMSEPlaybackRateChangePause?(this.player.debugLog("Video",`canplay and video is paused and isMSEPlaybackRateChangePause is ${this.player.isMSEPlaybackRateChangePause} so next try to play`),this.player.isMSEPlaybackRateChangePause=!1,this._play()):this.player.isMSECurrentMoreThanBufferedPause?(this.player.debugLog("Video",`canplay and video is paused and isMSECurrentMoreThanBufferedPause is ${this.player.isMSECurrentMoreThanBufferedPause} so next try to play`),this.player.isMSECurrentMoreThanBufferedPause=!1,this._play()):(this.player.debugWarn("Video","canplay and video is paused and try to play"),this._play())))})),o=s(this.$videoElement,"waiting",(()=>{this.player.debugLog("Video","waiting")})),a=s(this.$videoElement,"loadedmetadata",(()=>{this.player.debugLog("Video","loadedmetadata")})),n=s(this.$videoElement,"timeupdate",(t=>{if(!this.player.isDestroyedOrClosed()){if(wa(i)){const t=parseInt(1e3*this.getCurrentTime(),10);if(e.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc())this.player.emit(gt.timeUpdate,t),e.handleRender(),e.updateStats({fps:!0,ts:t,dts:t}),this.player.updateCurrentPts(t);else if(Ea(this.player._opt.useMSE)&&wa(this.player._opt.mseUseCanvasRender))if(this.player.mseDecoder){let e=parseInt(1e3*this.getCurrentTime(),10)+(this.player.mseDecoder.firstRenderTime||0);this.player.updateCurrentPts(e)}else if(this.player._opt.mseDecoderUseWorker){let e=parseInt(1e3*this.getCurrentTime(),10)+(this.player._mseWorkerData.firstRenderTime||0);this.player.updateCurrentPts(e)}this.doAddContentToWatermark()}this.player.isMseDecoderUseWorker()&&(this.player.decoderWorker.updateVideoTimestamp(this.getCurrentTime()),this._handleUpdatePlaybackRate())}})),l=s(this.$videoElement,"error",(e=>{if(!this.$videoElement.error)return void this.player.debugError(this.TAG_NAME,"on error",e);let t={};if(this.player.isUseMSE()&&(t=this.player.getMseMineType()),this.player.debugError("Video","Error Code "+this.$videoElement.error.code+" "+ar[this.$videoElement.error.code]+"; Details: "+this.$videoElement.error.message+"; Video Info: "+JSON.stringify(this.videoInfo)+"; Mse Mine Type: "+t.video+"; "),this.player.isUseMSE()){this.$videoElement.error.code;const e=this.$videoElement.error.message;-1!==e.indexOf(nr)&&(this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc=!0),-1!==e.indexOf(lr)&&(this.player.isMSEAudioDecoderError=!0)}this.player.isHlsCanVideoPlay()})),d=s(this.$videoElement,"stalled",(()=>{this._detectAndFixStuckPlayback(!0)}));if(this.progressProxyDestroy=s(this.$videoElement,"progress",(()=>{this._detectAndFixStuckPlayback()})),this.eventListenList.push(r,o,n,l,a,d),this.player.isUseMSE()){const e=s(this.$videoElement,ds,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"ratechange and video is paused and sent isMSEPlaybackRateChangePause true"),this.player.isMSEPlaybackRateChangePause=!0)}));this.eventListenList.push(e),this.player.on(gt.visibilityChange,(e=>{e&&(this.visibilityChangePlayTimeout=setTimeout((()=>{if(this.clearVisibilityChangePlayTimeout(),this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getBufferMaxDelayTime()&&(this.player.debugLog(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.player.debugLog("Video","init")}async destroy(){if(super.destroy(),this.clearCheckVideoCanplayTimeout(),this.clearReplayTimeout(),this.clearVisibilityChangePlayTimeout(),this.clearPauseDelayTimeout(),this._cancelVideoFrameCallback(),this._removeProgressProxyDestroy(),this.eventListenList.length&&(this.eventListenList.forEach((e=>{e()})),this.eventListenList=[]),this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="none",e.style.transform="none"}if(this.$canvasElement&&(this.$canvasElement.height=0,this.$canvasElement.width=0,this.$canvasElement=null),this.canvasContext=null,this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),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.audioTrackGenerator&&(this.audioTrackGenerator.stop(),this.audioTrackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.awriter&&(await this.awriter.close(),this.awriter=null),this._delayPlay=!1,this.mediaStream&&(this.mediaStream.getTracks().forEach((e=>e.stop())),this.mediaStream=null),this.off(),this.player.debugLog("Video","destroy")}_createScreenShotCanvas(){const e=document.createElement("canvas");this.$canvasElement=e,this.canvasContext=e.getContext("2d"),this.canvasContext.imageSmoothingEnabled=!0,this.canvasContext.imageSmoothingEnabled&&(this.canvasContext.imageSmoothingQuality="high")}bindMediaStream(){if(this.player.canVideoTrackWritter()&&Fo()&&Uo()&&!this.mediaStream){this.player.debugLog(this.TAG_NAME,"bindMediaStream"),this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),this.player.useVideoPlayAudio()&&(this.audioTrackGenerator=new MediaStreamTrackGenerator({kind:"audio"}),this.awriter=this.audioTrackGenerator.writable.getWriter());const e=[this.trackGenerator];this.audioTrackGenerator&&e.push(this.audioTrackGenerator),this.mediaStream=new MediaStream(e),this.$videoElement.srcObject=this.mediaStream,this.vwriter=this.trackGenerator.writable.getWriter()}}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog("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=uo(),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(gt.timeUpdate,e),wa(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(gt.timeUpdate,i),wa(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.videoInfo.encTypeCode||this.player.isOldHls()||(e.encTypeCode=Ct),this.updateVideoInfo(e)}this.player.updateStats({fps:!0,ts:i,dts:i}),this.player.updateCurrentPts(i),this.doAddContentToWatermark()}else if(Ea(this.player._opt.useMSE)&&wa(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=To(),t=So();(e||t)&&(this.player.debugLog("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"))}_detectAndFixStuckPlayback(e){const t=this.$videoElement,i=t.buffered,s=t.readyState;if(this.player.debugLog(this.TAG_NAME,`_detectAndFixStuckPlayback() and isStalled is ${e} ,canplayReceived is ${this.canplayReceived} ,videoReadyState is ${s} and bufferedLength is ${i.length} and startTime is ${i.length>0?i.start(0):"null"} and currentTime is ${t.currentTime}`),e||wa(this.canplayReceived)||s<2){if(i.length>0&&t.currentTime=1e3*this.player._opt.mseWaitVideoCanplayTimeout&&(this.player.debugWarn(this.TAG_NAME,`_detectAndFixStuckPlayback() and video is stuck and currentTime is ${t.currentTime} , diff is ${e} and timeout`),this.player.emit(bt.mseWaitVideoCanplayTimeout,e))}}else this._removeProgressProxyDestroy()}_removeProgressProxyDestroy(){this.progressProxyDestroy&&(this.player.debugLog(this.TAG_NAME,"_removeProgressProxyDestroy()"),this.progressProxyDestroy(),this.progressProxyDestroy=null),this.detectAndFixStuckPlaybackStartTime=null}_isNeedAddBackDropFilter(){const e=wo().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.debugLog("Video",`play and readyState: ${e}`),0===e)return this.player.debugLog("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()&&wa(this.isPlaying())){const e=this._getBufferStore();this.player.debugWarn("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.debugLog("Video","_play success"),this.isPlaying()?(this.player.emit(gt.removeLoadingBgImage),this.isRetryPlayingTimes=0,this.isRetryPlaying=!1):this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100)})).catch((e=>{this.player.isDestroyedOrClosed()?this.player.debugLog("Video","_play error and player is isDestroyedOrClosed and return"):(this.player.debugLog("Video",`_play error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debugError("Video","_play error",e),this.isRetryPlaying=!1,this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100))}))}_replay(){if(!this.isPlaying()&&wa(this.player.isDestroyedOrClosed())&&wa(this.isRetryPlaying)){if(this.isRetryPlaying=!0,this.isRetryPlayingTimes>=3){let e="";return void(this.player.isWebrtcH264()?(e=`_replay(webrtc H264) then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error`,this.player.debugError("Video",e),this.player.emitError(bt.videoElementPlayingFailedForWebrtc,e)):(e=`_replay then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error to use canvas render`,this.player.debugError("Video",e),this.player.emitError(bt.videoElementPlayingFailed,e)))}this.player.debugWarn("Video",`_play then but not playing and retry play and isRetryPlayingTimes is ${this.isRetryPlayingTimes}`),this._play(),this.isRetryPlayingTimes++}else this.player.debugLog("Video",`_replay() and isPlaying is ${this.isPlaying()} and isRetryPlaying is ${this.isRetryPlaying} and isDestroyedOrClosed is ${this.player.isDestroyedOrClosed()} and return;`)}pause(e){this.player.debugLog(this.TAG_NAME,"pause and isNow is "+e),this.isPlaying()&&(e?(this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()):this.pauseDelayTimeout=setTimeout((()=>{this.clearPauseDelayTimeout(),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,s){if(!this._canScreenshot())return this.player.debugWarn("Video",`screenshot failed, video is not ready and stats is ${this._getVideoReadyState()}`),null;e=e||uo(),s=s||wt.download;let r=.92;!Zi[t]&&wt[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=this.$videoElement;this.$canvasElement||this._createScreenShotCanvas();let a=this.$canvasElement;a.width=o.videoWidth,a.height=o.videoHeight,this.canvasContext.drawImage(o,0,0,a.width,a.height);const n=Zi[t]||Zi.png,l=a.toDataURL(n,r);if(this.canvasContext.clearRect(0,0,a.width,a.height),a.width=0,a.height=0,s===wt.base64)return l;{const t=co(l);if(s===wt.blob)return t;if(s===wt.download){const i=n.split("/")[1];tn(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{if(ta(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debugWarn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||uo(),e.format=e.format?Zi[e.format]:Zi.png,e.quality=Number(e.quality)||.92,e.type=e.type||wt.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,Vo(o,e).then((i=>{if(e.type===wt.base64)t(o);else{const s=co(i);if(e.type===wt.blob)t(s);else if(e.type===wt.download){t();const i=e.format.split("/")[1];tn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(ta(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debugWarn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||uo(),e.format=e.format?Zi[e.format]:Zi.png,e.quality=Number(e.quality)||.92,e.type=e.type||wt.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,Ho(o,e).then((i=>{if(e.type===wt.base64)t(o);else{const s=co(i);if(e.type===wt.blob)t(s);else if(e.type===wt.download){t();const i=e.format.split("/")[1];tn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotByCurrentWatermark(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.debugWarn("Video","render() error, video is paused and readyState is "+e),4===e&&wa(this.isRenderRetryPlaying)){if(this.isRenderRetryPlaying=!0,this.isRenderRetryPlayingTimes>3){const t="render() error, video is paused and readyState is "+e+", retry times is "+this.isRenderRetryPlayingTimes+", emit error and use canvas render";return this.player.debugError("Video",t),void this.player.emitError(bt.videoElementPlayingFailed,t)}this.$videoElement.play().then((()=>{this.isRenderRetryPlayingTimes=0,this.isRenderRetryPlaying=!1,this.player.debugLog("Video","render() video is paused and replay success")})).catch((e=>{this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes++,this.player.debugLog("Video",`_play error render() error, video is paused and replay error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debugError("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),ca(e.videoFrame);else if(e.output){let s=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=uo());const t=uo();t-this.prevAiFaceDetectTime>this.player._opt.aiFaceDetectInterval&&(s=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=uo());const t=uo();t-this.prevAiObjectDetectTime>this.player._opt.aiObjectDetectInterval&&(s=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=uo());const t=uo();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.debugLog("Video","render() and ai occlusion detect result is true"),this.player.emit(gt.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(gt.aiImageDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debugLog("Video",`render() and ai image detect result type is ${t.type} and drop`)}try{const r=(t=s,i={format:"I420",codedWidth:this.videoInfo.width,codedHeight:this.videoInfo.height,timestamp:1e3*e.ts},new VideoFrame(t,i));this.vwriter.write(r),ca(r)}catch(e){this.player.debugError("Video","render error",e),this.player.emitError(bt.wasmUseVideoRenderError,`code is ${e.code} and message is ${e.message}`)}}this.player.updateCurrentPts(e.ts||0),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}else this.player.debugWarn("Video","render and this.vwriter is null");var t,i}_resize(){this.player.debugLog("Video","_resize()");const e=this.player._opt,t=e.rotate,i=this.player.getShowVideoRect();let s=i.width,r=i.height;this.$videoElement.width=s,this.$videoElement.height=r,this.$videoElement.style.width=s+"px",this.$videoElement.style.height=r+"px",270!==t&&90!==t||(this.$videoElement.width=r,this.$videoElement.height=s,this.$videoElement.style.width=r+"px",this.$videoElement.style.height=s+"px");let o=(s-this.$videoElement.width)/2,a=(r-this.$videoElement.height)/2,n="contain";wa(e.isResize)&&(n="fill"),e.isFullResize&&(n="none");let l="";"none"===e.mirrorRotate&&t&&(l+=" rotate("+t+"deg)"),"level"===e.mirrorRotate?l+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(l+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit=n),this.$videoElement.style.transform=l,this.$videoElement.style.padding="0",this.$videoElement.style.left=o+"px",this.$videoElement.style.top=a+"px"}getType(){return H}getCurrentTime(){return this.$videoElement.currentTime}isPlaying(){return this.$videoElement&&wa(this.$videoElement.paused)&&wa(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}isVideoPlaying(){return this.isPlaying()}_canScreenshot(){return this.$videoElement&&this.$videoElement.readyState>=1}getPlaybackQuality(){let e=null;if(this.$videoElement){if(aa(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:uo()};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)}clearReplayTimeout(){this.replayTimeout&&(clearTimeout(this.replayTimeout),this.replayTimeout=null)}clearVisibilityChangePlayTimeout(){this.visibilityChangePlayTimeout&&(clearTimeout(this.visibilityChangePlayTimeout),this.visibilityChangePlayTimeout=null)}clearPauseDelayTimeout(){this.pauseDelayTimeout&&(clearTimeout(this.pauseDelayTimeout),this.pauseDelayTimeout=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,t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),r>o)this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debugWarn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(bt.mediaSourceBufferedIsZeroError,"video.buffered is empty");if(s>1){const t=this._getPlaybackRate(i-s);e.playbackRate!==t&&(this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${t} `),e.playbackRate=t)}}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?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,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debugWarn(this.TAG_NAME,`checkVideoSourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debugWarn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}getBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}getReadyStateInited(){return this._getVideoReadyState()>=1}}class ln extends on{constructor(e){super(e),this.TAG_NAME="CanvasPlaybackLoader",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(gt.playbackPause,(e=>{e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()})),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){this._stopSync(),this.clear(),this._firstTimestamp=null,this.playing=!1,this.playbackRate=1,this.fps=1,this.preFps=1,this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}_initCanvasRender(){this.player._opt.useWCS?(this.renderType=hi,Ca()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useWebGPU?(this.renderType=pi,this._initContextGPU()):(this.renderType=ci,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),ca(e);else if(aa(e.createImageBitmap))try{e.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),ca(e)}))}catch(e){}else this.context2D.drawImage(e,0,0,this.$videoElement.width,this.$videoElement.height),ca(e);else if(this.getCanvasType()===ci)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debugError(this.TAG_NAME,`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}else if(this.getCanvasType()===pi)try{if(!this.webGPURender)return void this.player.debugWarn(this.TAG_NAME,"doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debugError(this.TAG_NAME,`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.debugLog(this.TAG_NAME,"initFps, has calc fps"):(this.preFps=po(this.player.playback.fps,1,100),this.fps=this.preFps)}setFps(e){e!==this.fps?(e>100&&this.player.debugWarn(this.TAG_NAME,"setFps max",e),e<0&&this.player.debugWarn(this.TAG_NAME,"setFps min",e),this.fps=po(e,1,100),this.player.debugLog(this.TAG_NAME,`setFps ${this.preFps} -> ${this.fps}`),this.player.playback.isUseFpsRender&&this._sync()):this.player.debugLog(this.TAG_NAME,`setFps, same fps ${e}`)}setStreamFps(e){this.player.debugLog(this.TAG_NAME,"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.debugWarn(this.TAG_NAME,`buffer size is ${this.bufferSize}`),this._doPlay()),this.bufferList.push(t),!this._hasCalcFps){const e=ma(this.bufferList);null!==e&&e!==this.preFps&&(this.player.debugLog(this.TAG_NAME,`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.debugLog(this.TAG_NAME,"rate is",t),t<=1?this.setFps(this.preFps):(this.setFps(this.fps+Math.floor(t*this.playbackRate)),this.player.debugWarn(this.TAG_NAME,"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&&ca(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 dn{constructor(e){return new(dn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE?e.mseUseCanvasRender?an:nn:e.isHls&&wa(e.supportHls265)||e.isWebrtc&&wa(e.isWebrtcH265)?e.useCanvasRender?an:nn:e.isAliyunRtc?nn:e.useWCS?e.playType===_?ln:!e.useOffscreen&&e.wcsUseVideoRender?nn:an:e.playType===_?ln:e.wasmUseVideoRender&&!e.useOffscreen?nn:an}}class hn extends Ma{constructor(e){super(),this.bufferList=[],this.player=e,this.$audio=null,this.scriptNode=null,this.workletProcessorNode=null,this.workletWorkerCloseTimeout=null,this.hasInitScriptNode=!1,this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:xr}),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._prevVolume=null,this.playing=!1,this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1,this.hasAudio=!1,this.audioResumeStateTimeout=null,this.audioContextContextResumeLock=!1}async destroy(){return this.closeAudio(),this.resetInit(),this.clearAudioResumeStateTimeout(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.disconnect(),this.scriptNode.onaudioprocess=no,this.scriptNode=null),await this._destroyWorklet(),this.workletProcessorNode&&(this.workletProcessorNode.disconnect(),this.workletProcessorNode.port.onmessage=no,this.workletProcessorNode=null),this.audioBufferSourceNode&&(this.audioBufferSourceNode.stop(),this.audioBufferSourceNode=null),this.mediaStreamAudioDestinationNode&&(this.mediaStreamAudioDestinationNode.disconnect(),this.mediaStreamAudioDestinationNode=null),this.hasInitScriptNode=!1,this._prevVolume=null,this.audioContextContextResumeLock=!1,this.off(),!0}_destroyWorklet(){return new Promise(((e,t)=>{this.workletProcessorNode?(this.workletProcessorNode.port.postMessage({type:"destroy"}),this.workletWorkerCloseTimeout=setTimeout((()=>{this.player.debugLog(this.TAG_NAME,"send close and wait 10ms destroy directly"),this.workletWorkerCloseTimeout&&(clearTimeout(this.workletWorkerCloseTimeout),this.workletWorkerCloseTimeout=null),e()}),10)):e()}))}resetInit(){this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1}getAudioInfo(){return this.audioInfo}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encTypeCode=e.encTypeCode,this.audioInfo.encType=Ft[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(gt.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value||this.isStateSuspended()}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){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=po(e,0,1),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(gt.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(gt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(gt.mute,!0),this.gainNode.gain.value=e,this.player.emit(gt.volumechange,this.player.volume),this.player.emit(gt.volume,this.player.volume),this._prevVolume=e))}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){if(e&&this.isStateSuspended()){if(this.audioContextContextResumeLock)return;this.audioContextContextResumeLock=!0,this.audioContext.resume().then((()=>{this.player.emit(gt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})})).finally((()=>{this.audioContextContextResumeLock=!1})),this.audioResumeStateTimeout=setTimeout((()=>{this.clearAudioResumeStateTimeout(),this.audioContextContextResumeLock=!1,this.isStateSuspended()&&this.player.emit(gt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})}),1e3)}}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 cn{constructor(e,t,i,s){this.player=e,this.audio=t,this.channel=i,this.bufferSize=s}destroy(){this.buffer=null,this.channel=null}extract(e,t){let i=this.provide(t);for(let t=0;t=a){try{for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:0;const s=2*(t=t||0);i>=0||(i=(e.length-s)/2);const r=2*i;this.ensureCapacity(i+this._frameCount);const o=this.endIndex;this.vector.set(e.subarray(s,s+r),o),this._frameCount+=i}putBuffer(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]: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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=2*t,s=this.startIndex;e.set(this._vector.subarray(s,s+i)),this.receive(t)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=this.startIndex+2*t,r=2*i;e.set(this._vector.subarray(s,s+r))}ensureCapacity(){const e=parseInt(2*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0));if(this._vector.length0&&void 0!==arguments[0]?arguments[0]:0;this.ensureCapacity(this._frameCount+e)}rewind(){this._position>0&&(this._vector.set(this._vector.subarray(this.startIndex,this.endIndex)),this._position=0)}}class pn{constructor(e){e?(this._inputBuffer=new un,this._outputBuffer=new un):this._inputBuffer=this._outputBuffer=null}destroy(){this.clear(),this._outputBuffer&&(this._outputBuffer.destroy(),this._outputBuffer=null),this._inputBuffer&&(this._inputBuffer.destroy(),this._inputBuffer=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 fn extends pn{constructor(e){super(e),this.reset(),this._rate=1}destroy(){super.destroy()}set rate(e){this._rate=e}reset(){this.slopeCount=0,this.prevSampleL=0,this.prevSampleR=0}clone(){const e=new fn;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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e)return 0;const t=this._inputBuffer.vector,i=this._inputBuffer.startIndex,s=this._outputBuffer.vector,r=this._outputBuffer.endIndex;let o=0,a=0;for(;this.slopeCount<1;)s[r+2*a]=(1-this.slopeCount)*this.prevSampleL+this.slopeCount*t[i],s[r+2*a+1]=(1-this.slopeCount)*this.prevSampleR+this.slopeCount*t[i+1],a+=1,this.slopeCount+=this._rate;if(this.slopeCount-=1,1!==e)e:for(;;){for(;this.slopeCount>1;)if(this.slopeCount-=1,o+=1,o>=e-1)break e;const n=i+2*o;s[r+2*a]=(1-this.slopeCount)*t[n]+this.slopeCount*t[n+2],s[r+2*a+1]=(1-this.slopeCount)*t[n+1]+this.slopeCount*t[n+3],a+=1,this.slopeCount+=this._rate}return this.prevSampleL=t[i+2*e-2],this.prevSampleR=t[i+2*e-1],a}}const mn=function(){};class gn extends class{constructor(e){this._pipe=e}destroy(){}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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;for(;this.outputBuffer.frameCount2&&void 0!==arguments[2]?arguments[2]:mn;super(t),this.callback=i,this.sourceSound=e,this.historyBufferSize=22050,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}destroy(){this.clear(),this.sourceSound.destroy(),this.sourceSound=null,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}get position(){return this._position}set position(e){if(e>this._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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]: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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.fillOutputBuffer(this.outputBufferPosition+t);const i=Math.min(t,this.outputBuffer.frameCount-this.outputBufferPosition);this.outputBuffer.extract(e,this.outputBufferPosition,i);const s=this.outputBufferPosition+i;return this.outputBufferPosition=Math.min(this.historyBufferSize,s),this.outputBuffer.receive(Math.max(s-this.historyBufferSize,0)),this._position+=i,i}handleSampleData(e){this.extract(e.data,4096)}clear(){super.clear(),this.outputBufferPosition=0}}const yn=[[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]],An=-10/1.5;class bn extends pn{constructor(e){super(e),this._quickSeek=!0,this.midBufferDirty=!1,this.midBuffer=null,this.refMidBuffer=null,this.overlapLength=0,this.autoSeqSetting=!0,this.autoSeekSetting=!0,this._tempo=1,this.setParameters(44100,0,0,8)}destroy(){this.clear(),super.destroy()}clear(){super.clear(),this.clearMidBuffer(),this.refMidBuffer=null}clearMidBuffer(){this.midBufferDirty&&(this.midBufferDirty=!1),this.midBuffer=null}setParameters(e,t,i,s){e>0&&(this.sampleRate=e),s>0&&(this.overlapMs=s),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(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;e=this.sampleRate*t/1e3,e=e<16?16:e,e-=e%8,this.overlapLength=e,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+An*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 bn;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,s=0;for(this.preCalculateCorrelationReferenceStereo(),e=0,t=Number.MIN_VALUE;st&&(t=i,e=s);return e}seekBestOverlapPositionStereoQuick(){let e,t,i,s,r,o=0;for(this.preCalculateCorrelationReferenceStereo(),t=Number.MIN_VALUE,e=0,s=0,r=0;o<4;o+=1){let a=0;for(;yn[o][a]&&(r=s+yn[o][a],!(r>=this.seekLength));)i=this.calculateCrossCorrelationStereo(2*r,this.refMidBuffer),i>t&&(t=i,e=r),a+=1;s=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 s=this._inputBuffer.startIndex+2*(e+this.seekWindowLength-this.overlapLength);this.midBuffer.set(this._inputBuffer.vector.subarray(s,s+2*this.overlapLength)),this.skipFract+=this.nominalSkip,i=Math.floor(this.skipFract),this.skipFract-=i,this._inputBuffer.receive(i)}}}const vn=function(e,t){return(e>t?e-t:t-e)>1e-10};class _n{constructor(){this.transposer=new fn(!1),this.stretch=new bn(!1),this._inputBuffer=new un,this._intermediateBuffer=new un,this._outputBuffer=new un,this._rate=0,this._tempo=0,this.virtualPitch=1,this.virtualRate=1,this.virtualTempo=1,this.calculateEffectiveRateAndTempo()}destroy(){this.clear(),this._inputBuffer.destroy(),this._intermediateBuffer.destroy(),this._outputBuffer.destroy(),this._inputBuffer=null,this._intermediateBuffer=null,this._outputBuffer=null}clear(){this.transposer.clear(),this.stretch.clear()}clone(){const e=new _n;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,vn(this._tempo,e)&&(this.stretch.tempo=this._tempo),vn(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 Sn{constructor(e,t,i){this.player=e,this.audio=t,this.soundTouch=new _n,this.soundTouch.tempo=1,this.soundTouch.rate=1,this.filter=new gn(i,this.soundTouch)}destroy(){this.filter&&(this.filter.destroy(),this.filter=null),this.soundTouch&&(this.soundTouch.destroy(),this.soundTouch=null)}setRate(e){e!==this.soundTouch.rate&&(this.soundTouch.tempo=e)}provide(e){let t=new Float32Array(2*e),i=this.filter.extract(t,e),s=new Float32Array(i),r=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=xs,this.player.debugLog("AudioContext","destroy"),!0}isAudioPlaying(){return this.$audio&&wa(this.$audio.paused)&&wa(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.debugLog("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.debugLog("AudioContext",`play and readyState: ${e}`),!(0!==e||ia()&&To()))return this.player.debugWarn("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.debugLog("AudioContext","_audioElementPlay success"),setTimeout((()=>{this.isAudioPlaying()||(this.player.debugWarn("AudioContext","play failed and retry play"),this._audioElementPlay())}),100),this.isAudioPlaying()&&(this.player.debugLog("AudioContext","play success and remove document click event listener"),document.removeEventListener("click",this._audioElementPlay.bind(this)))})).catch((e=>{this.player.debugError("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===Rs}getBufferListDuration(){return this.bufferList.length*this.oneBufferDuration}isMoreThanMinBufferDuration(){return this.getBufferListDuration()>=100*this.playbackRate}initProcessor(){this.processor=new cn(this.player,this,this.audioInfo.channels,this.audioBufferSize),this.rateProcessor=new Sn(this.player,this,this.processor)}getAutoAudioEngineType(){let e=this.player._opt.audioEngine||xs;const t=()=>{e=ia()&&So()?Rs:(To()&&this.player._opt.supportLockScreenPlayAudio||pa()&&this.supportAudioWorklet(),xs)};return this.player._opt.audioEngine?this.player._opt.audioEngine===Ds&&pa()&&this.supportAudioWorklet()?e=xs:this.player._opt.audioEngine===Rs?e=Rs:this.player._opt.audioEngine===xs?e=xs:t():t(),e}getAudioBufferSizeByType(){const e=this.engineType;this.player._opt.hasVideo;const t=this.player._opt.weiXinInAndroidAudioBufferSize;return e===Ds?1024:e===Rs?t||4800:1024}supportAudioWorklet(){return this.audioContext&&this.audioContext.audioWorklet&&"function"==typeof this.audioContext.audioWorklet.addModule}initScriptNode(){this.playing=!0,this.hasInitScriptNode||(this.initProcessor(),this.engineType===Ds?this.initWorkletScriptNode():this.engineType===Rs?this.initIntervalScriptNode():this.engineType===xs&&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||wa(this.playing)||this.isMute)return void(this.playing&&wa(this.isMute)&&this.player.debugLog("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 s=t[0][0],r=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.debugLog("AudioContext","initWorkletScriptNode() player is destroyed");if(!this.audioContext)return void this.player.debugWarn("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.debugError("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.debugError("AudioContext","workletProcessorNode is null")})})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(this.workletUrl),this.workletUrl=null,this.clearWorkletUrlTimeout=null}),se)}tierDownToProcessScript(){this.player.debugLog("AudioContext","tierDownToProcessScript"),this.engineType=xs,this.audioBufferSize=this.getAudioBufferSizeByType(),this.initProcessScriptNode(),this.audioElementPlay()}handleScriptNodeCallback(e,t){let i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t=t||no;let r=e.length;s&&(i=e,r=this.audioBufferSize);const o=this.audioInfo.channels;if(this.playing&&this.isMoreThanMinBufferDuration()){if(this.player._opt,this.player.openSyncAudioAndVideo()&&Ea(this.player.visibility)){this.calcPlaybackRateBySync();const r=this.player.getAudioSyncVideoDiff();if(r>this.player._opt.syncAudioAndVideoDiff){const a=this.player.getCurrentVideoAndAudio();return this.player.debugWarn("AudioContext",`audioSyncVideoOption more than diff :${r},\n and video is ${a.video} ,\n and audio is ${a.audio} , waiting and bufferList is ${this.bufferList.length}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t()}}let a=this._provide(r);if(0===a.size)return wa(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debugWarn("AudioContext",`bufferList size is ${this.bufferList.length} outputBufferLength is ${r},and bufferItem.size is 0, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t();a&&a.ts&&(this.player.audioTimestamp=a.ts),s?i.port.postMessage({message:"data",buffer:a}):this.fillScriptNodeOutputBuffer(e,o,a),t()}else 0===this.bufferList.length&&this.playing&&wa(this.isMute)&&wa(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debugWarn("AudioContext",`bufferList size is 0 and outputBufferLength is ${r}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),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),s=e.getChannelData(1);i?0===i.size?(t.fill(0),s.fill(0)):(t.set(i.left),s.set(i.right)):(t.fill(0),s.fill(0))}}play(e,t){this.isMute||(this.hasInitScriptNode?(this.hasAudio=!0,this.player.latestAudioTimestamp=t,this.bufferList.push({buffer:e,ts:t}),wa(this.player.openSyncAudioAndVideo())&&this.calcPlaybackRateByBuffer()):this.player.debugWarn("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.debugWarn("AudioContext",`bufferList length ${this.bufferList.length} more than ${e}, and drop`),void this.clear();const t=this.player.getAudioSyncVideoDiff();if(this.getEngineType()===Rs){if(t<-this.player._opt.syncAudioAndVideoDiff){this.player.debugWarn("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.debugLog("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.debugLog("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.debugLog("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 s=Math.floor(t/this.oneBufferDuration),r=Math.floor(i/this.oneBufferDuration);if(this.bufferList.length>r)return this.player.debugWarn("AudioContext",`bufferList length ${this.bufferList.length} more than ${r}, and drop`),void this.clear();this.getEngineType()!==Rs&&(this.bufferList.length>s?(e=this.defaultPlaybackRate+.2,this.player.debugLog("AudioContext",`bufferList length ${this.bufferList.length} more than ${s}, speed up, playbackRate is ${e}`)):this.bufferList.length0?this.player.emit(gt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(gt.mute,!0),this.$video.volume=e,this.player.emit(gt.volumechange,this.player.volume),this.player.emit(gt.volume,this.player.volume),this._prevVolume=e))}clear(){}play(e,t){const i=this.player.video.awriter;if(i)if(e.close)try{i.write(e),ua(e)}catch(e){this.player.debugError("Video","play audio error",e)}else try{const s=function(e,t){const i={...t,format:"f32-planar",data:new Float32Array(0)};if(i.numberOfFrames=e[0].length,1===e.length)i.data=new Float32Array(e[0]);else if(2===e.length){const t=new Float32Array(e[0].length+e[1].length);t.set(e[0],0),t.set(e[1],e[0].length),i.data=t}return new AudioData(i)}(e,{sampleRate:xr,numberOfChannels:this.audioInfo.channels,timestamp:1e3*t});i.write(s),ua(s)}catch(e){this.player.debugError("Video","play audio error",e)}else this.player.debugWarn("Audio","play and this.awriter is null")}pause(){}resume(){}getEngineType(){return"audio"}isPlaybackRateSpeed(){return!1}setRate(){}initScriptNode(){}initScriptNodeDelay(){}audioEnabled(){this.mute(!1)}getAudioBufferSize(){return 2048}}class Tn extends En{constructor(e){super(e),this.delayTimeout=null,this.player.on(gt.playbackPause,(e=>{this.listenPlaybackPause(e)})),this.player.debugLog("AudioPlaybackContext","init")}async destroy(){return this.delayTimeout&&(clearTimeout(this.delayTimeout),this.delayTimeout=null),await super.destroy(),this.player.debugLog("AudioPlaybackLoader","destroy"),!0}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.debugLog("AudioPlaybackContext","setRate",e),this.defaultPlaybackRate=e,this.updatePlaybackRate(e))}}class kn extends En{constructor(e){super(e),this.TAG_NAME="AudioPlayerLoader",this.isAudioPlayer=!0,this.player.debugLog(this.TAG_NAME,"init")}async destroy(){return await super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy"),!0}play(e,t){wa(this.playing)||super.play(e,t)}pause(){this.player.debugLog(this.TAG_NAME,"pause"),this.playing=!1,this.clear()}resume(){this.player.debugLog(this.TAG_NAME,"resume"),this.playing=!0}}class Ln extends Ma{constructor(e){super(),this.TAG_NAME="AudioWebrtcPlayerLoader",this.$video=new Audio,this.player=e,this.init=!1,this._prevVolume=null,this.eventsDestroy=[],this._handleDocumentClickPlay=this._handleClickPlay.bind(this),this._initAudioEvents(),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){return this.resetInit(),this.off(),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this._prevVolume=null,this.$video&&(this.$video.pause(),this.$video.srcObject=null,this.$video=null),this.player.debugLog(this.TAG_NAME,"destroy"),!0}_initAudioEvents(){const{proxy:e}=this.player.events,t=e(this.$video,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t})}));this.eventsDestroy.push(t)}resetInit(){this.init=!1}_handleClickPlay(){this.$video&&(this.$video.play(),document.removeEventListener("click",this._handleDocumentClickPlay))}bindStream(e){this.$video.srcObject=e,this.$video.volume=1,this.$video.play().catch((e=>{this.player.debugWarn(this.TAG_NAME,"audio play error",e),document.addEventListener("click",this._handleDocumentClickPlay)}))}getEngineType(){return"audio"}get isPlaying(){return!0}get volume(){return Ea(this.$video.muted)?0:this.$video.volume}get isMute(){return 0===this.$video.volume||Ea(this.$video.muted)}mute(e){this.setVolume(e?0:this.player.lastVolume||.5)}setVolume(e){e=parseFloat(e),isNaN(e)||null===this.$video||(this.$video.muted&&(this.$video.muted=!1),e=po(e,0,1),To()&&(this.$video.muted=0===e),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(gt.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(gt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(gt.mute,!0),this.$video.volume=e,this.player.emit(gt.volumechange,this.player.volume),this.player.emit(gt.volume,this.player.volume),this._prevVolume=e))}pause(){}resume(){}audioEnabled(){this.mute(!1)}}class Cn{constructor(e){return new(Cn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.playType===_?e.useMSE&&e.mseDecodeAudio?wn:Tn:e.playType===v?e.isWebrtc?Ln:kn:e.isHls&&wa(e.supportHls265)||e.isWebrtc&&wa(e.isWebrtcH265)||e.useMSE&&e.mseDecodeAudio||e.isAliyunRtc||e.useWCS&&e.wcsDecodeAudio||e.useWasm&&e.wasmPlayAudioUseVideoRender?wn:En}}class Dn extends Ma{constructor(e){super(),this.player=e,this.playing=!1,this._requestAbort=!1,this._status=sr,this.writableStream=null,this.abortController=new AbortController,this.streamRate=yo((t=>{e.emit(gt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("FetchStream","init")}async destroy(){return this.abort(),await this._closeWritableStream(),this.off(),this._status=sr,this.streamRate=null,this.stopStreamRateInterval(),this.player.debugLog("FetchStream","destroy"),!0}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}async _closeWritableStream(){if(this.writableStream&&wa(this.writableStream.locked))try{await this.writableStream.close(),this.writableStream=null,this.player.debugLog("FetchStream","close writableStream success")}catch(e){this.player.debugLog("FetchStream","destroy and writableStream.close()",e)}}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player._times.streamStart=uo();const s=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,s).then((e=>{if(this._requestAbort)return this._status=sr,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return this.player.debugError("FetchStream",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),this.abort(),void this.emit(bt.fetchError,`fetch response status is ${e.status} and ok is ${e.ok}`);if(this.emit(gt.streamSuccess),this.startStreamRateInterval(),"undefined"!=typeof WritableStream)this.player.debugLog("FetchStream","use WritableStream() to read stream"),this.writableStream=new WritableStream({write:e=>this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debugLog("FetchStream","writableStream.write() and this.abortController.signal.aborted so return"),void(this._status=or)):Ea(this._requestAbort)?(this.player.debugLog("FetchStream","writableStream.write() and this._requestAbort is true so return"),this._status=or,void this.abort()):"string"!=typeof e?(this._status=rr,this.streamRate&&this.streamRate(e.byteLength),i.dispatch(e)):void this.player.debugWarn("FetchStream",`writableStream.write() and value is "${e}" string so return`),close:()=>{this._status=or,i.close(),this.emit(gt.streamEnd,"fetch done")},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debugLog("FetchStream","writableStream.abort() and this.abortController.signal.aborted so return"),void(this._status=or);i.close();const t=e.toString();-1===t.indexOf(vs)&&-1===t.indexOf(_s)&&e.name!==Ss&&(this.abort(),this.emit(bt.fetchError,e))}}),e.body.pipeTo(this.writableStream).catch((e=>{"AbortError"!==e.name&&this.player.debugLog("FetchStream","res.body.pipeTo() error",e.name,e.toString())}));else{this.player.debugLog("FetchStream","not support WritableStream and use getReader() to read stream");const t=e.body.getReader(),s=()=>{t.read().then((e=>{let{done:t,value:r}=e;return t?(this._status=or,i.close(),void this.emit(gt.streamEnd,"fetch done")):this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debugLog("FetchStream","reader.read() and this.abortController.signal.aborted so return"),void(this._status=or)):Ea(this._requestAbort)?(this.player.debugLog("FetchStream","reader.read() and this._requestAbort is true so return"),this._status=or,void this.abort()):void("string"!=typeof r?(this._status=rr,this.streamRate&&this.streamRate(r.byteLength),i.dispatch(r),s()):this.player.debugWarn("FetchStream",`reader.read() and value is "${r}" string so return`))})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debugLog("FetchStream","reader.read().catch() and this.abortController.signal.aborted so return"),void(this._status=or);i.close();const t=e.toString();-1===t.indexOf(vs)&&-1===t.indexOf(_s)&&e.name!==Ss&&(this.abort(),this.emit(bt.fetchError,e))}))};s()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(bt.fetchError,e))}))}abort(){if(this._requestAbort=!0,this.abortController)try{this.abortController.abort(),this.abortController=null,this.player.debugLog("FetchStream","abortController.abort() success")}catch(e){this.abortController=null,this.player.debugLog("FetchStream","abortController.abort() error",e)}}getStreamType(){return u}}class xn extends Ma{constructor(e){super(),this.TAG_NAME="FetchWorkerLoader",this.player=e,this.playing=!1,this.fetchWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.destroyResolve=null,this.decoderWorkerCloseTimeout=null,this.streamRate=yo((t=>{e.emit(gt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initFetchWorker(),e.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.fetchWorker?(this.player.debugLog(this.TAG_NAME,"send destroy"),this.fetchWorker.postMessage({cmd:it}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn(this.TAG_NAME,"send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)):(this._destroy(),setTimeout((()=>{e()}),0))}))}_destroy(){this.off(),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._stopStreamRateInterval(),this.streamRate=null,this.fetchWorker&&(this.fetchWorker.terminate(),this.fetchWorker.onmessage=null,this.fetchWorker=null),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.player.debugLog(this.TAG_NAME,"destroy")}_initFetchWorker(){const e=Da(function(){function e(e){return!0===e||"true"===e}const t="The user aborted a request",i="AbortError",s="AbortError",r="fetch",o="destroy",a="destroyEnd",n="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(){var e;this.abort(),this.writableStream&&(!1===(e=this.writableStream.locked)||"false"===e)&&this.writableStream.close().catch((e=>{})),this.writableStream=null,this._status=c}fetchStream(r){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=Object.assign({signal:this.abortController.signal},{headers:o.headers||{}});fetch(r,a).then((r=>{if(this._requestAbort)return this._status=c,void r.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(r))return this.abort(),void postMessage({cmd:l,message:`fetch response status is ${r.status} and ok is ${r.ok}`});if(postMessage({cmd:h}),"undefined"!=typeof WritableStream)this.writableStream=new WritableStream({write:t=>{if(!(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted))return e(this._requestAbort)?(this._status=p,void this.abort()):void("string"!=typeof t&&(this._status=u,postMessage({cmd:n,buffer:t},[t.buffer])));this._status=p},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 r=e.toString();-1===r.indexOf(t)&&-1===r.indexOf(i)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}}),r.body.pipeTo(this.writableStream).catch((e=>{}));else{const o=r.body.getReader(),a=()=>{o.read().then((t=>{let{done:i,value:s}=t;return i?(this._status=p,void postMessage({cmd:d})):this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?void(this._status=p):e(this._requestAbort)?(this._status=p,void this.abort()):void("string"!=typeof s&&(this._status=u,postMessage({cmd:n,buffer:s},[s.buffer]),a()))})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=p);const r=e.toString();-1===r.indexOf(t)&&-1===r.indexOf(i)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}))};a()}})).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.abortController)try{this.abortController.abort(),this.abortController=null}catch(e){this.abortController=null}}};self.onmessage=t=>{const i=t.data;switch(i.cmd){case r:f.isChrome=e(i.isChrome),f.fetchStream(i.url,JSON.parse(i.options));break;case o:f.destroy(),f=null,postMessage({cmd:a})}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),se),s.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case rt:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case nt:this.emit(gt.streamSuccess),this._startStreamRateInterval();break;case at:t.close(),this.emit(gt.streamEnd,"fetch done");break;case ot:t.close(),this.emit(bt.fetchError,i.message);break;case st:this._destroy()}},this.fetchWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player._times.streamStart=uo(),this.fetchWorker.postMessage({cmd:tt,url:e,isChrome:sa(),options:JSON.stringify(t)})}getStreamType(){return u}}class Rn extends Ma{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=vt,this.wsUrl=null,this.requestAbort=!1,this.socketDestroyFnList=[],this.streamRate=yo((t=>{e.emit(gt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("WebsocketStream","init")}async destroy(){this._closeWebSocket(),this.stopStreamRateInterval(),this.wsUrl=null,this.off(),this.player.debugLog("WebsocketStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebSocket(e){const t=this.player,{events:{proxy:i},demux:s}=t,r=e.protocols||[];this.socket=new WebSocket(this.wsUrl,r),this.socket.binaryType="arraybuffer";const o=i(this.socket,"open",(()=>{this.player.debugLog("WebsocketStream","socket open"),this.socketStatus=_t,this.emit(gt.streamSuccess),this.player.emit(gt.websocketOpen),this.startStreamRateInterval()})),a=i(this.socket,"message",(e=>{"string"!=typeof e.data?(this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)):this.player.debugWarn("WebsocketStream",`websocket handle message message is "${e.data}" string so return`)})),n=i(this.socket,"close",(e=>{if(!this.player.isDestroyedOrClosed())return Ea(this.requestAbort)?(this.requestAbort=!1,void this.player.debugLog("WebsocketStream","socket close and requestAbort is true")):void(this.socketStatus!==Et?(this.player.debugLog("WebsocketStream",`socket close and code is ${e.code}`),1006===e.code&&this.player.debugError("WebsocketStream",`socket close abnormally and code is ${e.code}`),s.close(),this.socketStatus=St,this.player.emit(gt.websocketClose,e.code),this.emit(gt.streamEnd,e.code)):this.player.debugLog("WebsocketStream","socket close and status is error, so return"))})),l=i(this.socket,"error",(e=>{if(this.player.isDestroyedOrClosed())return;if(Ea(this.requestAbort))return this.requestAbort=!1,void this.player.debugLog("WebsocketStream","socket close and requestAbort is true");this.player.debugError("WebsocketStream","socket error",e),this.socketStatus=Et;const t=e.isTrusted?"websocket user aborted":"websocket error";this.emit(bt.websocketError,t),s.close(),this.player.debugLog("WebsocketStream","socket error:",t)}));this.socketDestroyFnList.push(o,a,n,l)}_closeWebSocket(){!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState?this.socket&&this.player.debugLog("WebsocketStream",`_closeWebSocket() socket is null or socket status is ${this.socket&&this.socket.readyState}`):(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socketDestroyFnList.forEach((e=>e())),this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.socketStatus=vt,this.streamRate=null}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debugWarn("WebsocketStream","websocket handle message demux is null so return")}fetchStream(e,t){this.player._times.streamStart=uo(),this.wsUrl=e,this._createWebSocket(t)}sendMessage(e){this.socket?this.socketStatus===_t?this.socket.send(e):this.player.debugError("WebsocketStream",`websocket send message error and socket status is ${this.socketStatus}`):this.player.debugError("WebsocketStream","websocket send message socket is null")}getStreamType(){return f}}class Pn extends Ma{constructor(e){super(),this.player=e,this.TAG_NAME="WebsocketWorkerLoader",this.wsUrl=null,this.socketStatus=vt,this.websocketWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.destroyResolve=null,this.decoderWorkerCloseTimeout=null,this.streamRate=yo((t=>{e.emit(gt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initWebsocketWorker(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.websocketWorker?(this.player.debugLog(this.TAG_NAME,"send destroy"),this._closeWebSocket(),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn(this.TAG_NAME,"send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),e()}),2e3)):(this._destroy(),e())}))}_destroy(){this.off(),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._stopStreamRateInterval(),this.streamRate=null,this.websocketWorker&&(this.websocketWorker.terminate(),this.websocketWorker.onmessage=null,this.websocketWorker=null),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.wsUrl=null,this.player.debugLog(this.TAG_NAME,"destroy")}_initWebsocketWorker(){const e=Da(function(){function e(e){return!0===e||"true"===e}const t={fetch:"fetch",sendMessage:"sendMessage",destroy:"destroy",destroyEnd:"destroyEnd",buffer:"buffer",websocketError:"websocketError",websocketClose:"websocketClose",websocketOpen:"websocketOpen"};let i=new class{constructor(){this.socket=null,this.wsUrl=null,this.requestAbort=!1}destroy(){!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState||(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socket.onopen=null,this.socket.onclose=null,this.socket.onerror=null,this.socket.onmessage=null,this.socket=null}fetchStream(e,t){this.wsUrl=e,this._createWebSocket(t)}sendMessage(e){this.socket&&1===this.socket.readyState&&this.socket.send(e)}_createWebSocket(e){const t=e.protocols||[];this.socket=new WebSocket(this.wsUrl,t),this.socket.binaryType="arraybuffer",this.socket.onopen=this._handleWebsocketOpen.bind(this),this.socket.onclose=this._handleWebsocketClose.bind(this),this.socket.onerror=this._handleWebsocketError.bind(this),this.socket.onmessage=this._handleWebsocketMessage.bind(this)}_handleWebsocketOpen(){postMessage({cmd:t.websocketOpen})}_handleWebsocketClose(i){e(this.requestAbort)?this.requestAbort=!1:postMessage({cmd:t.websocketClose,code:i.code})}_handleWebsocketError(i){e(this.requestAbort)?this.requestAbort=!1:postMessage({cmd:t.websocketError,isTrusted:i.isTrusted})}_handleWebsocketMessage(e){if("string"==typeof e.data)return;const i=new Uint8Array(e.data);postMessage({cmd:t.buffer,buffer:i},[i.buffer])}};self.onmessage=e=>{const s=e.data;switch(s.cmd){case t.fetch:i.fetchStream(s.url,s.options);break;case t.destroy:i.destroy(),i=null,postMessage({cmd:t.destroyEnd});break;case t.send:i.sendMessage(s.message)}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),se),s.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case ut:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case mt:this.player.debugLog(this.TAG_NAME,"socket open"),this.socketStatus=_t,this.emit(gt.streamSuccess),this.player.emit(gt.websocketOpen),this._startStreamRateInterval();break;case ft:if(this.player.isDestroyedOrClosed())return;if(this.socketStatus===Et)return void this.player.debugLog(this.TAG_NAME,"socket close and status is error, so return");this.player.debugLog(this.TAG_NAME,`socket close and code is ${i.code}`),1006===i.code&&this.player.debugError(this.TAG_NAME,`socket close abnormally and code is ${i.code}`),t.close(),this.socketStatus=St,this.player.emit(gt.websocketClose,i.code),this.emit(gt.streamEnd,i.code);break;case pt:if(this.player.isDestroyedOrClosed())return;this.player.debugError(this.TAG_NAME,"socket error"),this.socketStatus=Et;const e=i.isTrusted?"websocket user aborted":"websocket error";this.emit(bt.websocketError,e),t.close(),this.player.debugLog(this.TAG_NAME,"socket error:",e);break;case ct:this._destroy()}},this.websocketWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_closeWebSocket(){this.websocketWorker&&this.websocketWorker.postMessage({cmd:ht})}fetchStream(e,t){this.player._times.streamStart=uo(),this.wsUrl=e,this.websocketWorker&&this.websocketWorker.postMessage({cmd:lt,url:e,options:t})}sendMessage(e){this.websocketWorker&&this.websocketWorker.postMessage({cmd:dt,message:e})}getStreamType(){return f}}class In extends Ma{constructor(e){super(),this.player=e,e.debugLog("HlsStream","init")}async destroy(){return this.off(),this.player.debugLog("HlsStream","destroy"),!0}fetchStream(e){const{hlsDecoder:t,debug:i}=this.player;this.player._times.streamStart=uo(),t.loadSource(e).then((()=>{this.player.debugLog("HlsStream","loadSource success"),this.emit(gt.streamSuccess)})).catch((e=>{this.emit(bt.hlsError,e)}))}getStreamType(){return p}}class Bn extends Ma{constructor(e){super(),this.player=e,this.webrctUrl=null,e.debugLog("WebrtcStream","init")}async destroy(){return this.webrctUrl=null,this.off(),this.player.debugLog("WebrtcStream","destroy"),!0}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{webrtc:i,debug:s}=this.player;if(this.player._times.streamStart=uo(),this.webrctUrl=e.replace("webrtc:",window.location.protocol),this.player.isWebrtcForM7S()&&-1===this.webrctUrl.indexOf("/webrtc/play")){const t=new URL(this.webrctUrl),i="/webrtc/play"+t.pathname;this.webrctUrl=t.origin+i+t.search,this.player.debugLog("WebrtcStream",`original url is ${e}, and new url is: ${this.webrctUrl}`)}i.loadSource(this.webrctUrl,t).then((()=>{this.player.debugLog("WebrtcStream","loadSource success"),this.emit(gt.streamSuccess)})).catch((e=>{this.player.debugError("WebrtcStream","loadSource error",e),this.emit(bt.webrtcError,e)}))}getStreamType(){return m}}class Mn extends Ma{constructor(e){super(),this.player=e,this.transport=null,this.wtUrl=null,this.streamRate=yo((t=>{e.emit(gt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("WebTransportLoader","init")}async destroy(){return this.abort(),this.off(),this.player.debugLog("WebTransportLoader","destroy"),!0}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:s}=e;try{this.transport=new WebTransport(this.wtUrl),this.transport.ready.then((()=>{this.emit(gt.streamSuccess),this.startStreamRateInterval(),this.transport.createBidirectionalStream().then((e=>{e.readable.pipeTo(new WritableStream(s.input))}))})).catch((e=>{this.player.debugWarn("WebTransportLoader","_createWebTransport-ready",e)}))}catch(e){this.player.debugWarn("WebTransportLoader","_createWebTransport",e)}}fetchStream(e){this.player._times.streamStart=uo(),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 g}}class Fn extends Ma{constructor(e){super(),this.player=e,this.workUrl=null,e.debugLog("WorkerStream","init")}async destroy(){return this.workUrl=null,this.off(),this.player.debugLog("WorkerStream","destroy"),!0}sendMessage(e){this.player.decoderWorker.workerSendMessage(e)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.workUrl=e,this.player._times.streamStart=uo(),this.player.decoderWorker.workerFetchStream(e,t)}getStreamType(){const e=this.player._opt.protocol;return y+" "+(e===a?u:f)}}class Un extends Ma{constructor(e){super(),this.TAG_NAME="AliyunRtcLoader",this.player=e,e.debugLog(this.TAG_NAME,"init")}async destroy(){return this.off(),this.player.debugLog(this.TAG_NAME,"destroy"),!0}fetchStream(e){const{aliyunRtcDecoder:t}=this.player;this.player._times.streamStart=uo(),t.loadSource(e).then((()=>{this.player.debugLog(this.TAG_NAME,"loadSource success"),this.emit(gt.streamSuccess)})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource error",e),this.emit(bt.aliyunRtcError,e)}))}getStreamType(){return A}}class On{constructor(e){return new(On.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){const{protocol:t,useWasm:i,playType:s,useWCS:r,useMSE:c,demuxUseWorker:u,mainThreadFetchUseWorker:p}=e;return t===a?s===v?Fn:s===b?i&&!da(e)||u?Fn:p?xn:Dn:r||c?u?Fn:p?xn:Dn:Fn:t===o?s===v?Fn:s===b?i&&!da(e)||u?Fn:p?Pn:Rn:r||c?u?Fn:p?Pn:Rn:Fn:t===n?In:t===l?Bn:t===d?Mn:t===h?Un:void 0}}var Nn=Ur((function(e){function t(e,r){if(!e)throw"First parameter is required.";r=new i(e,r=r||{type:"video"});var o=this;function a(t){t&&(r.initCallback=function(){t(),t=r.initCallback=null});var i=new s(e,r);(p=new i(e,r)).record(),u("recording"),r.disableLogs||console.log("Initialized recorderType:",p.constructor.name,"for output-type:",r.type)}function n(e){if(e=e||function(){},p){if("paused"===o.state)return o.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===o.state||r.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',o.state),r.disableLogs||console.log("Stopped recording "+r.type+" stream."),"gif"!==r.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]&&(o[e]=p[e])}));var i=p.blob;if(!i){if(!t)throw"Recording failed.";p.blob=i=t}if(i&&!r.disableLogs&&console.log(i.type,"->",y(i.size)),e){var s;try{s=h.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(o,s):e(s)}r.autoWriteToDisk&&d((function(e){var t={};t[r.type+"Blob"]=e,D.Store(t)}))}else"function"==typeof e.call?e.call(o,""):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 r.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 s=new FileReader;s.readAsDataURL(i),s.onload=function(t){e(t.target.result)}}else{var o=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);o.onmessage=function(t){e(t.data)},o.postMessage(i)}}function c(e){e=e||0,"paused"!==o.state?"stopped"!==o.state&&(e>=o.recordingDuration?n(o.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){o&&(o.state=e,"function"==typeof o.onStateChanged.call?o.onStateChanged.call(o,e):o.onStateChanged(e))}var p,f='It seems that recorder is destroyed or "startRecording" is not invoked for '+r.type+" recorder.";function m(){!0!==r.disableLogs&&console.warn(f)}var g={startRecording:function(t){return r.disableLogs||console.log("RecordRTC version: ",o.version),t&&(r=new i(e,t)),r.disableLogs||console.log("started recording "+r.type+" stream."),p?(p.clearRecordedData(),p.record(),u("recording"),o.recordingDuration&&c(),o):(a((function(){o.recordingDuration&&c()})),o)},stopRecording:n,pauseRecording:function(){p?"recording"===o.state?(u("paused"),p.pause(),r.disableLogs||console.log("Paused recording.")):r.disableLogs||console.warn("Unable to pause the recording. Recording state: ",o.state):m()},resumeRecording:function(){p?"paused"===o.state?(u("recording"),p.resume(),r.disableLogs||console.log("Resumed recording.")):r.disableLogs||console.warn("Unable to resume the recording. Recording state: ",o.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return o.recordingDuration=e,o.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){o.onRecordingStopped=e}}},clearRecordedData:function(){p?(p.clearRecordedData(),r.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(r.type,e):m()},setAdvertisementArray:function(e){r.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),f=!u&&!c&&!!navigator.webkitGetUserMedia||b()||-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 g=window.MediaStream;function y(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 s=t.split(".");t=s[0],i=s[1]}var r=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,r);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,r);var o=document.createElement("a");o.href=h.createObjectURL(e),o.download=r,o.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(o),"function"==typeof o.click?o.click():(o.target="_blank",o.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),h.revokeObjectURL(o.href)}function b(){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 v(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===g&&"undefined"!=typeof webkitMediaStream&&(g=webkitMediaStream),void 0!==g&&void 0===g.prototype.stop&&(g.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),t.invokeSaveAsDialog=A,t.getTracks=v,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,s=new EBML.Decoder,r=EBML.tools,o=new FileReader;o.onload=function(e){s.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var o=r.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([o,a],{type:"video/webm"});t(n)},o.readAsArrayBuffer(e)},t.bytesToSize=y,t.isElectron=b;var S={};function E(){if(p||m||c)return!0;var e,t,i=navigator.userAgent,s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10);return(f||u)&&(e=i.indexOf("Chrome"),s=i.substring(e+7)),-1!==(t=s.indexOf(";"))&&(s=s.substring(0,t)),-1!==(t=s.indexOf(" "))&&(s=s.substring(0,t)),r=parseInt(""+s,10),isNaN(r)&&(s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10)),r>=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 s;if(v(e,"video").length&&v(e,"audio").length)navigator.mozGetUserMedia?(s=new g).addTrack(v(e,"audio")[0]):s=new g(v(e,"audio")),e=s;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 r,o=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return r&&r.mimeType?r.mimeType:e.mimeType||"video/webm"}function l(){o=[],r=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return o},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],o=[];var s=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",s),r&&(r=null),f&&!E()&&(s="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&s.mimeType&&(MediaRecorder.isTypeSupported(s.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType),s.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{r=new MediaRecorder(e,s),t.mimeType=s.mimeType}catch(t){r=new MediaRecorder(e)}s.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in r&&!1===r.canRecordMimeType(s.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType)),r.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+y(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:n(s)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(o.push(e.data),a(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)});t.ondataavailable(r)}},r.onstart=function(){d.push("started")},r.onpause=function(){d.push("paused")},r.onresume=function(){d.push("resumed")},r.onstop=function(){d.push("stopped")},r.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 (",s.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&&r&&"inactive"===r.state)return delete t.timeslice,void r.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==r.state&&"stopped"!==r.state&&r.stop())},"number"==typeof t.timeSlice?(a(),r.start(t.timeSlice)):r.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,r&&(this.recordingCallback=e,"recording"===r.state&&r.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(o,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){r&&"recording"===r.state&&r.pause()},this.resume=function(){r&&"paused"===r.state&&r.resume()},this.clearRecordedData=function(){r&&"recording"===r.state&&i.stop(l),l()},this.getInternalRecorder=function(){return r},this.blob=null,this.getState=function(){return r&&r.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function s(){if(r&&!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(s,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function T(e,i){if(!v(e,"audio").length)throw"Your stream has no audio tracks.";var s,r=this,o=[],a=[],n=!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,s=e.numberOfAudioChannels,r=e.leftBuffers.slice(0),o=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,l=e.desiredSampRate;function d(e,t,i){var s=Math.round(e.length*(t/i)),r=[],o=Number((e.length-1)/(s-1));r[0]=e[0];for(var a=1;a96e3)&&(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 b=!1;function _(){o=[],a=[],l=0,E=!1,n=!1,b=!1,f=null,r.leftchannel=o,r.rightchannel=a,r.numberOfAudioChannels=d,r.desiredSampRate=c,r.sampleRate=A,r.recordingLength=l,w={left:[],right:[],recordingLength:0}}function S(){s&&(s.onaudioprocess=null,s.disconnect(),s=null),m&&(m.disconnect(),m=null),_()}this.pause=function(){b=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();b=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;s.onaudioprocess=function(e){if(!b)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),s.disconnect(),n=!1),n){E||(E=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),h=new Float32Array(t);if(o.push(h),2===d){var c=e.inputBuffer.getChannelData(1),p=new Float32Array(c);a.push(p)}l+=y,r.recordingLength=l,void 0!==i.timeSlice&&(w.recordingLength+=y,w.left.push(h),2===d&&w.right.push(p))}else m&&(m.disconnect(),m=null)},f.createMediaStreamDestination?s.connect(f.createMediaStreamDestination()):s.connect(f.destination),this.leftchannel=o,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=A,r.recordingLength=l;var w={left:[],right:[],recordingLength:0};function T(){n&&"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 s=new Blob([t],{type:"audio/wav"});i.ondataavailable(s),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 s,r,o,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&l&&l[2]&&(n=parseInt(l[2],10)),a&&n<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)s=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";s=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(o=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in s?e=s.captureStream(25):"mozCaptureStream"in s?e=s.mozCaptureStream(25):"webkitCaptureStream"in s&&(e=s.webkitCaptureStream(25));try{var a=new g;a.addTrack(v(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(r=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 s=p.frames.length;p.frames.forEach((function(e,i){var r=s-i;t.disableLogs||console.log(r+"/"+s+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(r,s);var o=e.image.toDataURL("image/webp",1);p.frames[i].image=o})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){o=!1;var s=this;i&&r?r.stop(e):this.getWebPImages((function(){p.compile((function(i){t.disableLogs||console.log("Recording finished!"),s.blob=i,s.blob.forEach&&(s.blob=new Blob([],{type:"video/webm"})),e&&e(s.blob),p.frames=[]}))}))};var d=!1;function h(){p.frames=[],o=!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:(s=document.createElement("canvas"),r=s.getContext("2d"),s.width=e.width,s.height=e.height,r.drawImage(e,0,0),s),duration:i}),void(o&&setTimeout(c,t.frameInterval))}var s,r;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}),o&&setTimeout(c,t.frameInterval)}})}this.pause=function(){d=!0,r instanceof w&&r.pause()},this.resume=function(){d=!1,r instanceof w?r.resume():o||this.record()},this.clearRecordedData=function(){o&&this.stop(h),h()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),p=new C.Video(100)}function L(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-l;return t?o?(l=(new Date).getTime(),setTimeout(i,100)):(l=(new Date).getTime(),n.paused&&n.play(),c.drawImage(n,0,0,h.width,h.height),d.frames.push({duration:t,image:h.toDataURL("image/webp")}),void(r||setTimeout(i,e,e))):setTimeout(i,e,e)}function s(e,t,i,s,r){var o=document.createElement("canvas");o.width=h.width,o.height=h.height;var a=o.getContext("2d"),n=[],l=-1===t,d=t&&t>0&&t<=e.length?t:e.length,c=0,u=0,p=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),m=i&&i>=0&&i<=1?i:0,g=s&&s>=0&&s<=1?s:0,y=!1;!function(e){var t=-1,i=e.length;!function s(){++t!==i?setTimeout((function(){e.functionToLoop(s,t)}),1):e.callback()}()}({length:d,functionToLoop:function(t,i){var s,r,o,d=function(){!y&&o-s<=o*g||(l&&(y=!0),n.push(e[i])),t()};if(y)d();else{var A=new Image;A.onload=function(){a.drawImage(A,0,0,h.width,h.height);var e=a.getImageData(0,0,h.width,h.height);s=0,r=e.data.length,o=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({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 s(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*o[0].width:o[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),r.height=o[0].height*n}else r.width=a.width||360,r.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),o.forEach((function(e,t){u(e,t)})),setTimeout(c,a.frameInterval)}}function u(e,t){if(!s){var i=0,r=0,a=e.width,n=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&&(n=e.stream.height),o.drawImage(e,i,r,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(o,i,r,a,n,t)}}function p(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function f(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=p(e);t.stream=e,i.push(t)}}))}void 0!==n?h.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(h.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){c()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var s=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var r=p(t);r.stream=t,i.push(r),s.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var o=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),o.connect(a.audioDestination),s.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(s)}))},this.releaseStreams=function(){i=[],s=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,o.clearRect(0,0,r.width,r.height),r.stream&&(r.stream.stop(),r.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),f(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){s=!1;var t=function(){var e;f(),"captureStream"in r?e=r.captureStream():"mozCaptureStream"in r?e=r.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),r.stream=t,t}(),i=function(){h.AudioContextConstructor||(h.AudioContextConstructor=new h.AudioContext);a.audioContext=h.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.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=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.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 P(e,t){e=e||[];var i,s,r=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 r;i=new R(e,t.elementClass||"multi-streams-mixer"),(r=[],e.forEach((function(e){v(e,"video").forEach((function(e){r.push(e)}))})),r).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()),(s=new w(i.getMixedStream(),t)).record()},this.stop=function(e){s&&s.stop((function(t){r.blob=t,e(t),r.clearRecordedData()}))},this.pause=function(){s&&s.pause()},this.resume=function(){s&&s.resume()},this.clearRecordedData=function(){s&&(s.clearRecordedData(),s=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(r){if(!r)throw"First parameter is required.";r instanceof Array||(r=[r]),e.concat(r),s&&i&&(i.appendStreams(r),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 I(e,t){var i,s,r;function o(){return new ReadableStream({start:function(s){var r=document.createElement("canvas"),o=document.createElement("video"),a=!0;o.srcObject=e,o.muted=!0,o.height=t.height,o.width=t.width,o.volume=0,o.onplaying=function(){r.width=t.width,r.height=t.height;var e=r.getContext("2d"),n=1e3/t.frameRate,l=setInterval((function(){if(i&&(clearInterval(l),s.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(o,0,0),"closed"!==s._controlledReadableStream.state)try{s.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},o.play()}})}function a(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){a(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."),(s=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),s.addEventListener("message",(function(e){"READY"===e.data?(s.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),o().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):s.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(r||n.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(){n=[],r=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){s?(s.addEventListener("message",(function(t){null===t.data&&(s.terminate(),s=null,e&&e())})),s.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],r=!1,this.blob=null},this.blob=null}t.DiskStorage=D,t.GifRecorder=x,t.MultiStreamRecorder=P,t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var s=this;s.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{s.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{s.recordRTC.stopRecording((function(i){s.blob=s.recordRTC.getBlob(),s.blob&&s.blob.size?e(i):t("Empty blob.",s.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{s.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{s.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{s.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(s.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(s.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(s.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(s.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(s.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},t.WebAssemblyRecorder=I}));class jn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseSPS(e){let t=jn._ebsp2rbsp(e),i=new Nr(t);i.readByte();let s=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let o=jn.getProfileString(s),a=jn.getLevelString(r),n=1,l=420,d=[0,420,422,444],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)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(l=d[n]),h=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],_=s[e-1]):255===e&&(v=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(),w=t,T=2*e,S=w/T}}let k=1;1===v&&1===_||(k=v/_);let L=0,C=0;if(0===n)L=1,C=2-m;else{L=3===n?1:2,C=(1===n?2:1)*(2-m)}let D=16*(p+1),x=16*(f+1)*(2-m);D-=(g+y)*L,x-=(A+b)*C;let R=Math.ceil(D*k);return i.destroy(),i=null,{profile_string:o,level_string:a,bit_depth:h,ref_frames:u,chroma_format:l,chroma_format_string:jn.getChromaFormatString(l),frame_rate:{fixed:E,fps:S,fps_den:T,fps_num:w},sar_ratio:{width:v,height:_},codec_size:{width:D,height:x},present_size:{width:R,height:x}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let s=t[e].toString(16);s.length<2&&(s="0"+s),i+=s}let s=jn._ebsp2rbsp(e),r=new Nr(s);r.readByte();let o=r.readByte();r.readByte();let a=r.readByte();r.readUEG();let n=jn.getProfileString(o),l=jn.getLevelString(a),d=1,h=420,c=[0,420,422,444],u=8,p=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(d=r.readUEG(),3===d&&r.readBits(1),d<=3&&(h=c[d]),u=r.readUEG()+8,p=r.readUEG()+8,r.readBits(1),r.readBool())){let e=3!==d?8:12;for(let t=0;t0&&e<16?(E=t[e-1],w=i[e-1]):255===e&&(E=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);k=r.readBool(),L=t,C=2*e,T=L/C}}let D=1;1===E&&1===w||(D=E/w);let x=0,R=0;if(0===d)x=1,R=2-A;else{x=3===d?1:2,R=(1===d?2:1)*(2-A)}let P=16*(g+1),I=16*(y+1)*(2-A);P-=(b+v)*x,I-=(_+S)*R;let B=Math.ceil(P*D);return r.destroy(),r=null,{codec_mimetype:i,profile_idc:o,level_idc:a,profile_string:n,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:jn.getChromaFormatString(h),frame_rate:{fixed:k,fps:T,fps_den:C,fps_num:L},sar_ratio:{width:E,height:w},codec_size:{width:P,height:I},present_size:{width:B,height:I}}}static _skipScalingList(e,t){let i=8,s=8,r=0;for(let o=0;o=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,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}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]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.sps,4),t.sps=s}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.pps,4),t.pps=s}return t}function Wn(e){let{sps:t,pps:i}=e,s=8+t.byteLength+1+2+i.byteLength,r=!1;const o=jn.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(r=!0,s+=4);let a=new Uint8Array(s);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let n=t.byteLength;a[6]=n>>>8,a[7]=255&n;let l=8;a.set(t,8),l+=n,a[l]=1;let d=i.byteLength;a[l+1]=d>>>8,a[l+2]=255&d,a.set(i,l+3),l+=3+d,r&&(a[l]=252|o.chroma_format_idc,a[l+1]=248|o.bit_depth_luma-8,a[l+2]=248|o.bit_depth_chroma-8,a[l+3]=0,l+=4);const h=[23,0,0,0,0],c=new Uint8Array(h.length+a.byteLength);return c.set(h,0),c.set(a,h.length),c}function Vn(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function $n(e){return 31&e[0]}function Hn(e){return e===zt}function Jn(e){return!function(e){return e===Ut||e===Ot}(e)&&!Hn(e)}function qn(e){return e===Nt}class Kn{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H264 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=31&e[i],r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,s>=$t||0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class Yn{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Qn=e=>{let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)},Xn=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"}};class Zn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseVPS(e){let t=Zn._ebsp2rbsp(e),i=new Nr(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=Zn._ebsp2rbsp(e),i=new Nr(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=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(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),S=[],E=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<=16?(B=t[e-1],M=s[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(),P=i.readBool(),P&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()){if(U=i.readBits(32),O=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool()){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();F=r;let o=!0,a=1;r||(o=i.readBool());let n=!1;if(o?i.readUEG():n=i.readBool(),n||(a=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 s=e[22],r=e.slice(23);for(let e=0;e0)for(let t=i;t<8;t++)e.read(2);s.sub_layer_profile_space=[],s.sub_layer_tier_flag=[],s.sub_layer_profile_idc=[],s.sub_layer_profile_compatibility_flag=[],s.sub_layer_progressive_source_flag=[],s.sub_layer_interlaced_source_flag=[],s.sub_layer_non_packed_constraint_flag=[],s.sub_layer_frame_only_constraint_flag=[],s.sub_layer_level_idc=[];for(let t=0;t{let t=Qn(e),i=new Nr(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()}})(t),a=(e=>{let t=Qn(e),i=new Nr(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=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(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),S=[],E=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(B=t[e-1],M=s[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(),P=i.readBool(),P&&(s+=i.readUEG(),r+=i.readUEG(),o+=i.readUEG(),a+=i.readUEG()),i.readBool()&&(U=i.readBits(32),O=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();F=r;let o=!1,a=1;r||(o=i.readBool());let n=!1;if(o?i.readSEG():n=i.readBool(),n||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=Qn(e),i=new Nr(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 s=i.readBool(),r=i.readBool(),o=1;return r&&s?o=0:r?o=3:s&&(o=2),{parallelismType:o}})(i);r=Object.assign(r,o,a,n);let l=23+(5+t.byteLength)+(5+s.byteLength)+(5+i.byteLength),d=new Uint8Array(l);d[0]=1,d[1]=(3&r.general_profile_space)<<6|(r.general_tier_flag?1:0)<<5|31&r.general_profile_idc,d[2]=r.general_profile_compatibility_flags_1||0,d[3]=r.general_profile_compatibility_flags_2||0,d[4]=r.general_profile_compatibility_flags_3||0,d[5]=r.general_profile_compatibility_flags_4||0,d[6]=r.general_constraint_indicator_flags_1||0,d[7]=r.general_constraint_indicator_flags_2||0,d[8]=r.general_constraint_indicator_flags_3||0,d[9]=r.general_constraint_indicator_flags_4||0,d[10]=r.general_constraint_indicator_flags_5||0,d[11]=r.general_constraint_indicator_flags_6||0,d[12]=60,d[13]=240|(3840&r.min_spatial_segmentation_idc)>>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|Xt,d[24]=0,d[25]=1,d[26]=(65280&t.byteLength)>>8,d[27]=(255&t.byteLength)>>0,d.set(t,28),d[23+(5+t.byteLength)+0]=128|ei,d[23+(5+t.byteLength)+1]=0,d[23+(5+t.byteLength)+2]=1,d[23+(5+t.byteLength)+3]=(65280&s.byteLength)>>8,d[23+(5+t.byteLength)+4]=(255&s.byteLength)>>0,d.set(s,23+(5+t.byteLength)+5),d[23+(5+t.byteLength+5+s.byteLength)+0]=128|ii,d[23+(5+t.byteLength+5+s.byteLength)+1]=0,d[23+(5+t.byteLength+5+s.byteLength)+2]=1,d[23+(5+t.byteLength+5+s.byteLength)+3]=(65280&i.byteLength)>>8,d[23+(5+t.byteLength+5+s.byteLength)+4]=(255&i.byteLength)>>0,d.set(i,23+(5+t.byteLength+5+s.byteLength)+5);const h=[28,0,0,0,0],c=new Uint8Array(h.length+d.byteLength);return c.set(h,0),c.set(d,h.length),c}function rl(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function ol(e){return(126&e[0])>>1}function al(e){return!function(e){return e>=32&&e<=40}(e)}function nl(e){return e>=16&&e<=21}class ll{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H265 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=e[i]>>1&63,r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class dl{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}class hl extends Ma{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===Ct}get isH265(){return this.codecId===Dt}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,s){}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 s=e.slice(5);if(this.codecId=t,this.metaInfo.avcc=s,t===Ct)i=zn(s);else if(t===Dt){i=function(e){let t=23;const i=e[t];if((63&i)!==Xt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and vpsTag is ${i}`),{};t+=2,t+=1;const s=e[t+1]|e[t]<<8;t+=2;const r=e.slice(t,t+s);t+=s;const o=e[t];if((63&o)!==ei)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and sps tag is ${o}`),{};t+=2,t+=1;const a=e[t+1]|e[t]<<8;t+=2;const n=e.slice(t,t+a);t+=a;const l=e[t];if((63&l)!==ii)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([a>>>24&255,a>>>16&255,a>>>8&255,255&a]),u=new Uint8Array([d>>>24&255,d>>>16&255,d>>>8&255,255&d]),p=new Uint8Array([s>>>24&255,s>>>16&255,s>>>8&255,255&s]),f=new Uint8Array(a+4);f.set(c,0),f.set(n,4);const m=new Uint8Array(d+4);m.set(u,0),m.set(h,4);const g=new Uint8Array(s+4);return g.set(p,0),g.set(r,4),{sps:f,pps:m,vps:g}}(s);const t=el(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 s=null;t===Pt?(s=function(e){let t={},i=new Yr(e);return i.read(16),t.object_type=Qr(i),t.sample_rate=Xr(i,t),t.chan_config=i.read(4),t.chan_config{r.onload=function(e){i.decode(this.result).forEach((function(e){t.read(e)})),t.stop();const r=s.makeMetadataSeekable(t.metadatas,t.duration,t.cues),a=this.result.slice(t.metadataSize),n=new Blob([r,a],{type:"video/webm"});o(n)},r.readAsArrayBuffer(e)}))}startRecord(){const e={type:"video",mimeType:"video/webm;codecs=h264",timeSlice:1e3,onTimeStamp:e=>{this.player&&this.player.debugLog("RecorderRTC","record timestamp :"+e),null===this._startRecordingTimestamp&&(this._startRecordingTimestamp=e),this._recordingTimestamp=(e-this._startRecordingTimestamp)/1e3},ondataavailable:e=>{this.totalByteLength+=e.size,this.player&&this.player.debugLog("RecorderRTC","ondataavailable",e.size)},disableLogs:!this.player._opt.debug};try{let t=null;if(this.player.getRenderType()===$)t=this.player.video.$videoElement.captureStream(25),this.player.debugLog(this.TAG_NAME,"startRecord and render type is canvas and use captureStream");else if(this.player.video.mediaStream)t=this.player.video.mediaStream,this.player.debugLog(this.TAG_NAME,"startRecord and video mediaStream");else{if(wa(this._startCanvasRender()))return void this.player.emitError(gt.recordCreateError,"startCanvasRender error");this.player.isOldHls()||this.player._opt.useMSE||this.player._opt.useWCS?t=this.canvasElement.captureStream(25):this.player.isWebrtcH264()?t=this.player.webrtc.videoStream:this.player.isAliyunRtc()&&(t=this.canvasElement.captureStream(25)),this.player.debugLog(this.TAG_NAME,"startRecord and use local canvas render video and captureStream")}if(!t)return this.player.debugError("RecorderRTC","startRecord error and can not create stream"),void this.player.emitError(gt.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 i=e.getAudioTracks()[0];i&&i.enabled&&t.addTrack(i)}}this.recorder=Nn(t,e)}catch(e){return this.player.debugError("RecorderRTC","startRecord error",e),void this.player.emitError(gt.recordCreateError,e)}this.recorder&&(this._isRecording=!0,this.player.emit(gt.recording,!0),this.recorder.startRecording(),this.player.debugLog("RecorderRTC","start recording"),this.player.emit(gt.recordStart),this.startRecordingInterval())}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(gt.recordingTimestamp,this._recordingTimestamp)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Tt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{this.recorder&&this._isRecording||s("recorder is not ready"),t&&this.setFileName(t),this.recorder.stopRecording((()=>{this.player.debugLog("RecorderRTC","stop recording");const t=(this.fileName||uo())+"."+E;if(this.player._opt.recordWebMSupportSeek);else{if(e===kt){const e=this.recorder.getBlob();i(e),this.player.emit(gt.recordBlob,e)}else i(),this.recorder.save(t);this.player.emit(gt.recordEnd),this._reset(),this.player.emit(gt.recording,!1)}}))}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.recorder||!this._isRecording)return e();this.recorder.stopRecording((()=>{this._reset(),this.player.emit(gt.recording,!1),this.player.emit(gt.recordCancel),e()}))}))}getToTalByteLength(){return this.totalByteLength}getTotalDuration(){return this.recordTime}getType(){return E}initMetaData(){}_startCanvasRender(){return this._initCanvasRender(),this.canvasElement?(xa()?(this.player.debugLog(this.TAG_NAME,"use video frame callback"),this.supportVideoFrameCallbackHandle=this.player.video.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):(this.player.debugLog(this.TAG_NAME,"use setInterval"),this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.canvasElementCtx&&this.canvasElementCtx.drawImage(this.player.video.$videoElement,0,0,this.canvasElement.width,this.canvasElement.height)}),40)),!0):(this.player.debugError(this.TAG_NAME,"canvasElement is null"),!1)}_initCanvasRender(){const e=this.player.getVideoInfo();!this.canvasElement&&e&&(this.canvasElement=document.createElement("canvas"),this.canvasElementCtx=this.canvasElement.getContext("2d"),e.width&&e.height&&(this.canvasElement.width=e.width,this.canvasElement.height=e.height))}_removeCanvasRender(){this.canvasElementCtx&&(this.canvasElementCtx.clearRect(0,0,this.canvasElement.width,this.canvasElement.height),this.canvasElementCtx=null),this.canvasElement&&(this.canvasElement.width=0,this.canvasElement.height=0,this.canvasElement=null)}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_stopSupportVideoFrameCallback(){this.supportVideoFrameCallbackHandle&&this.player.video.$videoElement&&(this.player.video.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null)}videoFrameCallback(){this.player.isDestroyedOrClosed()?this.player.debugLog(this.TAG_NAME,"videoFrameCallback() player is destroyed"):(this.canvasElementCtx&&this.canvasElementCtx.drawImage(this.player.video.$videoElement,0,0,this.canvasElement.width,this.canvasElement.height),this.supportVideoFrameCallbackHandle=this.player.video.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)))}}class ul{static init(){ul.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 ul.types)ul.types.hasOwnProperty(e)&&(ul.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=ul.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,s=Array.prototype.slice.call(arguments,1),r=s.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 o=8;for(let e=0;e=Math.pow(2,32)-1?(o=16,a=new Uint8Array(i+o),a.set(new Uint8Array([0,0,0,1]),0),a.set(ul.types.mdat,4),a.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)):(a=new Uint8Array(i+o),a[0]=i+8>>>24&255,a[1]=i+8>>>16&255,a[2]=i+8>>>8&255,a[3]=i+8&255,a.set(ul.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 ul.box(ul.types.trak,ul.tkhd(e),ul.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return"video"===e.type?ul.box(ul.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,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0])):"audio"===e.type?ul.box(ul.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,1,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])):void 0}static edts(e,t){return ul.box(ul.types.edts,ul.elst(e,t))}static elst(e,t){let i=0;for(let s=0;s>>24&255,i>>>16&255,i>>>8&255,255&i,255,255,255,255,0,1,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s,0,0,0,0,0,1,0,0]))}static mdia(e){return ul.box(ul.types.mdia,ul.mdhd(e),ul.hdlr(e),ul.minf(e))}static mdhd(e){let t=e.timescale/e.refSampleDuration,i=t*e.duration/e.timescale;return ul.box(ul.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="audio"===e.type?ul.constants.HDLR_AUDIO:ul.constants.HDLR_VIDEO,ul.box(ul.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?ul.box(ul.types.smhd,ul.constants.SMHD):ul.box(ul.types.vmhd,ul.constants.VMHD),ul.box(ul.types.minf,t,ul.dinf(),ul.stbl(e))}static dinf(){return ul.box(ul.types.dinf,ul.box(ul.types.dref,ul.constants.DREF))}static stbl(e){let t=e.samples,i=[{No:1,num:0,sampleDelte:1,chunkNo:1,duration:t[0].duration}],s=[t[0].duration],r=t.length;for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+8*t);r.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]),s),s+=8;return ul.box(ul.types.stts,r)}static stss(e){let t=[],i=e.length;for(let s=0;s>>24&255,s>>>16&255,s>>>8&255,255&s]),o=r.byteLength,a=new Uint8Array(o+4*s);a.set(r,0);for(let e=0;e>>24&255,t[e]>>>16&255,t[e]>>>8&255,255&t[e]]),o),o+=4;return ul.box(ul.types.stss,a)}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]),s=i.byteLength,r=new Uint8Array(s+12*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t,o>>>24&255,o>>>16&255,o>>>8&255,255&o,a>>>24&255,a>>>16&255,a>>>8&255,255&a]),s),s+=12}return ul.box(ul.types.stsc,r)}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]),s=i.byteLength,r=new Uint8Array(s+4*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t]),s),s+=4}return ul.box(ul.types.stsz,r)}static stco(e,t){let i=t[0].chunkOffset;return ul.box(ul.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?ul.box(ul.types.stsd,ul.constants.STSD_PREFIX,ul.mp3(e)):ul.box(ul.types.stsd,ul.constants.STSD_PREFIX,ul.mp4a(e)):"avc"===e.videoType?ul.box(ul.types.stsd,ul.constants.STSD_PREFIX,ul.avc1(e)):ul.box(ul.types.stsd,ul.constants.STSD_PREFIX,ul.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.sampleRate,s=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 ul.box(ul.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.sampleRate,s=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 ul.box(ul.types.mp4a,s,ul.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=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 ul.box(ul.types.esds,s)}static avc1(e){let t=e.avcc,i=e.codecWidth,s=e.codecHeight,r=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,s>>>8&255,255&s,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 ul.box(ul.types.avc1,r,ul.box(ul.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 ul.box(ul.types.hvc1,r,ul.box(ul.types.hvcC,t))}static mvex(e){return ul.box(ul.types.mvex,ul.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 ul.box(ul.types.trex,i)}static moof(e,t){return ul.box(ul.types.moof,ul.mfhd(e.sequenceNumber),ul.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 ul.box(ul.types.mfhd,t)}static traf(e,t){let i=e.id,s=ul.box(ul.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=ul.box(ul.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=ul.sdtp(e),a=ul.trun(e,o.byteLength+16+16+8+16+8+8);return ul.box(ul.types.traf,s,r,a,o)}static sdtp(e){let t=e.samples||[],i=t.length,s=new Uint8Array(4+i);for(let e=0;e>>24&255,s>>>16&255,s>>>8&255,255&s,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,s>>>24&255,s>>>16&255,s>>>8&255,255&s,r.isLeading<<2|r.dependsOn,r.isDependedOn<<6|r.hasRedundancy<<4|r.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12+16*e)}return ul.box(ul.types.trun,o)}static mdat(e){return ul.box(ul.types.mdat,e)}}ul.init();class pl extends hl{constructor(e){super(e),this.TAG_NAME="recorderMP4",this._reset(),e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this._reset(),this.player.debugLog(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(){this._isRecording=!0,this.player.emit(gt.recording,!0),this.player.debugLog(this.TAG_NAME,"start recording"),this.player.emit(gt.recordStart),this._startRecordingInterval()}_startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(gt.recordingTimestamp,this.getTotalDuration())}),1e3)}_formatFmp4Track(e,t,i,s){return{id:1,sequenceNumber:++this.sequenceNumber,size:e.byteLength,dts:i,cts:s,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,s){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,s)}handleAddAudioTrack(e,t){}_handleAddFmp4Track(e){if(!this.isRecording)return void this.player.debugError(this.TAG_NAME,"_handleAddFmp4Track, isRecording is false ");if((null===this.sps||null===this.pps)&&this.isH264)return void this.player.debugError(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.debugError(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 s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}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 s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}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 S}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Tt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debugError(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r={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},o={id:2,type:"audio",sequenceNumber:this.audioBufferList.length,samples:this.audioBufferList,...this.audioMetaInfo},a=[r];o.samples.length>0&&a.push(o),this.player.debugLog(this.TAG_NAME,`trackList length is ${a.length}`);const n=ul.generateInitSegment({timescale:1e3,duration:this.totalDuration},a,this.totalByteLength+this.totalAudioByteLength);this.player.debugLog(this.TAG_NAME,"stop recording");const l=new Blob([n],{type:"application/octet-stream"});if(e===kt)i(l),this.player.emit(gt.recordBlob,l);else{i();Oo((this.fileName||uo())+"."+S,l)}this._reset(),this.player.emit(gt.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(gt.recording,!1),this.player.emit(gt.recordCancel),e()}))}_getBufferTs(e){}}function fl(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=new s((0|e.byteLength)+(0|t.byteLength));return i.set(e,0),i.set(t,0|e.byteLength),i}),new s)}function ml(e){if((e=e.replace(/\s/g,"")).length%2!=0)return console.error("hexStringToUint8Array: invalid hexString length, must be even and bexString length is: ",e.length),null;const t=new Uint8Array(e.length/2);for(let i=0;i{this.player.emit(gt.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.debugLog(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 s=this._createFlvPacket(e,t,i),r=this._createFlvTag(s);this.totalByteLength+=r.byteLength,this.bufferList.push(r)}_createFlvTag(e){let t=11+e.header.length,i=new Uint8Array(t+4);i[0]=e.header.type;let s=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,s.setUint32(t,t),i.set(e.payload.subarray(0,e.header.length),11),i}_createFlvPacket(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return{header:{length:e?e.length:0,timestamp:i,type:t},payload:e}}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Tt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debugError(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r=new Uint8Array([70,76,86,1,0,0,0,0,9,0,0,0,0]);this.hasVideo&&(r[4]|=1),this.hasAudio&&(r[4]|=4);let o=[r];if(this.flvMetaData){const e=this._createFlvPacket(this.flvMetaData,We),t=this._createFlvTag(e);o.push(t)}if(this.videoSequenceHeader){const e=this._createFlvPacket(this.videoSequenceHeader,ze),t=this._createFlvTag(e);o.push(t)}if(this.aacSequenceHeader){const e=this._createFlvPacket(this.aacSequenceHeader,Ge),t=this._createFlvTag(e);o.push(t)}const a=function(e){const t=e[0].constructor;return e.reduce(((e,i)=>{const s=new t((0|e.byteLength)+(0|i.byteLength));return s.set(e,0),s.set(i,0|e.byteLength),s}),new t)}(o.concat(this.bufferList));this.player.debugLog(this.TAG_NAME,"stop recording");const n=new Blob([a],{type:"application/octet-stream"});if(e===kt)i(n),this.player.emit(gt.recordBlob,n);else{i();Oo((this.fileName||uo())+"."+w,n)}this._reset(),this.player.emit(gt.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(gt.recording,!1),this.player.emit(gt.recordCancel),e()}))}getTotalDuration(){let e=0;return null!==this.startTime&&null!==this.currentTime&&(e=this.currentTime-this.startTime),Math.round(e/1e3)}getType(){return w}getToTalByteLength(){return this.totalByteLength}}const yl={init:0,findFirstStartCode:1,findSecondStartCode:2};class Al extends Ma{constructor(e){super(),this.player=e,this.isDestroyed=!1,this.reset()}destroy(){this.isDestroyed=!1,this.off(),this.reset()}reset(){this.stats=yl.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==yl.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=yl.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==yl.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=yl.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==yl.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=yl.findFirstStartCode}}}}class bl extends hl{constructor(e){super(e),this.TAG_NAME="recorderWasmMP4",this._reset(),this.wasmMp4Recorder=null,this.mp3Demuxer=null,e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.mp3Demuxer&&(this.mp3Demuxer.destroy(),this.mp3Demuxer=null),this._reset(),this.player.debugLog(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 S}isWasmMp4(){return!0}getTotalDuration(){return this.totalDuration/1e3}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}startRecord(){const e=this.player,t=this.player.getAudioInfo(),i=this.player.getVideoInfo(),s={};if(this.codecId){const e={type:this.codecId,width:i.width,height:i.height,extraData:this.metaInfo.avcc};s.video=e,this.hasVideo=!0}if(t.encTypeCode){const e={type:t.encTypeCode,sampleRate:t.sampleRate,channels:t.channels,extraData:this.audioMetaInfo.extraData,depth:t.depth};this.audioCodeId=t.encTypeCode,s.audio=e,this.hasAudio=!0}this.wasmMp4Recorder=new window.JessibucaProMp4Recorder({debug:e._opt.debug,debugLevel:e._opt.debugLevel,debugUuid:e._opt.debugUuid,decoder:e._opt.wasmMp4RecorderDecoder}),this.wasmMp4Recorder.on("recordingTimestamp",(e=>{this._recordingTimestamp=e/1e3})),this.wasmMp4Recorder.startRecord(s).then((()=>{this._isRecording=!0,this.player.emit(gt.recording,!0),this.player.debugLog(this.TAG_NAME,"start recording"),this.player.emit(gt.recordStart),this.startRecordingInterval()})).catch((e=>{this.player.debugError(this.TAG_NAME,"startRecord error",e),this.player.emitError(gt.recordCreateError,e)}))}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(gt.recordingTimestamp,this.recordTime)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Tt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>this.isRecording?0===this.totalDuration?(this.player.debugError(this.TAG_NAME,"stop recording fail, totalDuration is 0 "),s("stop recording fail, totalDuration is 0 ")):(t&&this.setFileName(t),void this.wasmMp4Recorder.stopRecord().then((t=>{if(e===kt)i(t),this.player.emit(gt.recordBlob,t);else{i();Oo((this.fileName||uo())+"."+S,t)}})).catch((e=>{this.player.debugError(this.TAG_NAME,"stopRecord error",e),s(e)})).finally((()=>{this._reset(),this.player.emit(gt.recording,!1)}))):(this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false "))))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording||0===this.totalDuration)return e();this.wasmMp4Recorder.stopRecord().then((t=>{e()})).catch((e=>{this.player.debugError(this.TAG_NAME,"stopRecord error",e),t(e)})).finally((()=>{this._reset(),this.player.emit(gt.recording,!1),this.player.emit(gt.recordCancel)}))}))}handleAddAudioTrack(e,t){this.audioCodeId===Bt?(this.mp3Demuxer||(this.mp3Demuxer=new Al(this.player),this.mp3Demuxer.on("data",((e,t)=>{this._handleAddAudioTrack(e,t)}))),this.mp3Demuxer.dispatch(e,t)):this._handleAddAudioTrack(e,t)}_handleAddAudioTrack(e,t){wa(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,s){wa(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:s})}}class vl{constructor(e){return new(vl.getLoaderFactory(e,e._opt))(e)}static getLoaderFactory(e,t){if(e.isOldHls()||e.isWebrtcH264()||e.isAliyunRtc())return cl;if(t.recordType===S){if(t.useWasm||t.useMSE||t.useWCS)return window.JessibucaProMp4Recorder&&t.mp4RecordUseWasm?bl:pl}else if(t.recordType===w)return gl;return cl}}function _l(e,t,i){let s=e;if(t+i=128){t.push(String.fromCharCode(65535&e)),s+=2;continue}}}else if(i[s]<240){if(_l(i,s,2)){let e=(15&i[s])<<12|(63&i[s+1])<<6|63&i[s+2];if(e>=2048&&55296!=(63488&e)){t.push(String.fromCharCode(65535&e)),s+=3;continue}}}else if(i[s]<248&&_l(i,s,3)){let e=(7&i[s])<<18|(63&i[s+1])<<12|(63&i[s+2])<<6|63&i[s+3];if(e>65536&&e<1114112){e-=65536,t.push(String.fromCharCode(e>>>10|55296)),t.push(String.fromCharCode(1023&e|56320)),s+=4;continue}}t.push(String.fromCharCode(65533)),++s}return t.join("")}let El=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}();class wl{static parseScriptData(e,t,i){let s={};try{let r=wl.parseValue(e,t,i),o=wl.parseValue(e,t+r.size,i-r.size);s[r.data]=o.data}catch(e){console.error("AMF",e.toString())}return s}static parseObject(e,t,i){let s=wl.parseString(e,t,i),r=wl.parseValue(e,t+s.size,i-s.size),o=r.objectEnd;return{data:{name:s.data,value:r.data},size:s.size+r.size,objectEnd:o}}static parseVariable(e,t,i){return wl.parseObject(e,t,i)}static parseString(e,t,i){let s,r=new DataView(e,t,i).getUint16(0,!El);return s=r>0?Sl(new Uint8Array(e,t+2,r)):"",{data:s,size:2+r}}static parseLongString(e,t,i){let s,r=new DataView(e,t,i).getUint32(0,!El);return s=r>0?Sl(new Uint8Array(e,t+4,r)):"",{data:s,size:4+r}}static parseDate(e,t,i){let s=new DataView(e,t,i),r=s.getFloat64(0,!El);return r+=60*s.getInt16(8,!El)*1e3,{data:new Date(r),size:10}}static parseValue(e,t,i){let s,r=new DataView(e,t,i),o=1,a=r.getUint8(0),n=!1;try{switch(a){case 0:s=r.getFloat64(1,!El),o+=8;break;case 1:s=!!r.getUint8(1),o+=1;break;case 2:{let r=wl.parseString(e,t+1,i-1);s=r.data,o+=r.size;break}case 3:{s={};let a=0;for(9==(16777215&r.getUint32(i-4,!El))&&(a=3);o{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),se)}this.decoderWorker=new Worker(t),this._initDecoderWorker(),this._listenPlaybackEvents(),e.debugLog("decoderWorker",`init and decoder url is ${t}`),e.on(gt.visibilityChange,(()=>{this.updateWorkConfig({key:"visibility",value:e.visibility})}))}destroy(){return new Promise(((e,t)=>{if(this.player.loaded)if(this.player.debugLog("decoderWorker","has loaded and post message to destroy"),this.decoderWorker){const t={};this.player.isMseDecoderUseWorker()&&(t.isVideoInited=this.player.isMseVideoStateInited()),this.decoderWorker.postMessage({cmd:qe,options:t}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn("decoderWorker","send close but not response and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)}else this.player.debugWarn("decoderWorker","has loaded but decoderWorker is null and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0);else this.player.debugLog("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.debugLog("decoderWorker","destroy"),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.isDestroyed=!0}_listenPlaybackEvents(){this.player.isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender()&&(this.player.debugLog(this.TAG_NAME,"listenPlaybackEvents"),this.player.on(gt.playbackPause,(e=>{this.updatePlaybackIsPause(e)})))}_initDecoderWorker(){this.player,this.decoderWorker.onerror=e=>{const t=e.filename||"",i=e.message||"",s=t&&(-1!==t.indexOf(".wasm")||-1!==t.indexOf("wasm://"));s&&-1!==i.indexOf(dr)?this.player.debugLog("decoderWorker",`onerror and ignore filename: ${t},message: ${i}`,e):(this.player.debugError("decoderWorker",`onerror filename: ${t},message: ${i}`,e),s?this.player.emitError(bt.decoderWorkerWasmError,`filename: ${t},message: ${i}`):this.player.emitError(bt.decoderWorkerInitError,`filename: ${t},message: ${i}`))},this.decoderWorker.onmessageerror=e=>{this.player.debugError("decoderWorker","onmessageerror",e)},this.decoderWorker.onmessage=e=>{const t=e.data;switch(t.cmd){case ae:this.player.debugLog("decoderWorker","onmessage:",ae),this.decoderWorker&&this._initWork(),this.player.loaded||this.player.emit(gt.load),this.player.emit(gt.decoderWorkerInit);break;case fe:this.player.debugLog("decoderWorker","onmessage:",fe,t.code),this.player._times.decodeStart||(this.player._times.decodeStart=uo()),this.player.video.updateVideoInfo({encTypeCode:t.code});break;case me:this.player.debugLog("decoderWorker","onmessage:",me,t.codecId),this.player.recorder&&this.player.recorder.initMetaData(t.buffer,t.codecId),this.player.video.updateVideoInfo({encTypeCode:t.codecId});break;case ce:this.player.debugLog("decoderWorker","onmessage:",ce,t.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:t.code});break;case pe:this.player.debugLog("decoderWorker","onmessage:",pe),this.player.recorder&&this.player.recorder.initAudioAacExtraData(t.buffer);break;case ne:if(this.player.debugLog("decoderWorker","onmessage:",ne,`width:${t.w},height:${t.h}`),No(t.w)||No(t.h))return void this.player.emitError(bt.videoInfoError,`video width ${t.w} or height ${t.h} is empty`);if(this.player.video.bindMediaStream(),this.player.video.updateVideoInfo({width:t.w,height:t.h}),!this.player._opt.openWebglAlignment&&t.w/2%4!=0&&this.player.getRenderType()===$)return void this.player.emitError(bt.webglAlignmentError);this.player.video.initCanvasViewSize(),this.player._opt.playType===_&&(this.player.video.initFps(),this.player.video.initVideoDelay());break;case he:if(this.player.debugLog("decoderWorker","onmessage:",he,`channels:${t.channels},sampleRate:${t.sampleRate}`),t.channels>2)return void this.player.emitError(bt.audioChannelError,`audio channel is ${t.channels}, max is 2`);this.player.audio&&(this.player.audio.updateAudioInfo(t),this.player._opt.playType===b?this.player.audio.initScriptNode():this.player._opt.playType===_&&this.player.audio.initScriptNodeDelay());break;case le:if(!this.player.video)return void this.player.debugWarn("decoderWorker","onmessage render but video is null");if(this.player.isPlayer()){if(wa(this.player.video.getHasInit()))return void this.player.debugWarn("decoderWorker","onmessage render but video has not init");this.player.video.render(t),this.player.handleRender(),this.player.emit(gt.timeUpdate,t.ts),this.player.updateStats({dfps:!0,buf:t.delay}),this.player._times.videoStart||(this.player._times.videoStart=uo(),this.player.handlePlayToRenderTimes())}else this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),wa(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData(t):this.player.video.render$2(t)):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender&&this.player.video.pushData(t));break;case ge:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.handleAddNaluTrack(t.buffer,t.isIFrame,t.ts,t.cts);break;case ue:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.isWasmMp4()&&this.player.recorder.handleAddAudioTrack(t.buffer,t.ts);break;case ye:const{webcodecsDecoder:e,mseDecoder:i}=this.player;this.player.updateStats({buf:t.delay});const s=new Uint8Array(t.payload);this.player._opt.useWCS&&!this.player._opt.useOffscreen?e.decodeVideo(s,t.ts,t.isIFrame,t.cts):this.player._opt.useMSE&&i.decodeVideo(s,t.ts,t.isIFrame,t.cts);break;case Ae:if(this.player._opt.useMSE){const e=new Uint8Array(t.payload);this.player.mseDecoder.decodeAudio(e,t.ts,t.cts)}break;case de:if(!this.player.audio)return void this.player.debugWarn("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===b||this.player._opt.playType===_&&(wa(this.player.playbackPause)||this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender))&&this.player.audio.play(t.buffer,t.ts));break;case be:if(t.type===gt.streamSuccess)this.player.stream?this.player.stream.emit(gt.streamSuccess):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream success but stream is null");else if(t.type===gt.streamRate)this.player.emit(gt.kBps,(t.value/1024).toFixed(2));else if(t.type===gt.streamEnd)this.player?(t.value===f&&this.player.emit(gt.websocketClose,t.msg),this.player.stream?this.player.stream.emit(gt.streamEnd,t.msg):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream end but player.stream is null")):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream end but player is null");else if(t.type===gt.streamEndInner)this.player.updateStreamEndInner();else if(t.type===bt.websocketError)this.player&&this.player.stream?this.player.stream.emit(bt.websocketError,t.value):this.player.debugWarn("decoderWorker","onmessage and workerFetch response websocket error but stream is null");else if(t.type===bt.fetchError)this.player&&this.player.stream?this.player.stream.emit(bt.fetchError,t.value):this.player.debugWarn("decoderWorker","onmessage and workerFetch response fetch error but stream is null");else if(t.type===gt.streamAbps)this.player.updateStats({abps:t.value});else if(t.type===gt.streamVbps)this.player._times.demuxStart||(this.player._times.demuxStart=uo()),this.player.updateStats({vbps:t.value});else if(t.type===gt.streamDts)this.player.updateStats({dts:t.value});else if(t.type===gt.netBuf)this.player.updateStats({netBuf:t.value});else if(t.type===gt.networkDelayTimeout)this.player.emit(gt.networkDelayTimeout,t.value);else if(t.type===gt.streamStats){const e=JSON.parse(t.value);this.player.updateStats({workerStats:e})}else t.type===gt.websocketOpen&&this.player.emit(gt.websocketOpen);break;case ve:this.player&&(this.player.videoIframeIntervalTs=t.value);break;case _e:this.player&&this.player.updateStats({isDropping:!0});break;case Be:this.player.decoderCheckFirstIFrame();break;case Ee:this.player&&this.player.video&&this.player.video.setStreamFps(t.value);break;case ke:this.player.emitError(bt.simdH264DecodeVideoWidthIsTooLarge,t.value);break;case we:this.player.emitError(bt.wasmWidthOrHeightChange,t.value);break;case Te:this.player.emitError(bt.simdDecodeError);break;case Se:this.player.debugLog("decoderWorker","onmessage:",Se),this.player.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload();break;case Le:this.player.debugLog("decoderWorker","onmessage:",Le),this._destroy();break;case Ce:this.player&&this.player.pushTempStream(t.buffer);break;case De:this.player&&this.player.emitVideoSei({ts:t.ts,data:new Uint8Array(t.buffer)});break;case xe:if(this.player){if(this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addMetaData(e)}const e=Tl(new Uint8Array(t.buffer));e&&e.onMetaData&&this.player.updateMetaData(e.onMetaData)}break;case Re:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addAACSequenceHeader(e,t.ts)}break;case Pe:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addVideoSequenceHeader(e,t.ts)}break;case Ie:if(this.player&&this.player.isRecordTypeFlv()&&this.player.recording){const e=new Uint8Array(t.buffer);t.type===je?this.player.recorder.addVideo(e,t.ts):t.type===Ne&&this.player.recorder.addAudio(e,t.ts)}break;case Me:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Me),this.player.video.$videoElement.srcObject=t.mseHandle);break;case Fe:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Fe,t.value),this.player._mseWorkerData.firstRenderTime=Number(t.value));break;case Ue:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Ue,t.value,t.msg),this.player.emitError(t.value,t.msg));break;case Oe:this.player&&(this.player.debugLog(this.TAG_NAME,"onmessage:",Oe),this.player.emitError(bt.notSupportNewWasm));break;default:this.player[t.cmd]&&this.player[t.cmd](t)}}}_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||xr,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,isSm4CryptoH265V2:this.player._opt.isSm4CryptoH265V2,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:sa(),isFirefox:Eo(),supportMSEDecodeHevc:Bo(),isDropSameTimestampGop:this.player._opt.isDropSameTimestampGop,mseDecodeAudio:this.player._opt.mseDecodeAudio,wcsDecodeAudio:this.player._opt.wcsDecodeAudio,nakedFlowH265DemuxUseNew:this.player._opt.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:this.player._opt.mseDecoderUseWorker,mseAutoCleanupMinBackwardDuration:this.player._opt.mseAutoCleanupMinBackwardDuration,mseAutoCleanupMaxBackwardDuration:this.player._opt.mseAutoCleanupMaxBackwardDuration,mseCorrectTimeDuration:this.player._opt.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:this.player._opt.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:this.player._opt.nakedFlowDemuxUseNew,nakedFlowFps:this.player._opt.nakedFlowFps,checkStreamEnd:this.player._opt.checkStreamEnd};this.decoderWorker.postMessage({cmd:Ve,opt:JSON.stringify(e)}),this.player._opt.cryptoKey&&this.player._opt.cryptoKey.byteLength>0&&this.player._opt.cryptoIV&&this.player._opt.cryptoIV.byteLength>0&&(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===b?this.player.isUseHls265()?this._decodeVideoNoDelay(e,t,i):this._decodeVideo(e,t,i):this.player._opt.playType===_&&(this.player.isPlaybackOnlyDecodeIFrame()?i&&(this.player.debugLog("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 s={type:je,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:$e,buffer:e,options:s},[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===b?this.player._opt.useWCS||this.player._opt.useMSE||this.player.isUseHls265()?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t):this.player._opt.playType===_&&(this.player.isPlaybackOnlyDecodeIFrame()||(1===this.player.video.rate?this._decodeAudio(e,t):this._decodeAudioNoDelay(e,t)))}_decodeAudio(e,t){const i={type:Ne,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:$e,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:He,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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{_opt:i}=this.player;let s=[];t.protocols&&(s=t.protocols,delete t.protocols);const r={protocol:i.protocol,isFlv:i.isFlv,isFmp4:i.isFmp4,isMpeg4:i.isMpeg4,isNakedFlow:i.isNakedFlow,isTs:i.isTs,options:t};this.decoderWorker.postMessage({cmd:Qe,url:e,protocols:s,opt:JSON.stringify(r)})}clearWorkBuffer(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.decoderWorker.postMessage({cmd:Ye,needClear:e})}workerSendMessage(e){this.decoderWorker.postMessage({cmd:Xe,message:e})}updateVideoTimestamp(e){this.decoderWorker.postMessage({cmd:Ze,message:e})}updatePlaybackIsPause(e){this.decoderWorker.postMessage({cmd:et,isPause:e})}}var Ll,Cl="application/json, text/javascript",Dl="text/html",xl=/^(?:text|application)\/xml/i,Rl=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Pl=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Il=/^\s*$/,Bl={},Ml={},Fl="",Ul={type:"GET",beforeSend:Ol,success:Ol,error:Ol,complete:Ol,context:null,xhr:function(){return new window.XMLHttpRequest},accepts:{json:Cl,xml:"application/xml, text/xml",html:Dl,text:"text/plain","*":"*/".concat("*")},crossDomain:!1,timeout:0,username:null,password:null,processData:!0,promise:Ol,contentType:"application/x-www-form-urlencoded; charset=UTF-8"};function Ol(){}var Nl=function(e,t){"object"==typeof e&&(t=e,e=void 0);var i=Jl({},t=t||{});for(var s in Ul)void 0===i[s]&&(i[s]=Ul[s]);try{var r={},o=new Promise((function(e,t){r.resolve=e,r.reject=t}));o.resolve=r.resolve,o.reject=r.reject,i.promise=o}catch(e){i.promise={resolve:Ol,reject:Ol}}var a=Pl.exec(window.location.href.toLowerCase())||[];i.url=((e||i.url||window.location.href)+"").replace(/#.*$/,"").replace(/^\/\//,a[1]+"//");var n=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=Vl(i.url,d)}return function(e){var t,i=e.jsonpCallback||"jsonp"+Yl(),s=window.document.createElement("script"),r={abort:function(){i in window&&(window[i]=Ol)}},o=window.document.getElementsByTagName("head")[0]||window.document.documentElement;function a(i){window.clearTimeout(t),r.abort(),zl(i.type,r,i.type,e),n()}s.onerror=function(e){a(e)},window[i]=function(i){window.clearTimeout(t),jl(i,r,e),n()},$l(e),s.src=e.url.replace(/=\?/,"="+i),s.src=Vl(s.src,"_="+(new Date).getTime()),s.async=!0,e.scriptCharset&&(s.charset=e.scriptCharset);o.insertBefore(s,o.firstChild),e.timeout>0&&(t=window.setTimeout((function(){r.abort(),zl("timeout",r,"timeout",e),n()}),e.timeout));function n(){s.clearAttributes?s.clearAttributes():s.onload=s.onreadystatechange=s.onerror=null,s.parentNode&&s.parentNode.removeChild(s),s=null,delete window[i]}return e.promise.abort=function(){r.abort()},e.promise.xhr=r,e.promise}(i)}$l(i);var h=i.accepts[l]||i.accepts["*"],c={};/^([\w-]+:)\/\//.test(i.url)?RegExp.$1:window.location.protocol;var u,p=Ul.xhr();i.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest"),i.ifModified&&(Bl[n]&&(c["If-Modified-Since"]=Bl[n]),Ml[n]&&(c["If-None-Match"]=Ml[n])),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(n)?n.replace(m,"$1_="+Yl()):n+(/\?/.test(n)?"&":"?")+"_="+Yl()}i.headers=Jl(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(Fl=p.getAllResponseHeaders(),i.ifModified){var s=Wl("Last-Modified");s&&(Bl[n]=s),(s=Wl("etag"))&&(Ml[n]=s)}l=l||function(e){return e&&(e===Dl?"html":e===Cl?"json":xl.test(e)&&"xml")||"text"}(p.getResponseHeader("content-type")),e=p.responseText;try{"xml"===l?e=p.responseXML:"json"===l&&(e=Il.test(e)?null:JSON.parse(e))}catch(e){t=e}t?zl(t,"parseerror",p,i):jl(e,p,i)}else zl(null,"error",p,i)}};var g=!("async"in i)||i.async;if(p.open(i.type,i.url,g,i.username,i.password),i.xhrFields)for(var y in i.xhrFields)p[y]=i.xhrFields[y];for(var y in i.mimeType&&p.overrideMimeType&&p.overrideMimeType(i.mimeType),i.headers)void 0!==i.headers[y]&&p.setRequestHeader(y,i.headers[y]+"");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=Ol,p.abort(),zl(null,"timeout",p,i)}),i.timeout)),p.send(i.data?i.data:null),i.promise.abort=function(){p.abort()},i.promise)};function jl(e,t,i){var s=i.context,r="success";i.success.call(s,e,r,t),i.promise.resolve(e,r,t),Gl(r,t,i)}function Gl(e,t,i){var s=i.context;i.complete.call(s,t,e)}function zl(e,t,i,s){var r=s.context;s.error.call(r,i,t,e),s.promise.reject(i,t,e),Gl(t,i,s)}function Wl(e){var t;if(!Ll){for(Ll={};t=Rl.exec(Fl);)Ll[t[1].toLowerCase()]=t[2];t=Ll[e.toLowerCase()]}return null===t?null:t}function Vl(e,t){return(e+"&"+t).replace(/[&?]{1,2}/,"?")}function $l(e){!ql(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))},Hl(i,e,t),i.join("&").replace("%20","+")}(e.data)),!e.data||e.type&&"GET"!==e.type.toUpperCase()||(e.url=Vl(e.url,e.data))}function Hl(e,t,i,s){var r=function(e){return"[object Array]"===Object.prototype.toString.call(e)}(t);for(var o in t){var a=t[o];s&&(o=i?s:s+"["+(r?"":o)+"]"),!s&&r?e.add(a.name,a.value):(i?r(a):ql(a))?Hl(e,a,i,o):e.add(o,a)}}function Jl(e){for(var t=Array.prototype.slice,i=t.call(arguments,1),s=0,r=i.length;s255)return!1;return!0}function Zl(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(!Xl(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Ql(e.length)&&Xl(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function ed(e){return new Uint8Array(e)}function td(e,t,i,s,r){null==s&&null==r||(e=e.slice?e.slice(s,r):Array.prototype.slice.call(e,s,r)),t.set(e,i)}Nl.get=function(e,t,i,s){return Kl(t)&&(s=s||i,i=t,t=void 0),Nl({url:e,data:t,success:i,dataType:s})},Nl.post=function(e,t,i,s){return Kl(t)&&(s=s||i,i=t,t=void 0),Nl({type:"POST",url:e,data:t,success:i,dataType:s})},Nl.getJSON=function(e,t,i){return Kl(t)&&(i=t,t=void 0),Nl({url:e,data:t,success:i,dataType:"json"})},Nl.ajaxSetup=function(e,t){return t?Jl(Jl(e,Ul),t):Jl(Ul,e)};var id={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&s<224?(t.push(String.fromCharCode((31&s)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&s)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},sd=function(){var e="0123456789abcdef";return{toBytes:function(e){for(var t=[],i=0;i>4]+e[15&r])}return i.join("")}}}(),rd={16:10,24:12,32:14},od=[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],ad=[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],nd=[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],ld=[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],dd=[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],hd=[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],cd=[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],ud=[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],pd=[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],fd=[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],md=[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],gd=[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],yd=[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],Ad=[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],bd=[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 vd(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=o[t],this._Kd[e-i][t%4]=o[t];for(var a,n=0,l=r;l>16&255]<<24^ad[a>>8&255]<<16^ad[255&a]<<8^ad[a>>24&255]^od[n]<<24,n+=1,8!=r)for(t=1;t>8&255]<<8^ad[a>>16&255]<<16^ad[a>>24&255]<<24;for(t=r/2+1;t>2,h=l%4,this._Ke[d][h]=o[t],this._Kd[e-d][h]=o[t++],l++}for(var d=1;d>24&255]^yd[a>>16&255]^Ad[a>>8&255]^bd[255&a]},_d.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],s=vd(e),r=0;r<4;r++)s[r]^=this._Ke[0][r];for(var o=1;o>24&255]^dd[s[(r+1)%4]>>16&255]^hd[s[(r+2)%4]>>8&255]^cd[255&s[(r+3)%4]]^this._Ke[o][r];s=i.slice()}var a,n=ed(16);for(r=0;r<4;r++)a=this._Ke[t][r],n[4*r]=255&(ad[s[r]>>24&255]^a>>24),n[4*r+1]=255&(ad[s[(r+1)%4]>>16&255]^a>>16),n[4*r+2]=255&(ad[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(ad[255&s[(r+3)%4]]^a);return n},_d.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],s=vd(e),r=0;r<4;r++)s[r]^=this._Kd[0][r];for(var o=1;o>24&255]^pd[s[(r+3)%4]>>16&255]^fd[s[(r+2)%4]>>8&255]^md[255&s[(r+1)%4]]^this._Kd[o][r];s=i.slice()}var a,n=ed(16);for(r=0;r<4;r++)a=this._Kd[t][r],n[4*r]=255&(nd[s[r]>>24&255]^a>>24),n[4*r+1]=255&(nd[s[(r+3)%4]>>16&255]^a>>16),n[4*r+2]=255&(nd[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(nd[255&s[(r+1)%4]]^a);return n};var Sd=function(e){if(!(this instanceof Sd))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new _d(e)};Sd.prototype.encrypt=function(e){if((e=Zl(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=ed(e.length),i=ed(16),s=0;sNumber.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)},kd.prototype.setBytes=function(e){if(16!=(e=Zl(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},kd.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Ld=function(e,t){if(!(this instanceof Ld))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof kd||(t=new kd(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new _d(e)};Ld.prototype.encrypt=function(e){for(var t=Zl(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,s=0;s>>2]>>>24-o%4*8&255;t[s+o>>>2]|=a<<24-(s+o)%4*8}else for(var n=0;n>>2]=i[n>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,i=this.sigBytes;t[i>>>2]&=4294967295<<32-i%4*8,t.length=e.ceil(i/4)},clone:function(){var e=l.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],i=0;i>>2]>>>24-r%4*8&255;s.push((o>>>4).toString(16)),s.push((15&o).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new d.init(i,t/2)}},u=h.Latin1={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>24-r%4*8&255;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new d.init(i,t)}},p=h.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},f=n.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new d.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var i,s=this._data,r=s.words,o=s.sigBytes,a=this.blockSize,n=o/(4*a),l=(n=t?e.ceil(n):e.max((0|n)-this._minBufferSize,0))*a,h=e.min(4*l,o);if(l){for(var c=0;c>>2]|=e[r]<<24-r%4*8;t.call(this,s,i)}else t.apply(this,arguments)};s.prototype=e}}(),i.lib.WordArray)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(){var e=i,t=e.lib.WordArray,s=e.enc;function r(e){return e<<8&4278255360|e>>>8&16711935}s.Utf16=s.Utf16BE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>16-r%4*8&65535;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var i=e.length,s=[],r=0;r>>1]|=e.charCodeAt(r)<<16-r%2*16;return t.create(s,2*i)}},s.Utf16LE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],o=0;o>>2]>>>16-o%4*8&65535);s.push(String.fromCharCode(a))}return s.join("")},parse:function(e){for(var i=e.length,s=[],o=0;o>>1]|=r(e.charCodeAt(o)<<16-o%2*16);return t.create(s,2*i)}}}(),i.enc.Utf16)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(){var e=i,t=e.lib.WordArray;function s(e,i,s){for(var r=[],o=0,a=0;a>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64={stringify:function(e){var t=e.words,i=e.sigBytes,s=this._map;e.clamp();for(var r=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,n=0;n<4&&o+.75*n>>6*(3-n)&63));var l=s.charAt(64);if(l)for(;r.length%4;)r.push(l);return r.join("")},parse:function(e){var t=e.length,i=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var o=0;o>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var i=e.words,s=e.sigBytes,r=t?this._safe_map:this._map;e.clamp();for(var o=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(i[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|i[a+2>>>2]>>>24-(a+2)%4*8&255,l=0;l<4&&a+.75*l>>6*(3-l)&63));var d=r.charAt(64);if(d)for(;o.length%4;)o.push(d);return o.join("")},parse:function(e,t){void 0===t&&(t=!0);var i=e.length,r=t?this._safe_map:this._map,o=this._reverseMap;if(!o){o=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(r<<24|r>>>8)}var o=this._hash.words,a=e[t+0],l=e[t+1],p=e[t+2],f=e[t+3],m=e[t+4],g=e[t+5],y=e[t+6],A=e[t+7],b=e[t+8],v=e[t+9],_=e[t+10],S=e[t+11],E=e[t+12],w=e[t+13],T=e[t+14],k=e[t+15],L=o[0],C=o[1],D=o[2],x=o[3];L=d(L,C,D,x,a,7,n[0]),x=d(x,L,C,D,l,12,n[1]),D=d(D,x,L,C,p,17,n[2]),C=d(C,D,x,L,f,22,n[3]),L=d(L,C,D,x,m,7,n[4]),x=d(x,L,C,D,g,12,n[5]),D=d(D,x,L,C,y,17,n[6]),C=d(C,D,x,L,A,22,n[7]),L=d(L,C,D,x,b,7,n[8]),x=d(x,L,C,D,v,12,n[9]),D=d(D,x,L,C,_,17,n[10]),C=d(C,D,x,L,S,22,n[11]),L=d(L,C,D,x,E,7,n[12]),x=d(x,L,C,D,w,12,n[13]),D=d(D,x,L,C,T,17,n[14]),L=h(L,C=d(C,D,x,L,k,22,n[15]),D,x,l,5,n[16]),x=h(x,L,C,D,y,9,n[17]),D=h(D,x,L,C,S,14,n[18]),C=h(C,D,x,L,a,20,n[19]),L=h(L,C,D,x,g,5,n[20]),x=h(x,L,C,D,_,9,n[21]),D=h(D,x,L,C,k,14,n[22]),C=h(C,D,x,L,m,20,n[23]),L=h(L,C,D,x,v,5,n[24]),x=h(x,L,C,D,T,9,n[25]),D=h(D,x,L,C,f,14,n[26]),C=h(C,D,x,L,b,20,n[27]),L=h(L,C,D,x,w,5,n[28]),x=h(x,L,C,D,p,9,n[29]),D=h(D,x,L,C,A,14,n[30]),L=c(L,C=h(C,D,x,L,E,20,n[31]),D,x,g,4,n[32]),x=c(x,L,C,D,b,11,n[33]),D=c(D,x,L,C,S,16,n[34]),C=c(C,D,x,L,T,23,n[35]),L=c(L,C,D,x,l,4,n[36]),x=c(x,L,C,D,m,11,n[37]),D=c(D,x,L,C,A,16,n[38]),C=c(C,D,x,L,_,23,n[39]),L=c(L,C,D,x,w,4,n[40]),x=c(x,L,C,D,a,11,n[41]),D=c(D,x,L,C,f,16,n[42]),C=c(C,D,x,L,y,23,n[43]),L=c(L,C,D,x,v,4,n[44]),x=c(x,L,C,D,E,11,n[45]),D=c(D,x,L,C,k,16,n[46]),L=u(L,C=c(C,D,x,L,p,23,n[47]),D,x,a,6,n[48]),x=u(x,L,C,D,A,10,n[49]),D=u(D,x,L,C,T,15,n[50]),C=u(C,D,x,L,g,21,n[51]),L=u(L,C,D,x,E,6,n[52]),x=u(x,L,C,D,f,10,n[53]),D=u(D,x,L,C,_,15,n[54]),C=u(C,D,x,L,l,21,n[55]),L=u(L,C,D,x,b,6,n[56]),x=u(x,L,C,D,k,10,n[57]),D=u(D,x,L,C,y,15,n[58]),C=u(C,D,x,L,w,21,n[59]),L=u(L,C,D,x,m,6,n[60]),x=u(x,L,C,D,S,10,n[61]),D=u(D,x,L,C,p,15,n[62]),C=u(C,D,x,L,v,21,n[63]),o[0]=o[0]+L|0,o[1]=o[1]+C|0,o[2]=o[2]+D|0,o[3]=o[3]+x|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;i[r>>>5]|=128<<24-r%32;var o=e.floor(s/4294967296),a=s;i[15+(r+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),i[14+(r+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(i.length+1),this._process();for(var n=this._hash,l=n.words,d=0;d<4;d++){var h=l[d];l[d]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return n},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function d(e,t,i,s,r,o,a){var n=e+(t&i|~t&s)+r+a;return(n<>>32-o)+t}function h(e,t,i,s,r,o,a){var n=e+(t&s|i&~s)+r+a;return(n<>>32-o)+t}function c(e,t,i,s,r,o,a){var n=e+(t^i^s)+r+a;return(n<>>32-o)+t}function u(e,t,i,s,r,o,a){var n=e+(i^(t|~s))+r+a;return(n<>>32-o)+t}t.MD5=o._createHelper(l),t.HmacMD5=o._createHmacHelper(l)}(Math),i.MD5)})),Ur((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=Dd).lib,r=s.WordArray,o=s.Hasher,a=i.algo,n=[],l=a.SHA1=o.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],d=0;d<80;d++){if(d<16)n[d]=0|e[t+d];else{var h=n[d-3]^n[d-8]^n[d-14]^n[d-16];n[d]=h<<1|h>>>31}var c=(s<<5|s>>>27)+l+n[d];c+=d<20?1518500249+(r&o|~r&a):d<40?1859775393+(r^o^a):d<60?(r&o|r&a|o&a)-1894007588:(r^o^a)-899497514,l=a,a=o,o=r<<30|r>>>2,r=s,s=c}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+l|0},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=Math.floor(i/4294967296),t[15+(s+64>>>9<<4)]=i,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=o._createHelper(l),i.HmacSHA1=o._createHmacHelper(l),d.SHA1)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=[],l=[];!function(){function t(t){for(var i=e.sqrt(t),s=2;s<=i;s++)if(!(t%s))return!1;return!0}function i(e){return 4294967296*(e-(0|e))|0}for(var s=2,r=0;r<64;)t(s)&&(r<8&&(n[r]=i(e.pow(s,.5))),l[r]=i(e.pow(s,1/3)),r++),s++}();var d=[],h=a.SHA256=o.extend({_doReset:function(){this._hash=new r.init(n.slice(0))},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=0;p<64;p++){if(p<16)d[p]=0|e[t+p];else{var f=d[p-15],m=(f<<25|f>>>7)^(f<<14|f>>>18)^f>>>3,g=d[p-2],y=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;d[p]=m+d[p-7]+y+d[p-16]}var A=s&r^s&o^r&o,b=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),v=u+((n<<26|n>>>6)^(n<<21|n>>>11)^(n<<7|n>>>25))+(n&h^~n&c)+l[p]+d[p];u=c,c=h,h=n,n=a+v|0,a=o,o=r,r=s,s=v+(b+A)|0}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+n|0,i[5]=i[5]+h|0,i[6]=i[6]+c|0,i[7]=i[7]+u|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;return i[r>>>5]|=128<<24-r%32,i[14+(r+64>>>9<<4)]=e.floor(s/4294967296),i[15+(r+64>>>9<<4)]=s,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(h),t.HmacSHA256=o._createHmacHelper(h)}(Math),i.SHA256)})),Ur((function(e,t){var i,s,r,o,a,n;e.exports=(s=(i=n=Dd).lib.WordArray,r=i.algo,o=r.SHA256,a=r.SHA224=o.extend({_doReset:function(){this._hash=new s.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=o._createHelper(a),i.HmacSHA224=o._createHmacHelper(a),n.SHA224)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(){var e=i,t=e.lib.Hasher,s=e.x64,r=s.Word,o=s.WordArray,a=e.algo;function n(){return r.create.apply(r,arguments)}var l=[n(1116352408,3609767458),n(1899447441,602891725),n(3049323471,3964484399),n(3921009573,2173295548),n(961987163,4081628472),n(1508970993,3053834265),n(2453635748,2937671579),n(2870763221,3664609560),n(3624381080,2734883394),n(310598401,1164996542),n(607225278,1323610764),n(1426881987,3590304994),n(1925078388,4068182383),n(2162078206,991336113),n(2614888103,633803317),n(3248222580,3479774868),n(3835390401,2666613458),n(4022224774,944711139),n(264347078,2341262773),n(604807628,2007800933),n(770255983,1495990901),n(1249150122,1856431235),n(1555081692,3175218132),n(1996064986,2198950837),n(2554220882,3999719339),n(2821834349,766784016),n(2952996808,2566594879),n(3210313671,3203337956),n(3336571891,1034457026),n(3584528711,2466948901),n(113926993,3758326383),n(338241895,168717936),n(666307205,1188179964),n(773529912,1546045734),n(1294757372,1522805485),n(1396182291,2643833823),n(1695183700,2343527390),n(1986661051,1014477480),n(2177026350,1206759142),n(2456956037,344077627),n(2730485921,1290863460),n(2820302411,3158454273),n(3259730800,3505952657),n(3345764771,106217008),n(3516065817,3606008344),n(3600352804,1432725776),n(4094571909,1467031594),n(275423344,851169720),n(430227734,3100823752),n(506948616,1363258195),n(659060556,3750685593),n(883997877,3785050280),n(958139571,3318307427),n(1322822218,3812723403),n(1537002063,2003034995),n(1747873779,3602036899),n(1955562222,1575990012),n(2024104815,1125592928),n(2227730452,2716904306),n(2361852424,442776044),n(2428436474,593698344),n(2756734187,3733110249),n(3204031479,2999351573),n(3329325298,3815920427),n(3391569614,3928383900),n(3515267271,566280711),n(3940187606,3454069534),n(4118630271,4000239992),n(116418474,1914138554),n(174292421,2731055270),n(289380356,3203993006),n(460393269,320620315),n(685471733,587496836),n(852142971,1086792851),n(1017036298,365543100),n(1126000580,2618297676),n(1288033470,3409855158),n(1501505948,4234509866),n(1607167915,987167468),n(1816402316,1246189591)],d=[];!function(){for(var e=0;e<80;e++)d[e]=n()}();var h=a.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=s.high,f=s.low,m=r.high,g=r.low,y=o.high,A=o.low,b=a.high,v=a.low,_=n.high,S=n.low,E=h.high,w=h.low,T=c.high,k=c.low,L=u.high,C=u.low,D=p,x=f,R=m,P=g,I=y,B=A,M=b,F=v,U=_,O=S,N=E,j=w,G=T,z=k,W=L,V=C,$=0;$<80;$++){var H,J,q=d[$];if($<16)J=q.high=0|e[t+2*$],H=q.low=0|e[t+2*$+1];else{var K=d[$-15],Y=K.high,Q=K.low,X=(Y>>>1|Q<<31)^(Y>>>8|Q<<24)^Y>>>7,Z=(Q>>>1|Y<<31)^(Q>>>8|Y<<24)^(Q>>>7|Y<<25),ee=d[$-2],te=ee.high,ie=ee.low,se=(te>>>19|ie<<13)^(te<<3|ie>>>29)^te>>>6,re=(ie>>>19|te<<13)^(ie<<3|te>>>29)^(ie>>>6|te<<26),oe=d[$-7],ae=oe.high,ne=oe.low,le=d[$-16],de=le.high,he=le.low;J=(J=(J=X+ae+((H=Z+ne)>>>0>>0?1:0))+se+((H+=re)>>>0>>0?1:0))+de+((H+=he)>>>0>>0?1:0),q.high=J,q.low=H}var ce,ue=U&N^~U&G,pe=O&j^~O&z,fe=D&R^D&I^R&I,me=x&P^x&B^P&B,ge=(D>>>28|x<<4)^(D<<30|x>>>2)^(D<<25|x>>>7),ye=(x>>>28|D<<4)^(x<<30|D>>>2)^(x<<25|D>>>7),Ae=(U>>>14|O<<18)^(U>>>18|O<<14)^(U<<23|O>>>9),be=(O>>>14|U<<18)^(O>>>18|U<<14)^(O<<23|U>>>9),ve=l[$],_e=ve.high,Se=ve.low,Ee=W+Ae+((ce=V+be)>>>0>>0?1:0),we=ye+me;W=G,V=z,G=N,z=j,N=U,j=O,U=M+(Ee=(Ee=(Ee=Ee+ue+((ce+=pe)>>>0>>0?1:0))+_e+((ce+=Se)>>>0>>0?1:0))+J+((ce+=H)>>>0>>0?1:0))+((O=F+ce|0)>>>0>>0?1:0)|0,M=I,F=B,I=R,B=P,R=D,P=x,D=Ee+(ge+fe+(we>>>0>>0?1:0))+((x=ce+we|0)>>>0>>0?1:0)|0}f=s.low=f+x,s.high=p+D+(f>>>0>>0?1:0),g=r.low=g+P,r.high=m+R+(g>>>0

    >>0?1:0),A=o.low=A+B,o.high=y+I+(A>>>0>>0?1:0),v=a.low=v+F,a.high=b+M+(v>>>0>>0?1:0),S=n.low=S+O,n.high=_+U+(S>>>0>>0?1:0),w=h.low=w+j,h.high=E+N+(w>>>0>>0?1:0),k=c.low=k+z,c.high=T+G+(k>>>0>>0?1:0),C=u.low=C+V,u.high=L+W+(C>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[30+(s+128>>>10<<5)]=Math.floor(i/4294967296),t[31+(s+128>>>10<<5)]=i,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(h),e.HmacSHA512=t._createHmacHelper(h)}(),i.SHA512)})),Ur((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=Dd).x64,r=s.Word,o=s.WordArray,a=i.algo,n=a.SHA512,l=a.SHA384=n.extend({_doReset:function(){this._hash=new o.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=n._createHelper(l),i.HmacSHA384=n._createHmacHelper(l),d.SHA384)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.x64.Word,n=t.algo,l=[],d=[],h=[];!function(){for(var e=1,t=0,i=0;i<24;i++){l[e+5*t]=(i+1)*(i+2)/2%64;var s=(2*e+3*t)%5;e=t%5,t=s}for(e=0;e<5;e++)for(t=0;t<5;t++)d[e+5*t]=t+(2*e+3*t)%5*5;for(var r=1,o=0;o<24;o++){for(var n=0,c=0,u=0;u<7;u++){if(1&r){var p=(1<>>24)|4278255360&(o<<24|o>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(C=i[r]).high^=a,C.low^=o}for(var n=0;n<24;n++){for(var u=0;u<5;u++){for(var p=0,f=0,m=0;m<5;m++)p^=(C=i[u+5*m]).high,f^=C.low;var g=c[u];g.high=p,g.low=f}for(u=0;u<5;u++){var y=c[(u+4)%5],A=c[(u+1)%5],b=A.high,v=A.low;for(p=y.high^(b<<1|v>>>31),f=y.low^(v<<1|b>>>31),m=0;m<5;m++)(C=i[u+5*m]).high^=p,C.low^=f}for(var _=1;_<25;_++){var S=(C=i[_]).high,E=C.low,w=l[_];w<32?(p=S<>>32-w,f=E<>>32-w):(p=E<>>64-w,f=S<>>64-w);var T=c[d[_]];T.high=p,T.low=f}var k=c[0],L=i[0];for(k.high=L.high,k.low=L.low,u=0;u<5;u++)for(m=0;m<5;m++){var C=i[_=u+5*m],D=c[_],x=c[(u+1)%5+5*m],R=c[(u+2)%5+5*m];C.high=D.high^~x.high&R.high,C.low=D.low^~x.low&R.low}C=i[0];var P=h[n];C.high^=P.high,C.low^=P.low}},_doFinalize:function(){var t=this._data,i=t.words;this._nDataBytes;var s=8*t.sigBytes,o=32*this.blockSize;i[s>>>5]|=1<<24-s%32,i[(e.ceil((s+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var a=this._state,n=this.cfg.outputLength/8,l=n/8,d=[],h=0;h>>24)|4278255360&(u<<24|u>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),d.push(p),d.push(u)}return new r.init(d,n)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),i=0;i<25;i++)t[i]=t[i].clone();return e}});t.SHA3=o._createHelper(u),t.HmacSHA3=o._createHmacHelper(u)}(Math),i.SHA3)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=r.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),l=r.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),d=r.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),h=r.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=r.create([0,1518500249,1859775393,2400959708,2840853838]),u=r.create([1352829926,1548603684,1836072691,2053994217,0]),p=a.RIPEMD160=o.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=0;i<16;i++){var s=t+i,r=e[s];e[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var o,a,p,v,_,S,E,w,T,k,L,C=this._hash.words,D=c.words,x=u.words,R=n.words,P=l.words,I=d.words,B=h.words;for(S=o=C[0],E=a=C[1],w=p=C[2],T=v=C[3],k=_=C[4],i=0;i<80;i+=1)L=o+e[t+R[i]]|0,L+=i<16?f(a,p,v)+D[0]:i<32?m(a,p,v)+D[1]:i<48?g(a,p,v)+D[2]:i<64?y(a,p,v)+D[3]:A(a,p,v)+D[4],L=(L=b(L|=0,I[i]))+_|0,o=_,_=v,v=b(p,10),p=a,a=L,L=S+e[t+P[i]]|0,L+=i<16?A(E,w,T)+x[0]:i<32?y(E,w,T)+x[1]:i<48?g(E,w,T)+x[2]:i<64?m(E,w,T)+x[3]:f(E,w,T)+x[4],L=(L=b(L|=0,B[i]))+k|0,S=k,k=T,T=b(w,10),w=E,E=L;L=C[1]+p+T|0,C[1]=C[2]+v+k|0,C[2]=C[3]+_+S|0,C[3]=C[4]+o+E|0,C[4]=C[0]+a+w|0,C[0]=L},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e.sigBytes=4*(t.length+1),this._process();for(var r=this._hash,o=r.words,a=0;a<5;a++){var n=o[a];o[a]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}return r},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function f(e,t,i){return e^t^i}function m(e,t,i){return e&t|~e&i}function g(e,t,i){return(e|~t)^i}function y(e,t,i){return e&i|t&~i}function A(e,t,i){return e^(t|~i)}function b(e,t){return e<>>32-t}t.RIPEMD160=o._createHelper(p),t.HmacRIPEMD160=o._createHmacHelper(p)}(),i.RIPEMD160)})),Ur((function(e,t){var i,s,r;e.exports=(s=(i=Dd).lib.Base,r=i.enc.Utf8,void(i.algo.HMAC=s.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=r.parse(t));var i=e.blockSize,s=4*i;t.sigBytes>s&&(t=e.finalize(t)),t.clamp();for(var o=this._oKey=t.clone(),a=this._iKey=t.clone(),n=o.words,l=a.words,d=0;d>>2];e.sigBytes-=t}};s.BlockCipher=h.extend({cfg:h.cfg.extend({mode:p,padding:f}),reset:function(){var e;h.reset.call(this);var t=this.cfg,i=t.iv,s=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=s.createEncryptor:(e=s.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,i&&i.words):(this._mode=e.call(s,this,i&&i.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=s.CipherParams=r.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),g=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,i=e.salt;return(i?o.create([1398893684,1701076831]).concat(i).concat(t):t).toString(l)},parse:function(e){var t,i=l.parse(e),s=i.words;return 1398893684==s[0]&&1701076831==s[1]&&(t=o.create(s.slice(2,4)),s.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:t})}},y=s.SerializableCipher=r.extend({cfg:r.extend({format:g}),encrypt:function(e,t,i,s){s=this.cfg.extend(s);var r=e.createEncryptor(i,s),o=r.finalize(t),a=r.cfg;return m.create({ciphertext:o,key:i,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:s.format})},decrypt:function(e,t,i,s){return s=this.cfg.extend(s),t=this._parse(t,s.format),e.createDecryptor(i,s).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),A=(t.kdf={}).OpenSSL={execute:function(e,t,i,s,r){if(s||(s=o.random(8)),r)a=d.create({keySize:t+i,hasher:r}).compute(e,s);else var a=d.create({keySize:t+i}).compute(e,s);var n=o.create(a.words.slice(t),4*i);return a.sigBytes=4*t,m.create({key:a,iv:n,salt:s})}},b=s.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:A}),encrypt:function(e,t,i,s){var r=(s=this.cfg.extend(s)).kdf.execute(i,e.keySize,e.ivSize,s.salt,s.hasher);s.iv=r.iv;var o=y.encrypt.call(this,e,t,r.key,s);return o.mixIn(r),o},decrypt:function(e,t,i,s){s=this.cfg.extend(s),t=this._parse(t,s.format);var r=s.kdf.execute(i,e.keySize,e.ivSize,t.salt,s.hasher);return s.iv=r.iv,y.decrypt.call(this,e,t,r.key,s)}})}())})),Ur((function(e,t){var i;e.exports=((i=Dd).mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,i,s){var r,o=this._iv;o?(r=o.slice(0),this._iv=void 0):r=this._prevBlock,s.encryptBlock(r,0);for(var a=0;a>24&255)){var t=e>>16&255,i=e>>8&255,s=255&e;255===t?(t=0,255===i?(i=0,255===s?s=0:++s):++i):++t,e=0,e+=t<<16,e+=i<<8,e+=s}else e+=1<<24;return e}function s(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var r=e.Encryptor=e.extend({processBlock:function(e,t){var i=this._cipher,r=i.blockSize,o=this._iv,a=this._counter;o&&(a=this._counter=o.slice(0),this._iv=void 0),s(a);var n=a.slice(0);i.encryptBlock(n,0);for(var l=0;l>>2]|=r<<24-o%4*8,e.sigBytes+=r},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)})),Ur((function(e,t){var i;e.exports=((i=Dd).pad.Iso10126={pad:function(e,t){var s=4*t,r=s-e.sigBytes%s;e.concat(i.lib.WordArray.random(r-1)).concat(i.lib.WordArray.create([r<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)})),Ur((function(e,t){var i;e.exports=((i=Dd).pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)})),Ur((function(e,t){var i;e.exports=((i=Dd).pad.ZeroPadding={pad:function(e,t){var i=4*t;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){var t=e.words,i=e.sigBytes-1;for(i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},i.pad.ZeroPadding)})),Ur((function(e,t){var i;e.exports=((i=Dd).pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(e){var t=i,s=t.lib.CipherParams,r=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(r)},parse:function(e){var t=r.parse(e);return s.create({ciphertext:t})}}}(),i.format.Hex)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo,r=[],o=[],a=[],n=[],l=[],d=[],h=[],c=[],u=[],p=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var i=0,s=0;for(t=0;t<256;t++){var f=s^s<<1^s<<2^s<<3^s<<4;f=f>>>8^255&f^99,r[i]=f,o[f]=i;var m=e[i],g=e[m],y=e[g],A=257*e[f]^16843008*f;a[i]=A<<24|A>>>8,n[i]=A<<16|A>>>16,l[i]=A<<8|A>>>24,d[i]=A,A=16843009*y^65537*g^257*m^16843008*i,h[f]=A<<24|A>>>8,c[f]=A<<16|A>>>16,u[f]=A<<8|A>>>24,p[f]=A,i?(i=m^e[e[e[y^m]]],s^=e[e[s]]):i=s=1}}();var f=[0,1,2,4,8,16,32,64,128,27,54],m=s.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,i=e.sigBytes/4,s=4*((this._nRounds=i+6)+1),o=this._keySchedule=[],a=0;a6&&a%i==4&&(d=r[d>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d]):(d=r[(d=d<<8|d>>>24)>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d],d^=f[a/i|0]<<24),o[a]=o[a-i]^d);for(var n=this._invKeySchedule=[],l=0;l>>24]]^c[r[d>>>16&255]]^u[r[d>>>8&255]]^p[r[255&d]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,n,l,d,r)},decryptBlock:function(e,t){var i=e[t+1];e[t+1]=e[t+3],e[t+3]=i,this._doCryptBlock(e,t,this._invKeySchedule,h,c,u,p,o),i=e[t+1],e[t+1]=e[t+3],e[t+3]=i},_doCryptBlock:function(e,t,i,s,r,o,a,n){for(var l=this._nRounds,d=e[t]^i[0],h=e[t+1]^i[1],c=e[t+2]^i[2],u=e[t+3]^i[3],p=4,f=1;f>>24]^r[h>>>16&255]^o[c>>>8&255]^a[255&u]^i[p++],g=s[h>>>24]^r[c>>>16&255]^o[u>>>8&255]^a[255&d]^i[p++],y=s[c>>>24]^r[u>>>16&255]^o[d>>>8&255]^a[255&h]^i[p++],A=s[u>>>24]^r[d>>>16&255]^o[h>>>8&255]^a[255&c]^i[p++];d=m,h=g,c=y,u=A}m=(n[d>>>24]<<24|n[h>>>16&255]<<16|n[c>>>8&255]<<8|n[255&u])^i[p++],g=(n[h>>>24]<<24|n[c>>>16&255]<<16|n[u>>>8&255]<<8|n[255&d])^i[p++],y=(n[c>>>24]<<24|n[u>>>16&255]<<16|n[d>>>8&255]<<8|n[255&h])^i[p++],A=(n[u>>>24]<<24|n[d>>>16&255]<<16|n[h>>>8&255]<<8|n[255&c])^i[p++],e[t]=m,e[t+1]=g,e[t+2]=y,e[t+3]=A},keySize:8});e.AES=t._createHelper(m)}(),i.AES)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(){var e=i,t=e.lib,s=t.WordArray,r=t.BlockCipher,o=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],n=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],d=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],h=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=o.DES=r.extend({_doReset:function(){for(var e=this._key.words,t=[],i=0;i<56;i++){var s=a[i]-1;t[i]=e[s>>>5]>>>31-s%32&1}for(var r=this._subKeys=[],o=0;o<16;o++){var d=r[o]=[],h=l[o];for(i=0;i<24;i++)d[i/6|0]|=t[(n[i]-1+h)%28]<<31-i%6,d[4+(i/6|0)]|=t[28+(n[i+24]-1+h)%28]<<31-i%6;for(d[0]=d[0]<<1|d[0]>>>31,i=1;i<7;i++)d[i]=d[i]>>>4*(i-1)+3;d[7]=d[7]<<5|d[7]>>>27}var c=this._invSubKeys=[];for(i=0;i<16;i++)c[i]=r[15-i]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,i){this._lBlock=e[t],this._rBlock=e[t+1],u.call(this,4,252645135),u.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),u.call(this,1,1431655765);for(var s=0;s<16;s++){for(var r=i[s],o=this._lBlock,a=this._rBlock,n=0,l=0;l<8;l++)n|=d[l][((a^r[l])&h[l])>>>0];this._lBlock=a,this._rBlock=o^n}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,u.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(e,t){var i=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=i,this._lBlock^=i<>>e^this._lBlock)&t;this._lBlock^=i,this._rBlock^=i<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),r=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=c.createEncryptor(s.create(t)),this._des2=c.createEncryptor(s.create(i)),this._des3=c.createEncryptor(s.create(r))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=r._createHelper(f)}(),i.TripleDES)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=s.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,i=e.sigBytes,s=this._S=[],r=0;r<256;r++)s[r]=r;r=0;for(var o=0;r<256;r++){var a=r%i,n=t[a>>>2]>>>24-a%4*8&255;o=(o+s[r]+n)%256;var l=s[r];s[r]=s[o],s[o]=l}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,i=this._j,s=0,r=0;r<4;r++){i=(i+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[i],e[i]=o,s|=e[(e[t]+e[i])%256]<<24-8*r}return this._i=t,this._j=i,s}e.RC4=t._createHelper(r);var a=s.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(a)}(),i.RC4)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,i=0;i<4;i++)e[i]=16711935&(e[i]<<8|e[i]>>>24)|4278255360&(e[i]<<24|e[i]>>>8);var s=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,i=0;i<4;i++)l.call(this);for(i=0;i<8;i++)r[i]^=s[i+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(r[0]^=d,r[1]^=c,r[2]^=h,r[3]^=u,r[4]^=d,r[5]^=c,r[6]^=h,r[7]^=u,i=0;i<4;i++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(n)}(),i.Rabbit)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var r=0;r<4;r++)l.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(s[0]^=d,s[1]^=c,s[2]^=h,s[3]^=u,s[4]^=d,s[5]^=c,s[6]^=h,s[7]^=u,r=0;r<4;r++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(n)}(),i.RabbitLegacy)})),Ur((function(e,t){var i;e.exports=(i=Dd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo;const r=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var n={pbox:[],sbox:[]};function l(e,t){let i=t>>24&255,s=t>>16&255,r=t>>8&255,o=255&t,a=e.sbox[0][i]+e.sbox[1][s];return a^=e.sbox[2][r],a+=e.sbox[3][o],a}function d(e,t,i){let s,o=t,a=i;for(let t=0;t1;--t)o^=e.pbox[t],a=l(e,o)^a,s=o,o=a,a=s;return s=o,o=a,a=s,a^=e.pbox[1],o^=e.pbox[0],{left:o,right:a}}function c(e,t,i){for(let t=0;t<4;t++){e.sbox[t]=[];for(let i=0;i<256;i++)e.sbox[t][i]=a[t][i]}let s=0;for(let a=0;a=i&&(s=0);let n=0,l=0,h=0;for(let t=0;t>>2]|=e[i]<<24-i%4*8;return xd.lib.WordArray.create(t,e.length)}const Id=16,Bd=[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],Md=[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 Fd(e){const t=[];for(let i=0,s=e.length;i1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Od(e){const t=[];for(let i=0,s=e.length;i>>6),t.push(128|63&s);else if(s<=55295||s>=57344&&s<=65535)t.push(224|s>>>12),t.push(128|s>>>6&63),t.push(128|63&s);else{if(!(s>=65536&&s<=1114111))throw t.push(s),new Error("input is not supported");i++,t.push(240|s>>>18&28),t.push(128|s>>>12&63),t.push(128|s>>>6&63),t.push(128|63&s)}}return t}function Nd(e){const t=[];for(let i=0,s=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("")}function jd(e,t){const i=31&t;return e<>>32-i}function Gd(e){return(255&Bd[e>>>24&255])<<24|(255&Bd[e>>>16&255])<<16|(255&Bd[e>>>8&255])<<8|255&Bd[255&e]}function zd(e){return e^jd(e,2)^jd(e,10)^jd(e,18)^jd(e,24)}function Wd(e){return e^jd(e,13)^jd(e,23)}function Vd(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[4*t],r[1]=255&e[4*t+1],r[2]=255&e[4*t+2],r[3]=255&e[4*t+3],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];for(let e,t=0;t<32;t+=4)e=s[1]^s[2]^s[3]^i[t+0],s[0]^=zd(Gd(e)),e=s[2]^s[3]^s[0]^i[t+1],s[1]^=zd(Gd(e)),e=s[3]^s[0]^s[1]^i[t+2],s[2]^=zd(Gd(e)),e=s[0]^s[1]^s[2]^i[t+3],s[3]^=zd(Gd(e));for(let e=0;e<16;e+=4)t[e]=s[3-e/4]>>>24&255,t[e+1]=s[3-e/4]>>>16&255,t[e+2]=s[3-e/4]>>>8&255,t[e+3]=255&s[3-e/4]}function $d(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[0+4*t],r[1]=255&e[1+4*t],r[2]=255&e[2+4*t],r[3]=255&e[3+4*t],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];s[0]^=2746333894,s[1]^=1453994832,s[2]^=1736282519,s[3]^=2993693404;for(let e,i=0;i<32;i+=4)e=s[1]^s[2]^s[3]^Md[i+0],t[i+0]=s[0]^=Wd(Gd(e)),e=s[2]^s[3]^s[0]^Md[i+1],t[i+1]=s[1]^=Wd(Gd(e)),e=s[3]^s[0]^s[1]^Md[i+2],t[i+2]=s[2]^=Wd(Gd(e)),e=s[0]^s[1]^s[2]^Md[i+3],t[i+3]=s[3]^=Wd(Gd(e));if(0===i)for(let e,i=0;i<16;i++)e=t[i],t[i]=t[31-i],t[31-i]=e}function Hd(e,t,i){let{padding:s="pkcs#7",mode:r,iv:o=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===r&&("string"==typeof o&&(o=Fd(o)),16!==o.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Fd(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==i?Od(e):Fd(e):[...e],("pkcs#5"===s||"pkcs#7"===s)&&0!==i){const t=Id-e.length%Id;for(let i=0;i=Id;){const t=e.slice(c,c+16),s=new Array(16);if("cbc"===r)for(let e=0;ee.length&&s+r<=i.length?e.length-t:s+r>i.length&&t+r<=e.length?i.length-s:t+r<=e.length&&s+r<=i.length?r:i.length>24&255,e>>16&255,e>>8&255,255&e)}function ih(e,t){return t+3>>19)^(s<<23|s>>>9)}function oh(e,t){var i=new Array(36);i[0]=ih(t,0),i[1]=ih(t,4),i[2]=ih(t,8),i[3]=ih(t,12);for(var s=0;s<32;s++)i[s+4]=i[s]^ah(i[s+1]^i[s+2]^i[s+3]^e[s]);var r=new Array(4);for(s=35;s>=32;s--)r[35-s]=i[s];var o=function(e){for(var t=new Array(4*e.length),i=0;i>>30)^(s<<10|s>>>22)^(s<<18|s>>>14)^(s<<24|s>>>8)}function nh(e,t,i){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==i||null==i||i.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var s=sh(e),r=Math.ceil(i.length/16),o=new Array(i.length),a=t.slice(),n=0;ne)return this.preDelayTimestamp-e>1e3&&this.player.debugWarn("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===Ne)return this.pushLatestDelay;if(this.preDelayTimestamp&&this.preDelayTimestamp-e>1e3)return this.player.debugWarn("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,s=e-this.firstTimestamp;t=i>=s?i-s:s-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.debugLog("CommonDemux","initInterval() and is hls and support hls265 so return"):-1===this.player.getStreamType().indexOf(y)?this.player.isPlaybackCacheBeforeDecodeForFpsRender()?this.player.debugLog("CommonDemux","initInterval() and playback and playbackIsCacheBeforeDecodeForFpsRender is true so return"):(this.player.debugLog("CommonDemux","setInterval()"),this._loop(),this.stopId=setInterval((()=>{if(this.player.isDestroyedOrClosed())return;let e=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=e);const t=e-this.preLoopTimestamp;this.updateHistoryIntervalDiffTimeList(t),t>100&&this.player.debugWarn("CommonDemux",`loop demux diff time is ${t}`),this._loop(),this.preLoopTimestamp=(new Date).getTime()}),20)):this.player.debugLog("CommonDemux","initInterval() and is worker stream so return")}clearStopInterval(){this.stopId&&(clearInterval(this.stopId),this.stopId=null)}startPlaybackLoopInterval(){this.initPlaybackCacheLoop()}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.debugLog("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,s=this.player._opt.playType===b;if(this.bufferList.length){if(this.isPushDropping)return void this.player.debugWarn("CommonDemux",`_loop isPushDropping is true and bufferList length is ${this.bufferList.length}`);if(this.dropping){for(e=this.bufferList.shift(),this.player.debugWarn("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.debugLog("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.debugLog("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&&s)this.hasIframeInBufferList()?(this.player.debugWarn("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.debugWarn("CommonDemux",`_loop delay is ${this.delay} bufferList is ${this.bufferList}`);break}this.bufferList.shift(),this._doDecoderDecode(e)}}else-1!==this.delay&&this.player.debugLog("CommonDemux","loop() bufferList is empty and reset delay"),this.resetAllDelay()}_doDecode(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;const o=this.player;let a={ts:i,cts:r,type:t,isIFrame:!1};this.player.isPlayer()?(t===je&&o._opt.playType===b&&this.calcNetworkDelay(i),o._opt.useWCS&&!o._opt.useOffscreen||o._opt.useMSE?(t===je&&(a.isIFrame=s),this.pushBuffer(e,a)):t===je?o.decoderWorker&&o.decoderWorker.decodeVideo(e,i,s):t===Ne&&o._opt.hasAudio&&o.decoderWorker&&o.decoderWorker.decodeAudio(e,i)):this.player.isPlayback()&&(t===je&&(a.isIFrame=s),this.player.isPlaybackOnlyDecodeIFrame()?t===je&&s&&this.pushBuffer(e,a):this.player.isPlaybackCacheBeforeDecodeForFpsRender()||1===this.player.getPlaybackRate()?this.pushBuffer(e,a):this.pushBuffer(e,a,!1))}_doDecodeByHls(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=!1;if(t===Ne&&Vr(e)&&(this.player.debugLog("CommonDemux",`hls pushBuffer audio ts is ${i}, isAacCodecPacket is true`),o=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(t,i)}let a=!1;if(t===je&&s&&Sa(e)&&(this.player.debugLog("CommonDemux",`hls pushBuffer video ts is ${i}, isVideoSequenceHeader is true`),a=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(t,i)}this.player.recording&&wa(a)&&wa(o)&&this.handleRecording(e,t,i,s,r),t===je?this._doDecoderDecode({ts:i,cts:r,payload:e,type:je,isIFrame:s}):t===Ne&&this._doDecoderDecode({ts:i,payload:e,type:Ne})}_doDecodeByFmp4(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByTs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByPs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_decodeNext(e){const t=e.ts;if(0===this.bufferList.length)return;let i=this.bufferList[0];const s=i.ts-t,r=e.type===je&&i.type===Ne,o=e.type===je&&Sa(e.payload);(s<=20||r||o)&&(this.player.debugLog("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 ${s} and isVideoAndNextAudio is ${r} and isVideoSqeHeader is ${o}`),this.bufferList.shift(),this._doDecoderDecode(i))}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:s}=t;this.player.isPlayer()&&this.player.updateStats({buf:this.delay}),e.type===Ne?t._opt.hasAudio&&(t._opt.useMSE&&t._opt.mseDecodeAudio?s.decodeAudio(e.payload,e.ts):t._opt.useWCS&&t._opt.wcsDecodeAudio?i.decodeAudio(e.payload,e.ts):t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts)):e.type===je&&(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?s.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t.decoderWorker&&t.decoderWorker.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const s=this.player._opt.videoBuffer,r=this.player._opt.videoBufferDelay,o=this.player.isPlayer();if(t.type===Ne&&Vr(e)){if(this.player.debugLog("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:Ne})}else if(t.type===je&&t.isIFrame&&Sa(e)){if(this.player.debugLog("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:je,isIFrame:t.isIFrame,cts:t.cts})}else{if(this.player.recording&&this.handleRecording(e,t.type,t.ts,t.isIFrame,t.cts),o){if(t.type===je){if(this.preTimestampDuration>0){const e=t.ts-this.preTimestamp,i=this.preTimestampDuration+this.preTimestampDuration/2;e>=i&&this.player.debugLog("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${this.preTimestamp},\n diff is ${e} and preTsDuration is ${this.preTimestampDuration} and maxDiff is ${i}\n maybe trigger black screen or flower screen`)}if(null!==this.preTimestamp&&this.preTimestamp>=t.ts&&(this.player.debugWarn("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts} less than (or equal) preTs is ${this.preTimestamp} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${this.prevPayloadBufferSize}`),this.preTimestamp-t.ts>ee&&(this.player.debugWarn("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()),this.player._opt.isDropSameTimestampGop&&wa(t.isIFrame)&&this.player.isDemuxDecodeFirstIIframeInit())){const e=this.hasIframeInBufferList(),t=wa(this.isPushDropping);return this.player.debugLog("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))}this.preTimestamp>0&&(this.preTimestampDuration=t.ts-this.preTimestamp),this.prevPayloadBufferSize=e.byteLength,this.preTimestamp=t.ts}if(this.player.isDemuxDecodeFirstIIframeInit()){let e=this.getDelayNotUpdateDelay(t.ts,t.type);this.pushLatestDelay=e;const i=r+s;this.player._opt.useMSE?this.delay>0&&e>i&&this.delay ${r+s}, bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):this.delay>0&&e>i&&this.delay ${r+s},bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()),this.isHistoryIntervalDiffTimeAllLarge()&&wa(this.player.visibility)&&(this.player._opt.useMSE?this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debugWarn("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.debugWarn("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()))}}i?t.type===Ne?this.bufferList.push({ts:t.ts,payload:e,type:Ne}):t.type===je&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:je,isIFrame:t.isIFrame}):t.type===je?this._doDecoderDecode({ts:t.ts,cts:t.cts,payload:e,type:je,isIFrame:t.isIFrame}):t.type===Ne&&this._doDecoderDecode({ts:t.ts,payload:e,type:Ne}),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&this.calcPlaybackStreamFps()}}calcPlaybackStreamFps(){if(No(this.playbackStreamVideoFps)||No(this.playbackStreamAudioFps)){let e=this.playbackStreamVideoFps,t=this.playbackStreamAudioFps;if(No(this.playbackStreamVideoFps)&&(e=ma(this.bufferList,je),e>0&&(this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),this.playbackStreamFps=t?e+t:e,wa(this.player._opt.hasAudio)&&(this.player.debugLog(this.TAG_NAME,"playbackCacheBeforeDecodeForFpsRender,_opt.hasAudio is false and set streamAudioFps is 0"),this.playbackStreamAudioFps=0),this.initPlaybackCacheLoop())),No(this.playbackStreamAudioFps)&&(t=ma(this.bufferList,Ne),t>0&&(this.playbackStreamAudioFps=t,this.playbackStreamFps=e?e+t:t,this.initPlaybackCacheLoop())),No(this.playbackStreamVideoFps)&&No(this.playbackStreamAudioFps)){const i=this.bufferList.map((e=>({type:e.type,ts:e.ts})));this.player.debugLog("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,s=i?60:40;this.bufferList.length>=s&&(this.player.debugWarn("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${this.bufferList.length} more than ${s}, 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=>Ea(e.isIFrame)&&e.type===je));if(this.isAllIframeInBufferList())for(let t=0;t=this.getNotDroppingDelayTs()){this.player.debugLog("CommonDemux",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} 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.debugLog("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(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.player.debugLog("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(),Ea(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=uo()):et?i-t:0;s>this.player._opt.networkDelay&&this.player._opt.playType===b&&(this.player.debugWarn("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 ${s}, _opt.networkDelay is ${this.player._opt.networkDelay}`),this.player.emit(gt.networkDelayTimeout,s)),this.player.updateStats({netBuf:s})}calcIframeIntervalTimestamp(e){if(null===this.preIframeTs)this.preIframeTs=e;else if(this.preIframeTs{t.type===je&&(e+=1)})),e}getAudioBufferLength(){let e=0;return this.bufferList.forEach((t=>{t.type===Ne&&(e+=1)})),e}hasIframeInBufferList(){return this.bufferList.some((e=>e.type===je&&e.isIFrame))}isAllIframeInBufferList(){const e=this.getVideoBufferLength();let t=0;return this.bufferList.forEach((e=>{e.type===je&&e.isIFrame&&(t+=1)})),e===t}getInputByteLength(){return 0}getIsStreamTsMoreThanLocal(){return this.isStreamTsMoreThanLocal}close(){}reset(){}findSei(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=4;Go(this.nalUnitSize)&&(s=this.nalUnitSize);const r=ro(e.slice(5),s);if(wa(i)){const e=this.player.getVideoInfo();e&&e.encType&&(i=e.encType===Rt)}r.forEach((e=>{const s=i?e[0]>>>1&63:31&e[0],r=i&&(s===ai||s===oi),o=wa(i)&&s===zt;if(r||o){const s=oo(e,i);this.player.emitVideoSei({ts:t,data:s.payload})}}))}handleRecording(e,t,i,s,r){if(this.player.isRecordTypeFlv()){const s=new Uint8Array(e);t===je?this.player.recorder.addVideo(s,i):t===Ne&&this.player.recorder.addAudio(s,i)}else if(this.player.isRecordTypeMp4()){const o=new Uint8Array(e);if(this.player.recorder.isWasmMp4()){if(t===je)this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r);else if(t===Ne){const t=new Uint8Array(e);this.player.recorder.handleAddAudioTrack($r(t)?t.slice(2):t.slice(1),i)}}else t===je&&this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r)}}updateNalUnitSize(e){const t=15&e[0];this.player.video.updateVideoInfo({encTypeCode:t});const i=t===Dt;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.debugLog(this.TAG_NAME,`demux() isVideoSequenceHeader is true and isHevc is ${i} and nalUnitSize is ${this.nalUnitSize}`)}cryptoPayload(e,t){let i=this.player,s=e;if(i._opt.isM7sCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();t.encTypeCode?s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),i=new Uint8Array(i);const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=e.slice(o+4+2,o+4+a);let r=new Cd.ModeOfOperation.ctr(t,new Cd.Counter(i));const n=r.decrypt(s);r=null,e.set(n,o+4+2)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===Dt):i.debugWarn(this.TAG_NAME,`videoInfo.encTypeCode is ${t.encTypeCode}`)}else i.debugError(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`);else if(i._opt.isSm4Crypto)if(i._opt.sm4CryptoKey){const t=this.player.video.getVideoInfo().encTypeCode===Dt,r=this.player._opt.isSm4CryptoH265V2;s=i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0?function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),i=new Uint8Array(i);const o=e.byteLength;let a=5;for(;ao)break;let l=e[a+4],d=!1,h=2;if(s?(r&&(h=3),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 s=nh(t,i,e.slice(a+4+h,a+4+n));e.set(s,a+4+h)}a=a+4+n}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t,r):function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=new Uint8Array(e.slice(0,5)),a=5;for(;ar){const t=new Uint8Array(o.length+e.length-a);t.set(o,0),t.set(e.slice(a),o.length),o=t;break}let d=e[a+4],h=!1,c=2;if(i?(s&&(c=3),d=d>>>1&63,h=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,h=1===d||5===d),h){const i=Hd(e.slice(a+4+c,a+4+l),t,0,{padding:"none",output:"array"});let s=i[i.length-1];if(s>0&&s<16){let e=!0;for(let t=1;t<=s;t++)if(i[i.length-t]!==s){e=!1;break}e&&i.splice(i.length-s,s)}const r=new Uint8Array(c);r.set(e.slice(a+4,a+4+c),0);const n=ao(fl(r,new Uint8Array(i))),d=new Uint8Array(o.length+n.length);d.set(o,0),d.set(n,o.length),o=d}else{const t=e.slice(a+4,a+4+l),i=new Uint8Array(o.length+4+t.length);i.set(o,0),i.set(n,o.length),i.set(t,o.length+4),o=i}a=a+4+l}return o}(e,i._opt.sm4CryptoKey,t,r)}else i._opt.sm4CryptoKey||i.debugError(this.TAG_NAME,"isSm4Crypto opt.sm4CryptoKey is null");else if(i._opt.isXorCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=qd(e.slice(o+4,o+4+a),t,i);e.set(s,o+4)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===Dt)}else i.debugError(this.TAG_NAME,"isXorCrypto opt.xorCryptoKey is null");return s}cryptoPayloadAudio(e){let t=this.player;if(wa(t._opt.isCryptoAudio))return e;let i=e;if(t._opt.isM7sCrypto)if(t._opt.cryptoKey&&t._opt.cryptoKey.byteLength>0&&t._opt.cryptoIV&&t._opt.cryptoIV.byteLength>0){e[0]>>4===Pt&&(i=function(e,t,i){if(e.byteLength<=30)return e;const s=e.slice(32);let r=new Cd.ModeOfOperation.ctr(t,new Cd.Counter(i));const o=r.decrypt(s);return r=null,e.set(o,32),e}(e,t._opt.cryptoKey,t._opt.cryptoIV))}else t.debugError(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${t._opt.cryptoKey&&t._opt.cryptoKey.byteLength} or cryptoIV.length is ${t._opt.cryptoIV&&t._opt.cryptoIV.byteLength} null`);return i}_decodeEnhancedH265Video(e,t){const i=e[0],s=48&i,r=15&i,o=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),l="a"==String.fromCharCode(o[0]);if(r===ur){if(s===mr){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.debugLog(this.TAG_NAME,`demux() isVideoSequenceHeader(enhancedH265) is true and nalUnitSize is ${this.nalUnitSize}`),this._doDecode(e,je,0,!0,0)}}}else if(r===pr){let i=e,r=0;const o=s===mr;if(o&&this.calcIframeIntervalTimestamp(t),l);else{n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,r=n[0];i=rl(e.slice(8),o),i=this.cryptoPayload(i,o),this._doDecode(i,je,t,o,r)}}else if(r===fr){const i=s===mr,r=e.slice(5);i&&this.calcIframeIntervalTimestamp(t);let o=rl(r,i);o=this.cryptoPayload(o,i),this._doDecode(o,je,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}handlePlaybackPause(e){Ea(e)?this.clearStopInterval():this.startPlaybackLoopInterval()}}var dh=function(e,t,i,s){return new(i||(i=Promise))((function(r,o){function a(e){try{l(s.next(e))}catch(e){o(e)}}function n(e){try{l(s.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,n)}l((s=s.apply(e,t||[])).next())}))};const hh=Symbol(32),ch=Symbol(16),uh=Symbol(8);class ph{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 dh(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var s;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(s=this.pull)||void 0===s||s.call(this,e)}))}))}readU32(){return this.read(hh)}readU16(){return this.read(ch)}readU8(){return this.read(uh)}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 s=e=>t.length<(i=e);if("number"==typeof this.need){if(s(this.need))return;e=t.subarray(0,i)}else if(this.need===hh){if(s(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===ch){if(s(2))return;e=t[0]<<8|t[1]}else if(this.need===uh){if(s(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(s(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(s(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}}ph.U32=hh,ph.U16=ch,ph.U8=uh;class fh extends lh{constructor(e){super(e),this.TAG_NAME="FlvDemux",this.input=new ph(this.demux()),e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.input&&(this.input.close(),this.input=null),this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){this.input?this.input.write(e):this.player&&this.player.debugWarn(this.TAG_NAME,"dispatch() this.input is null")}*demux(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),s=this.player;for(;;){if(!this.input)return;t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const o=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let a=i[0];const n=(yield o).slice();if(!s)return;switch(r){case Ge:if(s._opt.hasAudio&&(s.updateStats({abps:n.byteLength}),n.byteLength>0)){let e=this.cryptoPayloadAudio(n);this._doDecode(e,Ne,a)}break;case ze:if(s._opt.hasVideo&&n.length>=6){let e=a;s.updateStats({vbps:n.byteLength,dts:e}),s._times.demuxStart||(s._times.demuxStart=uo());const t=n[0];if(this._isEnhancedH265Header(t))this._decodeEnhancedH265Video(n,e);else{const e=15&t;let s=(t>>4&15)===Bs;const r=e===Dt,o=e===Ct;if(wa(r||o))return void this.player.debugWarn(this.TAG_NAME,`demux() codecId is ${e} and ignore`);wa(s)&&Ea(Pa(n,r))&&(this.player.debugLog(this.TAG_NAME,"demux() isIFrame is false and unit type is IDR and update to true"),s=!0),s&&(this.calcIframeIntervalTimestamp(a),null===this.nalUnitSize&&Sa(n)&&this.updateNalUnitSize(n)),i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let l=i[0],d=this.cryptoPayload(n,s);this._doDecode(d,je,a,s,l)}}else n.length<6&&s.debugWarn(this.TAG_NAME,`payload.length is ${n.length} less than 6 and ignore`);break;case We:if(this.player.isRecordTypeFlv()){const e=new Uint8Array(n);this.player.recorder.addMetaData(e)}const e=Tl(n);e&&e.onMetaData&&s.updateMetaData(e.onMetaData);break;default:s.debugLog(this.TAG_NAME,`demux() type is ${r}`)}}}close(){this.input&&(this.input.close(),this.input=null)}getInputByteLength(){let e=0;return this.input&&this.input.buffer&&(e=this.input.buffer.byteLength),e}}class mh extends lh{constructor(e){super(e),this.TAG_NAME="M7sDemux",e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){const t=this.player,i=new DataView(e),s=i.getUint8(0),r=i.getUint32(1,!1),o=new ArrayBuffer(4),a=new Uint32Array(o);switch(s){case Ne:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,s,r)}break;case je:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=uo()),i.byteLength>=11){const o=new Uint8Array(e,5);let n=r;t.updateStats({vbps:o.byteLength,dts:n});const l=o[0];if(this._isEnhancedH265Header(l))this._decodeEnhancedH265Video(o,r);else{const e=i.getUint8(5)>>4==1;e&&this.calcIframeIntervalTimestamp(r),a[0]=o[4],a[1]=o[3],a[2]=o[2],a[3]=0;let t=a[0],n=this.cryptoPayload(o,e);this._doDecode(n,s,r,e,t)}}else this.player.debugWarn(this.TAG_NAME,"dispatch","dv byteLength is",i.byteLength,"and return")}}}class gh extends fh{constructor(e){super(e),e.debugLog("WebTransportDemux","init")}destroy(){this.player.debugLog("WebTransportDemux","destroy"),super.destroy()}}var yh,Ah=Ur((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),bh=(yh=Ah)&&yh.__esModule&&Object.prototype.hasOwnProperty.call(yh,"default")?yh.default:yh;class vh{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>s,o=8-s;if(o>=e)return i&&(this.index+=e),r>>o-e;{i&&(this.index+=o);const s=e-o;return r<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}class _h extends lh{constructor(e){super(e),bh(this,"TAG_NAME","NakedFlowDemux"),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.pendingUnits={},this.localDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,e.debugLog(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.pendingUnits={},this.localDts=0,this.localAudioDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){this.player;const t=new Uint8Array(e);if(this.player._opt.nakedFlowDemuxUseNew){const e=this.extractNALu$3(t);if(0===e.length)return void this.player.debugLog(this.TAG_NAME,"dispatch naluArray.length === 0");this.handleVideoFrames(e)}else 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,10),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,s=0,r=e.byteLength,o=0,a=[];for(;s1)for(let e=0;e{const t=$n(e);t===Ot||t===Ut?this.handleVideoH264Nalu(e):Jn(t)&&s.push(e)})),1===s.length)this.handleVideoH264Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=$n(e[0]);for(let i=1;i{this.handleVideoH264Nalu(e)}))}}else if(this.streamVideoType===Rt)if(this.player._opt.nakedFlowH265DemuxUseNew){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debugWarn(this.TAG_NAME,"handleVideoNalu","h265 naluList.length === 0");const s=[];if(i.forEach((e=>{const t=ol(e);t===ii||t===ei||t===Xt?this.handleVideoH265Nalu(e):al(t)&&s.push(e)})),1===s.length)this.handleVideoH265Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=ol(e[0]);for(let i=1;i{this.handleVideoH265Nalu(e)}))}}else{ol(t)===ii?this.extractH265PPS(t):this.handleVideoH265Nalu(t)}else this.player.debugWarn(this.TAG_NAME," this.streamVideoType is null")}extractH264PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{Hn($n(e))?this.extractH264SEI(e):this.handleVideoH264Nalu(e)}))}extractH265PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{const t=ol(e);t===ri?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=Mt.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,s=(1&i[2])<<2|(192&i[3])>>6,r=new Uint8Array([175,0,e<<3|(14&t)>>1,(1&t)<<7|s<<3]);this.isSendAACSeqHeader=!0,this._doDecode(r,Ne,0,!1,0)}const s=this.getNaluAudioDts(),r=new Uint8Array(t.length+2);r.set([175,1],0),r.set(t,2),this._doDecode(r,Ne,s,!1,0)}handleAudioG711ANalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=Mt.ALAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([114],0),s.set(t,1),this._doDecode(s,Ne,i,!1,0)}handleAudioG711UNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=Mt.MULAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([130],0),s.set(t,1),this._doDecode(s,Ne,i,!1,0)}handleVideoH264Nalu(e){const t=$n(e);switch(t){case Ut:this.sps=e;break;case Ot:this.pps=e}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Wn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,je,t,!0,0),this.sps=null,this.pps=null}if(Jn(t)){this.player._times.demuxStart||(this.player._times.demuxStart=uo());const i=qn(t),s=this.getNaluDts(),r=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 s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,je,s,i,0)}else this.player.debugWarn(this.TAG_NAME,`handleVideoH264Nalu is avc seq head nalType is ${t}`)}else if(this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Wn({sps:this.sps,pps:this.pps});this._doDecode(e,je,0,!0,0),this.sps=null,this.pps=null}}handleVideoH264NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=uo());const i=this.getNaluDts(),s=Vn(e.reduce(((e,t)=>{const i=ao(e),s=ao(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,je,i,t,0)}else this.player.debugWarn(this.TAG_NAME,"handleVideoH264NaluList isSendSeqHeader is false")}handleVideoH265Nalu(e){const t=ol(e);switch(t){case Xt:this.vps=e;break;case ei:this.sps=e;break;case ii:this.pps=e}if(this.isSendSeqHeader){if(this.vps&&this.sps&&this.pps){const e=sl({vps:this.vps,sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,je,t,!0,0),this.vps=null,this.sps=null,this.pps=null}if(al(t)){this.player._times.demuxStart||(this.player._times.demuxStart=uo());const i=nl(t),s=this.getNaluDts(),r=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 s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,je,s,i,0)}}else if(this.vps&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=sl({vps:this.vps,sps:this.sps,pps:this.pps});this._doDecode(e,je,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=uo());const i=this.getNaluDts(),s=rl(e.reduce(((e,t)=>{const i=ao(e),s=ao(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,je,i,t,0)}else this.player.debugWarn(this.TAG_NAME,"handleVideoH265NaluList isSendSeqHeader is false")}_preDoDecode(e,t,i,s,r){this.player.updateStats({vbps:e.byteLength,dts:i}),s&&this.calcIframeIntervalTimestamp(i),this._doDecode(e,je,i,s,r)}getInputByteLength(){let e=0;return this.lastBuf&&(e=this.lastBuf.byteLength),e}handleVideoFrames(e){if(!this.streamVideoType)for(let t of e)if(this.streamVideoType=ha(t),this.streamVideoType)break;this.streamVideoType?this.streamVideoType===xt?this.handleVideoH264Frames(e):this.streamVideoType===Rt&&this.handleVideoH265Frames(e):this.player.debugWarn(this.TAG_NAME,"handleVideoFrames streamVideoType is null")}handleVideoH264Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=$n(a);let n=!1,l=e===Gt;e!==jt&&e!==Gt||(o=this.parseVideo264Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null,r=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Ot:this.pps=e;break;case Ut:this.sps=e;break;case zt:r=e}if(Jn(t)){const t=ao(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Wn({sps:this.sps,pps:this.pps});this._doDecode(e,je,0,!0,0),this.sps=null,this.pps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Wn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,je,t,!0,0),this.sps=null,this.pps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=uo());const e=this.getNaluDts(),t=Vn(s,i);if(this.player._opt.isEmitSEI&&r){const t=oo(r,!1);this.player.emitVideoSei({ts:e,data:t.payload})}this._preDoDecode(t,je,e,i,0)}}}))}handleVideoH265Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=ol(a);let n=!1,l=nl(e);al(e)&&(o=this.parseVideo265Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null,r=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ii:this.pps=e;break;case ei:this.sps=e;break;case Xt:this.vps=e;break;case ai:case oi:r=e}if(al(t)){const t=ao(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps&&this.vps){this.isSendSeqHeader=!0;const e=sl({sps:this.sps,pps:this.pps,vps:this.vps});this._doDecode(e,je,0,!0,0),this.sps=null,this.pps=null,this.vps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps&&this.vps){const e=sl({sps:this.sps,pps:this.pps,vps:this.vps}),t=this.localDts;this._doDecode(e,je,t,!0,0),this.sps=null,this.pps=null,this.vps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=uo());const e=this.getNaluDts(),t=rl(s,i);if(this.player._opt.isEmitSEI&&r){const t=oo(r,!0);this.player.emitVideoSei({ts:e,data:t.payload})}this._preDoDecode(t,je,e,i,0)}}}))}handleVideoH265Frames_1(e){e.forEach((e=>{this.handleVideoNalu(e)}))}parseVideo264Header(e){const t=new vh(e);t.readUByte();return{isfms:0===t.readUEG(),sType:t.readUEG()}}parseVideo265Header(e){const t=new vh(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}}class Sh extends lh{constructor(e){super(e),this.player=e,e.debugLog("EmptyDemux","init")}destroy(){super.destroy(),this.player.debugLog("EmptyDemux","destroy")}}var Eh=Ur((function(e,t){var s,r,o,a=(s=new Date,r=4,o={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-s,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=r&&console.info("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=r&&console.warn("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=r&&console.error("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)}},o);a.getDurationString=function(e,t){var i;function s(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",s=0;s0&&(i+=","),i+="["+a.getDurationString(e.start(s))+","+a.getDurationString(e.end(s))+"]";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 s=new ArrayBuffer(i),r=new Uint8Array(this._buffer);new Uint8Array(s,0,r.length).set(r),this.buffer=s,this._byteLength=t}}},l.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}},l.BIG_ENDIAN=!1,l.LITTLE_ENDIAN=!0,l.prototype._byteLength=0,Object.defineProperty(l.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(l.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(l.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(l.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}}),l.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},l.prototype.isEof=function(){return this.position>=this._byteLength},l.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},l.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},l.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},l.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},l.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,l.memcpy=function(e,t,i,s,r){var o=new Uint8Array(e,t,r),a=new Uint8Array(i,s,r);o.set(a)},l.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},l.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},l.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;ir;s--,r++){var o=t[r];t[r]=t[s],t[s]=o}return e},l.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},l.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},l.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.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},l.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},l.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var h=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(h.prototype=new l(new ArrayBuffer,0,l.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},h.prototype.reduceBuffer=function(e,t,i){var s;return(s=new Uint8Array(i)).set(new Uint8Array(e,t,i)),s.buffer.fileStart=e.fileStart+t,s.buffer.usedBytes=0,s.buffer},h.prototype.insertBuffer=function(e){for(var t=!0,i=0;is.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<=s.fileStart||(e=this.reduceBuffer(e,0,s.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,r,o)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},h.prototype.logBufferLevel=function(e){var t,i,s,r,o,n=[],l="";for(s=0,r=0,t=0;t0&&(l+=o.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) ("+s+"/"+r+" bytes), continuous ranges: "+l)},h.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},h.prototype.findPosition=function(e,t,i){var s,r=null,o=-1;for(s=!0===e?0:this.bufferIndex;s=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+o),o):-1},h.prototype.findEndContiguousBuf=function(e){var t,i,s,r=void 0!==e?e:this.bufferIndex;if(i=this.buffers[r],this.buffers.length>r+1)for(t=r+1;t>3;return 31===s&&i.data.length>=2&&(s=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),s}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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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=c;var u={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"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){u.FullBox.prototype=new u.Box,u.ContainerBox.prototype=new u.Box,u.SampleEntry.prototype=new u.Box,u.TrackGroupTypeBox.prototype=new u.FullBox,u.BASIC_BOXES.forEach((function(e){u.createBoxCtor(e)})),u.FULL_BOXES.forEach((function(e){u.createFullBoxCtor(e)})),u.CONTAINER_BOXES.forEach((function(e){u.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){u.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){u.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,s){u.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=s},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){u.FullBox.call(this,e,t)},createBoxCtor:function(e,t){u.boxCodes.push(e),u[e+"Box"]=function(t){u.Box.call(this,e,t)},u[e+"Box"].prototype=new u.Box,t&&(u[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){u[e+"Box"]=function(t){u.FullBox.call(this,e,t)},u[e+"Box"].prototype=new u.FullBox,u[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:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):0!==d&&n+d>e.getEndPosition()?(e.seek(n),a.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):t?{code:u.OK,type:h,size:d,hdr_size:l,start:n}:(u[h+"Box"]?s=new u[h+"Box"](d):"uuid"!==h?(a.warn("BoxParser","Unknown box type: '"+h+"'"),(s=new u.Box(h,d)).has_unparsed_data=!0):u.UUIDBoxes[o]?s=new u.UUIDBoxes[o](d):(a.warn("BoxParser","Unknown uuid type: '"+o+"'"),(s=new u.Box(h,d)).uuid=o,s.has_unparsed_data=!0),s.hdr_size=l,s.start=n,s.write===u.Box.prototype.write&&"mdat"!==s.type&&(a.info("BoxParser","'"+c+"' box writing not yet implemented, keeping unparsed data in memory for later write"),s.parseDataAndRewind(e)),s.parse(e),(r=e.getPosition()-(s.start+s.size))<0?(a.warn("BoxParser","Parsing of box '"+c+"' did not read the entire indicated box data size (missing "+-r+" bytes), seeking forward"),e.seek(s.start+s.size)):r>0&&(a.error("BoxParser","Parsing of box '"+c+"' read "+r+" more bytes than the indicated box data size, seeking backwards"),0!==s.size&&e.seek(s.start+s.size)),{code:u.OK,box:s,size:s.size})},u.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)},u.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},u.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},u.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},u.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.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)},u.SAMPLE_ENTRY_TYPE_VISUAL="Visual",u.SAMPLE_ENTRY_TYPE_AUDIO="Audio",u.SAMPLE_ENTRY_TYPE_HINT="Hint",u.SAMPLE_ENTRY_TYPE_METADATA="Metadata",u.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",u.SAMPLE_ENTRY_TYPE_SYSTEM="System",u.SAMPLE_ENTRY_TYPE_TEXT="Text",u.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},u.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.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},u.SampleEntry.prototype.parseFooter=function(e){u.ContainerBox.prototype.parse.call(this,e)},u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_HINT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT),u.createMediaSampleEntryCtor(u.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)})),u.createMediaSampleEntryCtor(u.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)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT,"enct"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"encm"),u.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()})),u.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),u.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)})),u.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")})),u.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))})),u.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),u.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),u.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),u.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))})),u.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),u.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())})),u.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|s>>5&7})),u.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,s.bsid=r>>1&31,s.bsmod=(1&r)<<4|o>>4&15,s.acmod=o>>1&7,s.lfeon=1&o,s.num_dep_sub=a>>1&15,s.num_dep_sub>0&&(s.chan_loc=(1&a)<<8|e.readUint8())}})),u.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var s=e.readUint8(),r=Math.min(127&s,i.length-1);if(r?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[r]),128&s)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),u.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),u.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++})),u.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)))})),u.createBoxCtor("hvcC",(function(e){var t,i,s,r;this.configurationVersion=e.readUint8(),r=e.readUint8(),this.general_profile_space=r>>6,this.general_tier_flag=(32&r)>>5,this.general_profile_idc=31&r,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(),r=e.readUint8(),this.constantFrameRate=r>>6,this.numTemporalLayers=(13&r)>>3,this.temporalIdNested=(4&r)>>2,this.lengthSizeMinusOne=3&r,this.nalu_arrays=[];var o=e.readUint8();for(t=0;t>7,a.nalu_type=63&r;var n=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 s=0;s>7,this.axis=1&t})),u.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()))})),u.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&o)<<8|e.readUint8():a.property_index=127&o}}})),u.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,s.assignment_type=127&r,s.assignment_type){case 0:s.grouping_type=e.readString(4);break;case 1:s.grouping_type=e.readString(4),s.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:s.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),u.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),u.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),p.prototype.toString=function(){return"("+this.x+","+this.y+")"},u.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new p(e.readUint16(),e.readUint16()),this.display_primaries[1]=new p(e.readUint16(),e.readUint16()),this.display_primaries[2]=new p(e.readUint16(),e.readUint16()),this.white_point=new p(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),u.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()})),u.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()})),u.createFullBoxCtor("meta",(function(e){this.boxes=[],u.ContainerBox.prototype.parse.call(this,e)})),u.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),u.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),u.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),u.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()})),u.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),u.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),u.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(s))})),u.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),u.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),u.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(),s=0;s>7,this.num_leading_samples=127&t})),u.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=u.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))})),u.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),u.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),u.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.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[s]=t>>4&3,this.sample_is_depended_on[s]=t>>2&3,this.sample_has_redundancy[s]=3&t})),u.createFullBoxCtor("senc"),u.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,s.referenced_size=2147483647&r,s.subsegment_duration=e.readUint32(),r=e.readUint32(),s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}})),u.SingleItemTypeReferenceBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.SingleItemTypeReferenceBox.prototype=new u.Box,u.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&s}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=u.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))})),u.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),u.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&u.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&u.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&u.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&u.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&u.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),u.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(),s=0;s>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),u.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),u.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),u.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},u.createTrackGroupCtor("msrc"),u.TrackReferenceTypeBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.TrackReferenceTypeBox.prototype=new u.Box,u.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},u.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&u.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&u.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;i>7&1,this.block_pad_lsb=i>>6&1,this.block_little_endian=i>>5&1,this.block_reversed=i>>4&1,this.pad_unknown=i>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),u.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),u.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),u.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),u.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=u.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),u.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),u.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=u.parseHex16(e)})),u.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))})),u.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),u.createFullBoxCtor("vvcC",(function(e){var t,i,s={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<1){for(s.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,i=this.num_sublayers-2;i>=0;--i){var a=s.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++i)s.extract_bits(1);for(this.sublayer_level_idc=[],i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=u.decimalToHex(s,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var r=!1,o="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||r)&&(o="."+u.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+o,r=!0);t+=o}return t},u.vvc1SampleEntry.prototype.getCodec=u.vvi1SampleEntry.prototype.getCodec=function(){var e,t=u.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 s,r=[],o=0;for(o|=this.vvcC.ptl_frame_only_constraint<<7,o|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,r.push(o),o&&(s=e),o=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===s)i=".CA";else{i=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",n=0,l=0;for(e=0;e<=s;++e)for(n=n<<8|r[e],l+=8;l>=5;){i+=a[n>>l-5&31],n&=(1<<(l-=5))-1}l&&(i+=a[31&(n<<=5-l)])}}t+=i}return t},u.mp4aSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+u.decimalToHex(t)+(i?"."+i:"")}return e},u.stxtSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},u.vp08SampleEntry.prototype.getCodec=u.vp09SampleEntry.prototype.getCodec=function(){var e=u.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},u.av01SampleEntry.prototype.getCodec=function(){var e,t=u.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},u.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(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>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)},u.FullBox.prototype.writeHeader=function(e){this.size+=4,u.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},u.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))},u.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)},u.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},u.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)},u.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)},u.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&u.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&u.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&u.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&u.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof u.Box||t[i]instanceof u.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||u.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},u.boxEqual=function(e,t){if(!u.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},y.prototype.setExtractionOptions=function(e,t,i){var s=this.getTrackById(e);if(s){var r={};this.extractedTracks.push(r),r.id=e,r.user=t,r.trak=s,s.nextSample=0,r.nb_samples=1e3,r.samples=[],i&&i.nbSamples&&(r.nb_samples=i.nbSamples)}},y.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},y.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=u.parseOneBox(this.stream,false)).code===u.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)}},y.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))},y.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},y.prototype.getInfo=function(){var e,t,i,s,r,o,a={},n=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(n+1e3*this.moov.mvhd.creation_time),a.modified=new Date(n+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)&&(a.info("ISOFile","Sending fragmented data on track #"+s.id+" for samples ["+Math.max(0,i.nextSample-s.nb_samples)+","+(i.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(s.id,s.user,s.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),s.segmentStream=null,s!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+o.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(o.id,o.user,o.samples),o.samples=[],o!==this.extractedTracks[t]))break}}}},y.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},y.prototype.getBoxes=function(e,t){var i=[];return y._sweep.call(this,e,i,t),i},y._sweep=function(e,t,i){for(var s in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;y._sweep.call(this.boxes[s],e,t,i)}},y.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},y.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},y.prototype.releaseUsedSamples=function(e,t,i){var s=0,r=this.getTrackById(e);r.lastValidSample||(r.lastValidSample=0);for(var o=r.lastValidSample;oe*r.timescale){d=s-1;break}t&&r.is_sync&&(l=s)}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 o=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,n)+" and offset: "+o),{offset:o,time:e/n}},y.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},y.prototype.seek=function(e,t){var i,s,r,o=this.moov,n={offset:1/0,time:1/0};if(this.moov){for(r=0;rthis.getTrackDuration(i)||((s=this.seekTrack(e,t,i)).offset-1){a=l;break}switch(a){case"Visual":if(r.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),o.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 u.avcCBox;c.parse(new n(t.avcDecoderConfigRecord)),o.addBox(c)}else if(t.hevcDecoderConfigRecord){var p=new u.hvcCBox;p.parse(new n(t.hevcDecoderConfigRecord)),o.addBox(p)}break;case"Audio":r.add("smhd").set("balance",t.balance||0),o.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":r.add("hmhd");break;case"Subtitle":if(r.add("sthd"),"stpp"===t.type)o.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:r.add("nmhd")}t.description&&o.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){o.addBox(e)})),r.add("dinf").add("dref").addEntry((new u["url Box"]).set("flags",1));var f=r.add("stbl");return f.add("stsd").addEntry(o),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}},u.Box.prototype.computeSize=function(e){var t=e||new l;t.endianness=l.BIG_ENDIAN,this.write(t)},y.prototype.addSample=function(e,t,i){var s=i||{},r={},o=this.getTrackById(e);if(null!==o){r.number=o.samples.length,r.track_id=o.tkhd.track_id,r.timescale=o.mdia.mdhd.timescale,r.description_index=s.sample_description_index?s.sample_description_index-1:0,r.description=o.mdia.minf.stbl.stsd.entries[r.description_index],r.data=t,r.size=t.byteLength,r.alreadyRead=r.size,r.duration=s.duration||1,r.cts=s.cts||0,r.dts=s.dts||0,r.is_sync=s.is_sync||!1,r.is_leading=s.is_leading||0,r.depends_on=s.depends_on||0,r.is_depended_on=s.is_depended_on||0,r.has_redundancy=s.has_redundancy||0,r.degradation_priority=s.degradation_priority||0,r.offset=0,r.subsamples=s.subsamples,o.samples.push(r),o.samples_size+=r.size,o.samples_duration+=r.duration,void 0===o.first_dts&&(o.first_dts=s.dts),this.processSamples();var a=this.createSingleSampleMoof(r);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),r}},y.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new u.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var s=i.add("traf"),r=this.getTrackById(e.track_id);return s.add("tfhd").set("track_id",e.track_id).set("flags",u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),s.add("tfdt").set("baseMediaDecodeTime",e.dts-(r.first_dts||0)),s.add("trun").set("flags",u.TRUN_FLAGS_DATA_OFFSET|u.TRUN_FLAGS_DURATION|u.TRUN_FLAGS_SIZE|u.TRUN_FLAGS_FLAGS|u.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},y.prototype.lastMoofIndex=0,y.prototype.samplesDataSize=0,y.prototype.resetTables=function(){var e,t,i,s,r,o;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(l=r[a].grouping_type+"/0",(n=new d(r[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[l]||(t.sample_groups_info[l]=n))}else for(a=0;a=2&&(l=s[a].grouping_type+"/0",n=new d(s[a].grouping_type,0),e.sample_groups_info[l]||(e.sample_groups_info[l]=n))},y.setSampleGroupProperties=function(e,t,i,s){var r,o;for(r in t.sample_groups=[],s){var a;if(t.sample_groups[r]={},t.sample_groups[r].grouping_type=s[r].grouping_type,t.sample_groups[r].grouping_type_parameter=s[r].grouping_type_parameter,i>=s[r].last_sample_in_run&&(s[r].last_sample_in_run<0&&(s[r].last_sample_in_run=0),s[r].entry_index++,s[r].entry_index<=s[r].sbgp.entries.length-1&&(s[r].last_sample_in_run+=s[r].sbgp.entries[s[r].entry_index].sample_count)),s[r].entry_index<=s[r].sbgp.entries.length-1?t.sample_groups[r].group_description_index=s[r].sbgp.entries[s[r].entry_index].group_description_index:t.sample_groups[r].group_description_index=-1,0!==t.sample_groups[r].group_description_index)a=s[r].fragment_description?s[r].fragment_description:s[r].description,t.sample_groups[r].group_description_index>0?(o=t.sample_groups[r].group_description_index>65535?(t.sample_groups[r].group_description_index>>16)-1:t.sample_groups[r].group_description_index-1,a&&o>=0&&(t.sample_groups[r].description=a.entries[o])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[r].description=a.entries[a.default_group_description_index-1])}},y.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))},y.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=o.sample_counts[v]),t>0?(e.samples[t-1].duration=o.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,k.dts=e.samples[t-1].dts+e.samples[t-1].duration):k.dts=0,a?(t>=_&&(S++,_<0&&(_=0),_+=a.sample_counts[S]),k.cts=e.samples[t].dts+a.sample_offsets[S]):k.cts=k.dts,n?(t==n.sample_numbers[E]-1?(k.is_sync=!0,E++):(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,y.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)&&y.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)}},y.prototype.updateSampleLists=function(){var e,t,i,s,r,o,a,n,l,d,h,c,p,f,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&y.initSampleGroups(c,h,h.sbgps,c.mdia.minf.stbl.sgpds,h.sgpds),t=0;t0?f.dts=c.samples[c.samples.length-2].dts+c.samples[c.samples.length-2].duration:(h.tfdt?f.dts=h.tfdt.baseMediaDecodeTime:f.dts=0,c.first_traf_merged=!0),f.cts=f.dts,g.flags&u.TRUN_FLAGS_CTS_OFFSET&&(f.cts=f.dts+g.sample_composition_time_offset[i]),m=a,g.flags&u.TRUN_FLAGS_FLAGS?m=g.sample_flags[i]:0===i&&g.flags&u.TRUN_FLAGS_FIRST_FLAG&&(m=g.first_sample_flags),f.is_sync=!(m>>16&1),f.is_leading=m>>26&3,f.depends_on=m>>24&3,f.is_depended_on=m>>22&3,f.has_redundancy=m>>20&3,f.degradation_priority=65535&m;var A=!!(h.tfhd.flags&u.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(h.tfhd.flags&u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(g.flags&u.TRUN_FLAGS_DATA_OFFSET),_=0;_=A?h.tfhd.base_data_offset:b||0===t?d.start:n,f.offset=0===t&&0===i?v?_+g.data_offset:_:n,n=f.offset+f.size,(h.sbgps.length>0||h.sgpds.length>0||c.mdia.minf.stbl.sbgps.length>0||c.mdia.minf.stbl.sgpds.length>0)&&y.setSampleGroupProperties(c,f,f.number_in_traf,h.sample_groups_info)}}if(h.subs){c.has_fragment_subsamples=!0;var S=h.first_sample_index;for(t=0;t-1))return null;var o=(i=this.stream.buffers[r]).byteLength-(s.offset+s.alreadyRead-i.fileStart);if(s.size-s.alreadyRead<=o)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+(s.size-s.alreadyRead)+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,s.size-s.alreadyRead),i.usedBytes+=s.size-s.alreadyRead,this.stream.logBufferLevel(),s.alreadyRead=s.size,s;if(0===o)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+o+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,o),s.alreadyRead+=o,i.usedBytes+=o,this.stream.logBufferLevel()}},y.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.description=null,delete i.degradation_priority,delete i.depends_on,delete i.description_index,delete i.has_redundancy,delete i.is_depended_on,delete i.is_leading,delete i.is_sync,delete i.moof_number,delete i.number_in_traf,delete i.timescale,delete i.cts,delete i.dts,delete i.offset,delete i.size,delete i.track_id,delete i.duration,i.alreadyRead=0,i.size):0},y.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},y.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},y.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=o.ipro.protections[o.iinf.item_infos[e].protection_index-1]),o.iinf.item_infos[e].item_type?i.type=o.iinf.item_infos[e].item_type:i.type="mime",i.content_type=o.iinf.item_infos[e].content_type,i.content_encoding=o.iinf.item_infos[e].content_encoding;if(o.grpl)for(e=0;e0&&u.property_index-1-1))return null;var n=(t=this.stream.buffers[o]).byteLength-(r.offset+r.alreadyRead-t.fileStart);if(!(r.length-r.alreadyRead<=n))return a.debug("ISOFile","Getting item #"+e+" extent #"+s+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+n+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,n),r.alreadyRead+=n,i.alreadyRead+=n,t.usedBytes+=n,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+s+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+(r.length-r.alreadyRead)+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,r.length-r.alreadyRead),t.usedBytes+=r.length-r.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=r.length-r.alreadyRead,r.alreadyRead=r.length}}return i.alreadyRead===i.size?i:null},y.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(s)}return t},y.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},u.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)},u.FullBox.prototype.printHeader=function(e){this.size+=4,u.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},u.Box.prototype.print=function(e){this.printHeader(e)},u.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)},u.tkhdBox.prototype.print=function(e){u.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 A={createFile:function(e,t){var i=void 0===e||e,s=new y(t);return s.discardMdatData=!i,s}};t.createFile=A.createFile}));function wh(e){return e.reduce(((e,t)=>256*e+t))}function Th(e){const t=[101,103,119,99],i=e.length-28,s=e.slice(i,i+t.length);return t.every(((e,t)=>e===s[t]))}Eh.Log,Eh.MP4BoxStream,Eh.DataStream,Eh.MultiBufferStream,Eh.MPEG4DescriptorParser,Eh.BoxParser,Eh.XMLSubtitlein4Parser,Eh.Textin4Parser,Eh.ISOFile,Eh.createFile;class kh{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 s=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(s instanceof Error)return console.error(s.message),this.d=!0,e;this.A=!0,this.u=i[1],Th(t)&&this.c++,WebAssembly.instantiate(i[2],s).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 Lh extends lh{constructor(e){super(e),this.TAG_NAME="Fmp4Loader",this.player=e,this.mp4Box=Eh.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 kh),this._listenMp4Box(),e.debugLog(this.TAG_NAME,"init")}destroy(){this.mp4Box&&(this.mp4Box.stop(),this.mp4Box.flush(),this.mp4Box.destroy(),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.debugLog(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.debugLog(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.debugLog(this.TAG_NAME,"seqHeader",e),this._doDecodeByFmp4(e,je,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),s=i.codec.replace("mp4a.40.","");this.mp4Box.setExtractionOptions(i.id);const r={profile:parseInt(s,10),sampleRate:t,channel:e.channel_count},o=Wr(r);this.player.debugLog(this.TAG_NAME,"aacADTSHeader",o,"config",r),this._doDecodeByFmp4(o,Ne,0,!1,0)}this.mp4Box.start()}onError(e){this.player.debugError(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,s=1e3*e.cts/e.timescale;e.duration,e.timescale,this.player.updateStats({vbps:t.byteLength,dts:s}),i&&this.calcIframeIntervalTimestamp(s);let r=null;r=this.isHevc?rl(t,i):Vn(t,i);let o=this.cryptoPayload(r,i);this._doDecodeByFmp4(o,je,s,i,0)}this.mp4Box.removeUsedSamples(e)}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 s=new Uint8Array(t.byteLength+2);s.set([175,1],0),s.set(t,2),this._doDecodeByFmp4(s,Ne,i,!1,0)}this.mp4Box.removeUsedSamples(e)}}else this.player.debugWarn(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 Eh.DataStream(void 0,0,Eh.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 s=new Uint8Array(t.buffer,8),r=new Uint8Array(i.length+s.length);return r.set(i,0),r.set(s,i.length),r}return null}dispatch(e){let t=new Uint8Array(e);this.transportDescarmber&&(t=this.transportDescarmber.transport(t)),t.buffer.fileStart=this.offset,this.offset+=t.byteLength,this.mp4Box.appendBuffer(t.buffer)}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=uo()+".fmp4",i.click(),URL.revokeObjectURL(t)}getInputByteLength(){let e=0;return this.mp4Box&&(e=this.mp4Box.getAllocatedSampleDataSize()),e}}class Ch extends lh{constructor(e){super(e),bh(this,"LOG_NAME","Mpeg4Loader"),this.player=e,this.player.debugLog(this.LOG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.LOG_NAME,"destroy")}}function Dh(){for(var e=arguments.length,t=new Array(e),i=0;ie+t.byteLength),0));let r=0;return t.forEach((e=>{s.set(e,r),r+=e.byteLength})),s}const xh=3,Rh=4,Ph=6,Ih=15,Bh=17,Mh=129,Fh=135,Uh=21,Oh=134,Nh=27,jh=36;class Gh{constructor(){this.slices=[],this.total_length=0,this.expected_length=0,this.random_access_indicator=0}}class zh{constructor(){this.pid=null,this.data=null,this.stream_type=null,this.random_access_indicator=null}}class Wh{constructor(){this.pid=null,this.stream_id=null,this.len=null,this.data=null,this.pts=null,this.nearest_pts=null,this.dts=null}}const Vh=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];class $h{constructor(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}isComplete(){let e=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,t=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&e&&t}isSeekable(){return!0===this.hasKeyframesIndex}getNearestKeyframe(e){if(null==this.keyframesIndex)return null;let t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}}_search(e,t){let i=0,s=e.length-1,r=0,o=0,a=s;for(t=e[r]&&t=6?(s=5,t=new Array(4),a=r-3):(s=2,t=new Array(2),a=r):-1!==n.indexOf("android")?(s=2,t=new Array(2),a=r):(s=5,a=r,t=new Array(4),r>=6?a=r-3:1===o&&(s=2,t=new Array(2),a=r)),t[0]=s<<3,t[0]|=(15&r)>>>1,t[1]=(15&r)<<7,t[1]|=(15&o)<<3,5===s&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Vh[r],this.sampling_index=r,this.channel_count=o,this.object_type=s,this.original_object_type=i,this.codec_mimetype="mp4a.40."+s,this.original_codec_mimetype="mp4a.40."+i}}class Jh extends lh{constructor(e){super(e),this.player=e,this.TAG_NAME="TsLoader",this.first_parse_=!0,this.tsPacketSize=0,this.syncOffset=0,this.pmt_=null,this.config_=null,this.media_info_=new $h,this.timescale_=90,this.duration_=0,this.pat_={version_number:0,network_pid:0,program_map_pid:{}},this.current_program_=null,this.current_pmt_pid_=-1,this.program_pmt_map_={},this.pes_slice_queues_={},this.section_slice_queues_={},this.video_metadata_={vps:null,sps:null,pps:null,details:null},this.audio_metadata_={codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},this.last_pcr_=null,this.last_pcr_base_=NaN,this.timestamp_offset_=0,this.audio_last_sample_pts_=void 0,this.aac_last_incomplete_data_=null,this.has_video_=!1,this.has_audio_=!1,this.video_init_segment_dispatched_=!1,this.audio_init_segment_dispatched_=!1,this.video_metadata_changed_=!1,this.audio_metadata_changed_=!1,this.loas_previous_frame=null,this.video_track_={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this.audio_track_={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._remainingPacketData=null,this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.media_info_=null,this.pes_slice_queues_=null,this.section_slice_queues_=null,this.video_metadata_=null,this.audio_metadata_=null,this.aac_last_incomplete_data_=null,this.video_track_=null,this.audio_track_=null,this._remainingPacketData=null,super.destroy()}probe(e){let t=new Uint8Array(e),i=-1,s=188;if(t.byteLength<=3*s)return{needMoreData:!0};for(;-1===i;){let e=Math.min(1e3,t.byteLength-3*s);for(let r=0;r=4&&(i-=4),{match:!0,consumed:0,ts_packet_size:s,sync_offset:i})}_initPmt(){return{program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}}dispatch(e){let t=new Uint8Array(e);this._remainingPacketData&&(t=Dh(this._remainingPacketData,t),this._remainingPacketData=null);let i=t.buffer;const s=this.parseChunks(i);s?this._remainingPacketData=t.subarray(s):t.length>>6;i[1];let o=(31&i[1])<<8|i[2],a=(48&i[3])>>>4,n=15&i[3],l=!(!this.pmt_||this.pmt_.pcr_pid!==o),d={},h=4;if(2==a||3==a){let e=i[4];if(e>0&&(l||3==a)){if(d.discontinuity_indicator=(128&i[5])>>>7,d.random_access_indicator=(64&i[5])>>>6,d.elementary_stream_priority_indicator=(32&i[5])>>>5,(16&i[5])>>>4){let e=300*this._getPcrBase(i)+((1&i[10])<<8|i[11]);this.last_pcr_=e}}if(2==a||5+e===188){t+=188,204===this.tsPacketSize&&(t+=16);continue}h=5+e}if(1==a||3==a)if(0===o||o===this.current_pmt_pid_||null!=this.pmt_&&this.pmt_.pid_stream_type[o]===Oh){let i=188-h;this.handleSectionSlice(e,t+h,i,{pid:o,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}else if(null!=this.pmt_&&null!=this.pmt_.pid_stream_type[o]){let i=188-h,s=this.pmt_.pid_stream_type[o];o!==this.pmt_.common_pids.h264&&o!==this.pmt_.common_pids.h265&&o!==this.pmt_.common_pids.adts_aac&&o!==this.pmt_.common_pids.loas_aac&&o!==this.pmt_.common_pids.ac3&&o!==this.pmt_.common_pids.eac3&&o!==this.pmt_.common_pids.opus&&o!==this.pmt_.common_pids.mp3&&!0!==this.pmt_.pes_private_data_pids[o]&&!0!==this.pmt_.timed_id3_pids[o]&&!0!==this.pmt_.synchronous_klv_pids[o]&&!0!==this.pmt_.asynchronous_klv_pids[o]||this.handlePESSlice(e,t+h,i,{pid:o,stream_type:s,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}t+=188,204===this.tsPacketSize&&(t+=16)}return this.dispatchAudioVideoMediaSegment(),t}handleSectionSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=this.section_slice_queues_[s.pid];if(s.payload_unit_start_indicator){let a=r[0];if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t+1,Math.min(i,a));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):this.clearSlices(o,s)}for(let n=1+a;n=o.expected_length&&this.clearSlices(o,s),n+=l.byteLength}}else if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t,Math.min(i,o.expected_length-o.total_length));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):o.total_length>=o.expected_length&&this.clearSlices(o,s)}}handlePESSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=r[0]<<16|r[1]<<8|r[2];r[3];let a=r[4]<<8|r[5];if(s.payload_unit_start_indicator){if(1!==o)return void this.player.debugWarn(this.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${o}`);let e=this.pes_slice_queues_[s.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?this.emitPESSlices(e,s):this.clearSlices(e,s)),this.pes_slice_queues_[s.pid]=new Gh,this.pes_slice_queues_[s.pid].random_access_indicator=s.random_access_indicator}if(null==this.pes_slice_queues_[s.pid])return;let n=this.pes_slice_queues_[s.pid];n.slices.push(r),s.payload_unit_start_indicator&&(n.expected_length=0===a?0:a+6),n.total_length+=r.byteLength,n.expected_length>0&&n.expected_length===n.total_length?this.emitPESSlices(n,s):n.expected_length>0&&n.expected_length>>6,n=t[8];2!==a&&3!==a||(i=this._getTimestamp(t,9),o=3===a?this._getTimestamp(t,14):i);let l,d=9+n;if(0!==r){if(r<3+n)return void this.player.debugWarn(this.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");l=r-3-n}else l=t.byteLength-d;let h=t.subarray(d,d+l);switch(e.stream_type){case xh:case Rh:this.parseMP3Payload(h,i);break;case Ph:this.pmt_.common_pids.opus===e.pid?this.parseOpusPayload(h,i):this.pmt_.common_pids.ac3===e.pid?this.parseAC3Payload(h,i):this.pmt_.common_pids.eac3===e.pid?this.parseEAC3Payload(h,i):this.pmt_.asynchronous_klv_pids[e.pid]?this.parseAsynchronousKLVMetadataPayload(h,e.pid,s):this.pmt_.smpte2038_pids[e.pid]?this.parseSMPTE2038MetadataPayload(h,i,o,e.pid,s):this.parsePESPrivateDataPayload(h,i,o,e.pid,s);break;case Ih:this.parseADTSAACPayload(h,i);break;case Bh:this.parseLOASAACPayload(h,i);break;case Mh:this.parseAC3Payload(h,i);break;case Fh:this.parseEAC3Payload(h,i);break;case Uh:this.pmt_.timed_id3_pids[e.pid]?this.parseTimedID3MetadataPayload(h,i,o,e.pid,s):this.pmt_.synchronous_klv_pids[e.pid]&&this.parseSynchronousKLVMetadataPayload(h,i,o,e.pid,s);break;case Nh:this.parseH264Payload(h,i,o,e.random_access_indicator);break;case jh:this.parseH265Payload(h,i,o,e.random_access_indicator)}}else if((188===s||191===s||240===s||241===s||255===s||242===s||248===s)&&e.stream_type===Ph){let i,o=6;i=0!==r?r:t.byteLength-o;let a=t.subarray(o,o+i);this.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,s)}}else this.player.debugError(this.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${i}`)}parsePAT(e){let t=e[0];if(0!==t)return void Log.e(this.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let i=(15&e[1])<<8|e[2];e[3],e[4];let s=(62&e[5])>>>1,r=1&e[5],o=e[6];e[7];let a=null;if(1===r&&0===o)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=s;else if(a=this.pat_,null==a)return;let n=i-5-4,l=-1,d=-1;for(let t=8;t<8+n;t+=4){let i=e[t]<<8|e[t+1],s=(31&e[t+2])<<8|e[t+3];0===i?a.network_pid=s:(a.program_pmt_pid[i]=s,-1===l&&(l=i),-1===d&&(d=s))}1===r&&0===o&&(null==this.pat_&&this.player.debugLog(this.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),this.pat_=a,this.current_program_=l,this.current_pmt_pid_=d)}parsePMT(e){let t=e[0];if(2!==t)return void this.player.debugError(this.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let i,s=(15&e[1])<<8|e[2],r=e[3]<<8|e[4],o=(62&e[5])>>>1,a=1&e[5],n=e[6];if(e[7],1===a&&0===n)i=this._initPmt(),i.program_number=r,i.version_number=o,this.program_pmt_map_[r]=i;else if(i=this.program_pmt_map_[r],null==i)return;i.pcr_pid=(31&e[8])<<8|e[9];let l=(15&e[10])<<8|e[11],d=12+l,h=s-9-l-4;for(let t=d;t0){for(let s=t+5;s0)for(let s=t+5;s1&&(this.player.debugWarn(this.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new to(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame());){i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:Ne};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseLOASAACPayload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;if(this.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+this.aac_last_incomplete_data_.byteLength);t.set(this.aac_last_incomplete_data_,0),t.set(e,this.aac_last_incomplete_data_.byteLength),e=t}let i,s;if(null!=t&&(s=t/this.timescale_),"aac"===this.audio_metadata_.codec){if(null==t&&null!=this.audio_last_sample_pts_)i=1024/this.audio_metadata_.sampling_frequency*1e3,s=this.audio_last_sample_pts_+i;else if(null==t)return void this.player.debugWarn(this.TAG_NAME,"AAC: Unknown pts");if(this.aac_last_incomplete_data_&&this.audio_last_sample_pts_){i=1024/this.audio_metadata_.sampling_frequency*1e3;let e=this.audio_last_sample_pts_+i;Math.abs(e-s)>1&&(this.player.debugWarn(this.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new io(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame(No(this.loas_previous_frame)?void 0:this.loas_previous_frame));){this.loas_previous_frame=a,i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:Ne};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseAC3Payload(e,t){}parseEAC3Payload(e,t){}parseOpusPayload(e,t){}parseMP3Payload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;let i=[44100,48e3,32e3,0],s=[22050,24e3,16e3,0],r=[11025,12e3,8e3,0],o=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let n=(12&e[2])>>>2,l=3!==(e[3]>>>6&3)?2:1,d=0,h=34;switch(o){case 0:d=r[n];break;case 2:d=s[n];break;case 3:d=i[n]}switch(a){case 1:h=34;break;case 2:h=33;break;case 3:h=32}const c={};c.object_type=h,c.sample_rate=d,c.channel_count=l,c.data=e;const u={codec:"mp3",data:c};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"mp3",object_type:h,sample_rate:d,channel_count:l},this.dispatchAudioInitSegment(u)):this.detectAudioMetadataChange(u)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(u));let p={payload:e,length:e.byteLength,pts:t/this.timescale_,dts:t/this.timescale_,type:Ne};this.audio_track_.samples.push(p),this.audio_track_.length+=e.byteLength}detectAudioMetadataChange(e){if(e.codec!==this.audio_metadata_.codec)return this.player.debugLog(this.TAG_NAME,`Audio: Audio Codecs changed from ${this.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===this.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==this.audio_metadata_.audio_object_type)return this.player.debugLog(this.TAG_NAME,`AAC: AudioObjectType changed from ${this.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==this.audio_metadata_.sampling_freq_index)return this.player.debugLog(this.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${this.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==this.audio_metadata_.channel_config)return this.player.debugLog(this.TAG_NAME,`AAC: Channel configuration changed from ${this.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===this.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==this.audio_metadata_.sampling_frequency)return this.player.debugLog(this.TAG_NAME,`AC3: Sampling Frequency changed from ${this.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==this.audio_metadata_.bit_stream_identification)return this.player.debugLog(this.TAG_NAME,`AC3: Bit Stream Identification changed from ${this.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==this.audio_metadata_.bit_stream_mode)return this.player.debugLog(this.TAG_NAME,`AC3: BitStream Mode changed from ${this.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==this.audio_metadata_.channel_mode)return this.player.debugLog(this.TAG_NAME,`AC3: Channel Mode changed from ${this.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==this.audio_metadata_.low_frequency_effects_channel_on)return this.player.debugLog(this.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${this.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===this.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debugLog(this.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debugLog(this.TAG_NAME,`Opus: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===this.audio_metadata_.codec){const t=e.data;if(t.object_type!==this.audio_metadata_.object_type)return this.player.debugLog(this.TAG_NAME,`MP3: AudioObjectType changed from ${this.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debugLog(this.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debugLog(this.TAG_NAME,`MP3: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1}dispatchAudioInitSegment(e){let t={type:"audio"};t.id=this.audio_track_.id,t.timescale=1e3,t.duration=this.duration_;let i="";if("aac"===this.audio_metadata_.codec){let s="aac"===e.codec?e.data:null,r=new Hh(s);t.audioSampleRate=r.sampling_rate,t.audioSampleRateIndex=r.sampling_index,t.channelCount=r.channel_count,t.codec=r.codec_mimetype,t.originalCodec=r.original_codec_mimetype,t.config=r.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale,i=Pt;const o=Wr({profile:this.player._opt.mseDecodeAudio?r.object_type:r.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});console.error("aacADTSHeader",`profile: ${r.object_type}, sampleRate: ${t.audioSampleRateIndex}, channel: ${t.channelCount}`),this._doDecodeByTs(o,Ne,0,!1,0)}else"ac-3"===this.audio_metadata_.codec||"ec-3"===this.audio_metadata_.codec||"opus"===this.audio_metadata_.codec||"mp3"===this.audio_metadata_.codec&&(t.audioSampleRate=this.audio_metadata_.sample_rate,t.channelCount=this.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0,i=Bt);0==this.audio_init_segment_dispatched_&&this.player.debugLog(this.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),this.audio_init_segment_dispatched_=!0,this.video_metadata_changed_=!1;let s=this.media_info_;s.hasAudio=!0,s.audioCodec=t.originalCodec,s.audioSampleRate=t.audioSampleRate,s.audioChannelCount=t.channelCount,s.hasVideo&&s.videoCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.audioCodec}"`,i&&this.player.audio.updateAudioInfo({encTypeCode:i,channels:t.channelCount,sampleRate:t.audioSampleRate})}dispatchPESPrivateDataDescriptor(e,t,i){}parsePESPrivateDataPayload(e,t,i,s,r){let o=new Wh;if(o.pid=s,o.stream_id=r,o.len=e.byteLength,o.data=e,null!=t){let e=Math.floor(t/this.timescale_);o.pts=e}else o.nearest_pts=this.getNearestTimestampMilliseconds();if(null!=i){let e=Math.floor(i/this.timescale_);o.dts=e}}parseTimedID3MetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`Timed ID3 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseSynchronousKLVMetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`Synchronous KLV Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseAsynchronousKLVMetadataPayload(e,t,i){this.player.debugLog(this.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${i}`)}parseSMPTE2038MetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`SMPTE 2038 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}getNearestTimestampMilliseconds(){if(null!=this.audio_last_sample_pts_)return Math.floor(this.audio_last_sample_pts_);if(null!=this.last_pcr_){return Math.floor(this.last_pcr_/300/this.timescale_)}}_preDoDecode(){const e=this.video_track_,t=this.audio_track_;let i=e.samples;t.samples.length>0&&(i=e.samples.concat(t.samples),i=i.sort(((e,t)=>e.dts-t.dts))),i.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===je?this._doDecodeVideo({...e,payload:t}):e.type===Ne&&this._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?rl(t,e.isIFrame):Vn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength}),e.isIFrame&&this.calcIframeIntervalTimestamp(e.dts);let s=this.cryptoPayload(i,e.isIFrame);this._doDecodeByTs(s,je,e.dts,e.isIFrame,e.cts)}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=this.cryptoPayloadAudio(t);this._doDecodeByTs(i,Ne,e.dts,!1,0)}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}_getPcrBase(e){let t=33554432*e[6]+131072*e[7]+512*e[8]+2*e[9]+(128&e[10])/128+this.timestamp_offset_;return t+4294967296>>3&3,r=(6&t[1])>>1,o=(240&t[2])>>>4,a=(12&t[2])>>>2,n=3!==(t[3]>>>6&3)?2:1,l=0,d=0;switch(s){case 0:l=Qh[a];break;case 2:l=Yh[a];break;case 3:l=Kh[a]}switch(r){case 1:o{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(bt.webcodecsAudioInitTimeout)}),1e3)),void ca(e)):void(this.player.isPlayer()?(this.player.updateStats({dfps:!0}),this.player._times.videoStart||(this.player._times.videoStart=uo(),this.player.handlePlayToRenderTimes()),this.player.video.render({videoFrame:e,ts:e.timestamp}),this.player.handleRender()):this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),wa(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})):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender&&this.player.video.pushData({videoFrame:e,ts:e.timestamp})));ca(e)}handleError(e){this.player.debugError(this.TAG_NAME,"VideoDecoder handleError:",e.code,e);const t=e.toString();-1!==t.indexOf(ms)?this.player.emitError(bt.webcodecsUnsupportedConfigurationError,t):-1!==t.indexOf(gs)||-1!==t.indexOf(ys)||-1!==t.indexOf(As)?this.player.emitError(bt.webcodecsDecodeError,t):-1!==t.indexOf(bs)&&this.player.emitError(bt.webcodecsH265NotSupport,t)}handleDecodeAudio(e){this.player&&(this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"decodeVideo() player is destroyed"):this.player.isPlayer()?this.player.audio.play(e,e.timestamp):this.player.isPlayback())}handleErrorAudio(e){this.player.debugError(this.TAG_NAME,"AudioDecoder handleError:",e.code,e)}decodeVideo(e,t,i,s){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debugWarn(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.debugWarn(this.TAG_NAME,"VideoDecoder isDecodeStateClosed true");if(i&&0===e[1]){const t=15&e[0];let i={};if(t===Ct){i=zn(e.slice(5))}else t===Dt&&(i=el(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debugWarn(this.TAG_NAME,`decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(bt.wcsWidthOrHeightChange,`width ${s.width}->${s.height} height ${i.codecWidth}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(Sa(e))return void this.player.debugLog(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debugWarn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let s=!1,r=(new Date).getTime();this.prevTimestamp||(this.prevTimestamp=r,s=!0);const o=r-this.prevTimestamp;this.decodeDiffTimestamp=o,o>500&&!s&&this.player.isPlayer()&&this.player.debugWarn(this.TAG_NAME,"decodeVideo diff time is ",o);const a=e.slice(5),n=new EncodedVideoChunk({data:a,timestamp:t,type:i?Ai:bi});this.player.emit(gt.timeUpdate,t);try{this.decoder.decode(n)}catch(e){this.player.debugError(this.TAG_NAME,"VideoDecoder",e);const t=e.toString();(-1!==t.indexOf(ps)||-1!==t.indexOf(fs))&&this.player.emitError(bt.webcodecsDecodeError,t)}this.prevTimestamp=(new Date).getTime()}else this.player.debugLog(this.TAG_NAME,"VideoDecoder first frame is not iFrame");else if(i&&e[1]===Ls){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===Dt&&!Mo()){const e=wo();return this.player.debugWarn(this.TAG_NAME,"WebcodecsDecoder not support hevc decode",e.type,e.version),void this.player.emitError(bt.webcodecsH265NotSupport)}this.player._times.decodeStart||(this.player._times.decodeStart=uo());let i=null,s=null;const r=e.slice(5);if(t===Ct?(s=zn(r),i={codec:s.codec,description:r}):t===Dt&&(s=tl(r),i={codec:s.codec,description:r}),!i||i&&!i.codec||s&&0===s.codecWidth&&0===s.codecHeight)return this.player.debugWarn(this.TAG_NAME,"decodeVideo and webcodecs configure is",JSON.stringify(i)),void this.player.emitError(bt.webcodecsDecodeConfigureError,"configure or configure.code is null");i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth,this.isInitInfo||(this.player.debugLog(this.TAG_NAME,`updateVideoInfo: ${s.codecWidth},${s.codecHeight}`),this.player.video.updateVideoInfo({width:s.codecWidth,height:s.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,t),this.player.video.bindMediaStream(),this.player.debugLog(this.TAG_NAME,`decoder.configure() and codec is ${i.codec}`);try{i.optimizeForLatency=!0,i.hardwareAcceleration="prefer-hardware",this.decoder.configure(i),this.hasInit=!0}catch(e){this.player.debugError(this.TAG_NAME,"configure error",e.code,e);const t=e.toString();-1!==t.indexOf(bs)?this.player.emitError(bt.webcodecsH265NotSupport,t):this.player.emitError(bt.webcodecsDecodeConfigureError,t)}}else this.player.debugWarn(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.debugWarn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(this.hasAudioInit){if(Vr(e))return void this.player.debugLog(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.debugWarn(this.TAG_NAME,"AudioDecoder isDecodeStateClosed true");const i=this.isAAC?e.slice(2):e.slice(1),s=i.length/this.player.audio.audioInfo.sampleRate*1e3,r=new EncodedAudioChunk({type:"key",data:i,timestamp:t,duration:parseInt(s,10)});try{this.decoderAudio.decode(r)}catch(e){this.player.debugError(this.TAG_NAME,"AudioDecoder",e),e.toString()}}}else{const t=e[0]>>4,i=e[0]>>1&1,s=t===Bt,r=t===Pt,o=t===It;let a="";a=r?i?16:8:0===i?8:16;const n={codec:"",numberOfChannels:"",sampleRate:""};let l=null;if(r||s){let t=null;if(Vr(e)){const i=e.slice(2);t=Kr(i),t&&(n.codec=t.originalCodec,n.numberOfChannels=t.channelCount,n.sampleRate=t.sampleRate),l=i,this.isAAC=r}else s&&(t=tc(e),t&&(n.codec=Dr,n.numberOfChannels=t.channelCount,n.sampleRate=t.samplingRate))}else n.codec=o?Cr:Lr,n.numberOfChannels=1,n.sampleRate=8e3;if(n.codec&&n.numberOfChannels&&n.sampleRate){this.isAudioInitInfo||(this.player.audio.updateAudioInfo({encTypeCode:t,channels:n.numberOfChannels,sampleRate:n.sampleRate,depth:a}),this.isAudioInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&l&&this.player.recorder.initAudioAacExtraData(l),this.player.debugLog(this.TAG_NAME,`decoderAudio.configure() and codec is ${n.codec}`);try{this.decoderAudio.configure(n),this._clearAudioSourceBufferCheckTimeout(),this.hasAudioInit=!0,null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(bt.webcodecsAudioNoDataTimeout)}),1e3))}catch(e){this.player.debugError(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 sc={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 rc=Object.keys(sc).reduce(((e,t)=>(e[t]=`\n \n ${sc[t]?`${sc[t]}`:""}\n`,e)),{});function oc(e,t){let i=!1;return e.forEach((e=>{i||e.startTimestamp<=t&&e.endTimestamp>t&&(i=!0)})),i}function ac(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;const s=e.length,r=t.length,o=Math.max(s,r),a=2e3,n=Math.ceil(o/a);let l=0,d=0;function h(){let r="",o="";for(let i=0;i\n ${i.title}\n \n `);const a=t[d];a&&(o+=`\n

    ${a.title}
    \n `),d+=1}r&&i.$playbackTimeListOne.insertAdjacentHTML("beforeend",r),o&&i.$playbackTimeListSecond.insertAdjacentHTML("beforeend",o),l+=1,l0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){const r=s%60==0;let o=!1;i&&(o=oc(e,Yo(i,s))),t.push({title:qo(s),timestamp:s,dataType:"min",hasRecord:o,isStart:r})}return t}(e);ac(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0})}return e}(),t)}function lc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){let r=60*s,o=r%1800==0,a=!1;i&&(a=oc(e,Qo(i,r))),t.push({title:Ko(r),timestamp:r,dataType:"second",hasRecord:a,isStart:o});let n=60*s+30;o=n%1800==0,i&&(a=oc(e,Qo(i,n))),t.push({title:Ko(n),timestamp:n,dataType:"second",hasRecord:a,isStart:o})}return t}(e);ac(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00",s=t+":30";t<10&&(i="0"+i,s="0"+s),e.push({title:i,hour:t,min:0,second:0}),e.push({title:s,hour:t,min:30,second:0})}return e}(),t)}function dc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<144;s++)for(let r=0;r<60;r++){let o=10*r+600*s,a=o%600==0,n=!1;i&&(n=oc(e,Qo(i,o))),t.push({title:Ko(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);ac(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0});for(let s=1;s<6;s++){let r=s+"0";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0})}}return e}(),t)}function hc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<288;s++)for(let r=0;r<60;r++){let o=5*r+300*s,a=o%300==0,n=!1;i&&(n=oc(e,Qo(i,o))),t.push({title:Ko(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);ac(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0}),e.push({title:i.replace(":00",":05"),hour:t,min:5,second:0});for(let s=1;s<6;s++){let r=s+"0",o=s+"5";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0}),e.push({title:i.replace(":00",":"+o),hour:t,min:10*s+5,second:0})}}return e}(),t)}function cc(e){const t=Math.floor(e/3600),i=Math.floor((e-3600*t)/60),s=Math.floor(e-3600*t-60*i);return(t>0?[t,i,s]:[i,s]).map((e=>e<10?`0${e}`:String(e))).join(":")}function uc(e,t,i){const s=e.$playbackProgress,{left:r}=s.getBoundingClientRect(),o=po((vo()?i.touches[0].clientX:i.pageX)-r,0,s.clientWidth),a=parseInt(o/s.clientWidth*t,10);return{second:a,time:cc(a),width:o,percentage:po(o/s.clientWidth,0,1)}}function pc(e,t){return e.classList.add(t)}function fc(e,t){return e.classList.remove(t)}function mc(e,t){return e.classList.contains(t)}function gc(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function yc(e,t,i){return e&&e.style&&Go(t)&&(e.style[t]=i),e}function Ac(e,t){return e.composedPath&&e.composedPath().indexOf(t)>-1}function bc(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}var vc=(e,t)=>{const{events:{proxy:i}}=e;let s=null,r=null,o=null,a=null;if(e._opt.listenWindowResizeAuoResize){s=document.createElement("object"),r=`jb-pro-object-${Aa()}`,s.setAttribute("aria-hidden","true"),s.setAttribute("tabindex",-1),s.setAttribute("id",r),s.type="text/html",s.data="about:blank",fo(s,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"}),o=e.width,a=e.height;const t=Ro((()=>{e.width===o&&e.height===a||(o=e.width,a=e.height,e.emit(gt.resize))}),500);i(s,"load",(()=>{i(s.contentDocument.defaultView,"resize",(()=>{t()}))})),e.$container.appendChild(s)}e.on(gt.destroy,(()=>{if(s)try{if(!bc(s)){const t=e.$container.querySelector(`#${r}`);t&&e.$container&&e.$container.removeChild(t)}}catch(e){}d&&(clearInterval(d),d=null),h=null,c=null,u=0,s=null,r=null,o=null,a=null})),e.on(gt.volumechange,(()=>{!function(e){if(0===e)fo(t.$volumeOn,"display","none"),fo(t.$volumeOff,"display","flex"),fo(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=mo(t.$volumePanel,"height")||60,s=mo(t.$volumeHandle,"height"),r=i-(i-s)*e-s;fo(t.$volumeHandle,"top",`${r}px`),fo(t.$volumeOn,"display","flex"),fo(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(gt.loading,(i=>{t.isInitPlayer=!1,fo(t.$loading,"display",i?"flex":"none"),(wa(e._opt.backgroundLoadingShow)&&Ea(i)||wa(i))&&fo(t.$poster,"display","none"),i&&(fo(t.$playBig,"display","none"),fo(t.$tipsMessage,"display","none"),t.extendBtnList.forEach((e=>{e.createdMoment===Pr&&(e.$iconWrap&&fo(e.$iconWrap,"display","flex"),e.$activeIconWrap&&fo(e.$activeIconWrap,"display","none"))}))),i||e._opt.extendDomConfig.showAfterLoading&&t.$extendDom&&fo(t.$extendDom,"display","block"),i||e.getRenderType()===$&&wa(e._opt.useMSE)&&n()})),e.on(gt.removeLoadingBgImage,(()=>{n()}));const n=()=>{t.$loadingBgImage&&t.$loadingBg&&t.$loadingBgImage.src&&(e.debugLog("Control","remove loading bg image"),t.$loadingBgImage.width=0,t.$loadingBgImage.height=0,t.$loadingBgImage.src="",fo(t.$loadingBg,"display","none"))},l=t=>{ra(t)===e.$container&&(e.fullscreen,f(),e._opt.androidMobileFullscreenRotate&&vo()&&(e.fullscreen?(e.$container.classList.add("jb-pro-fullscreen-android-rotate"),e.setRotate(270)):(e.$container.classList.remove("jb-pro-fullscreen-android-rotate"),e.setRotate(0)),p()))};let d=null,h=null,c=null,u=0;const p=()=>{h=e.rect,h.width=parseInt(h.width,10),h.height=parseInt(h.height,10),u=0,d=setInterval((()=>{const t=Or.isFullscreen;c=e.rect,c.width=parseInt(c.width,10),c.height=parseInt(c.height,10);const i=screen.width,s=screen.height,r=c.width===h.width&&c.height===h.height,o=!t||i-c.width<10&&s-c.height<10;if(r&&o||u>=5)return d&&(clearInterval(d),d=null),void g((()=>{A()}));h=c,u++}),1e3)},f=i=>{if(wa(e.isPlaying()))return;let s=jo(i)?i:e.fullscreen;fo(t.$fullscreenExit,"display",s?"flex":"none"),fo(t.$fullscreen,"display",s?"none":"flex")},m=()=>e._opt.playType===_&&e._opt.playbackConfig.showControl,g=i=>{vo()&&t.$controls&&(e._opt.useWebFullScreen||e._opt.androidMobileFullscreenRotate)&&setTimeout((()=>{if(e.fullscreen){const i=e.getControlHeight();let s=e.height/2-e.width+i/2,r=e.height/2-i/2;if(t.$controls.style.transform=`translateX(${-s}px) translateY(-${r}px) rotate(-90deg)`,t.$zoomControls){const i=156,s=30,r=e.width/2+i/2-s/2;t.$zoomControls.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}if(t.$recording){const i=101,s=20,r=e.width/2+i/2-s/2;t.$recording.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}t.$ptzControl&&(t.$ptzControl.style.transform="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)"),t.$ptzControl&&(t.$ptzControl.style.transform="rotate(0)");i&&i()}),10)};try{Or.on("change",l),e.events.destroys.push((()=>{Or.off("change",l)}))}catch(e){}e.on(gt.webFullscreen,(e=>{vo()&&(f(e),g((()=>{A()})))})),e.on(gt.recording,(()=>{e.playing&&(fo(t.$record,"display",e.recording?"none":"flex"),fo(t.$recordStop,"display",e.recording?"flex":"none"),(e._opt.hasControl||e._opt.isShowRecordingUI)&&(fo(t.$recording,"display",e.recording?"flex":"none"),wa(e.recording)&&t.$recordingTime&&(t.$recordingTime.innerHTML=Jo(0))))})),e.on(gt.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=Jo(e))})),e.on(gt.zooming,(()=>{e.playing&&(fo(t.$zoom,"display",e.zooming?"none":"flex"),fo(t.$zoomStop,"display",e.zooming?"flex":"none"),(e._opt.hasControl||e._opt.isShowZoomingUI)&&fo(t.$zoomControls,"display",e.zooming?"flex":"none"))})),e.on(gt.playing,(e=>{y(e)}));const y=i=>{i||e.isPlayFailedAndPaused&&wa(e._opt.playFailedAndPausedShowPlayBtn)?(fo(t.$play,"display","none"),fo(t.$playBig,"display","none")):(fo(t.$play,"display","flex"),fo(t.$playBig,"display","block")),fo(t.$pause,"display",i?"flex":"none"),fo(t.$screenshot,"display",i?"flex":"none"),fo(t.$record,"display",i?"flex":"none"),fo(t.$qualityMenu,"display",i?"flex":"none"),fo(t.$volume,"display",i?"flex":"none"),fo(t.$ptz,"display",i?"flex":"none"),fo(t.$zoom,"display",i?"flex":"none"),fo(t.$scaleMenu,"display",i?"flex":"none"),fo(t.$faceDetect,"display",i?"flex":"none"),fo(t.$objectDetect,"display",i?"flex":"none"),fo(t.$occlusionDetect,"display",i?"flex":"none"),fo(t.$controlHtml,"display",i?"flex":"none"),e.isPlayback()&&fo(t.$speedMenu,"display",i?"flex":"none"),f(),t.extendBtnList.forEach((e=>{e.createdMoment===Ir&&(e.$iconWrap&&fo(e.$iconWrap,"display",i?"flex":"none"),e.$activeIconWrap&&fo(e.$activeIconWrap,"display","none"))})),e._opt.showPerformance?fo(t.$performanceActive,"display",i?"flex":"none"):(fo(t.$performance,"display",i?"flex":"none"),fo(t.$performanceActive,"display","none")),fo(t.$poster,"display","none"),fo(t.$ptzActive,"display","none"),fo(t.$recordStop,"display","none"),fo(t.$zoomStop,"display","none"),fo(t.$faceDetectActive,"display","none"),fo(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"}("")),fo(t.$zoomControls,"display","none"),fo(t.$recording,"display","none"),t.$ptzControl&&t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")),A(),i&&b()};e.on(gt.playbackPause,(e=>{y(!e)})),e.on(gt.kBps,(i=>{const s=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 s=parseFloat(e/8);i=Math.floor(Math.log(s)/Math.log(1024));let r=s/Math.pow(1024,i);return r=r.toFixed(2),r+(t[i]||t[0])}(i);t.kbpsShow=s,e._opt.showBandwidth&&(t.$speed&&(t.$speed.innerHTML=s),A())}));const A=()=>{if(m()&&e._opt.playbackConfig.controlType===Q.normal){let i=t.controlsInnerRect.width-t.controlsLeftRect.width-t.controlsRightRect.width-t.controlsPlaybackBtnsRect.width;vo()&&e.webFullscreen&&(i=t.controlsInnerRect.height-t.controlsLeftRect.height-t.controlsRightRect.height-t.controlsPlaybackBtnsRect.height),t.$playbackTimeInner.style.width=i+"px"}},b=()=>{if(!m()||e._opt.playbackConfig.controlType!==Q.normal)return;const i=t.$playbackCurrentTime.style.left;let s=parseInt(i,10);const r=t.controlsPlaybackTimeInner.width;s=s-r/2>0?parseInt(s-r/2,10):0,t.$playbackTimeInner.scrollLeft=s};if(m()){const i=()=>{if(m()){let i=0;const s=e.playback&&e.playback.playingTimestamp;if(s){const r=new Date(s),o=r.getHours(),a=r.getMinutes(),n=r.getSeconds();e.playback.is60Min?i=60*o+a:e.playback.is30Min?i=2*(60*o+a)+parseInt(n/30,10):e.playback.is10Min?i=6*(60*o+a)+parseInt(n/10,10):e.playback.is5Min?i=12*(60*o+a)+parseInt(n/5,10):e.playback.is1Min&&(i=60*(60*o+a)+parseInt(n,10)),t.$playbackCurrentTime.style.left=i+"px"}}},s=e=>{t.$playbackNarrow.classList.remove("disabled"),t.$playbackExpand.classList.remove("disabled"),e===Pi&&t.$playbackNarrow.classList.add("disabled"),e===Mi&&t.$playbackExpand.classList.add("disabled")};e.on(gt.playbackTime,(s=>{if(e._opt.playbackConfig.controlType===Q.normal)t.$playbackCurrentTimeText&&(t.$playbackCurrentTimeText.innerText=Lo(s,"{h}:{i}:{s}")),i();else if(e._opt.playbackConfig.controlType===Q.simple){const i=(r=s,o=e.playback.totalDuration,po(r/o,0,1));t.$playbackProgressPlayed.style.width=100*i+"%",t.$playbackProgressIndicator.style.left=`calc(${100*i}% - 7px)`,t.$playbackProgressTime.innerText=`${cc(s)} / ${cc(e.playback.totalDuration)}`}var r,o})),e.on(gt.playbackPrecision,((r,o)=>{m()&&e._opt.playbackConfig.controlType===Q.normal&&(t.$playbackTimeScroll.classList.remove(Fi.oneHour,Fi.halfHour,Fi.fiveMin,Fi.tenMin),t.$playbackTimeScroll.classList.add(Fi[r]),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="",r){case Pi:nc(o,t);break;case Ii:lc(o,t);break;case Bi:dc(o,t);break;case Mi:hc(o,t)}i(),e._opt.playbackConfig.showPrecisionBtn&&s(r),b()}),16))})),e.on(gt.resize,(()=>{g((()=>{A()}))})),e.on(gt.playbackTimeScroll,(()=>{b()})),A()}if(e._opt.operateBtns.quality&&e._opt.qualityConfig.length>0){e.on(gt.streamQualityChange,(e=>{i(e)}));const i=e=>{t.$qualityText.innerText=e,t.$qualityMenuItems.forEach((t=>{const i=t.dataset.quality;t.classList.remove("jb-pro-quality-menu-item-active"),i===e&&t.classList.add("jb-pro-quality-menu-item-active")}))};(()=>{const i=e._opt.qualityConfig||[];let s="";i.forEach((e=>{s+=`\n
    ${e}
    \n `})),s&&(t.$qualityMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$qualityMenuItems",{value:e.$container.querySelectorAll(".jb-pro-quality-menu-item")}))})(),e.streamQuality&&i(e.streamQuality)}if(e._opt.operateBtns.scale&&e._opt.scaleConfig.length>0){e.on(gt.viewResizeChange,(e=>{i(e)}));const i=i=>{const s=e._opt.scaleConfig[i];t.$scaleText.innerText=s,t.$scaleMenuItems.forEach((e=>{const t=e.dataset.scale;e.classList.remove("jb-pro-scale-menu-item-active"),Do(t)===Do(i)&&e.classList.add("jb-pro-scale-menu-item-active")}))};(()=>{const i=e._opt.scaleConfig||[];let s="";i.forEach(((e,t)=>{s+=`\n
    ${e}
    \n `})),s&&(t.$scaleMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$scaleMenuItems",{value:e.$container.querySelectorAll(".jb-pro-scale-menu-item")}))})(),i(e.scaleType)}if(e.isPlayback()&&e._opt.playbackConfig.showRateBtn&&e._opt.playbackConfig.rateConfig.length>0){e.on(gt.playbackRateChange,(e=>{i(e)}));const i=i=>{const s=e._opt.playbackConfig.rateConfig.find((e=>Do(e.value)===Do(i)));s&&(t.$speedText.innerText=s.label,t.$speedMenuItems.forEach((e=>{const t=e.dataset.speed;e.classList.remove("jb-pro-speed-menu-item-active"),Do(t)===Do(i)&&e.classList.add("jb-pro-speed-menu-item-active")})))};(()=>{const i=e._opt.playbackConfig.rateConfig;let s="";i.forEach(((e,t)=>{s+=`\n
    ${e.label}
    \n `})),s&&(t.$speedMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$speedMenuItems",{value:e.$container.querySelectorAll(".jb-pro-speed-menu-item")}))})();const s=e.playback?e.playback.playbackRate:1;i(s)}e.on(gt.stats,(function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e._opt.showPerformance){fo(t.$performancePanel,"display","block"),t.$performancePanel.innerHTML="";const s=Ao,r=La(),o=e.getCpuLevel(),a=Go(o)&&-1!==o?`${ir[o]}`:"",n=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 g=e.getRecordingDuration(),y=e.getRecordingByteLength();const A=e.isAudioPlaybackRateSpeed(),b=e.videoIframeIntervalTs;g=Jo(g),y=Po(y);const v=e.isPlayback()?"录播":"直播";let _=i.isDropping;const S=e._opt.useMSE&&e._opt.mseDecodeAudio,E=e.control?e.control.kbpsShow:"0 KB/s",w=e.getVideoPlaybackQuality(),T=e._serverInfo||"",k=`\n
    \n 播放器版本 ${s}\n
    \n ${T?`\n
    \n 服务器信息 ${T}\n
    \n `:""}\n ${e._opt.isMulti?`\n
    \n UUid ${e._opt.debugUuid}\n
    \n `:""}\n ${e.isInMulti()?`\n
    \n 窗口下标 ${e._opt.multiIndex}\n
    \n `:""}\n ${r?`\n
    \n 内存大小限制 ${Po(r.jsHeapSizeLimit)}\n
    \n
    \n 可使用的内存 ${Po(r.totalJSHeapSize)}\n
    \n
    \n 已使用的内存 ${Po(r.usedJSHeapSize)}\n
    \n `:""}\n ${a?`\n
    \n CPU压力情况 ${a}\n
    \n `:""}\n\n ${r&&r.usedJSHeapSize>r.totalJSHeapSize?'\n
    \n 可能内存泄漏 是}\n
    \n ':""}\n\n
    \n 播放模式 ${v}\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 视频格式 ${n.encType||"-"}\n
    \n
    \n 视频(宽x高) ${n.width||"-"}x${n.height||"-"}\n
    \n ${e.isPlayer()?`\n
    \n 视频GOP(ms) ${b||"-"}\n
    \n `:""}\n
    \n 音频格式 ${Mt[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 视频录制时间 ${g}\n
    \n
    \n 视频录制大小 ${y}\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.streamBuffer}\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.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()&&wa(S)?`\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) ${Jo(i.pTs)}\n
    \n
    \n `;t.$performancePanel.insertAdjacentHTML("beforeend",k)}else t.$performancePanel.innerHTML="",fo(t.$performancePanel,"display","none")})),e.on(gt.togglePerformancePanel,(e=>{fo(t.$performance,"display",e?"none":"flex"),fo(t.$performanceActive,"display",e?"flex":"none")})),e.on(gt.faceDetectActive,(e=>{fo(t.$faceDetect,"display",e?"none":"flex"),fo(t.$faceDetectActive,"display",e?"flex":"none")})),e.on(gt.objectDetectActive,(e=>{fo(t.$objectDetect,"display",e?"none":"flex"),fo(t.$objectDetectActive,"display",e?"flex":"none")})),e.on(gt.occlusionDetectActive,(e=>{fo(t.$occlusionDetect,"display",e?"none":"flex"),fo(t.$occlusionDetectActive,"display",e?"flex":"none")}))};function _c(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===i&&s.firstChild?s.insertBefore(r,s.firstChild):s.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}_c('@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@-webkit-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}}@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}}.jb-pro-container video::-webkit-media-controls{display:none!important}.jb-pro-container .jb-pro-icon{cursor:pointer;width:16px;height:16px;display:inline-block}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-ptz-controls.show-vertical{right:43px}.jb-pro-container .jb-pro-ptz-controls.show-vertical .jb-pro-ptz-btns{left:0;top:156px}.jb-pro-container .jb-pro-ptz-controls.show-level{right:163px}.jb-pro-container .jb-pro-ptz-controls.show-level .jb-pro-ptz-btns{min-height:156px;left:144px;top:0;display:flex;flex-direction:column;justify-content:center}.jb-pro-container .jb-pro-ptz-controls.jb-pro-ptz-controls-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-up{transform:rotate(-90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left{transform:rotate(180deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-down{transform:rotate(90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-up{transform:rotate(-135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-up{transform:rotate(-45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-down{transform:rotate(135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-down{transform:rotate(45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-control{position:absolute;left:53px;top:53px;width:50px;height:50px;background:#fff;border-radius:50%;transition:left .3s,top .3s}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left{left:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-up{top:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right{left:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-down{top:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-up{top:39px;left:39px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-down{left:39px;top:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-up{top:39px;left:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-down{top:67px;left:67px}.jb-pro-container .jb-pro-ptz-icon{position:relative}.jb-pro-container .jb-pro-ptz-icon:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-btns{display:block;position:absolute;left:0;top:156px;width:156px;box-sizing:border-box;padding:0 30px}.jb-pro-container .jb-pro-ptz-btns .jb-pro-ptz-btn{display:flex;justify-content:space-between}.jb-pro-container .jb-pro-ptz-expand .jb-pro-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%}.jb-pro-container .jb-pro-ptz-expand:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-narrow .jb-pro-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}.jb-pro-container .jb-pro-ptz-narrow:hover .jb-pro-ptz-narrow-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAJ1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v7X19ckk9ihAAAACnRSTlMA9+NCAsuKJsRiPv/2GwAAAJlJREFUGNNjYAAC5gxFoTYDBijw1FoFBIumQHjsUavAYGkBmGu0CgqUwRqlYNyFIO2Fq+BAnIGBJQrBXerAwLkKCUxgYELmKjBYIXMXM2Qhc5cxdCFzVzBoIXMXMYAcsRsMdgEdgs4FKT4DBqdAitGMQrMIzRkojlRB9wKaB9G8z+CMGjgshjCuMCjoWNxRAxYt2KGRYgJiAQAnZcjElaB/xwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-aperture-far .jb-pro-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}.jb-pro-container .jb-pro-ptz-aperture-far:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-aperture-near .jb-pro-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}.jb-pro-container .jb-pro-ptz-aperture-near:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-focus-far .jb-pro-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}.jb-pro-container .jb-pro-ptz-focus-far:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-focus-near .jb-pro-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}.jb-pro-container .jb-pro-ptz-focus-near:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-cruise-play .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJWSURBVHgBtZe/b9pAFMefbSYWMjCjdOtmYEYqXVC3umMlBFRiT7qxkexITcdKSDUSYna2iqX+E/DG6LCQgcETUiR+5Pv8I3Kc+McF5ysZ3x2++9x79/zuLFEG9Xq9s/1+r8my/AnVJq4z/2LZfB0Oh1tFUQxd1+208aQ0GAa7kCTpMgRJk4kJXk+nU5NEoe12W8PM/wrAotIx2Z+w3MkE7XQ6Q3S4otNlY5zPUZdL7wiMBUsRIK/fDeWvhQ92XS0HrQia83cCsqoIyMug8gQ9Ho/DpF7FYpEajQa9VTBoyIZxWeEfv6IndSqVSjQYDKhcLtNqtaLtdkuigmGSZVn/XKiqqr9wqyZ1YEtbrRZVKhX3zvX1ei0Eh7Ufa7Xan8C9VRIUg9lyQZfzO19VOOugkBpAgaXRtnq97oLZ5ZvNJm0YQkBZ8m63E7YyKl5ntrrf77vlJCF/qzLlKLZ4NBqRpmmuF2LBlLOyBFYBchDKlIeWyyWNx+PUtS2Qtx+eJA6i2WzmQtMEA+8KnA+73a6N+jkJil1pGAbN5/PMfRBIZsGn3+LFvSABMYiBgpnJgZEeFHQD4EzQrOsWI4N/nrY2uPg/eeefV8WvAKfALOsWJ3jzA++rcqjhB25OXAd244nA62AjV4LGxWLhIBk/oPiF8pc9mUy+BZVnyQEzueEZUb5yjyvhBiX6BCw2YTGvdZNyAkYPZsprT/rgO/K2vDcdQQH7jes7gPcv/kvqyCcKbEVX6PxVAG76QWPGPZAIDcEZqGECTQyokpe9wp8VfNqzyA2L9M+KRzm19l1i6ZQBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-play:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ5SURBVHgBtZe7buJAFIYPjsVFAok3wBUlYcUDLNvQISUSDVVCA0IUYZ8gmzcgBeIiJLwdFau8QToaQKygovI20CJBARKX/Y/jICPAF3B+yRpjZvzNOWfOzLGLLKrZbAaXy+WdKIq32+1WcrlcQe0vZb1e/8XvQT6ff7fyLpdZh0qlEr+5uXne7XZxMpciCIKMSfzGBBSyCwVMAqxpEXYEhzdeAJYtQ2u12h2aJq4gXadSLpf7aQptNBoPm81GJofEsc5ms9/0zwT9j3K5HHUSyEJ4ovV6vXkSyjHEyvxDXyCAHxGy4hEUq+4JjWQ02O/30xV65rTbQ9lKNEWjEYFAgFKpFMViMbpQnOfFPRSKWxnldrtVaDqdpnA4THalefMDinx8sDOYrY7H45RIJOy6PMibjch3F24AJEmSeo3HY+p2u7RYLEzHwNqogOUcpSvFrk4mk5Zcjry9FZCX1+46qj5dzvEOhUKGfQVyWAyPRCLqojsnEYtohpiSE5rP59TpdEhRFMN+Itw7Q3DpGq1WKxqNRurF90YC75+gnXszulBsVbvdpl6vZwpkwasDNWVw9r3BWlu5Op1OVdBkMrEzTD11RO1exmUJytb0+30aDodkV7DyjT2rBpNrG8zg3WwQW9ZqtS4CatASt/sVhAC/GA3glWk1bqcEo+TPwm0P5QeYySt9jRS9UQe54vF4fqEZkMNCdXivrw4PoJlMZoad5IeDYE7F+0KhcPC+syVotVotIQ5PdLm4CD8CGkJZfAIhzlw3SWRdM+T9q9frLbHnTnUwrfBZfPCiecQG8v3MBHj/HvAm4/P55HMwW1C9tG8a/RmsGH1CnNJ/17UakVMOx7kAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-cruise-pause .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHySURBVHgBxZc7bsJAEIbHdprQJAU1ckln3FM4J4jTIkSMRB9uQDhBlBPECIk2yQ1MSeeIxg0KZQoKKpSCR/4xtsXTNmA7v2ThHe/ut7M7O7sIFEOGYdzO5/OSJEn3KGp4ZDy33ucxP6vVqo86H71ez47qT4iCLZfLJ0EQmhuQKNlo89rtdk06FVqtVjV49kZrr86RicG2TdMcx4LWarUWGjzT5Rqjn7tdsJAi8Ch4C4op1TGl75S8GKwCPOWC6FsRNDKAL5SOZER30HcAhbFFEUFTLBapXC5v2fL5/J7tiOCXofHLlVfikRhRrSqVChUKBXIchyaTiWtrNBruYLjM9jB5jlmup4vFQqMYyuVydKE03vsuVBTFR8pIcFD317REGQlRXBJ5PSl+iktCskgZC57eZA5l/Q/Uy4lTykjYq1++p5EHb1LC9rRdKA7dT8pO64yERG/SmVM8m81OqW7yckr8Ztv2r6Io1whnLawF59fhcLiVY0ejkWsfDAYUJfRfB+snOE85J2KRvym9RGF2Op06vwRbhg9YHgmlIz7E235B2vwC1x1VVdl7jZLT3nVF2q0BsJUg+ODFTDpU0wP3PfC5a2wB+BD7CuqLgws/TQQYn7cyxYfxfdc6ViEUujMAHUlER4cKHfhbATvPjBUG8/UH1xXJDxHoYGQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-pause:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAH/SURBVHgBxVY7bsJAEJ01CAkJKUhUULmiDSnpoKYINyBuQIgi3AA4QZQKIQq4QaChhhuQCxAXSERUSDSIb944axSS+CPA5kn27o7X+2Z2dz6CXKDT6URXq1UqGAw+Hg6HDB4V4qj8rAsh9N1uN9rv971KpTJ2Wk84kW2322csVv1BYr+gEGMo8Foul7uWc6w+NJvNjKIoHXRVOgMg74K8AXLdFWm73a7BujpdDh3rZH8TCw8JLYlPSFutVh7NG10feigUetA0bcEDxZTiDFU0L+QN1M1mc1z7SBoIBGrkcGkSiQQlk8kTWSQS+SP7D3CzJ76c3A/yi61kodOP6XSaYrEYzWYzWi6XhiybzVI8HjfGLLeDNGxoWpohF8C50CXgwMK+r0gNCuQTENnyitQgRT4BQSOlyFvrKsRdCapC/uPuFqR0G1IZExfkH94NSzkHkk+Ap4wNUiTqPvmH74gUDoe7dOYWr9dr13M5sfNxBnjQ7/dXuVwuDGHG7ieOr9Pp9CTGzudzQz6ZTMgJ2FFtMBh8HvMpx0Ro/UEeBQq2slgsatw/uoxMsBp5A64WG+bgxE9LpVIPpUWDrgv7csUE4nEdlWCNPCC0JJXEF5Wg8MchHs11CWpCVvZVkBfckksyrneHVnMEuQRXitiqPBS4lwpEJYmORkc7Qju0IzPxBZ2t+3mW/JtqAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKgSURBVHgBtZe/jtpAEMYH28WJioIa+URDF8MTkAalO6cH4YIiFbk8QXS8QO6oUlCAkGjDtTRHJBoa4nQ0KBZdJApoEAV/Mp9jkAF7bXPcJ5ndtdf725nZWdYxiijDMBKr1SqhKIqKNpdms9mcRxkjFqZTsVjMy7J8x1WdL9WjC6D97Xb73G63m0HjxULAvnI1T+FlMfxBBPeEwoW73Q6we7pcViwWe8+utwKhDFQZ+IOrGr1eAH9ksOkLdSz8Rd5xu1RzBmfdFkvupwz8dmUgBENeYNAZtFQqGVwY9DZSnTVi6+Decrn8h0JYWSgUKJfLHdrL5ZKm0ykNBgOazWbCd9nNt3CzgoZjpUohlEqlKJPJHN3DJHRdp16vR51Ox/ddTiVkw70NlSTp7rRDMpmkWq1G4/HYvmANSpHghXg8To1Gw/M5W1oGVEZD07TvXNy4O8Btw+GQFouFbV06nabRaGRbhbaf8AzvTiYTr8c32Wz2p8KrSuMgJ7x6IEa4AIuivau9tNlsNGm9XqsBY9gxhOvCCi728wa7OCHhRzQAZl2pVGyXRZEoBAoFCDGs1+v2QooiUfpIHE+LBEL+VatVezVfDcp/whYJhAWBVHFvCEFCfz8op6cpORuxJRokajz98tSRae+97OJnUS/RanQLkwNQ4FrzsA2yyU0Gf/br2e12A90LlwYAkS5Pdrm/wRs+/rh1ChAshuV7wTqAQoTAarVat6gorll8YWvzXBXmbdTUcY3/sK/L+4ppmnPeF/9SCGsvAXIsH8+gDthkMFyepyuJgS0GHh3w5NNOzO0zeMHVD/R64BMDP53d93vBORW+0GVnpvmpS0NBXXDDSacwR9K5kxaPok+NUJ8VDlzlQucJvKNj63G2/U3/E78fZqx/rk0w4ggu8jUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAK2SURBVHgBtVa9jtpAEB58/EqArqCBBqehorgTVDQxPVJOiD5QAEJUeYLjniBcgRACKeQJQsQDBBoqkIigookraC1BwT+ZcQBBsNd7Ovgk2LV3vd/M7PyZgBPlclnc7XZPFovFv91uRZPJdL9fktfr9W987udyuRbPWSajDUgm3d3dPSOhBMaQUaAXu93eSKVSCryVtFQqPaBWXznJNMlR8zo3aa1W+7zZbIo4vYd3QBCEQjqdfjEkrVarzyhlAa4EvOt6JpNJ6ZJWKpUnHH7A9VHMZrNfLkjJO9Ecv3Aqwg2A1osevFs4vCQP5SF0Op3g9XrPflar1egzut9vCNVHzPS3j8EkcCAcDkMgELh4PxqNoNvtwmw20/tUXC6XSRyLqqZ7LS80CgaDqiY8IEESiQSIoqi7B53qE40qqVYsolTgdrshEokAeh9IkgRGIDPTPhJYC8SD4eg3k52RQNQi7XQ66txms+kepEUcjUah2Wxqrq9Wq6h5Pp8/4CUzD1osFuqPFwfnIsE1IBKbyDqANIzFYhCPx+EtYPmCGQxAppJlGQaDAVwLaFlBgRtAx7T/SNGNZWCg1WqpoeP3+4EX0+kUJpOJNiEqKWA49HGusA6gwPd4PMCLXq+nu4bpsK+6LVV9YMDlcqnkPKD7JyF1oFD+PSSHV9ZB4/EYQqEQGGE4HEK73dZdR+Ua6nh4gWXtD3AkfCL3+XzHZ4pfyrekIQnHApr2A2oqn4YM1TvDWkr3xbozPVAxJ0KaH1MRFllSvQG3gYztz7FtOct/mLqorZDhulD2BVzWJKW2kTZckVjBnviM8IKUQBtQ40ck/w7vAIUhnvGYz+cvwpHZbGNHkcQMwtXGnICs9YrCF/Q2GHb4e3IJBxLgo44ACsY6afbT4XDUWd09N+kpqOhTDT55Jf9/Z0b4C/UJLQCcLGi1AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIjSURBVHgBtZe9UsJAEMc3l1Q0WvAA2NEp1MyInVbGnoE8AVrSqW+gT2CY4QGwpTEFNcaOEqksKKiYcYYP/xsSJoRwx8f5n7nRu9u73+7lbu8waAc5jnM6m81sIcQlqhcoOZTTsHvAZT6fv5um2XZdd6Caz1DBMNm9YRgPMYhKHhx8brVaHu0LrVQqNjx/2wOWlAtnn9MiT4VWq9VHDHii4zXAPFdJsPGPwK1gIwHk7/dC+sXgAsBjroioFZsmpznCuHKLxeIxqqwirdVqvGmcbaOy2SyVSqW1tuFwGJTRaES7CEGd8TJbXOEo4YkjG8BQ27ZT+7rdLrXbbSUcx4+P3oOIVQ4Wr0Cj0aBMJiO1Q6Q1PvsirFzSkeKVqNfrKjM+8xeCybRMbUcrn88HRSasqs2R5kijisWitB+reiKm0+mhaS5VvMwqCdIs1WYKoJZljUmj+NwqobS8D7Wp1+tJ+5EPvkWYD33SIE4S/X5faoOHgCdC+jsdKc5GnJUUGiNIzwrpbjwh76tOpxMAJ5OJyjTwKp7wP/CnvM06LeFzdPwNd4AFihL+Chom/U86/HmiAr4CGOR4M2r0fX9cKBR+8e816deg2WzeRJW15ABPXvgxRXoVPFfiDWbSAhF7iJiXvUyagMmHmZlmGYK/aXn7HPSNAWui3AH4s9EnG8ibiy94DL6l3W8jL3zvetsMpNCEAw4cKGPCc9r8WeGj/YuBMlikP+yn3EGZYjlWAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAI5SURBVHgBxZZLjtpAEIbLjUFih8QFnBUrJCIOEHOCROIACStALBhOMMwJMlkgBCyYnCDMCUJWrJCQYB+zBwkJFiBe+QvZyEz86IEezSc1dj/w76pyV5dGEnS73cR6vf4SiUQ+HY9HE0MJu5GmaSNcFrvd7hn3vXK5bIU9TwsTw8Oqh8PhzhGRoIf1tSBxX9F2u12FVfVXiL3ksVgs1khWtNVqfcfljm7HgtW5l1Zrbyh4Fo7FYh8LhcLCGRDu2U6nc69YkDG22+0v98DZ0mazaQgh/tLbUUOMHy9E8eH8treDJ8lkkgzDuBibz+c0m81otVqRBAu4+QO7WecerDSDBB3RbDbrOTcej2kwGFAIvNc5dPVTTLHpv9INpNNpyufzBEsC1yF81dOVf8KslCHIEy4SjUYjIxDLDDoGKYAtDrNW13VT7Pf7azOOJ6lUKnAeySLB7jVIIezmMAS9A/igxIIUwns3VBQ+HpFCLMsKnGcjhX0CKLF2MpnQcrkMXIPzuX+KKax9phthtw6Hw7BlVqVSGel25wntqqy02WxOFnLj+xB6/HNTwmdXTqdTGTHmfKA7lhKSxAOCbPr9g90n82X6AcGfTgVxUTngtKlD+J4UAw/2S6VSzulfJAe8SZ3fiNRiQbTgHvgvI0H4Gxb9IAVwTexVmHmmQbiCD1suHy26En7xaDSa86p/A4ttrpuIT3ohpLcTxw/tAWJ9vzUaSWCLm3DXZzS+z7hELFzYjX/i8fiTu9T04x9LgQk+PbvDKQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALxSURBVHgBtVYrrBpBFJ0FFAqBqCIrUXRBk5QaUleewBBIlwSDoW1CUlzz0CSlaJJHA8FgqMBg4CWIKkpRuEfQCDAYAvSeYYfsLgss6fYkk5ndmXvP/c1HYjaQTqdjbrf7PQ0VarLWgBW1Cdput3tutVrdW7qka5OZTEZ1uVwfaBhj9jDf7/ePzWazwe4hVFVVPhwOT3cQnRFLkvS20WjMzRMuCzKFyH7/AxkAg18oQp/ME24LsgENfcwBkJfvQqHQejqd/jr905HJGpnMHIYW3iHGp5AS2df/QabpfiKHfCdCVCN1qh1hv9/PIpEIi0ajLBgMskAgcDZfKBTMYjJVL8+nh7MeS/8ioFiQbDYbtlgseA/lXq+Xt9lsxrrdLkulUmw8Hp/poLB+JC+rkpa7FysiKEokEpyo3+/zBiIrr2EU1kKmWCxariMvsy46IRJWZFBSLpf5GApgvZUSYLlcstFoxMfwHnKQN4Mi+cYdDoe/IGpmslKpxJV0Oh223W7ZLcTjcb6uVqtxLxFayJtkfSga2Sycy+X4YnhlBzAQhGI9euTRqnhAaNjkKA5Unl0yALlD0SC0Au12m/fIvx5nRxsEYV2lUrHMgxmiYMwGwmiE1qzDrSiKSv0r8QMxF2Wdz+fZer3mhXAJCP9gMOCGAiBJJpM8h6jqXq9nWO+hLfGH9ohiVoTFIEbxwFqECMoQInwLy4V3mEMe0SB7YWtMJJzoVK7fLnkgKg65BVBM8Bj5gjHwDORoGNfrdUMu9SDnfl7d+HqAEArFCYNQYoxtAODfJSIBimTWpV2Swxt8PLwiRAgjGrwXuEVGmBNXw6MxP5KXMWYTCKs4U+2COH6g59tCu6uG7A7AYxteCcypVU+EmgVZbcJxkO4HcmplIEQuMcGOTz8nyT6T7on4Npw0mMBzgDnkqUZWNfyzWujQM/FB79lVQh2xeudbZ0VE36mvipzdRagjjtFtnSBlr9nxuS9uGCidk1HPdFp1xcvsGv4CcbeEIeSIw9MAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAM0SURBVHgBtVa/SyNREJ7dBLVQELU4bdwrtFJOUCxsXEG0Ue4OK6tLKhEb/QsO/4LzChVtvGvE0sPOxtiYJuFyJBBICtOlSSAQCEnIj5tvyC676ybZYPLB4y373ptv5puZt6uQB1xeXup+v/9zs9lc4qHxK621VFAUJYbRaDSeDw4O7rvZUroQBXw+3zcm0ckbMkx8enh4+It6IWQijYlueiByI95g4oxzQXW+OD8/X1JV9e87yACNbbxeXV0dOxcUJxnn6okfx6l/OOHcnr0hhIzsFcg06jNa8obwbErKOfs+CDIhUdUbxrhJiGrknAW8HB4bGyNN02h+fp6mp6dpcnLStj46OkpbW1vOY1q5XJZ8iqTX19dPnYpkZmZGSObm5qharVI+n5cZ5ENDQzKy2SxFIhFaW1ujTCZDqVTKaabA+z4qrdy9uhHB0PLyskSTSCRkVCoV16gRLfYODw/T7e2tOOQE5zKocmRf3Mggzd7eHvEtQnd3dxSNRl3JgGKxaEaE6HEO553gOllXuQ3W3ch2d3fFyMvLS1siKxYXF0XWh4cHOYfzUMgKpE1t3Y026LouhxCVF8DBhYUFcz9m5HF7e9u5VUOV2pp8dnaWpqamPJMBKysrEh2kNRAOh2VG/q14c7XhILzb3993zYMT2IOCcTo4MTEhkqKgrPCx1gGePxgv6vW6EKJYNjc3qVQqSSG0A+RPJpPiKACS1dVVaQ9UdSwWs+33c6n+47ZYchqKx+NCvLOzI80NiWAMEkFyeM75lx5FdFhD4SCXIEJluxRbTLm4uDjmcv3RLgIYgrfILZBOpymXy0m+UImIDLLCATyHQiFbLq1gB/90bHwrcNPAILwGAaREcz8+Pso6CNsRGZDGx0eS8xXqRgh5DYkgIwZuFQPdyGACfwJ+PHGhnHKUOnkEetS4U72Co/uNWdoC3yovUVqBiD1EZW4fGRk5MwkBjjKIBRoAarXa12AwWLARIpdY4McC9RcnR0dHZjPabhosMOkG9S9S2/8MMLDfRKhljawjoYU4wNXby79OgavxJwrEyFlPhBZinasYH+pPPOMaNL4wMJphJZ553Bt/Zp3wHwTYnvHjbDCuAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANOSURBVHgBtVc9TCJBFB52r7jYyCXWnhcbO1aru8RErjGXWBxX2BijGG1svNhJo56VhQU2ViQsgdDQYEFDc5rQ0BDoaMgRGhoKaMhdCHDve+6QZVhgMfglm9mdn/e9v3kz6xEusL+/79c0bcvj8fjpc8V6gCY9VXqK3W73MZFIpN3I80wj03X9il79wh2q/X7fJAXvTdNszkQaDAZXaHF0BrIRcvLKERE/OQ3qYwh/06shXg8vRPl8PlEqlZ4nktoIV8QcgBxwItbfitBOvL6+XioWi2XZp8kXIryaN6FNdpSM8spvthRWUmPaJ25vb4vV1VVRqVSGBCwtLYm1tTUeW1hY4KfVak2hFe+J+B+5+QkfnL2Hh4fI1KAq/OLiQlxeXorl5WWxsbEhNjc3RbvdFrVajVvMkcTlclmk02nRaDTGETfJ1Z+wlTxWLP84zQoEAkwEodlslh+QqZDWY36hUGByp3m9Xu88Ho+HNaokfidCCAIh2kgkMlYQAOtyuZy4vb1lBW9ubnidCioa37klkw0nQrgWgpLJJMfXDUAOBbEO66GAAkOS+tSRk5MTXgjr4FIAMXULrIObz87O1CHv8fHxR03thXAkDhbahezt7TlpzkA8sc7uUngIQIhUgNRr70AWQsu7u7uBEPTBdaqboQTcCIUgXL4DUBzjTrHVDcP4BmVlR6fTYVLg9PSU9yC2CIghEG7HHIC2GluJOGYyGR6DYiDCGEKD/iErNS2sU238QnH9rGqDopDP5zm+EIJ3aL6zs8NEUAKCQSiVwxp4BFaHQqGRwkJoRqPRkEZ7tCjGAAJQHED28PDAVkirsX1kUcAc7FEXWc5c7+iQTltnpyMgHNYgUSSZBL5BhqTBHkVMAZnxKsijMbQ6Vf+/FFe/mFLs6/X6IJZ20t3dXXb34uIihwFuTqVSI3Mt0nPia3LtpVLot461V0FWLiiBZwzMWCx2xOSy5+DgIEya/BRvA1xfvlKxr+JjUBwola/Fy81u7iDCX5JwiJSPHNJm3sQWoTnUp06a57XFIrxW+0dug8guutM8EvEHpxPIJRDDH6qFA2UmrSSrg0SO5HJLjhDdUxue+bLtQG7QqR8ggVvC4beCFHumRMSxVJxEJvEfnFm91YrgD/sAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANwSURBVHgBtZa/SyNBFMffboJaKAS10SZ7hXqFegGbCyjmUPTAH3eHlZWmULG6u/Kqi/9BLEQRIdoKigf2l1Q2ChGtBLmtFAQloPgL1HvfRyZuJhuzBvOFzezOj/eZee/NZAzyoMXFxYjf7+99enqK8GNxlZVtyhiGYXOZ5vo/MzMzW17sGaVgPp/vN2DkTbZpmqs8wfloNJqh10AZZjEs8QpYAfzx8TE6Ozub9AQFkGf7l55dWLbYTmxqamruRehbAl8CG5UEOvTNmWSmekHCVAgIJVgB9eHHD1bJSTPp7NXe3k68Hejg4CBvdF1dHTU0NFBVVRVdXl7S/f09nZ+fl2BS4Pb29geXMXyIe5eXlxM6FMaHh4dpY2ODGhsbybIsamlpyUFQog/geE5PT2l3d5eurq6KgTPc7x22kpGN5T+3Xl1dXdTa2ipGDw8P5bm7uyvoB3hTU5P0t22b9vb2ZFIu+smxjSOmEbfW2tpaAcJgMpkUQ25ACG4+Ojqi7e1tqq6uprGxMRmvi8P1BaXJLyE34MjIiBja2dmhzs5O8iLAMUGMw3h4yCkOobDYs+YHfXAkEpGBWJ1KJMTUqzAObh4cHNSbAisrK0FTrw0Gg5I4GKiEBAmHwwUzV2pubpZJOV0KD0EIkS6TlxxwViALMcvx8fGcEdQhKzs6OvIGYxLIcEwIxuFSvEP19fXSjpzQ5RsdHf3M5XtV8fDwIFDs0f7+frq+vpYtAjAMwu3oA/X09MgqEcf9/X1pQ/wBQhuyPZ1O56/SNOO+oaGhMAM+6rM5Ozuj4+NjiS+M4B2ZGQqFBHRyckLd3d2USqWor6+Pbm5uZAySqa2tjdbX1+VbU2Z6evoX3JumIoIBHA6ATUxMyCl1cXEhQOxD1ON9c3NT9qjufl2K5a+pqdliA4liHWEc7kOiwMXOvYpvwJA02KOILwS3FoGuoTTlWDKMJJUQ4qwfDmoyAwMDkkiYIBIOsS2iJH7k7MW1JPu3VpbUyYWVw91u4oWtcjyjOSi0tLQU54bvVBnh+vKJry82PnKHAydFDI1UATFwTgHzoIgtZvPW4Cxw1VlX0YtZFhjT6wvOXrgBK+ZnjcqXimHMrbHUZXuSV43kCpE3IUTzvPfjr75s61pYWAgx/Ctndy9/WlxaCsKPzZs+xc8Ww9IvwZT+A8hTw5fcMmXrAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-arrow{cursor:pointer;position:absolute;width:0;height:0}.jb-pro-container .jb-pro-ptz-arrow-up{left:71px;top:15px;border:7px solid transparent;border-bottom:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right{top:71px;right:15px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left{left:15px;top:71px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-down{left:71px;bottom:15px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-up{transform:rotate(45deg);left:32px;top:33px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-up{transform:rotate(-45deg);right:32px;top:33px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-down{transform:rotate(45deg);left:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-down{transform:rotate(-45deg);right:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-loading-bg{display:none}.jb-pro-container .jb-pro-loading-bg,.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-play-big{position:absolute;display:none;height:100%;width:100%;z-index:11;background:rgba(0,0,0,.4)}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==")}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-recording .jb-pro-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;-webkit-animation:magentaPulse 1s linear infinite;animation:magentaPulse 1s linear infinite}.jb-pro-container .jb-pro-recording .jb-pro-recording-time{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-recording .jb-pro-recording-stop{height:100%}.jb-pro-container .jb-pro-recording .jb-pro-icon-recordStop{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-zoom-controls .jb-pro-icon{vertical-align:top}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-narrow{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-tips{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-expand,.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-stop2{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jb-pro-container .jb-pro-controls{background-color:#161616;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:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container .jb-pro-controls.jb-pro-controls-small{height:30px;padding-left:8px;padding-right:8px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-controls-item{padding:0 5px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-icon{width:14px;height:14px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-menu-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-quality-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-scale-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-speed-icon-text{font-size:12px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-quality-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-scale-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-speed-menu-item{font-size:12px;text-align:center;width:40px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel-wrap{width:40px}.jb-pro-container .jb-pro-controls .jb-pro-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen-exit,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-microphone-close,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-pause,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-play,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-quality-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record-stop,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-scale-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-screenshot,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-template-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-volume,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom-stop{display:none}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed{padding:0}.jb-pro-container .jb-pro-controls .jb-pro-controls-item-html{position:relative;display:none;justify-content:center}.jb-pro-container .jb-pro-controls .jb-pro-playback-control-time{position:relative;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-icon-mute{z-index:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom{display:flex;justify-content:space-between;height:100%}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-left,.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-right{display:flex;align-items:center}.jb-pro-container.jb-pro-controls-show .jb-pro-controls{opacity:1;visibility:visible}.jb-pro-container.jb-pro-controls-show-auto-hide .jb-pro-controls{opacity:.8;visibility:visible;display:none}.jb-pro-container.jb-pro-hide-cursor *{cursor:none!important}.jb-pro-container .jb-pro-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%;-webkit-animation-name:rotation;animation-name:rotation;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEzMzMzHx8fMzMzMzMzOzs7MzMz4IlKVAAAABnRSTlMA6xIU1hVqIuOVAAAAMUlEQVQ4y2NgGFYgLS3RAEQziQFZoxKjEqMSaBJpEAkgIw1ZQlBQRAEs4QhkDeIMDgAWx1gMHyIL4wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEz///////////////////////+3ygHaAAAABnRSTlMA7OgSFBXMmAA4AAAAM0lEQVQ4y2NgGFYgLS3JAUQzi6WlJY5KjEqMSqBJpEEkgIw0ZAklJSUDsISikpLQIM7gAJjhWp6XcaOxAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAHlBMVEVHcEzGxsbMzMzMzMzLy8vMzMzMzMzNzc3MzMzMzMxEZ/aQAAAACXRSTlMADPKKKeBxlV6neZ4mAAAArUlEQVQ4y2NgGDZgJhpowCURAJeYpIQENJEkCgWRgCeShAGyjfgl2EqwS7BFToZJiLg4ICTEImdOh0pwRM6cDJcIjpw5E6aDFeh8B5gECBCUYAkKCoMbNXNSOlyCgUEQ4apJJmxIEkjOVWFgxi4RgEsikGQJnEYp4pLA6VxUDyJLIAUJcRLIwY7qXKSIQvOHWCQODzKIleBPPjgTHM4kijNR48oGkajiYUMykwMAAfmZhUjBISQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMA8gyMLeRw1x2DBpWGN2QDAAAAt0lEQVQ4y2NgGDbgDBpIwCVRAJc4KIgEZM4EwCU2KSEBHySJCcg29iBJGCBLgHUs24FdYlnNYZiESksDXKJALebMaagES8yZw3CJypgzZ2A6WIHOd4BJgABMgh2XBEtpaBjcqDMHs+ESDFyLEK46aMGGkEB2rgQDJ3aJAFwSUSRL4DQKp+VHcTkXxYMoEkhBQpwEcrCjSCBHFJo/1GIO408MOJMPzgSHM4niTNS4skENqnjYkMzkAEgzyFpeX6L3AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAG1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxi4XDRAAAACHRSTlMAf3WqJmy+7azWNnMAAADNSURBVDjLxZQ9E4IwDIaLfMzCOTDSOz07OjLir5CR0dmJFVHIzzZtnMzbOzcyZHnuaXpJWmO2ji4GhpAzzZeQzw8FKCj1pMHss9OgpwsGOS0YGOcVUMPsfBVkmJoVCBJW0FFB6SFIaMKAlRGDnEiDkuM00lP3SmL6H5QSh+iIr9ZWVWntUV9Z4qWbHAWrhcUYNLC4Wwm3xb1r2mOQYoVn2EKFAVb81KHiQQq6L3vSUoMBUmSzgCKbVeiL3eTp3Odf8H1sxRAZZNZt/Vt8AHcPQbiQQVF+AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzKysrMzMzMzMzMzMzMzMzMzMzMzMzMzMzNzc3MzMz8gU00AAAACnRSTlMAL0jMZKt96hGJsSKv1QAAAJ9JREFUOMvN078KQFAYBfCbJEw2q6SUyWxTnsJT2JTJ6D38Gb6n5PpT6BwbuaNfTnz3fEp9fZwAP7czD0MsGCzBYJcEYsGwBEHQQRB0EII1CMAWdAOzyJUvJ4jyDVyZVHKGpj9guEI2IuhaDFadYnCkIm9I+kPgn8t+kI7kOsT72HcwQnJR9Gofy8DrwwtHK8pLzdeALg5fNb6cdJ1fOjOGYrl5CLFcggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAL0TQf2frEaZYt8E+idL4AAAAnUlEQVQ4y2NgoDdgUcAuzr4Hh4TaGQHsBp3BLsG+BoeE2hnsEkCDsEqADMIqATIImwTYICwSEIPQJFhnBjKInUGSUA2CSPCcOcIwB1ki5xRM4iiDDrKEzQlsEuUF2CVY0jbgkDhjMLQkEkj0IM4gQQ1EHMHOOXMiakRpTiQQtXgTA+7kgzvB4UyiuBM17myAM+Pgzmq4MyfO7EwjAAAEf+BAxqI/agAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-face:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTP///////////////////////////////////////////////w2imYoAAAAMdFJOUwBAgBvfrFmcw4wrbtGliFoAAAD2SURBVDjLY2AYRkAJCAygbEZBQUEBKJvpDBDAODpA9kGYxEGgKphuIaBuhASqyYzESjBu79yIVWIP0NoCLBIsR4WZJY5gkYiZACRqFJAlGMG8EyAmK1hMGdkp7M4gkus4RrCwBIApFwwJmwlgqsYAQ6IAIrEAwygHHEaxngJbfhRDgg0sxHoMM7Z0AmC+RAPsJ4S5NE5gid8VoHg8sgHTDh/PzM60HkzLc44bgKMf3RKuMwoQ+dNIgswJDAycUDPYjhgwMCsjxYcJLA6AMYISUTkBMLsaUCVqEqAcngPEJx+SJJDSLii1HySU2lHyByi1Kwy9LA4AqflRBKNSA88AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTBCT2xKV2hGY2hKW2xGW2xGW2xGW2xKX3BGX3BKW23povfoAAAAKdFJOUwBAgRybs9hZLG6hrV9tAAAA80lEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTgmZiFViFtBaBywSbEuFmcWWYZGIUgASXgrIEoxg3lIQkxUspozsFJZkEMmxBCNY2MD2MqRhSFgpgCkvAwwJBxwSbAk4jGJZAbZ8KYYEO8S5yzFjSysA5kt0s5YKc6guwxK/baB4XDYB045Vi4pCyrMwLa9aYgCOfgc0cY5VEGurViIJMhcAlULNYF9mwMCsjBQfZrA4AMYISkRVBcDsCkCV8CqAcrgWEJ98SJJASrug1L6QUGpHyR+g1K4w9LI4ALk0RHtSETFcAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTHzD63zE6n7H7H3F7H3F633G63zF7H3G7H3F7H3F68TinBIAAAAKdFJOUwBAgR+Z31ipwW4yAjb9AAAA+UlEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTmmZiFViFtBaBywSrMuFmSWWYpGoUgASXgrIEowgHtsKEJMDLKaM7BSWYLCaJRjBwloAploxJKwUwJSXAYYE2KUMVRgSrAFgKhTDKPbFIJJ5OYYEG1iIfRlmbGkVwHyJBlhWCDNrrMASvxageFw6AdOOqKCklrQuTMuzlhiAo98BTZx5FcTarJXIgglApVBr2ZYaMDArI8WHKSwOgDGCElFZBTC7GlAlvBKgHK4FxCcfkiSQ0i4otS8klNpR8gcotSsMvSwOAIs+RIlIrewIAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-occlusion{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusion:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAACJpJREFUaEO9WntsW9UZ/33HaZJCX7S5TmhalQ1NaAzGYJUgvk7pe5QKusGa0v0xaZvQkKBbK60BWl/b8XWKaLWtUJg6IcG0P+hrCMHWlcdK2OLrFPFYGdU0ac+q9BHfFPoC2sQ+33SufVPXvfa1kyaWolg+3+t3zznfd87vu4Qx+nQfONc8yF+0KvP1NPHoxjsm9Y+FK7oSRo2+fh0I3AUpFwHUyoxWIv6EiI4o+8w8m5mmE+EowEchxH4g95rZ1myN1v+IAUR6M3eRwCqAFgM4C8ZeZuyFmHDk9OmpH2+7my4UB7fmj9wwderpWZBDs4mwHOoPmAzwn1hiV7I9+NpIwNQMwOjtvwWC1gLUwVJuIfA+s73lnZE4N3pP3M6gZSTEeoB3Q/JWs735w1psVQ0g/t6xq+T5uogkrCXQKyDebIaCf63FWTlZI525FUydDF4hGFtFYzYZnzvz82psVwVAOSCI7QA3MuMJU9d2VmO8VhnDsh8gwuMAnWfIh6p5QL4AlFEAO5ixp45yj8T1lkytgdUiH7dOBLMceIYIKwGs9ntYFQFELDtGQJyJ1yZDwadqCWS0spF05qfEtJWl7Eq2N8fL2SsLwLBOtgEybeqa7yyNJthYjEVucSYqRN1HCX3GS6W2DMtmQIRMfUaflx/P4GJ9x6+Tsu6/xGJpIjzjzdEEWEk3tvtQvZzVsgPM9zEwJJhXJMLBfcU60dTJJUzyDSGyX+pqu/Z/pfYuAxA7xPXytP17YvowEdY6xyr4dekjEydxo0oG9170QadY8neS7drbl4KwNzPxLWKqdk/XTTRYPHYZgGgqs0kSLQsExJ1dd8w4MxYAOlP25AaCCv5uD/vHIHP3FdeW2IGTU3I5+WfBvC8RDm4oC0AVKRbUR6Af+u3+kQJ7rPfwNXVi4k4CLS1vg/+Vy/H9m+Y1/82VUdmQwc+T5LbiYnfJDBhW5gWAGk1dWz3SACvpxd8705QbHNwJ5kV+9r2yj2HZOwA+b+rBH7j6wwDyZxt6CcThagqIXwCl47GeTIusJ7Vs7vTTZfDBHGVXPxGa+Y9i2ULFTrHk+92z00UAlv1bSPmfSjnXz3G58c6ej2c1TGjYCYLub4P6JAZXd+szD3vJRnr74xDiy0ld+74aHwZgpOzjknhVtx78i7+T6iU2Wp/OEZzdBcLtVWj1BJB7oFK132hl5gmmXWZYu3YYQDQ9sIiZt5u69pUqnFQtErH6rycWKvhv+ioR9l2QWLU5rJ31kzUs+59E9FAi1LTfmYFo2t7MzFebevBhP+XScTWlVCdOmG3a9uKxSMq+QRB2MvANX5vML4shraNrAWV9ZQEYVuZZIvosEdI6HQCGlUmzpA2lBcTPWLTPXscSv3DkmOeZ4WCv+ho7cPLGXC63i0A3+dnIj9NvTL1pOLP46UR67fkkeJOpB0MFAPZhxoSFSX3av/2U3XHD6m9j0H4CTSz89kmgoeGG+NwpA3kH6PGzxcAOAbQyMI8IW9QT9dNR4xHr1PWEobdMXZvjAIik7OzpM01Xl14DKxkzLHs/gIXFMgR6KqE3rXVsqqUlRKy8DX7e1IM/2nCgvzmQFQdBaAFjnRnWtvqBcK6nUwY+S4a1OlLswfnc5x+ZejDop+iOq/VNhEtytLOKwIeSevBmFXxgQt3u3FC2wwsEMT+bCAcfGbZn9S8liNcdG1J2qf8qnTsps/ApTe+Glck0Bq66mWJ99m3MeC4R0vwzRcFYpM++lyRe8QKsTo1STtgC4KsiQB2lIAj4eULXflaqG7UG1jD4aReECthI2z1gzC/+zdWLpu33ifDgiAAYVn8nIJ70BBAQX/siK480CLwKJq0YBIG7E3owUm6mnc0/JJ2VoBKK2ksXZ6DkhOoCGMkSilr2cgb+4BHIOVPXJqvfN1rH5giqT0gORLv1azyrarVL1ktueAl5beKiLKL4nuMg9BPxtkQouEfJOxeR1ubjAKaXbOJ0Qm8aPi5E0gOPE7ACzLMAtBJwMKFrt44mcKV7ySZWPxjWpWk0lrLnSsK7pY4Y9FhSb3KWjpG2fwmGk3HcD5NYlgzNcAgqI22/CsY9JTbOmro2ZbQALkujpYWs8IRVSa8vdUa53OLEvJb9sZ5Pp3F9tsettAyKJPWm7vwDKbNHCG+bIW3BqAFcVsj6BkzkuNEMa+td4woUQG0ezgYCCCyI69MPRdL93yYWLyvKJRnWOpy1n7ZXC8aLXkGWy0C1AjJS9hYE6LzZ1mTkK7EiZ6V4ztS1G11jbnCegRB3uPshms6sdL87+8nKPE2gNV565S7mNQOw7L9DyAcVOXzxOG3ZRyBz3y2+ixqW/QEAj01HD5t606+8HEdS9u4CKVUyLB819ebNtQZbKq/4VIjA70xdm63GigBkXmDJhy+reB6b0b3u5fO0nA8hOKlrTgUtLj7Dmxu8LakHfzLa4J0Zdo4oNMe9VlZ1pYyoUk/i62DSAc6wlMfzpf7ioc0lwAqsxnUEugDB7yCLd8127f0rEXzFK2U+e9R2qfcCcCUCLWej4qXeAVAjrTKeAKqiVRQItQQgaLng3BI/Jnq8ACjGWlLgTUjeW5HYUgCcRsZgfY9UG7qQ28tN6XgBUJlNCJoj6gcXlDY+PMndwmb5wI9WHw8ALs0O4tu8+KoK9Hq+sVGJXh8PAHl6vXyjo3KDo3AtLEezVzqvjzYbubQ6A3G3xpQ5nlR25TY6iLGF6kRyrBhrNwrFRHNWRpiwvlJjw5WvqvuSb3gEfs2gIAFPjhVznU+VeJTAGSFyP/ZqaJQ+7qoAKCXV+OBTdnw82qw0TYuXNjLKrZOqAbgGShvdLOitkfKpiuckyQvHpdFd+gQUHQ9B3yPGEhDOAfwGS9pT1asGgldCNTgYk5igCtSL4/aqgddUKnIY4G8xc7ialz2IKAXQ64qcHW22qnkJVetwvF63+T9nAHfjRfzL0gAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-zoomStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAqUExURUdwTBKV2hGW2xKW2xKW2xKW2xGV3BGW2xGW3BGX2xKW3BKW2xCX2xKW2yDN61kAAAANdFJOUwCAVKxm3T/DmhrxKw97YQBGAAABaklEQVQ4y2NgIA6wGqCLMCqAqV4HdIm9F0Ek22UMM9hiG4AkVzQDA+cmx+YyJJnDlw8wMNQaNpfevbu0QgxJgrN3JQPD3VvhjU57kESnOZqvvXuJgcEXxVFMEkDt1w11gZYwoVgue3d5SzaQSgCydZG1TMkBU8vBuq9guBcqNBNDgj0GQrMEb0CVYEmA2ViANRQZ795tQPZduADciXcVUNSthGu4hGrAJawagBIXsWoAClzGqgEocRWrBqDIrQNQDTPRXZ8A0cB41wBNQgGiQfbubTQJAagGDB0GIA0OsnevbkCTCADiu4J374ahW34JqAEIbiXMRJOAgkvMKJYgJBx6717AKiF4F4eOu+jxgQCXGHBIKPDgkBC8JYCURJDtQHYWN4oEcvpZiyR+C9lZtkgSKKG1CyGOGrxItleixjrcLFBWRAYcMIkG9NQMiY67N7AlcxAQwMwA6SBxM2xZQ3jtVRPsRQ83sg8ACMIUxzzE8wsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-close{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-narrow{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-expand{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-menu-icon-text,.jb-pro-container .jb-pro-quality-icon-text,.jb-pro-container .jb-pro-scale-icon-text,.jb-pro-container .jb-pro-speed-icon-text{font-size:14px;min-width:30px;height:20px;line-height:20px;cursor:pointer;text-align:center}.jb-pro-container .jb-pro-speed{box-sizing:border-box;text-align:center;font-size:14px;color:#fff;width:90px}.jb-pro-container .jb-pro-menu-list,.jb-pro-container .jb-pro-quality-menu-list,.jb-pro-container .jb-pro-scale-menu-list,.jb-pro-container .jb-pro-speed-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;overflow:hidden;width:-webkit-max-content;width:-moz-max-content;width:max-content}.jb-pro-container .jb-pro-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-speed-menu-shown{visibility:visible;opacity:1}.jb-pro-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}.jb-pro-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container .jb-pro-quality-menu{padding:8px 0}.jb-pro-container .jb-pro-menu-item,.jb-pro-container .jb-pro-quality-menu-item,.jb-pro-container .jb-pro-scale-menu-item,.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-menu-item:hover,.jb-pro-container .jb-pro-quality-menu-item:hover,.jb-pro-container .jb-pro-scale-menu-item:hover,.jb-pro-container .jb-pro-speed-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-menu-item:focus,.jb-pro-container .jb-pro-quality-menu-item:focus,.jb-pro-container .jb-pro-scale-menu-item:focus,.jb-pro-container .jb-pro-speed-menu-item:focus{outline:none}.jb-pro-container .jb-pro-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-speed-menu-item-active{color:#2298fc}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-volume-panel-wrap.jb-pro-volume-panel-wrap-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jb-pro-container .jb-pro-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jb-pro-container .jb-pro-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:before{bottom:-54px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-volume-panel-handle:after,.jb-pro-container .jb-pro-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-controls,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-controls{width:100vh}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-play-big:after,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading{flex-direction:row}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading-text,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading-text{transform:rotate(270deg)}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-contextmenus .jb-pro-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)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu a{color:#fff;text-decoration:none}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span{display:inline-block;padding:0 7px}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span.art-current,.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span:hover{color:var(--theme)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:hover{background-color:hsla(0,0%,100%,.1)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:last-child{border-bottom:none}.jb-pro-container.jb-pro-contextmenus-show .jb-pro-contextmenus{display:flex}.jb-pro-container .jb-pro-extend-dom{position:relative;width:100%;height:100%;display:none}.jb-pro-container-playback .jb-pro-controls{height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center{flex:1;display:flex;box-sizing:border-box;justify-content:space-between;font-size:12px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time{box-sizing:border-box;flex:1;position:relative;height:100%}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-inner{width:300px;height:100%;overflow-y:hidden;overflow-x:auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-current-time{position:absolute;left:0;top:0;height:15px;width:1px;background-color:red;text-align:center;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll{position:relative;width:1440px;margin:0 auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-hour{width:1440px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.half-hour{width:2880px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.ten-min{width:8640px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.five-min{width:17280px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-min{width:86400px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-list{position:relative;background-color:#ccc;height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-day{height:100%;overflow:hidden}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-one-wrap{height:8px;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-wrap{height:25px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-btns{display:flex;align-items:center}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one{float:left;width:1px;height:8px;margin:0;cursor:default;position:relative;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.active,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.active{background-color:orange;cursor:pointer}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.start,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.start{background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one:hover .jb-pro-playback-time-title-tips,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one:hover .jb-pro-playback-time-title-tips{visibility:visible;opacity:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips.jb-pro-playback-time-title-tips-left{transform:translateX(-100%)}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips .jb-pro-playback-time-title{display:inline-block;padding:2px 5px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child{border-left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child .jb-pro-playback-time-hour-text{left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:after,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:after{content:"";position:absolute;left:0;top:-8px;width:1px;height:14px;background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-text{position:absolute;left:-13px}.jb-pro-container-playback .jb-pro-playback-expand.disabled .jb-pro-icon-expand,.jb-pro-container-playback .jb-pro-playback-narrow.disabled .jb-pro-icon-narrow{cursor:no-drop}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback .jb-pro-control-progress-simple:hover{top:0;align-items:flex-start}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner{height:100%}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner .jb-pro-progress-indicator{transform:scale(1);visibility:visible}.jb-pro-container-playback .jb-pro-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:all .2s ease;background:hsla(0,0%,100%,.5)}.jb-pro-container-playback .jb-pro-progress-hover{display:none;width:0}.jb-pro-container-playback .jb-pro-progress-played{position:absolute;left:0;top:0;right:0;bottom:0;height:100%;width:0;background-color:orange}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback .jb-pro-progress-indicator .jb-pro-icon{width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container-playback .jb-pro-progress-indicator:hover{transform:scale(1.2)!important}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback.jb-pro-fullscreen-web .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-playback-time-inner{overflow-y:auto}.jb-pro-zoom-control{cursor:-webkit-grab;cursor:grab}.jb-pro-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}.jb-pro-performance-panel .jb-pro-performance-item{display:flex;align-items:center;margin-top:3px;color:#fff}.jb-pro-performance-panel .jb-pro-performance-item-block{height:10px}.jb-pro-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;z-index:10;display:none}.jb-pro-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%}.jb-pro-tips-message .jb-pro-tips-message-close{position:absolute;z-index:99999;right:0;top:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.jb-pro-tips-message .jb-pro-tips-message-close .jb-pro-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%}.jb-pro-tips-message .jb-pro-tips-message-content{overflow:auto;padding:35px;box-sizing:border-box;width:100%;height:100%;z-index:99999}.jb-pro-tips-message .jb-pro-tips-message-content .jb-pro-tips-message-content-item{font-size:14px;color:#fff;text-align:center;line-height:1.5}');class Sc{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("jb-pro-controls-show-auto-hide"):e.$container.classList.add("jb-pro-controls-show");const i=e._opt,s=i.operateBtns,r=`\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
    ${rc.narrow}
    \n
    ${rc.expand}
    \n
    \n `:""}\n
    \n `;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
    `:""}\n
    \n \n
    \n ${i.loadingIcon?`\n
    \n ${rc.loading}\n
    ${i.loadingText}
    \n
    \n `:""}\n ${i.hasControl&&s.play?'
    ':""}\n ${i.hasControl&&s.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 ${i.ptzCruiseShow?'\n
    \n
    \n \n \n 巡航开\n \n
    \n
    \n \n \n 巡航关\n \n
    \n
    \n ':""}\n ${i.ptzFogShow?'\n
    \n
    \n \n \n 透雾开\n \n
    \n
    \n \n \n 透雾关\n \n
    \n
    \n ':""}\n\n ${i.ptzWiperShow?'\n
    \n
    \n \n \n 雨刷开\n \n
    \n
    \n \n \n 雨刷关\n \n
    \n
    \n ':""}\n
    \n
    \n `:""}\n ${i.hasVideo?`\n
    \n
    ${rc.narrow}
    \n
    电子放大
    \n
    ${rc.expand}
    \n
    ${rc.zoomStop}
    \n
    \n
    \n
    \n
    00:00:00
    \n
    ${rc.recordStop}
    \n
    \n `:""}\n\n ${i.hasControl?`\n
    \n
    \n
    \n ${i.showBandwidth?'
    ':""}\n
    \n
    ${i.controlHtml}
    \n
    \n ${i.playType===_&&i.playbackConfig.showControl&&i.playbackConfig.controlType===Q.normal?r:""}\n ${i.playType===_&&i.playbackConfig.showControl&&i.playbackConfig.controlType===Q.simple?'\n
    \n
    \n
    \n
    \n
    \n
    00:00
    \n
    \n
    \n ':""}\n
    \n ${i.playType===_&&i.playbackConfig.showRateBtn?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.close?`
    ${rc.close}
    `:""}\n ${s.logSave?`
    ${rc.logSave}
    `:""}\n ${s.performance?`
    ${rc.performance}
    ${rc.performanceActive}
    `:""}\n ${s.aiFace?`
    ${rc.face}
    ${rc.faceActive}
    `:""}\n ${s.aiObject?`
    ${rc.object}
    ${rc.objectActive}
    `:""}\n ${s.aiOcclusion?`
    ${rc.occlusion}
    ${rc.occlusionActive}
    `:""}\n ${s.quality?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.scale?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.audio?`\n
    \n
    \n ${rc.audio}\n ${rc.mute}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `:""}\n ${s.play?`
    ${rc.play}
    ${rc.pause}
    `:""}\n ${s.screenshot?`
    ${rc.screenshot}
    `:""}\n ${s.record?`
    ${rc.record}
    ${rc.recordStop}
    `:""}\n ${s.ptz?`
    ${rc.ptz}
    ${rc.ptzActive}
    `:""}\n ${s.zoom?`
    ${rc.zoom}
    ${rc.zoomStop}
    `:""}\n ${s.fullscreen?`
    ${rc.fullscreen}
    ${rc.fullscreenExit}
    `:""}\n
    \n
    \n
    \n `:""}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jb-pro-poster"),configurable:!0}),Object.defineProperty(t,"$loadingBg",{value:e.$container.querySelector(".jb-pro-loading-bg"),configurable:!0}),Object.defineProperty(t,"$loadingBgImage",{value:e.$container.querySelector(".jb-pro-loading-bg-image"),configurable:!0}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jb-pro-loading"),configurable:!0}),Object.defineProperty(t,"$loadingText",{value:e.$container.querySelector(".jb-pro-loading-text"),configurable:!0}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jb-pro-play"),configurable:!0}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jb-pro-play-big"),configurable:!0}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jb-pro-recording"),configurable:!0}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jb-pro-recording-time"),configurable:!0}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jb-pro-recording-stop"),configurable:!0}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jb-pro-pause"),configurable:!0}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jb-pro-controls"),configurable:!0}),Object.defineProperty(t,"$controlsInner",{value:e.$container.querySelector(".jb-pro-controls-bottom"),configurable:!0}),Object.defineProperty(t,"$controlsLeft",{value:e.$container.querySelector(".jb-pro-controls-left"),configurable:!0}),Object.defineProperty(t,"$controlsRight",{value:e.$container.querySelector(".jb-pro-controls-right"),configurable:!0}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jb-pro-volume"),configurable:!0}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jb-pro-volume-panel-wrap"),configurable:!0}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jb-pro-volume-panel-text"),configurable:!0}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jb-pro-volume-panel"),configurable:!0}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jb-pro-volume-panel-handle"),configurable:!0}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jb-pro-icon-audio"),configurable:!0}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jb-pro-icon-mute"),configurable:!0}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jb-pro-fullscreen"),configurable:!0}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jb-pro-fullscreen-exit"),configurable:!0}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jb-pro-record"),configurable:!0}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jb-pro-record-stop"),configurable:!0}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jb-pro-screenshot"),configurable:!0}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jb-pro-speed"),configurable:!0}),Object.defineProperty(t,"$controlHtml",{value:e.$container.querySelector(".jb-pro-controls-item-html"),configurable:!0}),Object.defineProperty(t,"$playbackTime",{value:e.$container.querySelector(".jb-pro-controls-playback-time"),configurable:!0}),Object.defineProperty(t,"$playbackTimeInner",{value:e.$container.querySelector(".jb-pro-controls-playback-time-inner"),configurable:!0}),Object.defineProperty(t,"$playbackTimeScroll",{value:e.$container.querySelector(".jb-pro-controls-playback-time-scroll"),configurable:!0}),Object.defineProperty(t,"$playbackTimeList",{value:e.$container.querySelector(".jb-pro-controls-playback-time-list"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListOne",{value:e.$container.querySelector(".jb-pro-playback-time-one-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListSecond",{value:e.$container.querySelector(".jb-pro-playback-time-second-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTime",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTimeText",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time-text"),configurable:!0}),Object.defineProperty(t,"$controlsPlaybackBtns",{value:e.$container.querySelector(".jb-pro-controls-playback-btns"),configurable:!0}),Object.defineProperty(t,"$playbackNarrow",{value:e.$container.querySelector(".jb-pro-playback-narrow"),configurable:!0}),Object.defineProperty(t,"$playbackExpand",{value:e.$container.querySelector(".jb-pro-playback-expand"),configurable:!0}),Object.defineProperty(t,"$ptz",{value:e.$container.querySelector(".jb-pro-ptz"),configurable:!0}),Object.defineProperty(t,"$ptzActive",{value:e.$container.querySelector(".jb-pro-ptz-active"),configurable:!0}),Object.defineProperty(t,"$ptzControl",{value:e.$container.querySelector(".jb-pro-ptz-controls"),configurable:!0}),Object.defineProperty(t,"$ptzBgActive",{value:e.$container.querySelector(".jb-pro-ptz-bg-active"),configurable:!0}),Object.defineProperty(t,"$ptzControlCircular",{value:e.$container.querySelector(".jb-pro-ptz-control"),configurable:!0}),Object.defineProperty(t,"$ptzArrows",{value:e.$container.querySelectorAll(".jb-pro-ptz-arrow"),configurable:!0}),Object.defineProperty(t,"$ptzExpand",{value:e.$container.querySelector(".jb-pro-ptz-expand"),configurable:!0}),Object.defineProperty(t,"$ptzNarrow",{value:e.$container.querySelector(".jb-pro-ptz-narrow"),configurable:!0}),Object.defineProperty(t,"$ptzApertureFar",{value:e.$container.querySelector(".jb-pro-ptz-aperture-far"),configurable:!0}),Object.defineProperty(t,"$ptzApertureNear",{value:e.$container.querySelector(".jb-pro-ptz-aperture-near"),configurable:!0}),Object.defineProperty(t,"$ptzFocusFar",{value:e.$container.querySelector(".jb-pro-ptz-focus-far"),configurable:!0}),Object.defineProperty(t,"$ptzFocusNear",{value:e.$container.querySelector(".jb-pro-ptz-focus-near"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePlay",{value:e.$container.querySelector(".jb-pro-ptz-cruise-play"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePause",{value:e.$container.querySelector(".jb-pro-ptz-cruise-pause"),configurable:!0}),Object.defineProperty(t,"$ptzFogOpen",{value:e.$container.querySelector(".jb-pro-ptz-fog-open"),configurable:!0}),Object.defineProperty(t,"$ptzFogClose",{value:e.$container.querySelector(".jb-pro-ptz-fog-close"),configurable:!0}),Object.defineProperty(t,"$ptzWiperOpen",{value:e.$container.querySelector(".jb-pro-ptz-wiper-open"),configurable:!0}),Object.defineProperty(t,"$ptzWiperClose",{value:e.$container.querySelector(".jb-pro-ptz-wiper-close"),configurable:!0}),Object.defineProperty(t,"$qualityText",{value:e.$container.querySelector(".jb-pro-quality-icon-text"),configurable:!0}),Object.defineProperty(t,"$qualityMenu",{value:e.$container.querySelector(".jb-pro-quality-menu"),configurable:!0}),Object.defineProperty(t,"$qualityMenuList",{value:e.$container.querySelector(".jb-pro-quality-menu-list"),configurable:!0}),Object.defineProperty(t,"$scaleText",{value:e.$container.querySelector(".jb-pro-scale-icon-text"),configurable:!0}),Object.defineProperty(t,"$scaleMenu",{value:e.$container.querySelector(".jb-pro-scale-menu"),configurable:!0}),Object.defineProperty(t,"$scaleMenuList",{value:e.$container.querySelector(".jb-pro-scale-menu-list"),configurable:!0}),Object.defineProperty(t,"$zoom",{value:e.$container.querySelector(".jb-pro-zoom"),configurable:!0}),Object.defineProperty(t,"$zoomStop",{value:e.$container.querySelector(".jb-pro-zoom-stop"),configurable:!0}),Object.defineProperty(t,"$zoomNarrow",{value:e.$container.querySelector(".jb-pro-zoom-narrow"),configurable:!0}),Object.defineProperty(t,"$zoomExpand",{value:e.$container.querySelector(".jb-pro-zoom-expand"),configurable:!0}),Object.defineProperty(t,"$zoomStop2",{value:e.$container.querySelector(".jb-pro-zoom-stop2"),configurable:!0}),Object.defineProperty(t,"$close",{value:e.$container.querySelector(".jb-pro-close"),configurable:!0}),Object.defineProperty(t,"$zoomControls",{value:e.$container.querySelector(".jb-pro-zoom-controls"),configurable:!0}),Object.defineProperty(t,"$performancePanel",{value:e.$container.querySelector(".jb-pro-performance-panel"),configurable:!0}),Object.defineProperty(t,"$performance",{value:e.$container.querySelector(".jb-pro-performance"),configurable:!0}),Object.defineProperty(t,"$performanceActive",{value:e.$container.querySelector(".jb-pro-performance-active"),configurable:!0}),Object.defineProperty(t,"$faceDetect",{value:e.$container.querySelector(".jb-pro-face"),configurable:!0}),Object.defineProperty(t,"$faceDetectActive",{value:e.$container.querySelector(".jb-pro-face-active"),configurable:!0}),Object.defineProperty(t,"$objectDetect",{value:e.$container.querySelector(".jb-pro-object"),configurable:!0}),Object.defineProperty(t,"$objectDetectActive",{value:e.$container.querySelector(".jb-pro-object-active"),configurable:!0}),Object.defineProperty(t,"$occlusionDetect",{value:e.$container.querySelector(".jb-pro-occlusion"),configurable:!0}),Object.defineProperty(t,"$occlusionDetectActive",{value:e.$container.querySelector(".jb-pro-occlusion-active"),configurable:!0}),Object.defineProperty(t,"$contextmenus",{value:e.$container.querySelector(".jb-pro-contextmenus"),configurable:!0}),Object.defineProperty(t,"$speedText",{value:e.$container.querySelector(".jb-pro-speed-icon-text"),configurable:!0}),Object.defineProperty(t,"$speedMenu",{value:e.$container.querySelector(".jb-pro-speed-menu"),configurable:!0}),Object.defineProperty(t,"$speedMenuList",{value:e.$container.querySelector(".jb-pro-speed-menu-list"),configurable:!0}),Object.defineProperty(t,"$logSave",{value:e.$container.querySelector(".jb-pro-logSave"),configurable:!0}),Object.defineProperty(t,"$playbackProgress",{value:e.$container.querySelector(".jb-pro-control-progress-simple"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTip",{value:e.$container.querySelector(".jb-pro-progress-tip"),configurable:!0}),Object.defineProperty(t,"$playbackProgressHover",{value:e.$container.querySelector(".jb-pro-progress-hover"),configurable:!0}),Object.defineProperty(t,"$playbackProgressPlayed",{value:e.$container.querySelector(".jb-pro-progress-played"),configurable:!0}),Object.defineProperty(t,"$playbackProgressIndicator",{value:e.$container.querySelector(".jb-pro-progress-indicator"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTime",{value:e.$container.querySelector(".jb-pro-playback-control-time"),configurable:!0}),Object.defineProperty(t,"$tipsMessage",{value:e.$container.querySelector(".jb-pro-tips-message"),configurable:!0}),Object.defineProperty(t,"$tipsMessageClose",{value:e.$container.querySelector(".jb-pro-tips-message-close"),configurable:!0}),Object.defineProperty(t,"$tipsMessageContent",{value:e.$container.querySelector(".jb-pro-tips-message-content"),configurable:!0})})(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&&t.$controls.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsInnerRect",{get:()=>t.$controlsInner&&t.$controlsInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsLeftRect",{get:()=>t.$controlsLeft&&t.$controlsLeft.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsRightRect",{get:()=>t.$controlsRight&&t.$controlsRight.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackTimeInner",{get:()=>t.$playbackTimeInner&&t.$playbackTimeInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackBtnsRect",{get:()=>t.$controlsPlaybackBtns&&t.$controlsPlaybackBtns.getBoundingClientRect()||{width:0},configurable:!0}),vc(e,this),((e,t)=>{const{events:{proxy:i},debug:s}=e,r=e._opt,o=r.operateBtns;function a(e){const{bottom:i,height:s}=t.$volumePanel.getBoundingClientRect(),{height:r}=t.$volumeHandle.getBoundingClientRect();return po(i-e.y-r/2,0,s-r/2)/(s-r)}function n(i){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1,s&&!e.fullscreen&&e._opt.hasControl&&e._opt.controlAutoHide&&(t.isFocus?(fo(t.$controls,"display","block"),d()):(h(),fo(t.$controls,"display","none")))}if(_o()?i(window,["click","contextmenu"],(e=>{e.stopPropagation(),n(e)})):i(window,"click",(e=>{e.stopPropagation(),n(e,!0)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),o.play&&(i(t.$pause,"click",(t=>{r.playType===_&&r.playbackConfig.uiUsePlaybackPause?e.playbackPause=!0:aa(o.pauseFn)?o.pauseFn():e.pauseForControl()})),i(t.$play,"click",(t=>{r.playType===_&&e.playbackPause?e.playbackPause=!1:aa(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()})).catch((e=>{}))}))),i(t.$playBig,"click",(i=>{r.playType===_&&e.playbackPause?e.playbackPause=!1:t.isInitPlayer?e.emit(gt.clickInitPlayer):aa(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))})),o.screenshot&&i(t.$screenshot,"click",(t=>{t.stopPropagation(),aa(o.screenshotFn)?o.screenshotFn():e.video.screenshot()})),o.audio&&(_o()&&(i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jb-pro-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jb-pro-volume-panel-wrap-show")})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=a(t)})),i(t.$volumeHandle,"mousedown",(e=>{e.stopPropagation(),t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=a(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)}))),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),fo(t.$volumeOn,"display","none"),fo(t.$volumeOff,"display","block");const s=e.volume;e.volume=0,e._lastVolume=_o()?s:1})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),fo(t.$volumeOn,"display","block"),fo(t.$volumeOff,"display","none"),e.volume=_o()?e.lastVolume||.5:1}))),o.record&&(i(t.$record,"click",(t=>{t.stopPropagation(),aa(o.recordFn)?o.recordFn():e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),aa(o.recordStopFn)?o.recordStopFn():e.recording=!1}))),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),aa(o.recordStopFn)?o.recordStopFn():e.recording=!1})),o.fullscreen&&(i(t.$fullscreen,"click",(t=>{t.stopPropagation(),aa(o.fullscreenFn)?o.fullscreenFn():e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),aa(o.fullscreenExitFn)?o.fullscreenExitFn():e.fullscreen=!1}))),o.ptz){i(t.$ptz,"click",(e=>{e.stopPropagation(),fo(t.$ptzActive,"display","flex"),fo(t.$ptz,"display","none"),t.$ptzControl.classList.add("jb-pro-ptz-controls-show")})),i(t.$ptzActive,"click",(e=>{e.stopPropagation(),fo(t.$ptz,"display","flex"),fo(t.$ptzActive,"display","none"),t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")}));const c=Ia();if(t.$ptzArrows.forEach((s=>{if(r.ptzClickType===K)i(s,"click",(i=>{i.stopPropagation();const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(gt.ptz,Ta(s)),setTimeout((()=>{t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),Oi.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(gt.ptz,Ni)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let r=!1;i(s,c.down,(i=>{i.stopPropagation(),r=!0;const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(gt.ptz,Ta(s))}));const o=()=>{r=!1,t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),Oi.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(gt.ptz,Ni)};i(s,c.up,(e=>{e.stopPropagation(),r&&o()})),i(window,c.up,(e=>{e.stopPropagation(),r&&o()}))}})),r.ptzZoomShow)if(r.ptzClickType===K)i(t.$ptzExpand,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,Gi),setTimeout((()=>{e.emit(gt.ptz,Ni)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzNarrow,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,zi),setTimeout((()=>{e.emit(gt.ptz,Ni)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let u=!1,p=!1;i(t.$ptzExpand,c.down,(t=>{t.stopPropagation(),u=!0,e.emit(gt.ptz,Gi)})),i(t.$ptzNarrow,c.down,(t=>{t.stopPropagation(),p=!0,e.emit(gt.ptz,zi)}));const f=()=>{u=!1,p=!1,e.emit(gt.ptz,Ni)};i(t.$ptzExpand,c.up,(e=>{e.stopPropagation(),u&&f()})),i(t.$ptzNarrow,c.up,(e=>{e.stopPropagation(),p&&f()})),i(window,c.up,(e=>{e.stopPropagation(),(u||p)&&f()}))}if(r.ptzApertureShow)if(r.ptzClickType===K)i(t.$ptzApertureFar,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,Wi),setTimeout((()=>{e.emit(gt.ptz,ji)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzApertureNear,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,Vi),setTimeout((()=>{e.emit(gt.ptz,ji)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let m=!1,g=!1;i(t.$ptzApertureFar,c.down,(t=>{t.stopPropagation(),m=!0,e.emit(gt.ptz,Wi)})),i(t.$ptzApertureNear,c.down,(t=>{t.stopPropagation(),g=!0,e.emit(gt.ptz,Vi)}));const y=()=>{m=!1,g=!1,e.emit(gt.ptz,ji)};i(t.$ptzApertureFar,c.up,(e=>{e.stopPropagation(),m&&y()})),i(t.$ptzApertureNear,c.up,(e=>{e.stopPropagation(),g&&y()})),i(window,c.up,(e=>{e.stopPropagation(),(m||g)&&y()}))}if(r.ptzFocusShow)if(r.ptzClickType===K)i(t.$ptzFocusFar,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,$i),setTimeout((()=>{e.emit(gt.ptz,ji)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzFocusNear,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,Hi),setTimeout((()=>{e.emit(gt.ptz,ji)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let A=!1,b=!1;i(t.$ptzFocusFar,c.down,(t=>{t.stopPropagation(),A=!0,e.emit(gt.ptz,$i)})),i(t.$ptzFocusNear,c.down,(t=>{t.stopPropagation(),b=!0,e.emit(gt.ptz,Hi)}));const v=()=>{A=!1,b=!1,e.emit(gt.ptz,ji)};i(t.$ptzFocusFar,c.up,(e=>{e.stopPropagation(),A&&v()})),i(t.$ptzFocusNear,c.up,(e=>{e.stopPropagation(),b&&v()})),i(window,c.up,(e=>{e.stopPropagation(),(A||b)&&v()}))}if(r.ptzCruiseShow&&(i(t.$ptzCruisePlay,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,Ji)})),i(t.$ptzCruisePause,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,qi)}))),r.ptzFogShow&&(i(t.$ptzFogOpen,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,Ki)})),i(t.$ptzFogClose,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,Yi)}))),r.ptzWiperShow&&(i(t.$ptzWiperOpen,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,Qi)})),i(t.$ptzWiperClose,"click",(t=>{t.stopPropagation(),e.emit(gt.ptz,Xi)}))),r.ptzSupportDraggable){function S(){t.isPtzControlDroging&&(t.isPtzControlDroging=!1,t.$ptzControl.style.cursor="grab",t.tempPtzPosition={x:0,y:0})}t.isPtzControlDroging=!1,t.tempPtzPosition={x:0,y:0},i(t.$ptzControl,c.down,(e=>{e.stopPropagation(),t.isPtzControlDroging=!0,t.$ptzControl.style.cursor="grabbing";const{posX:i,posY:s}=na(e);t.tempPtzPosition={x:i,y:s}})),i(t.$ptzControl,c.move,(e=>{if(t.isPtzControlDroging){e.stopPropagation();const{posX:i,posY:s}=na(e),r=t.tempPtzPosition.x-i,o=t.tempPtzPosition.y-s;t.$ptzControl.style.left=t.$ptzControl.offsetLeft-r+"px",t.$ptzControl.style.top=t.$ptzControl.offsetTop-o+"px",t.tempPtzPosition={x:i,y:s}}})),i(t.$ptzControl,c.up,(e=>{e.stopPropagation(),S()})),i(window,c.up,(e=>{e.stopPropagation(),S()}))}}o.performance&&(i(t.$performance,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!0)})),i(t.$performanceActive,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!1)}))),o.logSave&&i(t.$logSave,"click",(t=>{t.stopPropagation(),e.downloadMemoryLog()})),o.aiFace&&(i(t.$faceDetect,"click",(t=>{t.stopPropagation(),e.faceDetect(!0)})),i(t.$faceDetectActive,"click",(t=>{t.stopPropagation(),e.faceDetect(!1)}))),o.aiObject&&(i(t.$objectDetect,"click",(t=>{t.stopPropagation(),e.objectDetect(!0)})),i(t.$objectDetectActive,"click",(t=>{t.stopPropagation(),e.objectDetect(!1)}))),o.aiOcclusion&&(i(t.$occlusionDetect,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!0)})),i(t.$occlusionDetectActive,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!1)})));let l=null;const d=()=>{h(),l=setTimeout((()=>{fo(t.$controls,"display","none")}),1e3*e._opt.controlAutoHideDelayTime)},h=()=>{l&&(clearTimeout(l),l=null)};if(e._opt.hasControl&&e._opt.controlAutoHide&&_o()&&(i(e.$container,"mouseover",(()=>{e.fullscreen||(fo(t.$controls,"display","block"),d())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(fo(t.$controls,"display","block"),d()))})),i(e.$container,"mouseout",(()=>{h(),fo(t.$controls,"display","none")}))),e._opt.playType===_){let E=e._opt.playbackConfig.controlType;e._opt.playbackConfig.showRateBtn&&(i(t.$speedMenu,"mouseover",(()=>{t.$speedMenuList.classList.add("jb-pro-speed-menu-shown")})),i(t.$speedMenu,"mouseout",(()=>{t.$speedMenuList.classList.remove("jb-pro-speed-menu-shown")})),i(t.$speedMenuList,"click",(t=>{const i=ra(t);if(i.matches("div.jb-pro-speed-menu-item")){const t=i.dataset;e.emit(gt.playbackPreRateChange,t.speed)}}))),E===Q.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=ra(t);i.matches("div.jb-pro-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()}))):E===Q.simple&&(t.isDroging=!1,i(t.$playbackProgress,"click",(i=>{if(i.target!==t.$playbackProgressIndicator){let s=0,r=0;if(e.isInWebFullscreen())s=i.touches[0].clientY/e.height,r=s*e.playback.totalDuration;else{const o=uc(t,e.playback.totalDuration,i);s=o.percentage,r=o.second}e.playback&&e.playback.seek({time:r})}})),i(t.$playbackProgress,"mousemove",(i=>{fo(t.$playbackProgressTip,"display","block");const{width:s,time:r}=uc(t,e.playback.totalDuration,i);t.$playbackProgressTip.innerHTML=r;const o=t.$playbackProgressTip.clientWidth;s<=o/2?fo(t.$playbackProgressTip,"left",0):s>t.$playbackProgress.clientWidth-o/2?fo(t.$playbackProgressTip,"left",t.$playbackProgress-o+"px"):fo(t.$playbackProgressTip,"left",s-o/2+"px")})),i(t.$playbackProgress,"mouseout",(()=>{fo(t.$playbackProgressTip,"display","none")})),i(t.$playbackProgressIndicator,"mousedown",(e=>{t.isDroging=!0})),i(t.$playbackProgress,"mousemove",(i=>{if(t.isDroging){const{second:s,percentage:r}=uc(t,e.playback.totalDuration,i);e.playback&&e.playback.seek({time:s})}})),i(t.$playbackProgress,"mouseup",(e=>{t.isDroging&&(t.isDroging=!1)})))}o.quality&&(i(t.$qualityMenu,"mouseover",(()=>{t.$qualityMenuList.classList.add("jb-pro-quality-menu-shown")})),i(t.$qualityMenu,"mouseout",(()=>{t.$qualityMenuList.classList.remove("jb-pro-quality-menu-shown")})),i(t.$qualityMenuList,"click",(t=>{const i=ra(t);if(i.matches("div.jb-pro-quality-menu-item")){const t=i.dataset;e.streamQuality=t.quality}}))),o.scale&&(i(t.$scaleMenu,"mouseover",(()=>{t.$scaleMenuList.classList.add("jb-pro-scale-menu-shown")})),i(t.$scaleMenu,"mouseout",(()=>{t.$scaleMenuList.classList.remove("jb-pro-scale-menu-shown")})),i(t.$scaleMenuList,"click",(t=>{const i=ra(t);if(i.matches("div.jb-pro-scale-menu-item")){const t=i.dataset;e.setScaleMode(t.scale)}}))),o.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})),o.close&&i(t.$close,"click",(t=>{t.stopPropagation(),e.doDestroy()})),i(t.$tipsMessageClose,"click",(e=>{e.stopPropagation(),t.$tipsMessageContent.innerHTML="",fo(t.$tipsMessage,"display","none")}))})(e,this),e._opt.hotKey&&_o()&&((e,t)=>{const{events:{proxy:i}}=e;let s={};function r(e,t){s[e]?s[e].push(t):s[e]=[t]}t.keys=s,r(Di,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(xi,(()=>{e.volume+=.05})),r(Ri,(()=>{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=s[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.btnIndex=0,this.initLoadingBackground(),ea(e._opt.loadingIconStyle)&&this.initLoadingIconStyle(e._opt.loadingIconStyle),ea(e._opt.ptzPositionConfig)&&this.updatePtzPosition(e._opt.ptzPositionConfig),e._opt.initShowPlayBtn&&(this.isInitPlayer=!0,this.showPlayBtn()),this.updateControlSize(),this.kbpsShow="0 KB/s",this.player.debugLog("Control","init")}destroy(){if(this.$performancePanel){this.$performancePanel.innerHTML="";if(!bc(this.$performancePanel)){const e=this.player.$container.querySelector(".jb-pro-performance-panel");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$performancePanel}if(this.$poster){if(!bc(this.$poster)){const e=this.player.$container.querySelector(".jb-pro-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$poster}if(this.$loading){if(!bc(this.$loading)){const e=this.player.$container.querySelector(".jb-pro-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loading}if(this.$loadingBg){if(!bc(this.$loadingBg)){const e=this.player.$container.querySelector(".jb-pro-loading-bg");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loadingBg}if(this.$controls){if(!bc(this.$controls)){const e=this.player.$container.querySelector(".jb-pro-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$controls}if(this.$playBig){if(!bc(this.$playBig)){const e=this.player.$container.querySelector(".jb-pro-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$playBig}if(this.$recording){if(!bc(this.$recording)){const e=this.player.$container.querySelector(".jb-pro-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$recording}if(this.$ptzControl){if(!bc(this.$ptzControl)){const e=this.player.$container.querySelector(".jb-pro-ptz-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$ptzControl}if(this.$zoomControls){if(!bc(this.$zoomControls)){const e=this.player.$container.querySelector(".jb-pro-zoom-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$zoomControls}if(this.$contextmenus){this.$contextmenus.innerHTML="";if(!bc(this.$contextmenus)){const e=this.player.$container.querySelector(".jb-pro-contextmenus");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$contextmenus}if(this.$tipsMessage){if(!bc(this.$tipsMessage)){const e=this.player.$container.querySelector(".jb-pro-tips-message");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$tipsMessage}if(this.$extendDom){if(!bc(this.$extendDom)){const e=this.player.$container.querySelector(".jb-pro-extend-dom");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$extendDom}try{delete this.$tipsMessageContent,delete this.$tipsMessageClose,delete this.$playbackProgressTime,delete this.$playbackProgressIndicator,delete this.$playbackProgressPlayed,delete this.$playbackProgressHover,delete this.$$playbackProgressTip,delete this.$playbackProgress,delete this.$logSave,delete this.$speedMenuList,delete this.$speedMenu,delete this.$speedText,delete this.$contextmenus,delete this.$occlusionDetectActive,delete this.$occlusionDetect,delete this.$objectDetectActive,delete this.$objectDetect,delete this.$faceDetectActive,delete this.$faceDetect,delete this.$performanceActive,delete this.$performance,delete this.$performancePanel,delete this.$zoomControls,delete this.$close,delete this.$zoomStop2,delete this.$zoomExpand,delete this.$zoomNarrow,delete this.$zoomStop,delete this.$zoom,delete this.$scaleMenuList,delete this.$scaleMenu,delete this.$scaleText,delete this.$qualityMenuList,delete this.$qualityMenu,delete this.$qualityText,delete this.$ptzWiperClose,delete this.$ptzWiperOpen,delete this.$ptzFogClose,delete this.$ptzFogOpen,delete this.$ptzCruisePause,delete this.$ptzCruisePlay,delete this.$ptzFocusNear,delete this.$ptzFocusFar,delete this.$ptzApertureNear,delete this.$ptzApertureFar,delete this.$ptzNarrow,delete this.$ptzExpand,delete this.$ptzArrows,delete this.$ptzControlCircular,delete this.$ptzBgActive,delete this.$ptzControl,delete this.$ptzActive,delete this.$ptz,delete this.$playbackExpand,delete this.$playbackNarrow,delete this.$controlsPlaybackBtns,delete this.$playbackCurrentTimeText,delete this.$playbackCurrentTime,delete this.$playbackTimeListSecond,delete this.$playbackTimeListOne,delete this.$playbackTimeList,delete this.$playbackTimeScroll,delete this.$playbackTimeInner,delete this.$playbackTime,delete this.$controlHtml,delete this.$speed,delete this.$screenshot,delete this.$recordStop,delete this.$record,delete this.$fullscreenExit,delete this.$fullscreen,delete this.$volumeOff,delete this.$volumeOn,delete this.$volumeHandle,delete this.$volumePanel,delete this.$volumePanelText,delete this.$volumePanelWrap,delete this.$volume,delete this.$controlsRight,delete this.$controlsLeft,delete this.$controlsInner,delete this.$controls,delete this.$pause,delete this.$recordingStop,delete this.$recordingTime,delete this.$recording,delete this.$playBig,delete this.$play,delete this.$loadingText,delete this.$loading,delete this.$loadingBgImage,delete this.$loadingBg,delete this.$poster,delete this.$extendDom,delete this.controlsRect,delete this.controlsInnerRect,delete this.controlsLeftRect,delete this.controlsRightRect,delete this.controlsPlaybackTimeInner,delete this.controlsPlaybackBtnsRect}catch(e){}this.keys=null,this.btnIndex=0,this.extendBtnList=[],this.kbpsShow="0 KB/s",this.player.$container&&(this.player.$container.classList.remove("jb-pro-controls-show-auto-hide"),this.player.$container.classList.remove("jb-pro-controls-show")),this.player.debugLog("Control","destroy")}getBtnIndex(){return this.btnIndex++}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,s=t/i,r=e.video.$videoElement.width/e.video.$videoElement.height;if(s>r){const s=(t-i*r)/2;e.$container.style.padding=`0 ${s}px`}else{const s=(i-t/r)/2;e.$container.style.padding=`${s}px 0`}}initLoadingBackground(){const e=this.player;e._opt.loadingBackground&&e._opt.loadingBackgroundWidth&&e._opt.loadingBackgroundHeight&&(e.debugLog("Control","initLoadingBackground()"),"default"===this.player._opt.aspectRatio||vo()?e.getRenderType()===$?this._initLoadingBackgroundForCanvas():e.getRenderType()===H&&this._initLoadingBackgroundForVideo():this._initLoadingBackgroundForRatio(),yc(this.$loadingBg,"display","block"),e._opt.loadingBackground="")}resizeLoadingBackground(){this.$loadingBgImage.src&&this.$loadingBgImage.width>0&&this.$loadingBgImage.height>0&&"none"!==mo(this.$loadingBg,"display",!1)&&("default"===this.player._opt.aspectRatio||vo()?this.player.getRenderType()===$?this._initLoadingBackgroundForCanvas():this.player.getRenderType()===H&&this._initLoadingBackgroundForVideo():this._initLoadingBackgroundForRatio())}initLoadingIconStyle(e){const t=this.player.$container.querySelector(".jb-pro-icon-loading");t&&(e.width&&yc(t,"width",`${e.width}px`),e.height&&yc(t,"height",`${e.height}px`),e.background&&yc(t,"backgroundImage",`url("${e.background}")`),!1===e.hasAnimation&&(yc(t,"animationName","none"),yc(t,"animationDuration",0),yc(t,"animationTimingFunction","ease"),yc(t,"animationIterationCount",1)))}_initLoadingBackgroundForRatio(){const e=this.player._opt.aspectRatio.split(":").map(Number),t=this.player.getShowVideoRect(),i=this.player.getControlHeight(),s=t.width,r=t.height,o=this.player._opt.loadingBackgroundWidth,a=this.player._opt.loadingBackgroundHeight,n=o/a,l=e[0]/e[1];if(this.player._opt.loadingBackground&&(this.$loadingBgImage.src=this.player._opt.loadingBackground),n>l){const e=l*a/o;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${i}px)`,this.$loadingBgImage.style.padding=`0 ${(s-s*e)/2}px`}else{const e=o/l/a;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${i}px)`,this.$loadingBgImage.style.padding=(r-r*e)/2+"px 0"}}_initLoadingBackgroundForCanvas(){const e=this.player,t=e._opt,i=e.getShowVideoRect(),s=i.height,r=i.width,o={width:this.player._opt.loadingBackgroundWidth,height:this.player._opt.loadingBackgroundHeight};let a=o.width,n=o.height;const l=t.rotate;let d=(r-a)/2,h=(s-n)/2;270!==l&&90!==l||(a=o.height,n=o.width);const c=r/a,u=s/n;let p=c>u?u:c;wa(t.isResize)&&c!==u&&(p=c+","+u),t.isFullResize&&(p=c>u?c:u);let f="scale("+p+")";"none"===t.mirrorRotate&&l&&(f+=" rotate("+l+"deg)"),"level"===t.mirrorRotate?f+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(f+=" rotateX(180deg)"),this.$loadingBgImage.width=o.width,this.$loadingBgImage.height=o.height,e._opt.loadingBackground&&(this.$loadingBgImage.src=e._opt.loadingBackground),this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.transform=f,this.$loadingBgImage.style.left=d+"px",this.$loadingBgImage.style.top=h+"px"}_initLoadingBackgroundForVideo(){const e=this.player,t=e._opt,i=e.getShowVideoRect(),s=i.width,r=i.height;let o=i.width,a=i.height;const n=t.rotate;270!==n&&90!==n||(o=r,a=s),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,e._opt.loadingBackground&&(this.$loadingBgImage.src=e._opt.loadingBackground);let l=(s-o)/2,d=(r-a)/2,h="contain";t.isResize||(h="fill"),t.isFullResize&&(h="none");let c="";"none"===t.mirrorRotate&&n&&(c+=" rotate("+n+"deg)"),"level"===t.mirrorRotate?c+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(c+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=h),this.$loadingBgImage.style.transform=c,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px"}_validateExtendBtn(e){let t=!0;if(e.name||(this.player.debugWarn("Control","extend button name is required"),t=!1),t){-1!==this.extendBtnList.findIndex((t=>t.name===e.name))&&(this.player.debugWarn("Control",`extend button name: ${e.name} is already exist`),t=!1)}return t&&(e.icon||(this.player.debugWarn("Control","extend button icon is required"),t=!1)),t}addExtendBtn(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=ba(Ps);if(e=Object.assign({},t,e),!this._validateExtendBtn(e))return;const i=e.name||"",s=this.$controlsRight,r=e.createdMoment||Ir,o=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(s.children)[e.index];n?n.insertAdjacentHTML("beforebegin",a):gc(s,a);const l=s.querySelector(`.jb-pro-controls-item-wrap-${i}`),d=e.icon?s.querySelector(`.jb-pro-icon-extend-${i}`):null,h=e.icon?s.querySelector(`.jb-pro-control-extend-${i}`):null,c=e.activeIcon?s.querySelector(`.jb-pro-icon-extend-${i}-active`):null,u=e.activeIcon?s.querySelector(`.jb-pro-control-extend-${i}-active`):null,{events:{proxy:p},debug:f}=this.player;e.icon&&(yc(d,"background",`url(${e.icon}) no-repeat center`),yc(d,"background-size","100% 100%"),yc(h,"display",r===Rr?"flex":"none"),e.iconHover&&(p(d,"mouseover",(()=>{yc(d,"background",`url(${e.iconHover}) no-repeat center`),yc(d,"background-size","100% 100%")})),p(d,"mouseout",(()=>{yc(d,"background",`url(${e.icon}) no-repeat center`),yc(d,"background-size","100% 100%")})))),e.activeIcon&&(yc(c,"background",`url(${e.activeIcon}) no-repeat center`),yc(c,"background-size","100% 100%"),yc(u,"display","none"),e.activeIconHover&&(p(c,"mouseover",(()=>{yc(c,"background",`url(${e.activeIconHover}) no-repeat center`),yc(c,"background-size","100% 100%")})),p(c,"mouseout",(()=>{yc(c,"background",`url(${e.activeIcon}) no-repeat center`),yc(c,"background-size","100% 100%")})))),e.click&&d&&p(d,"click",(t=>{t.preventDefault(),o&&(yc(h,"display","none"),yc(u,"display","flex")),this.player.isInMulti()?e.click.call(this.player,t,this.player._opt.multiIndex):e.click.call(this.player,t)})),e.activeClick&&c&&p(c,"click",(t=>{t.preventDefault(),yc(h,"display","flex"),yc(u,"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,createdMoment:r,$iconContainer:l,$iconWrap:h,$activeIconWrap:u})}toggleExtendBtn(e,t){const i=this.extendBtnList.find((t=>t.name===e));i&&i.$activeIconWrap&&i.$iconWrap&&(jo(t)||(t="none"===mo(i.$activeIconWrap,"display",!1)),t?(yc(i.$iconWrap,"display","none"),yc(i.$activeIconWrap,"display","flex")):(yc(i.$iconWrap,"display","flex"),yc(i.$activeIconWrap,"display","none")))}getExtendBtnActive(e){const t=this.extendBtnList.find((t=>t.name===e));let i=!1;return t&&t.$activeIconWrap&&(i="none"!==mo(t.$activeIconWrap,"display",!1)),i}addExtendDom(e){if(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(".jb-pro-extend-dom"),configurable:!0}),e.showBeforePlay&&yc(this.$extendDom,"display","block")}}toggleExtendDom(e){this.$extendDom&&(jo(e)||(e="none"===mo(this.$extendDom,"display",!1)),yc(this.$extendDom,"display",e?"block":"none"))}updateExtendDom(e){this.$extendDom&&(this.$extendDom.innerHTML=e)}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,s=this.$tipsMessageContent;if(i){const r=`\n
    ${e}
    \n ${t?`
    Error Type:${t}
    `:""}\n `;s.innerHTML=r,yc(i,"display","block")}}hideTipsMessage(){const e=this.$tipsMessage,t=this.$tipsMessageContent;e&&(t.innerHTML="",yc(e,"display","none"))}updatePtzPosition(e){const t=this.$ptzControl;if(ea(e)&&t){let i="auto";e.left&&(i=Number(e.left)===e.left?e.left+"px":e.left),yc(t,"left",i);let s="auto";e.top&&(s=Number(e.top)===e.top?e.top+"px":e.top),yc(t,"top",s);let r="auto";e.bottom&&(r=Number(e.bottom)===e.bottom?e.bottom+"px":e.bottom),yc(t,"bottom",r);let o="auto";e.right&&(o=Number(e.right)===e.right?e.right+"px":e.right),yc(t,"right",o)}}showPlayBtn(){yc(this.$playBig,"display","block")}toggleBar(e){this.$controls&&(jo(e)||(e="none"===mo(this.$controls,"display",!1)),yc(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==mo(this.$controls,"display",!1)),e}toggleControlHtml(e){this.$controlHtml&&(jo(e)||(e="none"===mo(this.$controlHtml,"display",!1)),yc(this.$controlHtml,"display",e?"block":"none"))}getControlHtmlIsShow(){let e=!1;return this.$controlHtml&&(e="none"!==mo(this.$controlHtml,"display",!1)),e}getExtendDomIsShow(){let e=!1;return this.$extendDom&&(e="none"!==mo(this.$extendDom,"display",!1)),e}getExtendDom(){return this.$extendDom?this.$extendDom:null}getControlHtml(){return this.$controlHtml?this.$controlHtml:null}updateControlSize(){if(this.$controls){const e=this.player._opt.controlSize,t="jb-pro-controls-small";e===Z?wa(mc(this.$controls,t))&&pc(this.$controls,t):e===X&&mc(this.$controls,t)&&fc(this.$controls,t)}}}_c(".jb-pro-container{position:relative;width:100%;height:100%;overflow:hidden}.jb-pro-container.jb-pro-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}.jb-pro-container .jb-pro-loading-bg-for-ios{position:absolute;z-index:100;left:0;top:0;right:0;bottom:0;height:100%;width:100%;opacity:0;visibility:hidden;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jb-pro-container .jb-pro-loading-bg-for-ios.show{opacity:1;visibility:visible}");var Ec=e=>{const{_opt:t,events:{proxy:i}}=e;if(t.supportDblclickFullscreen&&i(e.$container,"dblclick",(t=>{const i=ra(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),i(document,"visibilitychange",(()=>{e.visibility="visible"===document.visibilityState,e.debugLog("visibilitychange",document.visibilityState),t.hiddenAutoPause&&(e.debugLog("visibilitychange","hiddenAutoPause is true ",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),_o()&&i(document,["click","contextmenu"],(t=>{Ac(t,e.$container)?(Ea(e._opt.disableContextmenu)&&"contextmenu"===t.type&&t.preventDefault(),e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit(gt.focus)):(e.isInput=!1,e.isFocus=!1,e.emit(gt.blur))})),t.isCheckInView){const t=Ro((()=>{e.emit(gt.inView,function(e){const t=e.getBoundingClientRect(),i=window.innerHeight||document.documentElement.clientHeight,s=window.innerWidth||document.documentElement.clientWidth,r=t.top<=i&&t.top+t.height>=0,o=t.left<=s&&t.left+t.width>=0;return r&&o}(e.$container))}),200);i(window,"scroll",(()=>t()))}if(t.orientationChangeResize){const t=Ro((()=>{e.emit(gt.resize)}),500);i(window,"orientationchange",(()=>{t()})),screen&&screen.orientation&&screen.orientation.onchange&&i(screen.orientation,"change",(()=>{t()}))}};class wc{static init(){wc.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 wc.types)wc.types.hasOwnProperty(e)&&(wc.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=wc.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,s=Array.prototype.slice.call(arguments,1),r=s.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 o=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 wc.box(wc.types.trak,wc.tkhd(e),wc.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return wc.box(wc.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,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return wc.box(wc.types.mdia,wc.mdhd(e),wc.hdlr(e),wc.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return wc.box(wc.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?wc.constants.HDLR_AUDIO:wc.constants.HDLR_VIDEO,wc.box(wc.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?wc.box(wc.types.smhd,wc.constants.SMHD):wc.box(wc.types.vmhd,wc.constants.VMHD),wc.box(wc.types.minf,t,wc.dinf(),wc.stbl(e))}static dinf(){return wc.box(wc.types.dinf,wc.box(wc.types.dref,wc.constants.DREF))}static stbl(e){return wc.box(wc.types.stbl,wc.stsd(e),wc.box(wc.types.stts,wc.constants.STTS),wc.box(wc.types.stsc,wc.constants.STSC),wc.box(wc.types.stsz,wc.constants.STSZ),wc.box(wc.types.stco,wc.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?wc.box(wc.types.stsd,wc.constants.STSD_PREFIX,wc.mp3(e)):wc.box(wc.types.stsd,wc.constants.STSD_PREFIX,wc.mp4a(e)):"avc"===e.videoType?wc.box(wc.types.stsd,wc.constants.STSD_PREFIX,wc.avc1(e)):wc.box(wc.types.stsd,wc.constants.STSD_PREFIX,wc.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,s=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 wc.box(wc.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,s=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 wc.box(wc.types.mp4a,s,wc.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=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 wc.box(wc.types.esds,s)}static avc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 wc.box(wc.types.avc1,r,wc.box(wc.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 wc.box(wc.types.hvc1,r,wc.box(wc.types.hvcC,t))}static mvex(e){return wc.box(wc.types.mvex,wc.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 wc.box(wc.types.trex,i)}static moof(e,t){return wc.box(wc.types.moof,wc.mfhd(e.sequenceNumber),wc.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 wc.box(wc.types.mfhd,t)}static traf(e,t){let i=e.id,s=wc.box(wc.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=wc.box(wc.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=wc.sdtp(e),a=wc.trun(e,o.byteLength+16+16+8+16+8+8);return wc.box(wc.types.traf,s,r,a,o)}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,wc.box(wc.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 s=e.duration,r=e.size,o=e.flags,a=e.cts;return i.set([s>>>24&255,s>>>16&255,s>>>8&255,255&s,r>>>24&255,r>>>16&255,r>>>8&255,255&r,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),wc.box(wc.types.trun,i)}static mdat(e){return wc.box(wc.types.mdat,e)}}wc.init();class Tc extends Ma{constructor(e){super(),this.TAG_NAME="MediaSource",this.player=e,this._resetInIt(),this._useManagedMediaSource="ManagedMediaSource"in Br&&!("MediaSource"in Br),this.mediaSource=this._useManagedMediaSource?new Br.ManagedMediaSource:new Br.MediaSource,this.isDecodeFirstIIframe=!!wa(e._opt.checkFirstIFrame),this.mediaSourceObjectURL=null,this._useManagedMediaSource||(this.mediaSourceObjectURL=Br.URL.createObjectURL(this.mediaSource)),this.isSupportVideoFrameCallback=xa(),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.hasPendingEos=!1,this.player.isPlayback()&&this.player.on(gt.playbackPause,(t=>{wa(t)?(e._opt.isPlaybackPauseClearCache&&(Ea(e._opt.checkFirstIFrame)&&(this.player.debugLog(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._useManagedMediaSource?this.player.debugLog(this.TAG_NAME,"init and using ManagedMediaSource"):this.player.debugLog(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.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,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.mediaSource=null,this.off(),this.player.debugLog(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.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===Li}get isStateClosed(){return this.state===Ci}get isStateEnded(){return this.state===ki}get duration(){return this.mediaSource&&this.mediaSource.duration||-1}set duration(e){this.mediaSource.duration=e}_bindMediaSourceEvents(){const{events:{proxy:e}}=this.player,t=e(this.mediaSource,ts,(()=>{this.player.debugLog(this.TAG_NAME,"sourceOpen"),this._onMediaSourceSourceOpen(),this.player.emit(gt.mseSourceOpen)})),i=e(this.mediaSource,es,(()=>{this.player.debugLog(this.TAG_NAME,"sourceClose"),this.player.emit(gt.mseSourceClose)})),s=e(this.mediaSource,is,(()=>{this.player.debugLog(this.TAG_NAME,"sourceended"),this.player.emit(gt.mseSourceended)}));this.eventListenList.push(t,i,s);const r=e(this.$videoElement,ls,(e=>{if(wa(this.isSupportVideoFrameCallback))if(this.player.checkIsInRender())this.player.handleRender();else{const t=parseInt(e.timeStamp,10);this.player.debugLog(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}`)}}));if(this.eventListenList.push(r),this._useManagedMediaSource){const t=e(this.mediaSource,ss,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource startstreaming"),this.player.emit(gt.mseSourceStartStreaming)})),i=e(this.mediaSource,rs,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource endstreaming"),this.player.emit(gt.mseSourceEndStreaming)})),s=e(this.mediaSource,os,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource qualitychange")}));this.eventListenList.push(t,i,s)}}_onMediaSourceSourceOpen(){this.sourceBuffer||(this.player.debugLog("MediaSource","onMediaSourceSourceOpen() sourceBuffer is null and next init"),this._initSourceBuffer()),this.audioSourceBuffer||(this.player.debugLog("MediaSource","onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),this._initAudioSourceBuffer()),this._hasPendingSegments()&&this._doAppendSegments()}initVideoEvents(){const{proxy:e}=this.player.events;this.player.on(gt.visibilityChange,(e=>{e&&setTimeout((()=>{if(this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getMseBufferMaxDelayTime()&&(this.player.debugLog(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)}));const t=e(this.$videoElement,as,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.emit(gt.removeLoadingBgImage),xa()?this.supportVideoFrameCallbackHandle||(this.player.debugLog(this.TAG_NAME,"video canplay and requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.isUseHls265()&&(this.player.debugLog(this.TAG_NAME,"video canplay and use canvas render and fps is 25"),this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40)),this.player.debugLog(this.TAG_NAME,"video play")})).catch((e=>{this.player.debugError(this.TAG_NAME,"video play error ",e),this.player.emitError(bt.mediaSourceUseCanvasRenderPlayFailed,`code is ${e.code} and message is ${e.message}`)}))})),i=e(this.$videoElement,ns,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,hs,(()=>{this.player.debugLog(this.TAG_NAME,"video loadedmetadata")})),r=e(this.$videoElement,ls,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),o=e(this.$videoElement,ds,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&this.player.debugWarn(this.TAG_NAME,"ratechange and video is paused")}));this.eventListenList.push(t,i,r,o,s)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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,s){const r=this.player;if(r)if(this.player.isDestroyedOrClosed())this.player.debugWarn(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===Ct){i=zn(e.slice(5))}else t===Dt&&(i=el(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debugWarn(this.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(bt.mseWidthOrHeightChange,`width ${s.width}->${i.codecWidth}, height ${s.height}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(Sa(e))return void this.player.debugLog(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debugWarn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let r=t;if(this.player.isPlayer()){if(null===this.firstRenderTime&&(this.firstRenderTime=t,this.player.debugLog(this.TAG_NAME,`firstRenderTime is ${this.firstRenderTime}`)),r=t-this.firstRenderTime,r<0&&(this.player.debugWarn(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}`),r=null===this.prevDts?0:this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t)))return this.player.debugWarn(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(bt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`);if(null!==this.prevDts&&r<=this.prevDts){if(this.player.debugWarn(this.TAG_NAME,`\n decodeVideo dts is less than(or equal) prev dts ,\n dts is ${r} 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}`),r===this.prevDts&&this.prevPayloadBufferSize===e.byteLength)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo dts is equal to prev dts and payload size is equal to prev payload size so drop this frame");if(r=this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t))return this.player.debugWarn(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(bt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`)}}this.player.isPlayer()?this._decodeVideo(e,r,i,s,t):this.player.isPlayback()&&(wa(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this._decodeVideo(e,r,i,s,t)):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this._decodeVideo(e,r,i,s,t)),this.prevDts=r,this.prevPayloadBufferSize=e.byteLength,this.prevTs=t}else this.player.debugLog(this.TAG_NAME,"decodeVideo first frame is not iFrame");else if(i&&e[1]===Ls){const s=15&e[0];if(r.video.updateVideoInfo({encTypeCode:s}),s===Dt&&wa(Bo()))return void this.player.emitError(bt.mediaSourceH265NotSupport);r._times.decodeStart||(r._times.decodeStart=uo()),this.hasInit=this._decodeConfigurationRecord(e,t,i,s)}else this.player.debugWarn(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.debugWarn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(wa(this.hasAudioInit))this.hasAudioInit=this._decodeAudioConfigurationRecord(e,t);else{let i=t;if(Vr(e))return void this.player.debugLog(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.player.isPlayer()){if(null===this.firstAudioTime&&(this.firstAudioTime=t,this.player.debugLog(this.TAG_NAME,`firstAudioTime is ${this.firstAudioTime}`)),i=t-this.firstAudioTime,i<0&&(this.player.debugWarn(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.debugWarn(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(bt.mediaSourceTsIsMaxDiff,`decodeAudio is max diff, prevTs is ${this.prevAudioDts} and ts is ${t}`);null!==this.prevAudioTs&&i<=this.prevAudioDts&&(this.player.debugWarn(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()&&(wa(this.player.playbackPause)||this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()))&&this._decodeAudio(e,i,t),this.prevAudioTs=t,this.prevAudioDts=i}else this.player.debugLog(this.TAG_NAME,"decodeAudio first frame is not iFrame")}}_checkTsIsMaxDiff(e){return this.prevTs>0&&eee}_checkAudioTsIsMaxDiff(e){return this.prevAudioTs>0&&eee}_decodeConfigurationRecord(e,t,i,s){let r=e.slice(5),o={};if(s===Ct?o=zn(r):s===Dt&&(o=tl(r)),Zo(o)||0===o.codecWidth&&0===o.codecHeight){this.player.debugWarn(this.TAG_NAME,"_decodeConfigurationRecord",o);let e="";return e=Zo(o)?"config is empty object":`config is not empty object and codecWidth is ${o.codecWidth} and codecHeight is ${o.codecHeight}`,this.player.emitError(bt.mediaSourceDecoderConfigurationError,e),!1}this.isInitInfo||(this.player.debugLog(this.TAG_NAME,`updateVideoInfo: ${o.codecWidth},${o.codecHeight}`),this.player.video.updateVideoInfo({width:o.codecWidth,height:o.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,s);const a={id:hr,type:"video",timescale:1e3,duration:0,avcc:r,codecWidth:o.codecWidth,codecHeight:o.codecHeight,videoType:o.videoType},n=wc.generateInitSegment(a);this.isAvc=s===Ct;let l=o.codec;return this.videoMimeType=l?`video/mp4; codecs="${o.codec}"`:this.isAvc?vi:_i,this._initSourceBuffer(),this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack={},!0}_decodeAudioConfigurationRecord(e,t){const i=e[0]>>4,s=e[0]>>1&1,r=i===Bt,o=i===Pt;let a="";if(a=o?s?16:8:0===s?8:16,wa(o||r))return this.player.debugWarn(this.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),this.player.emit(bt.mediaSourceAudioG711NotSupport),!1;const n={id:cr,type:"audio",timescale:1e3};let l={};if(Vr(e)){if(l=Kr(e.slice(2)),!l)return!1;n.audioSampleRate=l.sampleRate,n.channelCount=l.channelCount,n.config=l.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale}else{if(!r)return!1;if(l=tc(e),!l)return!1;n.audioSampleRate=l.samplingRate,n.channelCount=l.channelCount,n.refSampleDuration=1152/n.audioSampleRate*n.timescale}n.codec=l.codec,n.duration=0;let d="mp4",h=l.codec,c=null;r&&wa(Eo())?(d="mpeg",h="",c=new Uint8Array):c=wc.generateInitSegment(n);let u=`${n.type}/${d}`;return h&&h.length>0&&(u+=`;codecs=${h}`),wa(this.isAudioInitInfo)&&(this.player.audio.updateAudioInfo({encTypeCode:i,channels:n.channelCount,sampleRate:n.audioSampleRate,depth:a}),this.isAudioInitInfo=!0),this.audioMimeType=u,this.isAAC=o,this._initAudioSourceBuffer(),this.appendAudioBuffer(c.buffer),!0}_initSourceBuffer(){const{events:{proxy:e}}=this.player;if(null===this.sourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.videoMimeType){try{this.sourceBuffer=this.mediaSource.addSourceBuffer(this.videoMimeType),this.player.debugLog(this.TAG_NAME,"_initSourceBuffer() this.mediaSource.addSourceBuffer()",this.videoMimeType)}catch(e){return this.player.debugError(this.TAG_NAME,"appendBuffer() this.mediaSource.addSourceBuffer()",e.code,e),this.player.emitError(bt.mseAddSourceBufferError,`code is ${e.code} and message is ${e.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.sourceBuffer){const t=e(this.sourceBuffer,"error",(e=>{this.mediaSourceBufferError=!0,this.player.debugError(this.TAG_NAME,"mseSourceBufferError this.sourceBuffer",e),this.player.emitError(bt.mseSourceBufferError,e.toString())})),i=e(this.sourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debugLog(this.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(t,i)}}else this.player.debugLog(this.TAG_NAME,`_initSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.isAvc === null is ${null===this.isAvc}`)}_initAudioSourceBuffer(){const{events:{proxy:e}}=this.player;if(null===this.audioSourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.audioMimeType){try{this.audioSourceBuffer=this.mediaSource.addSourceBuffer(this.audioMimeType),this._clearAudioSourceBufferCheckTimeout(),this.player.debugLog(this.TAG_NAME,"_initAudioSourceBuffer() this.mediaSource.addSourceBuffer()",this.audioMimeType)}catch(e){return this.player.debugError(this.TAG_NAME,"appendAudioBuffer() this.mediaSource.addSourceBuffer()",e.code,e),this.player.emitError(bt.mseAddSourceBufferError,`code is ${e.code} and message is ${e.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.audioSourceBuffer){const t=e(this.audioSourceBuffer,"error",(e=>{this.mediaSourceBufferError=!0,this.player.debugError(this.TAG_NAME,"mseSourceBufferError this.audioSourceBuffer",e),this.player.emitError(bt.mseSourceBufferError,e.toString())})),i=e(this.audioSourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debugLog(this.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(t,i),null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(bt.mediaSourceAudioNoDataTimeout)}),1e3))}}else this.player.debugLog(this.TAG_NAME,`_initAudioSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.audioMimeType is ${this.audioMimeType}`)}_decodeVideo(e,t,i,s,r){const o=this.player;let a=e.slice(5),n=a.byteLength;if(0===n)return void o.debugWarn(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>1e3&&!d&&this.player.isPlayer()&&o.debugLog(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(wc.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts,this.cacheTrack.duration>1e3&&this.player.debugWarn(this.TAG_NAME,`cacheTrack duration is ${this.cacheTrack.duration} ms`);let s=wc.moof(this.cacheTrack,this.cacheTrack.dts);this.cacheTrack={};let a=new Uint8Array(s.byteLength+i.byteLength);a.set(s,0),a.set(i,s.byteLength),this.appendBuffer(a.buffer),o.emit(gt.timeUpdate,r),o.isPlayer()?o.isUseHls265()?o.updateStats({dfps:!0,mseTs:t}):o.updateStats({fps:!0,dfps:!0,ts:r,mseTs:t}):o.isPlayback()&&o.playback.updateStats({ts:r}),o._times.videoStart||(o._times.videoStart=uo(),o.handlePlayToRenderTimes())}else o.debugLog(this.TAG_NAME,`cacheTrack = {} now dts is ${t}, and ts is ${r} cacheTrack dts is ${this.cacheTrack&&this.cacheTrack.dts}`),this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=hr,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=n,this.cacheTrack.dts=t,this.cacheTrack.cts=s,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=a,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},o._opt.mseUseCanvasRender&&wa(this.isSupportVideoFrameCallback)&&wa(o.isUseHls265())&&o.video.render({$video:c,ts:t}),this.prevTimestamp=(new Date).getTime()}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_decodeAudio(e,t,i){const s=this.player;let r=this.isAAC?e.slice(2):e.slice(1),o=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(wc.types.mdat,4),i.set(this.cacheAudioTrack.data,8),this.cacheAudioTrack.duration=t-this.cacheAudioTrack.dts,this.cacheAudioTrack.duration>1e3&&this.player.debugWarn(this.TAG_NAME,`cacheTrack duration is ${this.cacheTrack.duration} ms`);let s=wc.moof(this.cacheAudioTrack,this.cacheAudioTrack.dts);this.cacheAudioTrack={};let r=new Uint8Array(s.byteLength+i.byteLength);r.set(s,0),r.set(i,s.byteLength),this.appendAudioBuffer(r.buffer)}else s.debugLog(this.TAG_NAME,`cacheAudioTrack = {} now dts is ${t} cacheAudioTrack dts is ${this.cacheAudioTrack&&this.cacheAudioTrack.dts}`),this.cacheAudioTrack={};this.cacheAudioTrack||(this.cacheAudioTrack={}),this.cacheAudioTrack.id=cr,this.cacheAudioTrack.sequenceNumber=++this.audioSequenceNumber,this.cacheAudioTrack.size=o,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){this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"appendBuffer() player is destroyed"):(this.player,this.mediaSourceAddSourceBufferError?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?this.player.debugWarn(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._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),wa(this.getSourceBufferUpdating())&&this.isStateOpen&&wa(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(bt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(bt.mseSourceBufferError,"mediaSource is end"))))}appendAudioBuffer(e){this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() player is destroyed"):(this.player,this.mediaSourceAddSourceBufferError?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?this.player.debugWarn(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._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),wa(this.getAudioSourceBufferUpdating())&&this.isStateOpen&&wa(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(bt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(bt.mseSourceBufferError,"mediaSource is end"))))}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}getAudioSourceBufferUpdating(){return this.audioSourceBuffer&&this.audioSourceBuffer.updating}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}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.debugWarn(this.TAG_NAME,`checkMSESourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debugWarn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}checkSourceBufferEndLessThanCurrentTime(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.buffered.end(e.buffered.length-1)-e.currentTime),t}getDecodeDiffTimes(){return this.decodeDiffTimestamp}removeBuffer(e,t){const i=oa();if(this.player.debugLog(this.TAG_NAME,`removeBuffer() start is ${e} and end is ${t} and _isMacOsFirefox is ${i}`),this.isStateOpen&&wa(i)){if(wa(this.getSourceBufferUpdating()))try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debugWarn(this.TAG_NAME,"removeBuffer() sourceBuffer error",e)}if(wa(this.getAudioSourceBufferUpdating()))try{this.audioSourceBuffer.remove(e,t)}catch(e){this.player.debugWarn(this.TAG_NAME,"removeBuffer() audioSourceBuffer error",e)}}}clearUpAllSourceBuffer(){if(this.sourceBuffer){const e=this.sourceBuffer.buffered;for(let t=0;t=1)if(this.getSourceBufferUpdating()||this.getAudioSourceBufferUpdating())this.hasPendingEos=!0;else{this.hasPendingEos=!1;try{this.player.debugLog(this.TAG_NAME,"endOfStream()"),this.mediaSource.endOfStream()}catch(e){this.player.debugWarn(this.TAG_NAME,"endOfStream() error",e)}}}abortSourceBuffer(){if(this.isStateOpen){if(this.sourceBuffer){try{this.player.debugLog(this.TAG_NAME,"abortSourceBuffer() abort sourceBuffer"),this.sourceBuffer.abort()}catch(e){}wa(this.getSourceBufferUpdating())&&this._doRemoveRanges()}if(this.audioSourceBuffer){try{this.player.debugLog(this.TAG_NAME,"abortSourceBuffer() abort audioSourceBuffer"),this.audioSourceBuffer.abort()}catch(e){}wa(this.getAudioSourceBufferUpdating())&&this._doRemoveRanges()}}this.sourceBuffer=null,this.audioSourceBuffer=null}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource){if(this.sourceBuffer)try{this.player.debugLog(this.TAG_NAME,"removeSourceBuffer() sourceBuffer"),this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debugError(this.TAG_NAME,"removeSourceBuffer() sourceBuffer error",e)}if(this.audioSourceBuffer)try{this.player.debugLog(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer"),this.mediaSource.removeSourceBuffer(this.audioSourceBuffer)}catch(e){this.player.debugError(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;this.player._opt.videoBuffer,this.player._opt.videoBufferDelay;const t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getMseBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),0===this.$videoElement.readyState)return;if(r>o)this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debugWarn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(bt.mediaSourceBufferedIsZeroError,"video.buffered is empty");const a=this._getPlaybackRate(i-s);e.playbackRate!==a&&(this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${a} `),e.playbackRate=a)}_handleUpdateBufferDelayTime(){const e=this.getVideoBufferDelayTime();this.player.updateStats({mseVideoBufferDelayTime:e})}_checkVideoPlayCurrentTime(){const e=this.checkSourceBufferStore();if(e<0){const t=this.getVideoBufferStartTime();this.player.debugWarn(this.TAG_NAME,`checkVideoPlayCurrentTime store is ${e} < 0 and set currentTime ${this.$videoElement.currentTime} to ${t}`),this.$videoElement.currentTime=t}}updateVideoCurrentTimeByBufferStart(){if(!this.$videoElement)return;const e=this.$videoElement.currentTime,t=this.getVideoBufferRangeList();if(1===t.length){const i=t[0].end,s=Math.abs(i-e);if(s<1)return void this.player.debugLog(this.TAG_NAME,`updateVideoCurrentTimeByBufferStart current time is ${e} and buffer end is ${i} and diff is ${s} and return`)}let i=null;for(let s=0;s{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(bt.mediaSourceAudioInitTimeout)}),1e3)));if(wa(this.getSourceBufferUpdating())&&this.pendingSegments.length>0){const e=this.pendingSegments.shift();try{this.sourceBuffer.appendBuffer(e)}catch(e){this.player.debugError(this.TAG_NAME,"this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(bt.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(bt.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(gt.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}if(wa(this.getAudioSourceBufferUpdating())&&this.pendingAudioSegments.length>0){const e=this.pendingAudioSegments.shift();try{this.audioSourceBuffer.appendBuffer(e)}catch(e){this.player.debugError(this.TAG_NAME,"this.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(bt.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(bt.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(gt.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}}else this.player.debugLog(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 s=0;s=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingRemoveRanges.push({start:r,end:t})}}else o=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingAudioRemoveRanges.push({start:r,end:t})}}else o0||this.pendingAudioRemoveRanges.length>0}_doRemoveRanges(){if(this.sourceBuffer&&wa(this.getSourceBufferUpdating())){let e=this.pendingRemoveRanges;for(;e.length&&wa(this.getSourceBufferUpdating());){let t=e.shift();try{this.sourceBuffer.remove(t.start,t.end)}catch(e){this.player.debugWarn(this.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(this.audioSourceBuffer&&wa(this.getAudioSourceBufferUpdating())){let e=this.pendingAudioRemoveRanges;for(;e.length&&wa(this.getAudioSourceBufferUpdating());){let t=e.shift();try{this.audioSourceBuffer.remove(t.start,t.end)}catch(e){this.player.debugWarn(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 s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?1:t.playbackRate}_needCleanupSourceBuffer(){if(wa(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}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getVideoBufferStartTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;t=i.length?i.start(0):0}return t}getVideoBufferEndTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;t=i.length?i.end(i.length-1):0}return t}getVideoBufferRangeList(){const e=this.$videoElement;let t=[];if(e){const i=e.buffered;for(let e=0;e0?t:0}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}getMimeType(){return{video:this.videoMimeType,audio:this.audioMimeType}}getMseBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}isVideoPlaying(){return this.$videoElement&&wa(this.$videoElement.paused)&&wa(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}isCurrentTimeInBufferEnd(){let e=!1;if(this.$videoElement){const t=this.$videoElement.currentTime,i=this.getVideoBufferEndTime(),s=Math.abs(i-t);e=s<1,e&&this.player.debugLog(this.TAG_NAME,`isCurrentTimeInBufferEnd and currentTime is ${t} and end is ${i} and diff is ${s}`)}return e}}const kc=()=>"wakeLock"in navigator&&-1===window.navigator.userAgent.indexOf("Samsung")&&wa(To());class Lc{constructor(e){this.player=e,this.enabled=!1,kc()?(this.player.debugLog("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.debugLog("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.debugWarn("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 s=document.createElement("source");s.src=i,s.type=`video/${t}`,e.appendChild(s)}get isEnabled(){return this.enabled}enable(){if(kc())return navigator.wakeLock.request("screen").then((e=>{this._wakeLock=e,this.enabled=!0,this.player.debugLog("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{this.player.debugLog("wakeLock","Wake Lock released.")}))})).catch((e=>{throw this.enabled=!1,this.player.debugWarn("wakeLock",`${e.name}, ${e.message}`),e}));return this.noSleepVideo.play().then((e=>(this.player.debugLog("wakeLock","noSleepVideo Wake Lock active."),this.enabled=!0,e))).catch((e=>{throw this.player.debugWarn("wakeLock",`noSleepVideo ${e.name}, ${e.message}`),this.enabled=!1,e}))}disable(){kc()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):this.noSleepVideo&&this.noSleepVideo.pause(),this.enabled=!1,this.player.debugLog("wakeLock","Disabling wake lock.")}}function Cc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Dc={exports:{}};!function(e,t){var i,s,r,o,a;i=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,s=/^(?=([^\/?#]*))\1([^]*)$/,r=/(?:\/|^)\.(?=\/)/g,o=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,a={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var r=a.parseURL(e);if(!r)throw new Error("Error trying to parse base URL.");return r.path=a.normalizePath(r.path),a.buildURLFromParts(r)}var o=a.parseURL(t);if(!o)throw new Error("Error trying to parse relative URL.");if(o.scheme)return i.alwaysNormalize?(o.path=a.normalizePath(o.path),a.buildURLFromParts(o)):t;var n=a.parseURL(e);if(!n)throw new Error("Error trying to parse base URL.");if(!n.netLoc&&n.path&&"/"!==n.path[0]){var l=s.exec(n.path);n.netLoc=l[1],n.path=l[2]}n.netLoc&&!n.path&&(n.path="/");var d={scheme:n.scheme,netLoc:o.netLoc,path:null,params:o.params,query:o.query,fragment:o.fragment};if(!o.netLoc&&(d.netLoc=n.netLoc,"/"!==o.path[0]))if(o.path){var h=n.path,c=h.substring(0,h.lastIndexOf("/")+1)+o.path;d.path=a.normalizePath(c)}else d.path=n.path,o.params||(d.params=n.params,o.query||(d.query=n.query));return null===d.path&&(d.path=i.alwaysNormalize?a.normalizePath(o.path):o.path),a.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(r,"");e.length!==(e=e.replace(o,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=a}(Dc);var xc=Dc.exports;function Rc(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function Pc(e){for(var t=1;t`):zc}(t)}))}const Hc=Vc,Jc=/^(\d+)x(\d+)$/,qc=/(.+?)=(".*?"|.*?)(?:,|$)/g;class Kc{constructor(e){"string"==typeof e&&(e=Kc.parseAttrList(e)),Mc(this,e)}get clientAttrs(){return Object.keys(this).filter((e=>"X-"===e.substring(0,2)))}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;const i=new Uint8Array(t.length/2);for(let e=0;eNumber.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){const i=this[e];return i?parseFloat(i):t}enumeratedString(e){return this[e]}bool(e){return"YES"===this[e]}decimalResolution(e){const t=Jc.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t;const i={};for(qc.lastIndex=0;null!==(t=qc.exec(e));){let e=t[2];0===e.indexOf('"')&&e.lastIndexOf('"')===e.length-1&&(e=e.slice(1,-1));i[t[1].trim()]=e}return i}}function Yc(e){return"SCTE35-OUT"===e||"SCTE35-IN"===e}class Qc{constructor(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){const i=t.attr;for(const t in i)if(Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==i[t]){Hc.warn(`DATERANGE tag attribute: "${t}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=t;break}e=Mc(new Kc({}),i,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){const e=new Date(this.attr["END-DATE"]);Fc(e.getTime())&&(this._endDate=e)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;const e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}get duration(){if("DURATION"in this.attr){const e=this.attr.decimalFloatingPoint("DURATION");if(Fc(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isValid(){return!!this.id&&!this._badValueForSameId&&Fc(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class Xc{constructor(){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}}}var Zc="audio",eu="video",tu="audiovideo";class iu{constructor(e){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[Zc]:null,[eu]:null,[tu]:null},this.baseurl=e}setByteRange(e,t){const i=e.split("@",2);let s;s=1===i.length?(null==t?void 0:t.byteRangeEndOffset)||0:parseInt(i[1]),this._byteRange=[s,parseInt(i[0])+s]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=xc.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(e){this._url=e}}class su extends iu{constructor(e,t){super(t),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new Xc,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=e}get decryptdata(){const{levelkeys:e}=this;if(!e&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{const e=Object.keys(this.levelkeys);if(1===e.length)return this._decryptdata=this.levelkeys[e[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!Fc(this.programDateTime))return null;const e=Fc(this.duration)?this.duration:0;return this.programDateTime+1e3*e}get encrypted(){var e;if(null!=(e=this._decryptdata)&&e.encrypted)return!0;if(this.levelkeys){const e=Object.keys(this.levelkeys),t=e.length;if(t>1||1===t&&this.levelkeys[e[0]].encrypted)return!0}return!1}setKeyFormat(e){if(this.levelkeys){const t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}}abortRequests(){var e,t;null==(e=this.loader)||e.abort(),null==(t=this.keyLoader)||t.abort()}setElementaryStreamInfo(e,t,i,s,r,o=!1){const{elementaryStreams:a}=this,n=a[e];n?(n.startPTS=Math.min(n.startPTS,t),n.endPTS=Math.max(n.endPTS,i),n.startDTS=Math.min(n.startDTS,s),n.endDTS=Math.max(n.endDTS,r)):a[e]={startPTS:t,endPTS:i,startDTS:s,endDTS:r,partial:o}}clearElementaryStreamInfo(){const{elementaryStreams:e}=this;e[Zc]=null,e[eu]=null,e[tu]=null}}class ru extends iu{constructor(e,t,i,s,r){super(i),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.stats=new Xc,this.duration=e.decimalFloatingPoint("DURATION"),this.gap=e.bool("GAP"),this.independent=e.bool("INDEPENDENT"),this.relurl=e.enumeratedString("URI"),this.fragment=t,this.index=s;const o=e.enumeratedString("BYTERANGE");o&&this.setByteRange(o,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}}class ou{constructor(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}reloaded(e){if(!e)return this.advanced=!0,void(this.updated=!0);const 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}get hasProgramDateTime(){return!!this.fragments.length&&Fc(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const e=this.driftEndTime-this.driftStartTime;if(e>0){return 1e3*(this.driftEnd-this.driftStart)/e}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var e;return null!=(e=this.fragments)&&e.length?this.fragments[this.fragments.length-1].end:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function au(e){return Uint8Array.from(atob(e),(e=>e.charCodeAt(0)))}function nu(e){const t=e.split(":");let i=null;if("data"===t[0]&&2===t.length){const e=t[1].split(";"),s=e[e.length-1].split(",");if(2===s.length){const t="base64"===s[0],r=s[1];t?(e.splice(-1,1),i=au(r)):i=function(e){const t=lu(e).subarray(0,16),i=new Uint8Array(16);return i.set(t,16-t.length),i}(r)}}return i}function lu(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(e=>e.charCodeAt(0)))}const du="undefined"!=typeof self?self:void 0;var hu={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},cu="org.w3.clearkey",uu="com.apple.streamingkeydelivery",pu="com.microsoft.playready",fu="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function mu(e){switch(e){case uu:return hu.FAIRPLAY;case pu:return hu.PLAYREADY;case fu:return hu.WIDEVINE;case cu:return hu.CLEARKEY}}var gu="edef8ba979d64acea3c827dcd51d21ed";function yu(e){switch(e){case hu.FAIRPLAY:return uu;case hu.PLAYREADY:return pu;case hu.WIDEVINE:return fu;case hu.CLEARKEY:return cu}}function Au(e){const{drmSystems:t,widevineLicenseUrl:i}=e,s=t?[hu.FAIRPLAY,hu.WIDEVINE,hu.PLAYREADY,hu.CLEARKEY].filter((e=>!!t[e])):[];return!s[hu.WIDEVINE]&&i&&s.push(hu.WIDEVINE),s}const bu=null!=du&&null!=(vu=du.navigator)&&vu.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var vu;function _u(e,t,i){return Uint8Array.prototype.slice?e.slice(t,i):new Uint8Array(Array.prototype.slice.call(e,t,i))}const Su=(e,t)=>t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,Eu=(e,t)=>t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,wu=(e,t)=>{const i=t;let s=0;for(;Su(e,t);){s+=10;s+=Tu(e,t+6),Eu(e,t+10)&&(s+=10),t+=s}if(s>0)return e.subarray(i,i+s)},Tu=(e,t)=>{let i=0;return i=(127&e[t])<<21,i|=(127&e[t+1])<<14,i|=(127&e[t+2])<<7,i|=127&e[t+3],i},ku=(e,t)=>Su(e,t)&&Tu(e,t+6)+10<=e.length-t,Lu=e=>{const t=xu(e);for(let e=0;ee&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info,Du=e=>{const t=String.fromCharCode(e[0],e[1],e[2],e[3]),i=Tu(e,4);return{type:t,size:i,data:e.subarray(10,10+i)}},xu=e=>{let t=0;const i=[];for(;Su(e,t);){const s=Tu(e,t+6);t+=10;const r=t+s;for(;t+8"PRIV"===e.type?Pu(e):"W"===e.type[0]?Bu(e):Iu(e),Pu=e=>{if(e.size<2)return;const t=Fu(e.data,!0),i=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:i.buffer}},Iu=e=>{if(e.size<2)return;if("TXXX"===e.type){let t=1;const i=Fu(e.data.subarray(t),!0);t+=i.length+1;const s=Fu(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=Fu(e.data.subarray(1));return{key:e.type,data:t}},Bu=e=>{if("WXXX"===e.type){if(e.size<2)return;let t=1;const i=Fu(e.data.subarray(t),!0);t+=i.length+1;const s=Fu(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=Fu(e.data);return{key:e.type,data:t}},Mu=e=>{if(8===e.data.byteLength){const t=new Uint8Array(e.data),i=1&t[3];let s=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return s/=45,i&&(s+=47721858.84),Math.round(s)}},Fu=(e,t=!1)=>{const i=Ou();if(i){const s=i.decode(e);if(t){const e=s.indexOf("\0");return-1!==e?s.substring(0,e):s}return s.replace(/\0/g,"")}const s=e.length;let r,o,a,n="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(r);break;case 12:case 13:o=e[l++],n+=String.fromCharCode((31&r)<<6|63&o);break;case 14:o=e[l++],a=e[l++],n+=String.fromCharCode((15&r)<<12|(63&o)<<6|(63&a)<<0)}}return n};let Uu;function Ou(){if(!navigator.userAgent.includes("PlayStation 4"))return Uu||void 0===self.TextDecoder||(Uu=new self.TextDecoder("utf-8")),Uu}const Nu=function(e){let t="";for(let i=0;i>24,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i}function Ku(e,t){const i=[];if(!t.length)return i;const s=e.byteLength;for(let r=0;r1?r+o:s;if(Wu(e.subarray(r+4,r+8))===t[0])if(1===t.length)i.push(e.subarray(r+8,a));else{const s=Ku(e.subarray(r+8,a),t.slice(1));s.length&&Gu.apply(i,s)}r=a}return i}function Yu(e){const t=[],i=e[0];let s=8;const r=$u(e,s);s+=4;let o=0,a=0;0===i?(o=$u(e,s),a=$u(e,s+4),s+=8):(o=Hu(e,s),a=Hu(e,s+8),s+=16),s+=2;let n=e.length+a;const l=Vu(e,s);s+=2;for(let i=0;i>>31)return Hc.warn("SIDX has hierarchical references (not supported)"),null;const l=$u(e,i);i+=4,t.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/r,start:n,end:n+a-1}}),n+=a,i+=4,s=i}return{earliestPresentationTime:o,timescale:r,version:i,referencesCount:l,references:t}}function Qu(e){const t=[],i=Ku(e,["moov","trak"]);for(let e=0;e{const i=$u(e,4),s=t[i];s&&(s.default={duration:$u(e,12),flags:$u(e,20)})})),t}function Xu(e){const t=e.subarray(8),i=t.subarray(86),s=Wu(t.subarray(4,8));let r=s;const o="enca"===s||"encv"===s;if(o){const e=Ku(t,[s])[0];Ku(e.subarray("enca"===s?28:78),["sinf"]).forEach((e=>{const t=Ku(e,["schm"])[0];if(t){const i=Wu(t.subarray(4,8));if("cbcs"===i||"cenc"===i){const t=Ku(e,["frma"])[0];t&&(r=Wu(t))}}}))}switch(r){case"avc1":case"avc2":case"avc3":case"avc4":{const e=Ku(i,["avcC"])[0];r+="."+ep(e[1])+ep(e[2])+ep(e[3]);break}case"mp4a":{const e=Ku(t,[s])[0],i=Ku(e.subarray(28),["esds"])[0];if(i&&i.length>12){let e=4;if(3!==i[e++])break;e=Zu(i,e),e+=2;const t=i[e++];if(128&t&&(e+=2),64&t&&(e+=i[e++]),4!==i[e++])break;e=Zu(i,e);const s=i[e++];if(64!==s)break;if(r+="."+ep(s),e+=12,5!==i[e++])break;e=Zu(i,e);const o=i[e++];let a=(248&o)>>3;31===a&&(a+=1+((7&o)<<3)+((224&i[e])>>5)),r+="."+a}break}case"hvc1":case"hev1":{const e=Ku(i,["hvcC"])[0],t=e[1],s=["","A","B","C"][t>>6],o=31&t,a=$u(e,2),n=(32&t)>>5?"H":"L",l=e[12],d=e.subarray(6,12);r+="."+s+o,r+="."+a.toString(16).toUpperCase(),r+="."+n+l;let h="";for(let e=d.length;e--;){const t=d[e];if(t||h){h="."+t.toString(16).toUpperCase()+h}}r+=h;break}case"dvh1":case"dvhe":{const e=Ku(i,["dvcC"])[0],t=e[2]>>1&127,s=e[2]<<5&32|e[3]>>3&31;r+="."+tp(t)+"."+tp(s);break}case"vp09":{const e=Ku(i,["vpcC"])[0],t=e[4],s=e[5],o=e[6]>>4&15;r+="."+tp(t)+"."+tp(s)+"."+tp(o);break}case"av01":{const e=Ku(i,["av1C"])[0],t=e[1]>>>5,s=31&e[1],o=e[2]>>>7?"H":"M",a=(64&e[2])>>6,n=(32&e[2])>>5,l=2===t&&a?n?12:10:a?10:8,d=(16&e[2])>>4,h=(8&e[2])>>3,c=(4&e[2])>>2,u=3&e[2],p=1,f=1,m=1,g=0;r+="."+t+"."+tp(s)+o+"."+tp(l)+"."+d+"."+h+c+u+"."+tp(p)+"."+tp(f)+"."+tp(m)+"."+g;break}}return{codec:r,encrypted:o}}function Zu(e,t){const i=t+5;for(;128&e[t++]&&t{const l=n.byteOffset-8;Ku(n,["traf"]).map((n=>{const d=Ku(n,["tfdt"]).map((e=>{const t=e[0];let i=$u(e,4);return 1===t&&(i*=Math.pow(2,32),i+=$u(e,8)),i/r}))[0];return void 0!==d&&(e=d),Ku(n,["tfhd"]).map((d=>{const h=$u(d,4),c=16777215&$u(d,0);let u=0;const p=0!=(16&c);let f=0;const m=0!=(32&c);let g=8;h===o&&(0!=(1&c)&&(g+=8),0!=(2&c)&&(g+=4),0!=(8&c)&&(u=$u(d,g),g+=4),p&&(f=$u(d,g),g+=4),m&&(g+=4),"video"===t.type&&(a=function(e){if(!e)return!1;const t=e.indexOf("."),i=t<0?e:e.substring(0,t);return"hvc1"===i||"hev1"===i||"dvh1"===i||"dvhe"===i}(t.codec)),Ku(n,["trun"]).map((o=>{const n=o[0],d=16777215&$u(o,0),h=0!=(1&d);let c=0;const p=0!=(4&d),m=0!=(256&d);let g=0;const y=0!=(512&d);let A=0;const b=0!=(1024&d),v=0!=(2048&d);let _=0;const S=$u(o,4);let E=8;h&&(c=$u(o,E),E+=4),p&&(E+=4);let w=c+l;for(let l=0;l>1&63;return 39===e||40===e}return 6===(31&t)}function np(e,t,i,s){const r=lp(e);let o=0;o+=t;let a=0,n=0,l=0;for(;o=r.length)break;l=r[o++],a+=l}while(255===l);n=0;do{if(o>=r.length)break;l=r[o++],n+=l}while(255===l);const e=r.length-o;let t=o;if(ne){Hc.error(`Malformed SEI payload. ${n} is too small, only ${e} bytes left to parse.`);break}if(4===a){if(181===r[t++]){const e=Vu(r,t);if(t+=2,49===e){const e=$u(r,t);if(t+=4,1195456820===e){const e=r[t++];if(3===e){const o=r[t++],n=31&o,l=64&o,d=l?2+3*n:0,h=new Uint8Array(d);if(l){h[0]=o;for(let e=1;e16){const e=[];for(let i=0;i<16;i++){const s=r[t++].toString(16);e.push(1==s.length?"0"+s:s),3!==i&&5!==i&&7!==i&&9!==i||e.push("-")}const o=n-16,l=new Uint8Array(o);for(let e=0;e0?(o=new Uint8Array(4),t.length>0&&new DataView(o.buffer).setUint32(0,t.length,!1)):o=new Uint8Array;const a=new Uint8Array(4);return i&&i.byteLength>0&&new DataView(a.buffer).setUint32(0,i.byteLength,!1),function(e,...t){const i=t.length;let s=8,r=i;for(;r--;)s+=t[r].byteLength;const o=new Uint8Array(s);for(o[0]=s>>24&255,o[1]=s>>16&255,o[2]=s>>8&255,o[3]=255&s,o.set(e,4),r=0,s=8;r>8*(15-i)&255;return t}(e);return new cp(this.method,this.uri,"identity",this.keyFormatVersions,t)}const t=nu(this.uri);if(t)switch(this.keyFormat){case fu:this.pssh=t,t.length>=22&&(this.keyId=t.subarray(t.length-22,t.length-6));break;case pu:{const e=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=dp(e,null,t);const i=new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2),s=String.fromCharCode.apply(null,Array.from(i)),r=s.substring(s.indexOf("<"),s.length),o=(new DOMParser).parseFromString(r,"text/xml").getElementsByTagName("KID")[0];if(o){const e=o.childNodes[0]?o.childNodes[0].nodeValue:o.getAttribute("VALUE");if(e){const t=au(e).subarray(0,16);!function(e){const t=function(e,t,i){const s=e[t];e[t]=e[i],e[i]=s};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}(t),this.keyId=t}}break}default:{let e=t.subarray(0,16);if(16!==e.length){const t=new Uint8Array(16);t.set(e,16-e.length),e=t}this.keyId=e;break}}if(!this.keyId||16!==this.keyId.byteLength){let e=hp[this.uri];if(!e){const t=Object.keys(hp).length%Number.MAX_SAFE_INTEGER;e=new Uint8Array(16);new DataView(e.buffer,12,4).setUint32(0,t),hp[this.uri]=e}this.keyId=e}return this}}const up=/\{\$([a-zA-Z0-9-_]+)\}/g;function pp(e){return up.test(e)}function fp(e,t,i){if(null!==e.variableList||e.hasVariableRefs)for(let s=i.length;s--;){const r=i[s],o=t[r];o&&(t[r]=mp(e,o))}}function mp(e,t){if(null!==e.variableList||e.hasVariableRefs){const i=e.variableList;return t.replace(up,(t=>{const s=t.substring(2,t.length-1),r=null==i?void 0:i[s];return void 0===r?(e.playlistParsingError||(e.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${s}"`)),t):r}))}return t}function gp(e,t,i){let s,r,o=e.variableList;if(o||(e.variableList=o={}),"QUERYPARAM"in t){s=t.QUERYPARAM;try{const e=new self.URL(i).searchParams;if(!e.has(s))throw new Error(`"${s}" does not match any query parameter in URI: "${i}"`);r=e.get(s)}catch(t){e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${t.message}`))}}else s=t.NAME,r=t.VALUE;s in o?e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${s}"`)):o[s]=r||""}function yp(e,t,i){const s=t.IMPORT;if(i&&s in i){let t=e.variableList;t||(e.variableList=t={}),t[s]=i[s]}else e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${s}"`))}function Ap(e=!0){if("undefined"==typeof self)return;return(e||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const bp={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 vp(e,t,i=!0){return!e.split(",").some((e=>!_p(e,t,i)))}function _p(e,t,i=!0){var s;const r=Ap(i);return null!=(s=null==r?void 0:r.isTypeSupported(Sp(e,t)))&&s}function Sp(e,t){return`${t}/mp4;codecs="${e}"`}function Ep(e){if(e){const t=e.substring(0,4);return bp.video[t]}return 2}function wp(e){return e.split(",").reduce(((e,t)=>{const i=bp.video[t];return i?(2*i+e)/(e?3:2):(bp.audio[t]+e)/(e?2:1)}),0)}const Tp={};const kp=/flac|opus/i;function Lp(e,t=!0){return e.replace(kp,(e=>function(e,t=!0){if(Tp[e])return Tp[e];const i={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[e];for(let s=0;s0&&s.length({id:e.attrs.AUDIO,audioCodec:e.audioCodec}))),SUBTITLES:o.map((e=>({id:e.attrs.SUBTITLES,textCodec:e.textCodec}))),"CLOSED-CAPTIONS":[]};let n=0;for(xp.lastIndex=0;null!==(s=xp.exec(e));){const e=new Kc(s[1]),o=e.TYPE;if(o){const s=a[o],l=r[o]||[];r[o]=l,fp(i,e,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const d=e.LANGUAGE,h=e["ASSOC-LANGUAGE"],c=e.CHANNELS,u=e.CHARACTERISTICS,p=e["INSTREAM-ID"],f={attrs:e,bitrate:0,id:n++,groupId:e["GROUP-ID"]||"",name:e.NAME||d||"",type:o,default:e.bool("DEFAULT"),autoselect:e.bool("AUTOSELECT"),forced:e.bool("FORCED"),lang:d,url:e.URI?Bp.resolve(e.URI,t):""};if(h&&(f.assocLang=h),c&&(f.channels=c),u&&(f.characteristics=u),p&&(f.instreamId=p),null!=s&&s.length){const e=Bp.findGroup(s,f.groupId)||s[0];Op(f,e,"audioCodec"),Op(f,e,"textCodec")}l.push(f)}}return r}static parseLevelPlaylist(e,t,i,s,r,o){const a=new ou(t),n=a.fragments;let l,d,h,c=null,u=0,p=0,f=0,m=0,g=null,y=new su(s,t),A=-1,b=!1,v=null;for(Pp.lastIndex=0,a.m3u8=e,a.hasVariableRefs=pp(e);null!==(l=Pp.exec(e));){b&&(b=!1,y=new su(s,t),y.start=f,y.sn=u,y.cc=m,y.level=i,c&&(y.initSegment=c,y.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,v&&(y.setByteRange(v),v=null)));const e=l[1];if(e){y.duration=parseFloat(e);const t=(" "+l[2]).slice(1);y.title=t||null,y.tagList.push(t?["INF",e,t]:["INF",e])}else if(l[3]){if(Fc(y.duration)){y.start=f,h&&Gp(y,h,a),y.sn=u,y.level=i,y.cc=m,n.push(y);const e=(" "+l[3]).slice(1);y.relurl=mp(a,e),Np(y,g),g=y,f+=y.duration,u++,p=0,b=!0}}else if(l[4]){const e=(" "+l[4]).slice(1);g?y.setByteRange(e,g):y.setByteRange(e)}else if(l[5])y.rawProgramDateTime=(" "+l[5]).slice(1),y.tagList.push(["PROGRAM-DATE-TIME",y.rawProgramDateTime]),-1===A&&(A=n.length);else{if(l=l[0].match(Ip),!l){Hc.warn("No matches on slow regex match for level playlist!");continue}for(d=1;d0&&e.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=e.optionalFloat("PART-HOLD-BACK",0),a.holdBack=e.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const e=new Kc(r);a.partTarget=e.decimalFloatingPoint("PART-TARGET");break}case"PART":{let e=a.partList;e||(e=a.partList=[]);const i=p>0?e[e.length-1]:void 0,s=p++,o=new Kc(r);fp(a,o,["BYTERANGE","URI"]);const n=new ru(o,y,t,s,i);e.push(n),y.duration+=n.duration;break}case"PRELOAD-HINT":{const e=new Kc(r);fp(a,e,["URI"]),a.preloadHint=e;break}case"RENDITION-REPORT":{const e=new Kc(r);fp(a,e,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(e);break}default:Hc.warn(`line parsed but not handled: ${l}`)}}}g&&!g.relurl?(n.pop(),f-=g.duration,a.partList&&(a.fragmentHint=g)):a.partList&&(Np(y,g),y.cc=m,a.fragmentHint=y,h&&Gp(y,h,a));const _=n.length,S=n[0],E=n[_-1];if(f+=a.skippedSegments*a.targetduration,f>0&&_&&E){a.averagetargetduration=f/_;const e=E.sn;a.endSN="initSegment"!==e?e:0,a.live||(E.endList=!0),S&&(a.startCC=S.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(f+=a.fragmentHint.duration),a.totalduration=f,a.endCC=m,A>0&&function(e,t){let i=e[t];for(let s=t;s--;){const t=e[s];if(!t)return;t.programDateTime=i.programDateTime-1e3*t.duration,i=t}}(n,A),a}}function Mp(e,t,i){var s,r;const o=new Kc(e);fp(i,o,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(s=o.METHOD)?s:"",n=o.URI,l=o.hexadecimalInteger("IV"),d=o.KEYFORMATVERSIONS,h=null!=(r=o.KEYFORMAT)?r:"identity";n&&o.IV&&!l&&Hc.error(`Invalid IV: ${o.IV}`);const c=n?Bp.resolve(n,t):"",u=(d||"1").split("/").map(Number).filter(Number.isFinite);return new cp(a,c,h,u,l)}function Fp(e){const t=new Kc(e).decimalFloatingPoint("TIME-OFFSET");return Fc(t)?t:null}function Up(e,t){let i=(e||"").split(/[ ,]+/).filter((e=>e));["video","audio","text"].forEach((e=>{const s=i.filter((t=>function(e,t){const i=bp[t];return!!i&&!!i[e.slice(0,4)]}(t,e)));s.length&&(t[`${e}Codec`]=s.join(","),i=i.filter((e=>-1===s.indexOf(e))))})),t.unknownCodecs=i}function Op(e,t,i){const s=t[i];s&&(e[i]=s)}function Np(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),Fc(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function jp(e,t,i,s){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=i,e.sn="initSegment",s&&(e.levelkeys=s),e.initSegment=null}function Gp(e,t,i){e.levelkeys=t;const{encryptedFragments:s}=i;s.length&&s[s.length-1].levelkeys===t||!Object.keys(t).some((e=>t[e].isCommonEncryption))||s.push(e)}var zp="manifest",Wp="level",Vp="audioTrack",$p="subtitleTrack",Hp="main",Jp="audio",qp="subtitle";function Kp(e){const{type:t}=e;switch(t){case Vp:return Jp;case $p:return qp;default:return Hp}}function Yp(e,t){let i=e.url;return void 0!==i&&0!==i.indexOf("data:")||(i=t.url),i}class Qp{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:e}=this;e.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Nc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Nc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(Nc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:e}=this;e.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Nc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Nc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(Nc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(e){const t=this.hls.config,i=t.pLoader,s=t.loader,r=new(i||s)(t);return this.loaders[e.type]=r,r}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(const e in this.loaders){const t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){const{url:i}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:zp,url:i,deliveryDirectives:null})}onLevelLoading(e,t){const{id:i,level:s,pathwayId:r,url:o,deliveryDirectives:a}=t;this.load({id:i,level:s,pathwayId:r,responseType:"text",type:Wp,url:o,deliveryDirectives:a})}onAudioTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:Vp,url:r,deliveryDirectives:o})}onSubtitleTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:$p,url:r,deliveryDirectives:o})}load(e){var t;const i=this.hls.config;let s,r=this.getInternalLoader(e);if(r){const t=r.context;if(t&&t.url===e.url&&t.level===e.level)return void Hc.trace("[playlist-loader]: playlist request ongoing");Hc.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),r.abort()}if(s=e.type===zp?i.manifestLoadPolicy.default:Mc({},i.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),r=this.createInternalLoader(e),Fc(null==(t=e.deliveryDirectives)?void 0:t.part)){let t;if(e.type===Wp&&null!==e.level?t=this.hls.levels[e.level].details:e.type===Vp&&null!==e.id?t=this.hls.audioTracks[e.id].details:e.type===$p&&null!==e.id&&(t=this.hls.subtitleTracks[e.id].details),t){const e=t.partTarget,i=t.targetduration;if(e&&i){const t=1e3*Math.max(3*e,.8*i);s=Mc({},s,{maxTimeToFirstByteMs:Math.min(t,s.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(t,s.maxTimeToFirstByteMs)})}}}const o=s.errorRetry||s.timeoutRetry||{},a={loadPolicy:s,timeout:s.maxLoadTimeMs,maxRetry:o.maxNumRetry||0,retryDelay:o.retryDelayMs||0,maxRetryDelay:o.maxRetryDelayMs||0},n={onSuccess:(e,t,i,s)=>{const r=this.getInternalLoader(i);this.resetInternalLoader(i.type);const o=e.data;0===o.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),Bp.isMediaPlaylist(o)?this.handleTrackOrLevelPlaylist(e,t,i,s||null,r):this.handleMasterPlaylist(e,t,i,s)):this.handleManifestParsingError(e,i,new Error("no EXTM3U delimiter"),s||null,t)},onError:(e,t,i,s)=>{this.handleNetworkError(t,i,!1,e,s)},onTimeout:(e,t,i)=>{this.handleNetworkError(t,i,!0,void 0,e)}};r.load(e,a,n)}handleMasterPlaylist(e,t,i,s){const r=this.hls,o=e.data,a=Yp(e,i),n=Bp.parseMasterPlaylist(o,a);if(n.playlistParsingError)return void this.handleManifestParsingError(e,i,n.playlistParsingError,s,t);const{contentSteering:l,levels:d,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p}=n;this.variableList=p;const{AUDIO:f=[],SUBTITLES:m,"CLOSED-CAPTIONS":g}=Bp.parseMasterPlaylistMedia(o,a,n);if(f.length){f.some((e=>!e.url))||!d[0].audioCodec||d[0].attrs.AUDIO||(Hc.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),f.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new Kc({}),bitrate:0,url:""}))}r.trigger(Nc.MANIFEST_LOADED,{levels:d,audioTracks:f,subtitles:m,captions:g,contentSteering:l,url:a,stats:t,networkDetails:s,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p})}handleTrackOrLevelPlaylist(e,t,i,s,r){const o=this.hls,{id:a,level:n,type:l}=i,d=Yp(e,i),h=Fc(n)?n:Fc(a)?a:0,c=Kp(i),u=Bp.parseLevelPlaylist(e.data,d,h,c,0,this.variableList);if(l===zp){const e={attrs:new Kc({}),bitrate:0,details:u,name:"",url:d};o.trigger(Nc.MANIFEST_LOADED,{levels:[e],audioTracks:[],url:d,stats:t,networkDetails:s,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=u,this.handlePlaylistLoaded(u,e,t,i,s,r)}handleManifestParsingError(e,t,i,s,r){this.hls.trigger(Nc.ERROR,{type:jc.NETWORK_ERROR,details:Gc.MANIFEST_PARSING_ERROR,fatal:t.type===zp,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:s,stats:r})}handleNetworkError(e,t,i=!1,s,r){let o=`A network ${i?"timeout":"error"+(s?" (status "+s.code+")":"")} occurred while loading ${e.type}`;e.type===Wp?o+=`: ${e.level} id: ${e.id}`:e.type!==Vp&&e.type!==$p||(o+=` id: ${e.id} group-id: "${e.groupId}"`);const a=new Error(o);Hc.warn(`[playlist-loader]: ${o}`);let n=Gc.UNKNOWN,l=!1;const d=this.getInternalLoader(e);switch(e.type){case zp:n=i?Gc.MANIFEST_LOAD_TIMEOUT:Gc.MANIFEST_LOAD_ERROR,l=!0;break;case Wp:n=i?Gc.LEVEL_LOAD_TIMEOUT:Gc.LEVEL_LOAD_ERROR,l=!1;break;case Vp:n=i?Gc.AUDIO_TRACK_LOAD_TIMEOUT:Gc.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case $p:n=i?Gc.SUBTITLE_TRACK_LOAD_TIMEOUT:Gc.SUBTITLE_LOAD_ERROR,l=!1}d&&this.resetInternalLoader(e.type);const h={type:jc.NETWORK_ERROR,details:n,fatal:l,url:e.url,loader:d,context:e,error:a,networkDetails:t,stats:r};if(s){const i=(null==t?void 0:t.url)||e.url;h.response=Pc({url:i,data:void 0},s)}this.hls.trigger(Nc.ERROR,h)}handlePlaylistLoaded(e,t,i,s,r,o){const a=this.hls,{type:n,level:l,id:d,groupId:h,deliveryDirectives:c}=s,u=Yp(t,s),p=Kp(s),f="number"==typeof s.level&&p===Hp?l:void 0;if(!e.fragments.length){const e=new Error("No Segments found in Playlist");return void a.trigger(Nc.ERROR,{type:jc.NETWORK_ERROR,details:Gc.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:e,reason:e.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i})}e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));const m=e.playlistParsingError;if(m)a.trigger(Nc.ERROR,{type:jc.NETWORK_ERROR,details:Gc.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i});else switch(e.live&&o&&(o.getCacheAge&&(e.ageHeader=o.getCacheAge()||0),o.getCacheAge&&!isNaN(e.ageHeader)||(e.ageHeader=0)),n){case zp:case Wp:a.trigger(Nc.LEVEL_LOADED,{details:e,level:f||0,id:d||0,stats:i,networkDetails:r,deliveryDirectives:c});break;case Vp:a.trigger(Nc.AUDIO_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c});break;case $p:a.trigger(Nc.SUBTITLE_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c})}}}function Xp(e,t){let i;try{i=new Event("addtrack")}catch(e){i=document.createEvent("Event"),i.initEvent("addtrack",!1,!1)}i.track=e,t.dispatchEvent(i)}function Zp(e,t){const 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){Hc.debug(`[texttrack-utils]: ${i}`);try{const i=new self.TextTrackCue(t.startTime,t.endTime,t.text);i.id=t.id,e.addCue(i)}catch(e){Hc.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${e}`)}}"disabled"===i&&(e.mode=i)}function ef(e){const t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(let t=e.cues.length;t--;)e.removeCue(e.cues[t]);"disabled"===t&&(e.mode=t)}function tf(e,t,i,s){const r=e.mode;if("disabled"===r&&(e.mode="hidden"),e.cues&&e.cues.length>0){const r=function(e,t,i){const s=[],r=function(e,t){if(te[i].endTime)return-1;let s=0,r=i;for(;s<=r;){const o=Math.floor((r+s)/2);if(te[o].startTime&&s-1)for(let o=r,a=e.length;o=t&&r.endTime<=i)s.push(r);else if(r.startTime>i)return s}return s}(e.cues,t,i);for(let t=0;t{const e=nf();try{e&&new e(0,Number.POSITIVE_INFINITY,"")}catch(e){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function hf(e,t){return e.getTime()/1e3-t}class cf{constructor(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=e,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){const{hls:e}=this;e.on(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Nc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(Nc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Nc.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:e}=this;e.off(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Nc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(Nc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Nc.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(e,t){this.media=t.media}onMediaDetaching(){this.id3Track&&(ef(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){const t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;tdf&&(s=df);s-i<=0&&(s=i+.25);for(let e=0;ee.type===rf&&n:"video"===s?e=>e.type===af&&a:e=>e.type===rf&&n||e.type===af&&a,tf(r,t,i,e)}}onLevelUpdated(e,{details:t}){if(!this.media||!t.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:i,id3Track:s}=this,{dateRanges:r}=t,o=Object.keys(r);if(s){const e=Object.keys(i).filter((e=>!o.includes(e)));for(let t=e.length;t--;){const r=e[t];Object.keys(i[r].cues).forEach((e=>{s.removeCue(i[r].cues[e])})),delete i[r]}}const a=t.fragments[t.fragments.length-1];if(0===o.length||!Fc(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const n=a.programDateTime/1e3-a.start,l=nf();for(let e=0;e{if(t!==s.id){const i=r[t];if(i.class===s.class&&i.startDate>s.startDate&&(!e||s.startDatethis.timeupdate(),this.hls=e,this.config=e.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:e,levelDetails:t}=this;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){const{levelDetails:e}=this;if(null===e)return null;const{holdBack:t,partHoldBack:i,targetduration:s}=e,{liveSyncDuration:r,liveSyncDurationCount:o,lowLatencyMode:a}=this.config,n=this.hls.userConfig;let l=a&&i||t;(n.liveSyncDuration||n.liveSyncDurationCount||0===l)&&(l=void 0!==r?r:o*s);const d=s;return l+Math.min(1*this.stallCount,d)}get liveSyncPosition(){const e=this.estimateLiveEdge(),t=this.targetLatency,i=this.levelDetails;if(null===e||null===t||null===i)return null;const s=i.edge,r=e-t-this.edgeStalled,o=s-i.totalduration,a=s-(this.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(o,r),a)}get drift(){const{levelDetails:e}=this;return null===e?1:e.drift}get edgeStalled(){const{levelDetails:e}=this;if(null===e)return 0;const t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}get forwardBufferLength(){const{media:e,levelDetails:t}=this;if(!e||!t)return 0;const i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Nc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(Nc.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Nc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(Nc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(e,{details:t}){this.levelDetails=t,t.advanced&&this.timeupdate(),!t.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(e,t){var i;t.details===Gc.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(i=this.levelDetails)&&i.live&&Hc.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:e,levelDetails:t}=this;if(!e||!t)return;this.currentTime=e.currentTime;const i=this.computeLatency();if(null===i)return;this._latency=i;const{lowLatencyMode:s,maxLiveSyncPlaybackRate:r}=this.config;if(!s||1===r||!t.live)return;const o=this.targetLatency;if(null===o)return;const a=i-o;if(a.05&&this.forwardBufferLength>1){const t=Math.min(2,Math.max(1,r)),i=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;e.playbackRate=Math.min(t,Math.max(1,i))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}estimateLiveEdge(){const{levelDetails:e}=this;return null===e?null:e.edge+e.age}computeLatency(){const e=this.estimateLiveEdge();return null===e?null:e-this.currentTime}}const pf=["NONE","TYPE-0","TYPE-1",null];const ff=["SDR","PQ","HLG"];var mf="",gf="YES",yf="v2";function Af(e){const{canSkipUntil:t,canSkipDateRanges:i,age:s}=e;return t&&s!!e)).map((e=>e.substring(0,4))).join(","),this.addGroupId("audio",e.attrs.AUDIO),this.addGroupId("text",e.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(e){return _f(this._audioGroups,e)}hasSubtitleGroup(e){return _f(this._subtitleGroups,e)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(e,t){if(t)if("audio"===e){let e=this._audioGroups;e||(e=this._audioGroups=[]),-1===e.indexOf(t)&&e.push(t)}else if("text"===e){let e=this._subtitleGroups;e||(e=this._subtitleGroups=[]),-1===e.indexOf(t)&&e.push(t)}}get urlId(){return 0}set urlId(e){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var e;return null==(e=this.audioGroups)?void 0:e[0]}get textGroupId(){var e;return null==(e=this.subtitleGroups)?void 0:e[0]}addFallback(){}}function _f(e,t){return!(!t||!e)&&-1!==e.indexOf(t)}function Sf(e,t){const i=t.startPTS;if(Fc(i)){let s,r=0;t.sn>e.sn?(r=i-e.start,s=e):(r=e.start-i,s=t),s.duration!==r&&(s.duration=r)}else if(t.sn>e.sn){e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration}else t.start=Math.max(e.start-t.duration,0)}function Ef(e,t,i,s,r,o){s-i<=0&&(Hc.warn("Fragment should have a positive duration",t),s=i+t.duration,o=r+t.duration);let a=i,n=s;const l=t.startPTS,d=t.endPTS;if(Fc(l)){const e=Math.abs(l-i);Fc(t.deltaPTS)?t.deltaPTS=Math.max(e,t.deltaPTS):t.deltaPTS=e,a=Math.max(i,l),i=Math.min(i,l),r=Math.min(r,t.startDTS),n=Math.min(s,d),s=Math.max(s,d),o=Math.max(o,t.endDTS)}const h=i-t.start;0!==t.start&&(t.start=i),t.duration=s-t.start,t.startPTS=i,t.maxStartPTS=a,t.startDTS=r,t.endPTS=s,t.minEndPTS=n,t.endDTS=o;const c=t.sn;if(!e||ce.endSN)return 0;let u;const p=c-e.startSN,f=e.fragments;for(f[p]=t,u=p;u>0;u--)Sf(f[u],f[u-1]);for(u=p;u=0;e--){const t=s[e].initSegment;if(t){i=t;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;let r,o=0;if(function(e,t,i){const s=t.skippedSegments,r=Math.max(e.startSN,t.startSN)-t.startSN,o=(e.fragmentHint?1:0)+(s?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,a=t.startSN-e.startSN,n=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments;for(let e=r;e<=o;e++){const r=l[a+e];let o=n[e];s&&!o&&e{e.relurl&&(o=e.cc-s.cc),Fc(e.startPTS)&&Fc(e.endPTS)&&(s.start=s.startPTS=e.startPTS,s.startDTS=e.startDTS,s.maxStartPTS=e.maxStartPTS,s.endPTS=e.endPTS,s.endDTS=e.endDTS,s.minEndPTS=e.minEndPTS,s.duration=e.endPTS-e.startPTS,s.duration&&(r=s),t.PTSKnown=t.alignedSliding=!0),s.elementaryStreams=e.elementaryStreams,s.loader=e.loader,s.stats=e.stats,e.initSegment&&(s.initSegment=e.initSegment,i=e.initSegment)})),i){(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((e=>{var t;!e||e.initSegment&&e.initSegment.relurl!==(null==(t=i)?void 0:t.relurl)||(e.initSegment=i)}))}if(t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((e=>!e)),t.deltaUpdateFailed){Hc.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let e=t.skippedSegments;e--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=function(e,t,i){const s=Mc({},e);i&&i.forEach((e=>{delete s[e]}));return Object.keys(t).forEach((e=>{const i=new Qc(t[e].attr,s[e]);i.isValid?s[e]=i:Hc.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(t[e].attr)}"`)})),s}(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));const a=t.fragments;if(o){Hc.warn("discontinuity sliding from playlist, take drift into account");for(let e=0;e{t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),r?Ef(t,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):Tf(e,t),a.length&&(t.totalduration=t.edge-a[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;const n=t.advancedDateTime;if(t.advanced&&n){const e=t.edge;t.driftStart||(t.driftStartTime=n,t.driftStart=e),t.driftEndTime=n,t.driftEnd=e}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function Tf(e,t){const i=t.startSN+t.skippedSegments-e.startSN,s=e.fragments;i<0||i>=s.length||kf(t,s[i].start)}function kf(e,t){if(t){const i=e.fragments;for(let s=e.skippedSegments;s{const{details:i}=e;null!=i&&i.fragments&&i.fragments.forEach((e=>{e.level=t}))}))}function xf(e){switch(e.details){case Gc.FRAG_LOAD_TIMEOUT:case Gc.KEY_LOAD_TIMEOUT:case Gc.LEVEL_LOAD_TIMEOUT:case Gc.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function Rf(e,t){const i=xf(t);return e.default[(i?"timeout":"error")+"Retry"]}function Pf(e,t){const i="linear"===e.backoff?1:Math.pow(2,t);return Math.min(i*e.retryDelayMs,e.maxRetryDelayMs)}function If(e){return Pc(Pc({},e),{errorRetry:null,timeoutRetry:null})}function Bf(e,t,i,s){if(!e)return!1;const r=null==s?void 0:s.code,o=t499)}(r)||!!i);return e.shouldRetry?e.shouldRetry(e,t,i,s,o):o}const Mf=function(e,t){let i=0,s=e.length-1,r=null,o=null;for(;i<=s;){r=(i+s)/2|0,o=e[r];const a=t(o);if(a>0)i=r+1;else{if(!(a<0))return o;s=r-1}}return null};function Ff(e,t,i=0,s=0,r=.005){let o=null;if(e){o=t[e.sn-t[0].sn+1]||null;const s=e.endDTS-i;s>0&&s<15e-7&&(i+=15e-7)}else 0===i&&0===t[0].start&&(o=t[0]);if(o&&((!e||e.level===o.level)&&0===Uf(i,s,o)||function(e,t,i){if(t&&0===t.start&&t.level0){const s=t.tagList.reduce(((e,t)=>("INF"===t[0]&&(e+=parseFloat(t[1])),e)),i);return e.start<=s}return!1}(o,e,Math.min(r,s))))return o;const a=Mf(t,Uf.bind(null,i,s));return!a||a===e&&o?o:a}function Uf(e=0,t=0,i){if(i.start<=e&&i.start+i.duration>e)return 0;const s=Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return i.start+i.duration-s<=e?1:i.start-s>e&&i.start?-1:0}function Of(e,t,i){const s=1e3*Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return(i.endProgramDateTime||0)-s>e}var Nf=0,jf=2,Gf=3,zf=5,Wf=0,Vf=1,$f=2;class Hf{constructor(e,t){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=Hc.log.bind(Hc,`${t}:`),this.warn=Hc.warn.bind(Hc,`${t}:`),this.hls=e}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(e,t,i){const s=null==t?void 0:t.renditionReports;if(s){let r=-1;for(let i=0;i=0&&e>t.partTarget&&(a+=1)}const n=i&&Af(i);return new bf(o,a>=0?a:void 0,n)}}}loadPlaylist(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}shouldReloadPlaylist(e){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(e)}playlistLoaded(e,t,i){const{details:s,stats:r}=t,o=self.performance.now(),a=r.loading.first?Math.max(0,o-r.loading.first):0;if(s.advancedDateTime=Date.now()-a,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&&wf(i,s),!this.canLoad||!s.live)return;let a,n,l;if(s.canBlockReload&&s.endSN&&s.advanced){const e=this.hls.config.lowLatencyMode,r=s.lastPartSn,o=s.endSN,d=s.lastPartIndex,h=r===o,c=e?0:d;-1!==d?(n=h?o+1:r,l=h?c:d+1):n=o+1;const u=s.age,p=u+s.ageHeader;let f=Math.min(p-s.partTarget,1.5*s.targetduration);if(f>0){if(i&&f>i.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${i.tuneInGoal} to: ${f} with playlist age: ${s.age}`),f=0;else{const e=Math.floor(f/s.targetduration);if(n+=e,void 0!==l){l+=Math.round(f%s.targetduration/s.partTarget)}this.log(`CDN Tune-in age: ${s.ageHeader}s last advanced ${u.toFixed(2)}s goal: ${f} skip sn ${e} to part ${l}`)}s.tuneInGoal=f}if(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l),e||!h)return void this.loadPlaylist(a)}else(s.canBlockReload||s.canSkipUntil)&&(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l));const d=this.hls.mainForwardBufferInfo,h=d?d.end-d.len:0,c=function(e,t=1/0){let i=1e3*e.targetduration;if(e.updated){const s=e.fragments,r=4;if(s.length&&i*r>t){const e=1e3*s[s.length-1].duration;ethis.requestScheduled+c&&(this.requestScheduled=r.loading.start),void 0!==n&&s.canBlockReload?this.requestScheduled=r.loading.first+c-(1e3*s.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+cthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(e,t,i,s){let r=Af(e);return null!=t&&t.skip&&e.deltaUpdateFailed&&(i=t.msn,s=t.part,r=mf),new bf(i,s,r)}checkRetry(e){const t=e.details,i=xf(e),s=e.errorAction,{action:r,retryCount:o=0,retryConfig:a}=s||{},n=!!s&&!!a&&(r===zf||!s.resolved&&r===jf);if(n){var l;if(this.requestScheduled=-1,o>=a.maxNumRetry)return!1;if(i&&null!=(l=e.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{const e=Pf(a,o);this.timer=self.setTimeout((()=>this.loadPlaylist()),e),this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" in ${e}ms`)}e.levelRetry=!0,s.resolved=!0}return n}}class Jf{constructor(e,t=0,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}sample(e,t){const i=Math.pow(this.alpha_,e);this.estimate_=t*(1-i)+i*this.estimate_,this.totalWeight_+=e}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}}class qf{constructor(e,t,i,s=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 Jf(e),this.fast_=new Jf(t),this.defaultTTFB_=s,this.ttfb_=new Jf(e)}update(e,t){const{slow_:i,fast_:s,ttfb_:r}=this;i.halfLife!==e&&(this.slow_=new Jf(e,i.getEstimate(),i.getTotalWeight())),s.halfLife!==t&&(this.fast_=new Jf(t,s.getEstimate(),s.getTotalWeight())),r.halfLife!==e&&(this.ttfb_=new Jf(e,r.getEstimate(),r.getTotalWeight()))}sample(e,t){const i=(e=Math.max(e,this.minDelayMs_))/1e3,s=8*t/i;this.fast_.sample(i,s),this.slow_.sample(i,s)}sampleTTFB(e){const t=e/1e3,i=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(i,Math.max(e,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}destroy(){}}const Kf={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},Yf={};function Qf(e,t,i,s,r,o){const a=e.audioCodec?e.audioGroups:null,n=null==o?void 0:o.audioCodec,l=null==o?void 0:o.channels,d=l?parseInt(l):n?1/0:2;let h=null;if(null!=a&&a.length)try{h=1===a.length&&a[0]?t.groups[a[0]].channels:a.reduce(((e,i)=>{if(i){const s=t.groups[i];if(!s)throw new Error(`Audio track group ${i} not found`);Object.keys(s.channels).forEach((t=>{e[t]=(e[t]||0)+s.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(s,30)||"SDR"!==e.videoRange&&e.videoRange!==i||e.bitrate>Math.max(r,8e6))||!!h&&Fc(d)&&Object.keys(h).some((e=>parseInt(e)>d))}function Xf(e,t,i){const s=e.videoCodec,r=e.audioCodec;if(!s||!r||!i)return Promise.resolve(Kf);const o={width:e.width,height:e.height,bitrate:Math.ceil(Math.max(.9*e.bitrate,e.averageBitrate)),framerate:e.frameRate||30},a=e.videoRange;"SDR"!==a&&(o.transferFunction=a.toLowerCase());const n=s.split(",").map((e=>({type:"media-source",video:Pc(Pc({},o),{},{contentType:Sp(e,"video")})})));return r&&e.audioGroups&&e.audioGroups.forEach((e=>{var i;e&&(null==(i=t.groups[e])||i.tracks.forEach((t=>{if(t.groupId===e){const e=t.channels||"",i=parseFloat(e);Fc(i)&&i>2&&n.push.apply(n,r.split(",").map((e=>({type:"media-source",audio:{contentType:Sp(e,"audio"),channels:""+i}}))))}})))})),Promise.all(n.map((e=>{const t=function(e){const{audio:t,video:i}=e,s=i||t;if(s){const e=s.contentType.split('"')[1];if(i)return`r${i.height}x${i.width}f${Math.ceil(i.framerate)}${i.transferFunction||"sd"}_${e}_${Math.ceil(i.bitrate/1e5)}`;if(t)return`c${t.channels}${t.spatialRendering?"s":"n"}_${e}`}return""}(e);return Yf[t]||(Yf[t]=i.decodingInfo(e))}))).then((e=>({supported:!e.some((e=>!e.supported)),configurations:n,decodingInfoResults:e}))).catch((e=>({supported:!1,configurations:n,decodingInfoResults:[],error:e})))}function Zf(e,t){let i=!1,s=[];return e&&(i="SDR"!==e,s=[e]),t&&(s=t.allowedVideoRanges||ff.slice(0),i=void 0!==t.preferHDR?t.preferHDR:function(){if("function"==typeof matchMedia){const e=matchMedia("(dynamic-range: high)"),t=matchMedia("bad query");if(e.media!==t.media)return!0===e.matches}return!1}(),s=i?s.filter((e=>"SDR"!==e)):["SDR"]),{preferHDR:i,allowedVideoRanges:s}}function em(e,t){Hc.log(`[abr] start candidates with "${e}" ignored because ${t}`)}function tm(e,t,i){if("attrs"in e){const i=t.indexOf(e);if(-1!==i)return i}for(let s=0;s-1===s.indexOf(e)))}(n,t.characteristics))&&(void 0===i||i(e,t))}function sm(e,t){const{audioCodec:i,channels:s}=e;return!(void 0!==i&&(t.audioCodec||"").substring(0,4)!==i.substring(0,4)||void 0!==s&&s!==(t.channels||"2"))}function rm(e,t,i){for(let s=t;s;s--)if(i(e[s]))return s;for(let s=t+1;s{const o=this.fragments[s];if(!o)return;if(r>=o.body.sn)return;if(!o.buffered&&!o.loaded)return void(o.body.type===i&&this.removeFragment(o.body));const a=o.range[e];a&&a.time.some((e=>{const i=!this.isTimeBuffered(e.startPTS,e.endPTS,t);return i&&this.removeFragment(o.body),i}))}))}detectPartialFragments(e){const t=this.timeRanges,{frag:i,part:s}=e;if(!t||"initSegment"===i.sn)return;const r=cm(i),o=this.fragments[r];if(!o||o.buffered&&i.gap)return;const a=!i.relurl;if(Object.keys(t).forEach((e=>{const r=i.elementaryStreams[e];if(!r)return;const n=t[e],l=a||!0===r.partial;o.range[e]=this.getBufferedTimes(i,s,l,n)})),o.loaded=null,Object.keys(o.range).length){o.buffered=!0;(o.body.endList=i.endList||o.body.endList)&&(this.endListFragments[o.body.type]=o),hm(o)||this.removeParts(i.sn-1,i.type)}else this.removeFragment(o.body)}removeParts(e,t){const i=this.activePartLists[t];i&&(this.activePartLists[t]=i.filter((t=>t.fragment.sn>=e)))}fragBuffered(e,t){const i=cm(e);let s=this.fragments[i];!s&&t&&(s=this.fragments[i]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),s&&(s.loaded=null,s.buffered=!0)}getBufferedTimes(e,t,i,s){const r={time:[],partial:i},o=e.start,a=e.end,n=e.minEndPTS||a,l=e.maxStartPTS||o;for(let e=0;e=t&&n<=i){r.time.push({startPTS:Math.max(o,s.start(e)),endPTS:Math.min(a,s.end(e))});break}if(ot){const t=Math.max(o,s.start(e)),i=Math.min(a,s.end(e));i>t&&(r.partial=!0,r.time.push({startPTS:t,endPTS:i}))}else if(a<=t)break}return r}getPartialFragment(e){let t,i,s,r=null,o=0;const{bufferPadding:a,fragments:n}=this;return Object.keys(n).forEach((l=>{const d=n[l];d&&hm(d)&&(i=d.body.start-a,s=d.body.end+a,e>=i&&e<=s&&(t=Math.min(e-i,s-e),o<=t&&(r=d.body,o=t)))})),r}isEndListAppended(e){const t=this.endListFragments[e];return void 0!==t&&(t.buffered||hm(t))}getState(e){const t=cm(e),i=this.fragments[t];return i?i.buffered?hm(i)?nm:lm:am:om}isTimeBuffered(e,t,i){let s,r;for(let o=0;o=s&&t<=r)return!0;if(t<=s)return!1}return!1}onFragLoaded(e,t){const{frag:i,part:s}=t;if("initSegment"===i.sn||i.bitrateTest)return;const r=s?null:t,o=cm(i);this.fragments[o]={body:i,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){const{frag:i,part:s,timeRanges:r}=t;if("initSegment"===i.sn)return;const o=i.type;if(s){let e=this.activePartLists[o];e||(this.activePartLists[o]=e=[]),e.push(s)}this.timeRanges=r,Object.keys(r).forEach((e=>{const t=r[e];this.detectEvictedFragments(e,t,o,s)}))}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){const t=cm(e);return!!this.fragments[t]}hasParts(e){var t;return!(null==(t=this.activePartLists[e])||!t.length)}removeFragmentsInRange(e,t,i,s,r){s&&!this.hasGaps||Object.keys(this.fragments).forEach((o=>{const a=this.fragments[o];if(!a)return;const n=a.body;n.type!==i||s&&!n.gap||n.starte&&(a.buffered||r)&&this.removeFragment(n)}))}removeFragment(e){const t=cm(e);e.stats.loaded=0,e.clearElementaryStreamInfo();const i=this.activePartLists[e.type];if(i){const t=e.sn;this.activePartLists[e.type]=i.filter((e=>e.fragment.sn!==t))}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}}function hm(e){var t,i,s;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==(s=e.range.audiovideo)?void 0:s.partial))}function cm(e){return`${e.type}_${e.level}_${e.sn}`}const um={length:0,start:()=>0,end:()=>0};class pm{static isBuffered(e,t){try{if(e){const i=pm.getBuffered(e);for(let e=0;e=i.start(e)&&t<=i.end(e))return!0}}catch(e){}return!1}static bufferInfo(e,t,i){try{if(e){const s=pm.getBuffered(e),r=[];let o;for(o=0;oo&&(s[r-1].end=e[t].end):s.push(e[t])}else s.push(e[t])}else s=e;let r,o=0,a=t,n=t;for(let e=0;e=l&&ti.startCC||e&&e.cc{if(this.loader&&this.loader.destroy(),e.gap){if(e.tagList.some((e=>"GAP"===e[0])))return void n(Em(e));e.gap=!1}const l=this.loader=e.loader=r?new r(s):new o(s),d=Sm(e),h=If(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===e.sn?1/0:vm};e.stats=l.stats,l.load(d,c,{onSuccess:(t,i,s,r)=>{this.resetLoader(e,l);let o=t.data;s.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(o.slice(0,16)),o=o.slice(16)),a({frag:e,part:null,payload:o,networkDetails:r})},onError:(t,s,r,o)=>{this.resetLoader(e,l),n(new wm({type:jc.NETWORK_ERROR,details:Gc.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:Pc({url:i,data:void 0},t),error:new Error(`HTTP Error ${t.code} ${t.text}`),networkDetails:r,stats:o}))},onAbort:(t,i,s)=>{this.resetLoader(e,l),n(new wm({type:jc.NETWORK_ERROR,details:Gc.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:s,stats:t}))},onTimeout:(t,i,s)=>{this.resetLoader(e,l),n(new wm({type:jc.NETWORK_ERROR,details:Gc.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:s,stats:t}))},onProgress:(i,s,r,o)=>{t&&t({frag:e,part:null,payload:r,networkDetails:o})}})}))}loadPart(e,t,i){this.abort();const s=this.config,r=s.fLoader,o=s.loader;return new Promise(((a,n)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap)return void n(Em(e,t));const l=this.loader=e.loader=r?new r(s):new o(s),d=Sm(e,t),h=If(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:vm};t.stats=l.stats,l.load(d,c,{onSuccess:(s,r,o,n)=>{this.resetLoader(e,l),this.updateStatsFromPart(e,t);const d={frag:e,part:t,payload:s.data,networkDetails:n};i(d),a(d)},onError:(i,s,r,o)=>{this.resetLoader(e,l),n(new wm({type:jc.NETWORK_ERROR,details:Gc.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:Pc({url:d.url,data:void 0},i),error:new Error(`HTTP Error ${i.code} ${i.text}`),networkDetails:r,stats:o}))},onAbort:(i,s,r)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,l),n(new wm({type:jc.NETWORK_ERROR,details:Gc.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:r,stats:i}))},onTimeout:(i,s,r)=>{this.resetLoader(e,l),n(new wm({type:jc.NETWORK_ERROR,details:Gc.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:r,stats:i}))}})}))}updateStatsFromPart(e,t){const i=e.stats,s=t.stats,r=s.total;if(i.loaded+=s.loaded,r){const s=Math.round(e.duration/t.duration),o=Math.min(Math.round(i.loaded/r),s),a=(s-o)*Math.round(i.loaded/o);i.total=i.loaded+a}else i.total=Math.max(i.loaded,i.total);const o=i.loading,a=s.loading;o.start?o.first+=a.first-a.start:(o.start=a.start,o.first=a.first),o.end=a.end}resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()}}function Sm(e,t=null){const i=t||e,s={frag:e,part:t,responseType:"arraybuffer",url:i.url,headers:{},rangeStart:0,rangeEnd:0},r=i.byteRangeStartOffset,o=i.byteRangeEndOffset;if(Fc(r)&&Fc(o)){var a;let t=r,i=o;if("initSegment"===e.sn&&"AES-128"===(null==(a=e.decryptdata)?void 0:a.method)){const e=o-r;e%16&&(i=o+(16-e%16)),0!==r&&(s.resetIV=!0,t=r-16)}s.rangeStart=t,s.rangeEnd=i}return s}function Em(e,t){const i=new Error(`GAP ${e.gap?"tag":"attribute"} found`),s={type:jc.MEDIA_ERROR,details:Gc.FRAG_GAP,fatal:!1,frag:e,error:i,networkDetails:null};return t&&(s.part=t),(t||e).stats.aborted=!0,new wm(s)}class wm extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}}class Tm{constructor(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}decrypt(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)}}class km{constructor(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}class Lm{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(e){const t=new DataView(e),i=new Uint32Array(4);for(let e=0;e<4;e++)i[e]=t.getUint32(4*e);return i}initTable(){const e=this.sBox,t=this.invSBox,i=this.subMix,s=i[0],r=i[1],o=i[2],a=i[3],n=this.invSubMix,l=n[0],d=n[1],h=n[2],c=n[3],u=new Uint32Array(256);let p=0,f=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let i=f^f<<1^f<<2^f<<3^f<<4;i=i>>>8^255&i^99,e[p]=i,t[i]=p;const n=u[p],m=u[n],g=u[m];let y=257*u[i]^16843008*i;s[p]=y<<24|y>>>8,r[p]=y<<16|y>>>16,o[p]=y<<8|y>>>24,a[p]=y,y=16843009*g^65537*m^257*n^16843008*p,l[i]=y<<24|y>>>8,d[i]=y<<16|y>>>16,h[i]=y<<8|y>>>24,c[i]=y,p?(p=n^u[u[u[g^n]]],f^=u[u[f]]):p=f=1}}expandKey(e){const t=this.uint8ArrayToUint32Array_(e);let i=!0,s=0;for(;s{if(!this.subtle)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new Tm(this.subtle,new Uint8Array(i)).decrypt(e.buffer,t)})).catch((s=>(Hc.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${s.name}: ${s.message}`),this.onWebCryptoError(e,t,i))))}onWebCryptoError(e,t,i){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,i);const s=this.flush();if(s)return s.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(e){let t=e;const i=e.length-e.length%16;return i!==e.length&&(t=_u(e,0,i),this.remainderData=_u(e,i)),t}logOnce(e){this.logEnabled&&(Hc.log(`[decrypter]: ${e}`),this.logEnabled=!1)}}const Dm=function(e){let t="";const i=e.length;for(let s=0;s1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}{constructor(e,t,i,s,r){super(),this.hls=void 0,this.fragPrevious=null,this.fragCurrent=null,this.fragmentTracker=void 0,this.transmuxer=null,this._state=xm,this.playlistType=void 0,this.media=null,this.mediaBuffer=null,this.config=void 0,this.bitrateTest=!1,this.lastCurrentTime=0,this.nextLoadPosition=0,this.startPosition=0,this.startTimeOffset=null,this.loadedmetadata=!1,this.retryDate=0,this.levels=null,this.fragmentLoader=void 0,this.keyLoader=void 0,this.levelLastLoaded=null,this.startFragRequested=!1,this.decrypter=void 0,this.initPTS=[],this.onvseeking=null,this.onvended=null,this.logPrefix="",this.log=void 0,this.warn=void 0,this.playlistType=r,this.logPrefix=s,this.log=Hc.log.bind(Hc,`${s}:`),this.warn=Hc.warn.bind(Hc,`${s}:`),this.hls=e,this.fragmentLoader=new _m(e.config),this.keyLoader=i,this.fragmentTracker=t,this.config=e.config,this.decrypter=new Cm(e.config),e.on(Nc.MANIFEST_LOADED,this.onManifestLoaded,this)}doTick(){this.onTickEnd()}onTickEnd(){}startLoad(e){}stopLoad(){this.fragmentLoader.abort(),this.keyLoader.abort(this.playlistType);const e=this.fragCurrent;null!=e&&e.loader&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=xm}_streamEnded(e,t){if(t.live||e.nextStart||!e.end||!this.media)return!1;const i=t.partList;if(null!=i&&i.length){const e=i[i.length-1];return pm.isBuffered(this.media,e.start+e.duration/2)}const s=t.fragments[t.fragments.length-1].type;return this.fragmentTracker.isEndListAppended(s)}getLevelDetails(){var e;if(this.levels&&null!==this.levelLastLoaded)return null==(e=this.levelLastLoaded)?void 0:e.details}onMediaAttached(e,t){const i=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),i.addEventListener("seeking",this.onvseeking),i.addEventListener("ended",this.onvended);const s=this.config;this.levels&&s.autoStartLoad&&this.state===xm&&this.startLoad(s.startPosition)}onMediaDetaching(){const e=this.media;null!=e&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&this.onvseeking&&this.onvended&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.keyLoader&&this.keyLoader.detach(),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()}onMediaSeeking(){const{config:e,fragCurrent:t,media:i,mediaBuffer:s,state:r}=this,o=i?i.currentTime:0,a=pm.bufferInfo(s||i,o,e.maxBufferHole);if(this.log(`media seeking to ${Fc(o)?o.toFixed(3):o}, state: ${r}`),this.state===Om)this.resetLoadingState();else if(t){const i=e.maxFragLookUpTolerance,s=t.start-i,r=t.start+t.duration+i;if(!a.len||ra.end){const e=o>r;(o{if(this.fragContextChanged(e))return this.warn(`Fragment ${e.sn}${t.part?" p: "+t.part.index:""} of level ${e.level} was dropped during download.`),void this.fragmentTracker.removeFragment(e);e.stats.chunkCount++,this._handleFragmentLoadProgress(t)})).then((t=>{if(!t)return;const i=this.state;this.fragContextChanged(e)?(i===Im||!this.fragCurrent&&i===Fm)&&(this.fragmentTracker.removeFragment(e),this.state=Rm):("payload"in t&&(this.log(`Loaded fragment ${e.sn} of level ${e.level}`),this.hls.trigger(Nc.FRAG_LOADED,t)),this._handleFragmentLoadComplete(t))})).catch((t=>{this.state!==xm&&this.state!==Nm&&(this.warn(`Frag error: ${(null==t?void 0:t.message)||t}`),this.resetFragmentLoading(e))}))}clearTrackerIfNeeded(e){var t;const{fragmentTracker:i}=this;if(i.getState(e)===am){const t=e.type,s=this.getFwdBufferInfo(this.mediaBuffer,t),r=Math.max(e.duration,s?s.len:this.config.maxBufferLength),o=this.backtrackFragment;(1===(o?e.sn-o.sn:0)||this.reduceMaxBufferLength(r,e.duration))&&i.removeFragment(e)}else 0===(null==(t=this.mediaBuffer)?void 0:t.buffered.length)?i.removeAllFragments():i.hasParts(e.type)&&(i.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type}),i.getState(e)===nm&&i.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){const t=e.fragments[e.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type})}e.fragments[0]||(e.deltaUpdateFailed=!0)}flushMainBuffer(e,t,i=null){if(!(e-t))return;const s={startOffset:e,endOffset:t,type:i};this.hls.trigger(Nc.BUFFER_FLUSHING,s)}_loadInitSegment(e,t){this._doFragLoad(e,t).then((t=>{if(!t||this.fragContextChanged(e)||!this.levels)throw new Error("init load aborted");return t})).then((t=>{const{hls:i}=this,{payload:s}=t,r=e.decryptdata;if(s&&s.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const o=self.performance.now();return this.decrypter.decrypt(new Uint8Array(s),r.key.buffer,r.iv.buffer).catch((t=>{throw i.trigger(Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((s=>{const r=self.performance.now();return i.trigger(Nc.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:o,tdecrypt:r}}),t.payload=s,this.completeInitSegmentLoad(t)}))}return this.completeInitSegmentLoad(t)})).catch((t=>{this.state!==xm&&this.state!==Nm&&(this.warn(t),this.resetFragmentLoading(e))}))}completeInitSegmentLoad(e){const{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");const i=e.frag.stats;this.state=Rm,e.frag.data=new Uint8Array(e.payload),i.parsing.start=i.buffering.start=self.performance.now(),i.parsing.end=i.buffering.end=self.performance.now(),this.tick()}fragContextChanged(e){const{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){var i,s,r,o;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.playlistType===Hp?"level":"track"} ${e.level} (frag:[${(null!=(i=e.startPTS)?i:NaN).toFixed(3)}-${(null!=(s=e.endPTS)?s:NaN).toFixed(3)}] > buffer:${a?Dm(pm.getBuffered(a)):"(detached)"})`),"initSegment"!==e.sn){var n;if(e.type!==qp){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return void(this.state=Rm)}const t=null==(n=this.levels)?void 0:n[e.level];null!=t&&t.fragmentError&&(this.log(`Resetting level fragment error count of ${t.fragmentError} on frag buffered`),t.fragmentError=0)}this.state=Rm,a&&(!this.loadedmetadata&&e.type==Hp&&a.buffered.length&&(null==(r=this.fragCurrent)?void 0:r.sn)===(null==(o=this.fragPrevious)?void 0:o.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(e){const{transmuxer:t}=this;if(!t)return;const{frag:i,part:s,partsLoaded:r}=e,o=!r||0===r.length||r.some((e=>!e)),a=new fm(i.level,i.sn,i.stats.chunkCount+1,0,s?s.index:-1,!o);t.flush(a)}_handleFragmentLoadProgress(e){}_doFragLoad(e,t,i=null,s){var r;const o=null==t?void 0:t.details;if(!this.levels||!o)throw new Error(`frag load aborted, missing level${o?"":" detail"}s`);let a=null;if(!e.encrypted||null!=(r=e.decryptdata)&&r.key?!e.encrypted&&o.encryptedFragments.length&&this.keyLoader.loadClear(e,o.encryptedFragments):(this.log(`Loading key for ${e.sn} of [${o.startSN}-${o.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${e.level}`),this.state=Pm,this.fragCurrent=e,a=this.keyLoader.load(e).then((e=>{if(!this.fragContextChanged(e.frag))return this.hls.trigger(Nc.KEY_LOADED,e),this.state===Pm&&(this.state=Rm),e})),this.hls.trigger(Nc.KEY_LOADING,{frag:e}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),i=Math.max(e.start,i||0),this.config.lowLatencyMode&&"initSegment"!==e.sn){const r=o.partList;if(r&&s){i>e.end&&o.fragmentHint&&(e=o.fragmentHint);const n=this.getNextPart(r,e,i);if(n>-1){const l=r[n];let d;return this.log(`Loading part sn: ${e.sn} p: ${l.index} cc: ${e.cc} of playlist [${o.startSN}-${o.endSN}] parts [0-${n}-${r.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=Im,d=a?a.then((i=>!i||this.fragContextChanged(i.frag)?null:this.doFragPartsLoad(e,l,t,s))).catch((e=>this.handleFragLoadError(e))):this.doFragPartsLoad(e,l,t,s).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Nc.FRAG_LOADING,{frag:e,part:l,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):d}if(!e.url||this.loadedEndOfParts(r,i))return Promise.resolve(null)}}this.log(`Loading fragment ${e.sn} cc: ${e.cc} ${o?"of ["+o.startSN+"-"+o.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),Fc(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=Im;const n=this.config.progressive;let l;return l=n&&a?a.then((t=>!t||this.fragContextChanged(null==t?void 0:t.frag)?null:this.fragmentLoader.load(e,s))).catch((e=>this.handleFragLoadError(e))):Promise.all([this.fragmentLoader.load(e,n?s:void 0),a]).then((([e])=>(!n&&e&&s&&s(e),e))).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Nc.FRAG_LOADING,{frag:e,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(e,t,i,s){return new Promise(((r,o)=>{var a;const n=[],l=null==(a=i.details)?void 0:a.partList,d=t=>{this.fragmentLoader.loadPart(e,t,s).then((s=>{n[t.index]=s;const o=s.part;this.hls.trigger(Nc.FRAG_LOADED,s);const a=Lf(i,e.sn,t.index+1)||Cf(l,e.sn,t.index+1);if(!a)return r({frag:e,part:o,partsLoaded:n});d(a)})).catch(o)};d(t)}))}handleFragLoadError(e){if("data"in e){const t=e.data;e.data&&t.details===Gc.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(Nc.ERROR,t)}else this.hls.trigger(Nc.ERROR,{type:jc.OTHER_ERROR,details:Gc.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){const t=this.getCurrentContext(e);if(!t||this.state!==Fm)return void(this.fragCurrent||this.state===xm||this.state===Nm||(this.state=Rm));const{frag:i,part:s,level:r}=t,o=self.performance.now();i.stats.parsing.end=o,s&&(s.stats.parsing.end=o),this.updateLevelTiming(i,s,r,e.partial)}getCurrentContext(e){const{levels:t,fragCurrent:i}=this,{level:s,sn:r,part:o}=e;if(null==t||!t[s])return this.warn(`Levels object was unset while buffering fragment ${r} of level ${s}. The current chunk will not be buffered.`),null;const a=t[s],n=o>-1?Lf(a,r,o):null,l=n?n.fragment:function(e,t,i){if(null==e||!e.details)return null;const s=e.details;let r=s.fragments[t-s.startSN];return r||(r=s.fragmentHint,r&&r.sn===t?r:to&&this.flushMainBuffer(a,e.start)}getFwdBufferInfo(e,t){const i=this.getLoadPosition();return Fc(i)?this.getFwdBufferInfoAtPos(e,i,t):null}getFwdBufferInfoAtPos(e,t,i){const{config:{maxBufferHole:s}}=this,r=pm.bufferInfo(e,t,s);if(0===r.len&&void 0!==r.nextStart){const o=this.fragmentTracker.getBufferedFrag(t,i);if(o&&r.nextStart=s&&(i.maxMaxBufferLength=r,this.warn(`Reduce max buffer length to ${r}s`),!0)}getAppendedFrag(e,t=Hp){const i=this.fragmentTracker.getAppendedFrag(e,Hp);return i&&"fragment"in i?i.fragment:i}getNextFragment(e,t){const i=t.fragments,s=i.length;if(!s)return null;const{config:r}=this,o=i[0].start;let a;if(t.live){const n=r.initialLiveManifestSize;if(st}getNextFragmentLoopLoading(e,t,i,s,r){const o=e.gap,a=this.getNextFragment(this.nextLoadPosition,t);if(null===a)return a;if(e=a,o&&e&&!e.gap&&i.nextStart){const t=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,i.nextStart,s);if(null!==t&&i.len+t.len>=r)return this.log(`buffer full after gaps in "${s}" playlist starting at sn: ${e.sn}`),null}return e}mapToInitFragWhenRequired(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment}getNextPart(e,t,i){let s=-1,r=!1,o=!0;for(let a=0,n=e.length;a-1&&ii.start&&i.loaded}getInitialLiveFragment(e,t){const i=this.fragPrevious;let s=null;if(i){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${i.programDateTime}`),s=function(e,t,i){if(null===t||!Array.isArray(e)||!e.length||!Fc(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(let s=0;s=e.startSN&&r<=e.endSN){const o=t[r-e.startSN];i.cc===o.cc&&(s=o,this.log(`Live playlist, switching playlist, load frag with next SN: ${s.sn}`))}s||(s=function(e,t){return Mf(e,(e=>e.cct?-1:0))}(t,i.cc),s&&this.log(`Live playlist, switching playlist, load frag with same CC: ${s.sn}`))}}else{const t=this.hls.liveSyncPosition;null!==t&&(s=this.getFragmentAtPosition(t,this.bitrateTest?e.fragmentEnd:e.edge,e))}return s}getFragmentAtPosition(e,t,i){const{config:s}=this;let{fragPrevious:r}=this,{fragments:o,endSN:a}=i;const{fragmentHint:n}=i,{maxFragLookUpTolerance:l}=s,d=i.partList,h=!!(s.lowLatencyMode&&null!=d&&d.length&&n);let c;if(h&&n&&!this.bitrateTest&&(o=o.concat(n),a=n.sn),et-l?0:l)}else c=o[o.length-1];if(c){const e=c.sn-i.startSN,t=this.fragmentTracker.getState(c);if((t===lm||t===nm&&c.gap)&&(r=c),r&&c.sn===r.sn&&(!h||d[0].fragment.sn>c.sn)){if(r&&c.level===r.level){const t=o[e+1];c=c.sn=o-t.maxFragLookUpTolerance&&r<=a;if(null!==s&&i.duration>s&&(r${e.startSN} prev-sn: ${r?r.sn:"na"} fragments: ${s}`),o}return r}waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)}setStartPosition(e,t){let i=this.startPosition;if(i ${null==(s=this.fragCurrent)?void 0:s.url}`);const r=t.details===Gc.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(i,!0);const o=t.errorAction,{action:a,retryCount:n=0,retryConfig:l}=o||{};if(o&&a===zf&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const s=Pf(l,n);this.warn(`Fragment ${i.sn} of ${e} ${i.level} errored with ${t.details}, retrying loading ${n+1}/${l.maxNumRetry} in ${s}ms`),o.resolved=!0,this.retryDate=self.performance.now()+s,this.state=Bm}else if(l&&o){if(this.resetFragmentErrors(e),!(n.5;r&&this.reduceMaxBufferLength(s.len,(null==t?void 0:t.duration)||10);const o=!r;return o&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${i} buffer`),t&&(this.fragmentTracker.removeFragment(t),this.nextLoadPosition=t.start),this.resetLoadingState(),o}return!1}resetFragmentErrors(e){e===Jp&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==xm&&(this.state=Rm)}afterBufferFlushed(e,t,i){if(!e)return;const s=pm.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,s,i),this.state===Om&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=Rm}resetStartWhenNotLoaded(e){if(!this.loadedmetadata){this.startFragRequested=!1;const t=e?e.details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(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()}removeUnbufferedFrags(e=0){this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)}updateLevelTiming(e,t,i,s){var r;const o=i.details;if(!o)return void this.warn("level.details undefined");if(!Object.keys(e.elementaryStreams).reduce(((t,r)=>{const a=e.elementaryStreams[r];if(a){const n=a.endPTS-a.startPTS;if(n<=0)return this.warn(`Could not parse fragment ${e.sn} ${r} duration reliably (${n})`),t||!1;const l=s?0:Ef(o,e,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(Nc.LEVEL_PTS_UPDATED,{details:o,level:i,drift:l,type:r,frag:e,start:a.startPTS,end:a.endPTS}),!0}return t}),!1)&&null===(null==(r=this.transmuxer)?void 0:r.error)){const t=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(t.message),this.hls.trigger(Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.FRAG_PARSING_ERROR,fatal:!1,error:t,frag:e,reason:`Found no media in msn ${e.sn} of level "${i.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=Um,this.hls.trigger(Nc.FRAG_PARSED,{frag:e,part:t})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(e){"demuxerWorker"===e.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(e){const t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}}class Wm{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){const{chunks:e,dataLength:t}=this;let i;return e.length?(i=1===e.length?e[0]:function(e,t){const i=new Uint8Array(t);let s=0;for(let t=0;t0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:rf,duration:Number.POSITIVE_INFINITY});r{if(Fc(e))return 90*e;return 9e4*t+(i?9e4*i.baseTime/i.timescale:0)};function Jm(e,t){return 255===e[t]&&240==(246&e[t+1])}function qm(e,t){return 1&e[t+1]?7:9}function Km(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function Ym(e,t){return t+1=e.length)return!1;const s=Km(e,t);if(s<=i)return!1;const r=t+s;return r===e.length||Ym(e,r)}return!1}function Xm(e,t,i,s,r){if(!e.samplerate){const o=function(e,t,i,s){let r,o,a,n;const l=navigator.userAgent.toLowerCase(),d=s,h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r=1+((192&t[i+2])>>>6);const c=(60&t[i+2])>>>2;if(!(c>h.length-1))return a=(1&t[i+2])<<2,a|=(192&t[i+3])>>>6,Hc.log(`manifest codec:${s}, ADTS type:${r}, samplingIndex:${c}`),/firefox/i.test(l)?c>=6?(r=5,n=new Array(4),o=c-3):(r=2,n=new Array(2),o=c):-1!==l.indexOf("android")?(r=2,n=new Array(2),o=c):(r=5,n=new Array(4),s&&(-1!==s.indexOf("mp4a.40.29")||-1!==s.indexOf("mp4a.40.5"))||!s&&c>=6?o=c-3:((s&&-1!==s.indexOf("mp4a.40.2")&&(c>=6&&1===a||/vivaldi/i.test(l))||!s&&1===a)&&(r=2,n=new Array(2)),o=c)),n[0]=r<<3,n[0]|=(14&c)>>1,n[1]|=(1&c)<<7,n[1]|=a<<3,5===r&&(n[1]|=(14&o)>>1,n[2]=(1&o)<<7,n[2]|=8,n[3]=0),{config:n,samplerate:h[c],channelCount:a,codec:"mp4a.40."+r,manifestCodec:d};{const t=new Error(`invalid ADTS sampling index:${c}`);e.emit(Nc.ERROR,Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.FRAG_PARSING_ERROR,fatal:!0,error:t,reason:t.message})}}(t,i,s,r);if(!o)return;e.config=o.config,e.samplerate=o.samplerate,e.channelCount=o.channelCount,e.codec=o.codec,e.manifestCodec=o.manifestCodec,Hc.log(`parsed codec:${e.codec}, rate:${o.samplerate}, channels:${o.channelCount}`)}}function Zm(e){return 9216e4/e}function eg(e,t,i,s,r){const o=s+r*Zm(e.samplerate),a=function(e,t){const i=qm(e,t);if(t+i<=e.length){const s=Km(e,t)-i;if(s>0)return{headerLength:i,frameLength:s}}}(t,i);let n;if(a){const{frameLength:s,headerLength:r}=a,l=r+s,d=Math.max(0,i+l-t.length);d?(n=new Uint8Array(l-r),n.set(t.subarray(i+r,t.length),0)):n=t.subarray(i+r,i+l);const h={unit:n,pts:o};return d||e.samples.push(h),{sample:h,length:l,missing:d}}const l=t.length-i;n=new Uint8Array(l),n.set(t.subarray(i,t.length),0);return{sample:{unit:n,pts:o},length:l,missing:-1}}let tg=null;const ig=[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],sg=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],rg=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],og=[0,1,1,4];function ag(e,t,i,s,r){if(i+24>t.length)return;const o=ng(t,i);if(o&&i+o.frameLength<=t.length){const a=s+r*(9e4*o.samplesPerFrame/o.sampleRate),n={unit:t.subarray(i,i+o.frameLength),pts:a,dts:a};return e.config=[],e.channelCount=o.channelCount,e.samplerate=o.sampleRate,e.samples.push(n),{sample:n,length:o.frameLength,missing:0}}}function ng(e,t){const i=e[t+1]>>3&3,s=e[t+1]>>1&3,r=e[t+2]>>4&15,o=e[t+2]>>2&3;if(1!==i&&0!==r&&15!==r&&3!==o){const a=e[t+2]>>1&1,n=e[t+3]>>6,l=1e3*ig[14*(3===i?3-s:3===s?3:4)+r-1],d=sg[3*(3===i?0:2===i?1:2)+o],h=3===n?1:2,c=rg[i][s],u=og[s],p=8*c*u,f=Math.floor(c*l/d+a)*u;if(null===tg){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);tg=e?parseInt(e[1]):0}return!!tg&&tg<=87&&2===s&&l>=224e3&&0===n&&(e[t+3]=128|e[t+3]),{sampleRate:d,channelCount:h,frameLength:f,samplesPerFrame:p}}}function lg(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function dg(e,t){return t+1{let i=0,s=5;t+=s;const r=new Uint32Array(1),o=new Uint32Array(1),a=new Uint8Array(1);for(;s>0;){a[0]=e[t];const n=Math.min(s,8),l=8-n;o[0]=4278190080>>>24+l<>l,i=i?i<t.length)return-1;if(11!==t[i]||119!==t[i+1])return-1;const o=t[i+4]>>6;if(o>=3)return-1;const a=[48e3,44100,32e3][o],n=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*n+o];if(i+l>t.length)return-1;const d=t[i+6]>>5;let h=0;2===d?h+=2:(1&d&&1!==d&&(h+=2),4&d&&(h+=2));const 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([o<<6|p<<1|f>>2,(3&f)<<6|d<<3|c<<2|n>>4,n<<4&224]),g=s+r*(1536/a*9e4),y=t.subarray(i,i+l);return e.config=m,e.channelCount=u,e.samplerate=a,e.samples.push({unit:y,pts:g}),l}class mg{constructor(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}loadWord(){const e=this.data,t=this.bytesAvailable,i=e.byteLength-t,s=new Uint8Array(4),r=Math.min(4,t);if(0===r)throw new Error("no bytes available");s.set(e.subarray(i,i+r)),this.word=new DataView(s.buffer).getUint32(0),this.bitsAvailable=8*r,this.bytesAvailable-=r}skipBits(e){let t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(t=(e-=this.bitsAvailable)>>3,e-=t<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}readBits(e){let t=Math.min(this.bitsAvailable,e);const i=this.word>>>32-t;if(e>32&&Hc.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,t>0&&this.bitsAvailable?i<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const e=this.skipLZ();return this.readBits(e+1)-1}readEG(){const e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(e){let t,i=8,s=8;for(let r=0;r{var o;switch(s.type){case 1:{let t=!1;a=!0;const r=s.data;if(l&&r.length>4){const e=new mg(r).readSliceType();2!==e&&4!==e&&7!==e&&9!==e||(t=!0)}var d;if(t)null!=(d=n)&&d.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null);n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.frame=!0,n.key=t;break}case 5:a=!0,null!=(o=n)&&o.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null),n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.key=!0,n.frame=!0;break;case 6:a=!0,np(s.data,1,i.pts,t.samples);break;case 7:{var h,c;a=!0,l=!0;const t=s.data,i=new mg(t).readSPS();if(!e.sps||e.width!==i.width||e.height!==i.height||(null==(h=e.pixelRatio)?void 0:h[0])!==i.pixelRatio[0]||(null==(c=e.pixelRatio)?void 0:c[1])!==i.pixelRatio[1]){e.width=i.width,e.height=i.height,e.pixelRatio=i.pixelRatio,e.sps=[t],e.duration=r;const s=t.subarray(1,4);let o="avc1.";for(let e=0;e<3;e++){let t=s[e].toString(16);t.length<2&&(t="0"+t),o+=t}e.codec=o}break}case 8:a=!0,e.pps=[s.data];break;case 9:a=!0,e.audFound=!0,n&&this.pushAccessUnit(n,e),n=this.VideoSample=this.createVideoSample(!1,i.pts,i.dts,"");break;case 12:a=!0;break;default:a=!1,n&&(n.debug+="unknown NAL "+s.type+" ")}if(n&&a){n.units.push(s)}})),s&&n&&(this.pushAccessUnit(n,e),this.VideoSample=null)}parseAVCNALu(e,t){const i=t.byteLength;let s=e.naluState||0;const r=s,o=[];let a,n,l,d=0,h=-1,c=0;for(-1===s&&(h=0,c=31&t[0],s=0,d=1);d=0){const e={data:t.subarray(h,n),type:c};o.push(e)}else{const i=this.getLastNalUnit(e.samples);i&&(r&&d<=4-r&&i.state&&(i.data=i.data.subarray(0,i.data.byteLength-r)),n>0&&(i.data=rp(i.data,t.subarray(0,n)),i.state=0))}d=0&&s>=0){const e={data:t.subarray(h,i),type:c,state:s};o.push(e)}if(0===o.length){const i=this.getLastNalUnit(e.samples);i&&(i.data=rp(i.data,t))}return e.naluState=s,o}}class yg{constructor(e,t,i){this.keyData=void 0,this.decrypter=void 0,this.keyData=i,this.decrypter=new Cm(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(e,t,i){const s=e[t].unit;if(s.length<=16)return;const r=s.subarray(16,s.length-s.length%16),o=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(o).then((r=>{const o=new Uint8Array(r);s.set(o,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,i)}))}decryptAacSamples(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}}getAvcEncryptedData(e){const t=16*Math.floor((e.length-48)/160)+16,i=new Int8Array(t);let s=0;for(let t=32;t{r.data=this.getAvcDecryptedUnit(o,a),this.decrypter.isSync()||this.decryptAvcSamples(e,t,i+1,s)}))}decryptAvcSamples(e,t,i,s){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,i=0){if(t>=e.length)return void s();const r=e[t].units;for(;!(i>=r.length);i++){const o=r[i];if(!(o.data.length<=48||1!==o.type&&5!==o.type||(this.decryptAvcSample(e,t,i,s,o),this.decrypter.isSync())))return}}}}const Ag=188;class bg{constructor(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=new gg}static probe(e){const t=bg.syncOffset(e);return t>0&&Hc.warn(`MPEG2-TS detected but first sync word found @ offset ${t}`),-1!==t}static syncOffset(e){const t=e.length;let i=Math.min(940,t-Ag)+1,s=0;for(;s1&&(0===o&&a>2||n+Ag>i))return o}s++}return-1}static createTrack(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:zu[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}}resetInitSegment(e,t,i,s){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=bg.createTrack("video"),this._audioTrack=bg.createTrack("audio",s),this._id3Track=bg.createTrack("id3"),this._txtTrack=bg.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=i,this._duration=s}resetTimeStamp(){}resetContiguity(){const{_audioTrack:e,_videoTrack:t,_id3Track:i}=this;e&&(e.pesData=null),t&&(t.pesData=null),i&&(i.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(e,t,i=!1,s=!1){let r;i||(this.sampleAes=null);const o=this._videoTrack,a=this._audioTrack,n=this._id3Track,l=this._txtTrack;let d=o.pid,h=o.pesData,c=a.pid,u=n.pid,p=a.pesData,f=n.pesData,m=null,g=this.pmtParsed,y=this._pmtId,A=e.length;if(this.remainderData&&(A=(e=rp(this.remainderData,e)).length,this.remainderData=null),A>4>1){if(v=t+5+e[t+4],v===t+Ag)continue}else v=t+4;switch(A){case d:s&&(h&&(r=Tg(h))&&this.videoParser.parseAVCPES(o,l,r,!1,this._duration),h={data:[],size:0}),h&&(h.data.push(e.subarray(v,t+Ag)),h.size+=t+Ag-v);break;case c:if(s){if(p&&(r=Tg(p)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,r);break;case"mp3":this.parseMPEGPES(a,r);break;case"ac3":this.parseAC3PES(a,r)}p={data:[],size:0}}p&&(p.data.push(e.subarray(v,t+Ag)),p.size+=t+Ag-v);break;case u:s&&(f&&(r=Tg(f))&&this.parseID3PES(n,r),f={data:[],size:0}),f&&(f.data.push(e.subarray(v,t+Ag)),f.size+=t+Ag-v);break;case 0:s&&(v+=e[v]+1),y=this._pmtId=_g(e,v);break;case y:{s&&(v+=e[v]+1);const r=Sg(e,v,this.typeSupported,i,this.observer);d=r.videoPid,d>0&&(o.pid=d,o.segmentCodec=r.segmentVideoCodec),c=r.audioPid,c>0&&(a.pid=c,a.segmentCodec=r.segmentAudioCodec),u=r.id3Pid,u>0&&(n.pid=u),null===m||g||(Hc.warn(`MPEG-TS PMT found at ${t} after unknown PID '${m}'. Backtracking to sync byte @${b} to parse all TS packets.`),m=null,t=b-188),g=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=A}}else v++;v>0&&Eg(this.observer,new Error(`Found ${v} TS packet/s that do not start with 0x47`)),o.pesData=h,a.pesData=p,n.pesData=f;const _={audioTrack:a,videoTrack:o,id3Track:n,textTrack:l};return s&&this.extractRemainingSamples(_),_}flush(){const{remainderData:e}=this;let t;return this.remainderData=null,t=e?this.demux(e,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t}extractRemainingSamples(e){const{audioTrack:t,videoTrack:i,id3Track:s,textTrack:r}=e,o=i.pesData,a=t.pesData,n=s.pesData;let l;if(o&&(l=Tg(o))?(this.videoParser.parseAVCPES(i,r,l,!0,this._duration),i.pesData=null):i.pesData=o,a&&(l=Tg(a))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,l);break;case"mp3":this.parseMPEGPES(t,l);break;case"ac3":this.parseAC3PES(t,l)}t.pesData=null}else null!=a&&a.size&&Hc.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=a;n&&(l=Tg(n))?(this.parseID3PES(s,l),s.pesData=null):s.pesData=n}demuxSampleAes(e,t,i){const s=this.demux(e,i,!0,!this.config.progressive),r=this.sampleAes=new yg(this.observer,this.config,t);return this.decrypt(s,r)}decrypt(e,t){return new Promise((i=>{const{audioTrack:s,videoTrack:r}=e;s.samples&&"aac"===s.segmentCodec?t.decryptAacSamples(s.samples,0,(()=>{r.samples?t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)})):i(e)})):r.samples&&t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)}))}))}destroy(){this._duration=0}parseAACPES(e,t){let i=0;const s=this.aacOverFlow;let r,o,a,n=t.data;if(s){this.aacOverFlow=null;const t=s.missing,r=s.sample.unit.byteLength;if(-1===t)n=rp(s.sample.unit,n);else{const o=r-t;s.sample.unit.set(n.subarray(0,t),o),e.samples.push(s.sample),i=s.missing}}for(r=i,o=n.length;r0;)n+=o}}parseID3PES(e,t){if(void 0===t.pts)return void Hc.warn("[tsdemuxer]: ID3 PES unknown PTS");const i=Mc({},t,{type:this._videoTrack?af:rf,duration:Number.POSITIVE_INFINITY});e.samples.push(i)}}function vg(e,t){return((31&e[t+1])<<8)+e[t+2]}function _g(e,t){return(31&e[t+10])<<8|e[t+11]}function Sg(e,t,i,s,r){const o={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){let s=t+5,r=n;for(;r>2;){if(106===e[s])!0!==i.ac3?Hc.log("AC-3 audio found, not supported in this browser for now"):(o.audioPid=a,o.segmentAudioCodec="ac3");const t=e[s+1]+2;s+=t,r-=t}}break;case 194:case 135:return Eg(r,new Error("Unsupported EC-3 in M2TS found")),o;case 36:return Eg(r,new Error("Unsupported HEVC in M2TS found")),o}t+=n+5}return o}function Eg(e,t,i){Hc.warn(`parsing error: ${t.message}`),e.emit(Nc.ERROR,Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.FRAG_PARSING_ERROR,fatal:!1,levelRetry:i,error:t,reason:t.message})}function wg(e){Hc.log(`${e} with AES-128-CBC encryption found in unencrypted stream`)}function Tg(e){let t,i,s,r,o,a=0;const n=e.data;if(!e||0===e.size)return null;for(;n[0].length<19&&n.length>1;)n[0]=rp(n[0],n[1]),n.splice(1,1);t=n[0];if(1===(t[0]<<16)+(t[1]<<8)+t[2]){if(i=(t[4]<<8)+t[5],i&&i>e.size-6)return null;const l=t[7];192&l&&(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&l?(o=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,r-o>54e5&&(Hc.warn(`${Math.round((r-o)/9e4)}s delta between PTS and DTS, align them`),r=o)):o=r),s=t[8];let d=s+9;if(e.size<=d)return null;e.size-=d;const h=new Uint8Array(e.size);for(let e=0,i=n.length;ei){d-=i;continue}t=t.subarray(d),i-=d,d=0}h.set(t,a),a+=i}return i&&(i-=s+3),{data:h,pts:r,dts:o,len:i}}return null}class kg{static getSilentFrame(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])}}}const Lg=Math.pow(2,32)-1;class Cg{static init(){let e;for(e in Cg.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},Cg.types)Cg.types.hasOwnProperty(e)&&(Cg.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);const t=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]),i=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]);Cg.HDLR_TYPES={video:t,audio:i};const s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);Cg.STTS=Cg.STSC=Cg.STCO=r,Cg.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),Cg.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),Cg.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),Cg.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const o=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),n=new Uint8Array([0,0,0,1]);Cg.FTYP=Cg.box(Cg.types.ftyp,o,n,o,a),Cg.DINF=Cg.box(Cg.types.dinf,Cg.box(Cg.types.dref,s))}static box(e,...t){let i=8,s=t.length;const r=s;for(;s--;)i+=t[s].byteLength;const o=new Uint8Array(i);for(o[0]=i>>24&255,o[1]=i>>16&255,o[2]=i>>8&255,o[3]=255&i,o.set(e,4),s=0,i=8;s>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s,85,196,0,0]))}static mdia(e){return Cg.box(Cg.types.mdia,Cg.mdhd(e.timescale,e.duration),Cg.hdlr(e.type),Cg.minf(e))}static mfhd(e){return Cg.box(Cg.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static minf(e){return"audio"===e.type?Cg.box(Cg.types.minf,Cg.box(Cg.types.smhd,Cg.SMHD),Cg.DINF,Cg.stbl(e)):Cg.box(Cg.types.minf,Cg.box(Cg.types.vmhd,Cg.VMHD),Cg.DINF,Cg.stbl(e))}static moof(e,t,i){return Cg.box(Cg.types.moof,Cg.mfhd(e),Cg.traf(i,t))}static moov(e){let t=e.length;const i=[];for(;t--;)i[t]=Cg.trak(e[t]);return Cg.box.apply(null,[Cg.types.moov,Cg.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(Cg.mvex(e)))}static mvex(e){let t=e.length;const i=[];for(;t--;)i[t]=Cg.trex(e[t]);return Cg.box.apply(null,[Cg.types.mvex,...i])}static mvhd(e,t){t*=e;const i=Math.floor(t/(Lg+1)),s=Math.floor(t%(Lg+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,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 Cg.box(Cg.types.mvhd,r)}static sdtp(e){const t=e.samples||[],i=new Uint8Array(4+t.length);let s,r;for(s=0;s>>8&255),r.push(255&s),r=r.concat(Array.prototype.slice.call(i));for(t=0;t>>8&255),o.push(255&s),o=o.concat(Array.prototype.slice.call(i));const a=Cg.box(Cg.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|e.sps.length].concat(r).concat([e.pps.length]).concat(o))),n=e.width,l=e.height,d=e.pixelRatio[0],h=e.pixelRatio[1];return Cg.box(Cg.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,n>>8&255,255&n,l>>8&255,255&l,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]),a,Cg.box(Cg.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),Cg.box(Cg.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,h>>24,h>>16&255,h>>8&255,255&h])))}static esds(e){const 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]))}static audioStsd(e){const 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])}static mp4a(e){return Cg.box(Cg.types.mp4a,Cg.audioStsd(e),Cg.box(Cg.types.esds,Cg.esds(e)))}static mp3(e){return Cg.box(Cg.types[".mp3"],Cg.audioStsd(e))}static ac3(e){return Cg.box(Cg.types["ac-3"],Cg.audioStsd(e),Cg.box(Cg.types.dac3,e.config))}static stsd(e){return"audio"===e.type?"mp3"===e.segmentCodec&&"mp3"===e.codec?Cg.box(Cg.types.stsd,Cg.STSD,Cg.mp3(e)):"ac3"===e.segmentCodec?Cg.box(Cg.types.stsd,Cg.STSD,Cg.ac3(e)):Cg.box(Cg.types.stsd,Cg.STSD,Cg.mp4a(e)):Cg.box(Cg.types.stsd,Cg.STSD,Cg.avc1(e))}static tkhd(e){const t=e.id,i=e.duration*e.timescale,s=e.width,r=e.height,o=Math.floor(i/(Lg+1)),a=Math.floor(i%(Lg+1));return Cg.box(Cg.types.tkhd,new Uint8Array([1,0,0,7,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,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,a>>24,a>>16&255,a>>8&255,255&a,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,r>>8&255,255&r,0,0]))}static traf(e,t){const i=Cg.sdtp(e),s=e.id,r=Math.floor(t/(Lg+1)),o=Math.floor(t%(Lg+1));return Cg.box(Cg.types.traf,Cg.box(Cg.types.tfhd,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])),Cg.box(Cg.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,o>>24,o>>16&255,o>>8&255,255&o])),Cg.trun(e,i.length+16+20+8+16+8+8),i)}static trak(e){return e.duration=e.duration||4294967295,Cg.box(Cg.types.trak,Cg.tkhd(e),Cg.mdia(e))}static trex(e){const t=e.id;return Cg.box(Cg.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(e,t){const i=e.samples||[],s=i.length,r=12+16*s,o=new Uint8Array(r);let a,n,l,d,h,c;for(t+=8+r,o.set(["video"===e.type?1:0,0,15,1,s>>>24&255,s>>>16&255,s>>>8&255,255&s,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,d>>>24&255,d>>>16&255,d>>>8&255,255&d,h.isLeading<<2|h.dependsOn,h.isDependedOn<<6|h.hasRedundancy<<4|h.paddingValue<<1|h.isNonSync,61440&h.degradPrio,15&h.degradPrio,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*a);return Cg.box(Cg.types.trun,o)}static initSegment(e){Cg.types||Cg.init();const t=Cg.moov(e);return rp(Cg.FTYP,t)}}Cg.types=void 0,Cg.HDLR_TYPES=void 0,Cg.STTS=void 0,Cg.STSC=void 0,Cg.STCO=void 0,Cg.STSZ=void 0,Cg.VMHD=void 0,Cg.SMHD=void 0,Cg.STSD=void 0,Cg.FTYP=void 0,Cg.DINF=void 0;function Dg(e,t,i=1,s=!1){const r=e*t*i;return s?Math.round(r):r}function xg(e,t=!1){return Dg(e,1e3,1/9e4,t)}let Rg,Pg=null,Ig=null;class Bg{constructor(e,t,i,s=""){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===Pg){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Pg=e?parseInt(e[1]):0}if(null===Ig){const e=navigator.userAgent.match(/Safari\/(\d+)/i);Ig=e?parseInt(e[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){Hc.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e}resetNextTimestamp(){Hc.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){Hc.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1;const i=e.reduce(((e,i)=>{const s=i.pts-e;return s<-4294967296?(t=!0,Mg(e,i.pts)):s>0?e:i.pts}),e[0].pts);return t&&Hc.debug("PTS rollover detected"),i}remux(e,t,i,s,r,o,a,n){let l,d,h,c,u,p,f=r,m=r;const g=e.pid>-1,y=t.pid>-1,A=t.samples.length,b=e.samples.length>0,v=a&&A>0||A>1;if((!g||b)&&(!y||v)||this.ISGenerated||a){if(this.ISGenerated){var _,S,E,w;const e=this.videoTrackConfig;!e||t.width===e.width&&t.height===e.height&&(null==(_=t.pixelRatio)?void 0:_[0])===(null==(S=e.pixelRatio)?void 0:S[0])&&(null==(E=t.pixelRatio)?void 0:E[1])===(null==(w=e.pixelRatio)?void 0:w[1])||this.resetInitSegment()}else h=this.generateIS(e,t,r,o);const i=this.isVideoContiguous;let s,a=-1;if(v&&(a=function(e){for(let t=0;t0){Hc.warn(`[mp4-remuxer]: Dropped ${a} out of ${A} video samples due to a missing keyframe`);const e=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(a),t.dropped+=a,m+=(t.samples[0].pts-e)/t.inputTimeScale,s=m}else-1===a&&(Hc.warn(`[mp4-remuxer]: No keyframe found out of ${A} video samples`),p=!1);if(this.ISGenerated){if(b&&v){const i=this.getVideoStartPts(t.samples),s=(Mg(e.samples[0].pts,i)-i)/t.inputTimeScale;f+=Math.max(0,s),m+=Math.max(0,-s)}if(b){if(e.samplerate||(Hc.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),h=this.generateIS(e,t,r,o)),d=this.remuxAudio(e,f,this.isAudioContiguous,o,y||v||n===Jp?m:void 0),v){const s=d?d.endPTS-d.startPTS:0;t.inputTimeScale||(Hc.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),h=this.generateIS(e,t,r,o)),l=this.remuxVideo(t,m,i,s)}}else v&&(l=this.remuxVideo(t,m,i,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=s)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(i.samples.length&&(u=Fg(i,r,this._initPTS,this._initDTS)),s.samples.length&&(c=Ug(s,r,this._initPTS))),{audio:d,video:l,initSegment:h,independent:p,text:c,id3:u}}generateIS(e,t,i,s){const r=e.samples,o=t.samples,a=this.typeSupported,n={},l=this._initPTS;let d,h,c,u=!l||s,p="audio/mp4";if(u&&(d=h=1/0),e.config&&r.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":a.mpeg?(p="audio/mpeg",e.codec=""):a.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3"}n.audio={id:"audio",container:p,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&a.mpeg?new Uint8Array(0):Cg.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(c=e.inputTimeScale,l&&c===l.timescale?u=!1:d=h=r[0].pts-Math.round(c*i))}if(t.sps&&t.pps&&o.length){if(t.timescale=t.inputTimeScale,n.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:Cg.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(c=t.inputTimeScale,l&&c===l.timescale)u=!1;else{const e=this.getVideoStartPts(o),t=Math.round(c*i);h=Math.min(h,Mg(o[0].dts,e)-t),d=Math.min(d,e-t)}this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(n).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:d,timescale:c},this._initDTS={baseTime:h,timescale:c}):d=c=void 0,{tracks:n,initPTS:d,timescale:c}}remuxVideo(e,t,i,s){const r=e.inputTimeScale,o=e.samples,a=[],n=o.length,l=this._initPTS;let d,h,c=this.nextAvcDts,u=8,p=this.videoSampleDuration,f=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,g=!1;if(!i||null===c){const e=t*r,s=o[0].pts-Mg(o[0].dts,o[0].pts);Pg&&null!==c&&Math.abs(e-s-c)<15e3?i=!0:c=e-s}const y=l.baseTime*r/l.timescale;for(let e=0;e0?e-1:e].dts&&(g=!0)}g&&o.sort((function(e,t){const i=e.dts-t.dts,s=e.pts-t.pts;return i||s})),d=o[0].dts,h=o[o.length-1].dts;const A=h-d,b=A?Math.round(A/(n-1)):p||e.inputTimeScale/30;if(i){const e=d-c,i=e>b,s=e<-1;if((i||s)&&(i?Hc.warn(`AVC: ${xg(e,!0)} ms (${e}dts) hole between fragments detected at ${t.toFixed(3)}`):Hc.warn(`AVC: ${xg(-e,!0)} ms (${e}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!s||c>=o[0].pts||Pg)){d=c;const t=o[0].pts-e;if(i)o[0].dts=d,o[0].pts=t;else for(let i=0;it);i++)o[i].dts-=e,o[i].pts-=e;Hc.log(`Video: Initial PTS/DTS adjusted: ${xg(t,!0)}/${xg(d,!0)}, delta: ${xg(e,!0)} ms`)}}d=Math.max(0,d);let v=0,_=0,S=d;for(let e=0;e0?t.dts-o[e-1].dts:b;if(l=e>0?t.pts-o[e-1].pts:b,i.stretchShortVideoTrack&&null!==this.nextAudioPts){const e=Math.floor(i.maxBufferHole*r),o=(s?f+s*r:this.nextAudioPts)-t.pts;o>e?(p=o-a,p<0?p=a:k=!0,Hc.log(`[mp4-remuxer]: It is approximately ${o/90} ms to the next segment; using duration ${p/90} ms for the last video frame.`)):p=a}else p=a}const h=Math.round(t.pts-t.dts);L=Math.min(L,p),D=Math.max(D,p),C=Math.min(C,l),x=Math.max(x,l),a.push(new Og(t.key,p,d,h))}if(a.length)if(Pg){if(Pg<70){const e=a[0].flags;e.dependsOn=2,e.isNonSync=0}}else if(Ig&&x-C0&&(s&&Math.abs(g-m)<9e3||Math.abs(Mg(p[0].pts-y,g)-m)<20*l),p.forEach((function(e){e.pts=Mg(e.pts-y,g)})),!i||m<0){if(p=p.filter((e=>e.pts>=0)),!p.length)return;m=0===r?0:s&&!u?Math.max(0,g):p[0].pts}if("aac"===e.segmentCodec){const t=this.config.maxAudioFramesDrift;for(let i=0,s=m;i=t*l&&d<1e4&&u){let t=Math.round(n/l);s=a-t*l,s<0&&(t--,s+=l),0===i&&(this.nextAudioPts=m=s),Hc.warn(`[mp4-remuxer]: Injecting ${t} audio frame @ ${(s/o).toFixed(3)}s due to ${Math.round(1e3*n/o)} ms gap.`);for(let o=0;o0))return;_+=f;try{A=new Uint8Array(_)}catch(e){return void this.observer.emit(Nc.ERROR,Nc.ERROR,{type:jc.MUX_ERROR,details:Gc.REMUX_ALLOC_ERROR,fatal:!1,error:e,bytes:_,reason:`fail allocating audio mdat ${_}`})}if(!h){new DataView(A.buffer).setUint32(0,_),A.set(Cg.types.mdat,4)}}A.set(r,f);const l=r.byteLength;f+=l,c.push(new Og(!0,n,l,0)),v=o}const E=c.length;if(!E)return;const w=c[c.length-1];this.nextAudioPts=m=v+a*w.duration;const T=h?new Uint8Array(0):Cg.moof(e.sequenceNumber++,b/a,Mc({},e,{samples:c}));e.samples=[];const k=b/o,L=m/o,C={data1:T,data2:A,startPTS:k,endPTS:L,startDTS:k,endDTS:L,type:"audio",hasAudio:!0,hasVideo:!1,nb:E};return this.isAudioContiguous=!0,C}remuxEmptyAudio(e,t,i,s){const r=e.inputTimeScale,o=r/(e.samplerate?e.samplerate:r),a=this.nextAudioPts,n=this._initDTS,l=9e4*n.baseTime/n.timescale,d=(null!==a?a:s.startDTS*r)+l,h=s.endDTS*r+l,c=1024*o,u=Math.ceil((h-d)/c),p=kg.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(Hc.warn("[mp4-remuxer]: remux empty Audio"),!p)return void Hc.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const f=[];for(let e=0;e4294967296;)e+=i;return e}function Fg(e,t,i,s){const r=e.samples.length;if(!r)return;const o=e.inputTimeScale;for(let a=0;ae.pts-t.pts));const o=e.samples;return e.samples=[],{samples:o}}class Og{constructor(e,t,i,s){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=i,this.cts=s,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:e?2:1,isNonSync:e?0:1}}}function Ng(e,t){const i=null==e?void 0:e.codec;if(i&&i.length>4)return i;if(t===Zc){if("ec-3"===i||"ac-3"===i||"alac"===i)return i;if("fLaC"===i||"Opus"===i){return Lp(i,!1)}const e="mp4a.40.5";return Hc.info(`Parsed audio codec "${i}" or audio object type not handled. Using "${e}"`),e}return Hc.warn(`Unhandled video codec "${i}"`),"hvc1"===i||"hev1"===i?"hvc1.1.6.L120.90":"av01"===i?"av01.0.04M.08":"avc1.42e01e"}try{Rg=self.performance.now.bind(self.performance)}catch(e){Hc.debug("Unable to use Performance API on this environment"),Rg=null==du?void 0:du.Date.now}const jg=[{demux:class{constructor(e,t){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=t}resetTimeStamp(){}resetInitSegment(e,t,i,s){const r=this.videoTrack=Vm("video",1),o=this.audioTrack=Vm("audio",1),a=this.txtTrack=Vm("text",1);if(this.id3Track=Vm("id3",1),this.timeOffset=0,null==e||!e.byteLength)return;const n=Qu(e);if(n.video){const{id:e,timescale:t,codec:i}=n.video;r.id=e,r.timescale=a.timescale=t,r.codec=i}if(n.audio){const{id:e,timescale:t,codec:i}=n.audio;o.id=e,o.timescale=t,o.codec=i}a.id=zu.text,r.sampleDuration=0,r.duration=o.duration=s}resetContiguity(){this.remainderData=null}static probe(e){return function(e){const t=e.byteLength;for(let i=0;i8&&109===e[i+4]&&111===e[i+5]&&111===e[i+6]&&102===e[i+7])return!0;i=s>1?i+s:t}return!1}(e)}demux(e,t){this.timeOffset=t;let i=e;const s=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(i=rp(this.remainderData,e));const t=function(e){const t={valid:null,remainder:null},i=Ku(e,["moof"]);if(i.length<2)return t.remainder=e,t;const s=i[i.length-1];return t.valid=_u(e,0,s.byteOffset-8),t.remainder=_u(e,s.byteOffset-8),t}(i);this.remainderData=t.remainder,s.samples=t.valid||new Uint8Array}else s.samples=i;const o=this.extractID3Track(s,t);return r.samples=op(t,s),{videoTrack:s,audioTrack:this.audioTrack,id3Track:o,textTrack:this.txtTrack}}flush(){const e=this.timeOffset,t=this.videoTrack,i=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;const s=this.extractID3Track(t,this.timeOffset);return i.samples=op(e,t),{videoTrack:t,audioTrack:Vm(),id3Track:s,textTrack:Vm()}}extractID3Track(e,t){const i=this.id3Track;if(e.samples.length){const s=Ku(e.samples,["emsg"]);s&&s.forEach((e=>{const s=function(e){const t=e[0];let i="",s="",r=0,o=0,a=0,n=0,l=0,d=0;if(0===t){for(;"\0"!==Wu(e.subarray(d,d+1));)i+=Wu(e.subarray(d,d+1)),d+=1;for(i+=Wu(e.subarray(d,d+1)),d+=1;"\0"!==Wu(e.subarray(d,d+1));)s+=Wu(e.subarray(d,d+1)),d+=1;s+=Wu(e.subarray(d,d+1)),d+=1,r=$u(e,12),o=$u(e,16),n=$u(e,20),l=$u(e,24),d=28}else if(1===t){d+=4,r=$u(e,d),d+=4;const t=$u(e,d);d+=4;const o=$u(e,d);for(d+=4,a=2**32*t+o,Uc(a)||(a=Number.MAX_SAFE_INTEGER,Hc.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),n=$u(e,d),d+=4,l=$u(e,d),d+=4;"\0"!==Wu(e.subarray(d,d+1));)i+=Wu(e.subarray(d,d+1)),d+=1;for(i+=Wu(e.subarray(d,d+1)),d+=1;"\0"!==Wu(e.subarray(d,d+1));)s+=Wu(e.subarray(d,d+1)),d+=1;s+=Wu(e.subarray(d,d+1)),d+=1}return{schemeIdUri:i,value:s,timeScale:r,presentationTime:a,presentationTimeDelta:o,eventDuration:n,id:l,payload:e.subarray(d,e.byteLength)}}(e);if(cg.test(s.schemeIdUri)){const e=Fc(s.presentationTime)?s.presentationTime/s.timeScale:t+s.presentationTimeDelta/s.timeScale;let r=4294967295===s.eventDuration?Number.POSITIVE_INFINITY:s.eventDuration/s.timeScale;r<=.001&&(r=Number.POSITIVE_INFINITY);const o=s.payload;i.samples.push({data:o,len:o.byteLength,dts:e,pts:e,type:af,duration:r})}}))}return i}demuxSampleAes(e,t,i){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux:class{constructor(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null}destroy(){}resetTimeStamp(e){this.initPTS=e,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(e,t,i,s){this.audioCodec=t,this.videoCodec=i,this.generateInitSegment(function(e,t){if(!e||!t)return e;const i=t.keyId;i&&t.isCommonEncryption&&Ku(e,["moov","trak"]).forEach((e=>{const t=Ku(e,["mdia","minf","stbl","stsd"])[0].subarray(8);let s=Ku(t,["enca"]);const r=s.length>0;r||(s=Ku(t,["encv"])),s.forEach((e=>{Ku(r?e.subarray(28):e.subarray(78),["sinf"]).forEach((e=>{const t=ip(e);if(t){const e=t.subarray(8,24);e.some((e=>0!==e))||(Hc.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${Nu(e)} -> ${Nu(i)}`),t.set(i,8))}}))}))}));return e}(e,s)),this.emitInitSegment=!0}generateInitSegment(e){let{audioCodec:t,videoCodec:i}=this;if(null==e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const s=this.initData=Qu(e);s.audio&&(t=Ng(s.audio,Zc)),s.video&&(i=Ng(s.video,eu));const r={};s.audio&&s.video?r.audiovideo={container:"video/mp4",codec:t+","+i,initSegment:e,id:"main"}:s.audio?r.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:s.video?r.video={container:"video/mp4",codec:i,initSegment:e,id:"main"}:Hc.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(e,t,i,s,r,o){var a,n;let{initPTS:l,lastEndTime:d}=this;const h={audio:void 0,video:void 0,text:s,id3:i,initSegment:void 0};Fc(d)||(d=this.lastEndTime=r||0);const c=t.samples;if(null==c||!c.length)return h;const u={initPTS:void 0,timescale:1};let p=this.initData;if(null!=(a=p)&&a.length||(this.generateInitSegment(c),p=this.initData),null==(n=p)||!n.length)return Hc.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),h;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const f=function(e,t){let i=0,s=0,r=0;const o=Ku(e,["moof","traf"]);for(let e=0;ee+t.info.duration||0),0);i=Math.max(i,e+o.earliestPresentationTime/o.timescale),s=i-t}}if(s&&Fc(s))return s}return s||r}(c,p),m=function(e,t){return Ku(t,["moof","traf"]).reduce(((t,i)=>{const s=Ku(i,["tfdt"])[0],r=s[0],o=Ku(i,["tfhd"]).reduce(((t,i)=>{const o=$u(i,4),a=e[o];if(a){let e=$u(s,4);if(1===r){if(e===ju)return Hc.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),t;e*=ju+1,e+=$u(s,8)}const i=e/(a.timescale||9e4);if(Fc(i)&&(null===t||ir}(l,g,r,f)||u.timescale!==l.timescale&&o)&&(u.initPTS=g-r,l&&1===l.timescale&&Hc.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const y=e?g-l.baseTime/l.timescale:d,A=y+f;!function(e,t,i){Ku(t,["moof","traf"]).forEach((t=>{Ku(t,["tfhd"]).forEach((s=>{const r=$u(s,4),o=e[r];if(!o)return;const a=o.timescale||9e4;Ku(t,["tfdt"]).forEach((e=>{const t=e[0],s=i*a;if(s){let i=$u(e,4);if(0===t)i-=s,i=Math.max(i,0),qu(e,4,i);else{i*=Math.pow(2,32),i+=$u(e,8),i-=s,i=Math.max(i,0);const t=Math.floor(i/(ju+1)),r=Math.floor(i%(ju+1));qu(e,4,t),qu(e,8,r)}}}))}))}))}(p,c,l.baseTime/l.timescale),f>0?this.lastEndTime=A:(Hc.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const b=!!p.audio,v=!!p.video;let _="";b&&(_+="audio"),v&&(_+="video");const S={data1:c,startPTS:y,startDTS:y,endPTS:A,endDTS:A,type:_,hasAudio:b,hasVideo:v,nb:1,dropped:0};return h.audio="audio"===S.type?S:void 0,h.video="audio"!==S.type?S:void 0,h.initSegment=u,h.id3=Fg(i,r,l,l),s.samples.length&&(h.text=Ug(s,r,l)),h}}},{demux:bg,remux:Bg},{demux:class extends $m{constructor(e,t){super(),this.observer=void 0,this.config=void 0,this.observer=e,this.config=t}resetInitSegment(e,t,i,s){super.resetInitSegment(e,t,i,s),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:t,duration:s,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;const t=wu(e,0);let i=(null==t?void 0:t.length)||0;if(hg(e,i))return!1;for(let t=e.length;i0&&null!=(null==t?void 0:t.key)&&null!==t.iv&&null!=t.method&&(i=t);return i}(o,t);if(b&&"AES-128"===b.method){const e=this.getDecrypter();if(!e.isSync())return this.decryptionPromise=e.webCryptoDecrypt(o,b.key.buffer,b.iv.buffer).then((e=>{const t=this.push(e,null,i);return this.decryptionPromise=null,t})),this.decryptionPromise;{let t=e.softwareDecrypt(o,b.key.buffer,b.iv.buffer);if(i.part>-1&&(t=e.flush()),!t)return r.executeEnd=Rg(),zg(i);o=new Uint8Array(t)}}const v=this.needsProbing(d,h);if(v){const e=this.configureTransmuxer(o);if(e)return Hc.warn(`[transmuxer] ${e.message}`),this.observer.emit(Nc.ERROR,Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message}),r.executeEnd=Rg(),zg(i)}(d||h||p||v)&&this.resetInitSegment(A,f,m,y,t),(d||p||v)&&this.resetInitialTimestamp(g),l||this.resetContiguity();const _=this.transmux(o,b,u,c,i),S=this.currentTransmuxState;return S.contiguous=!0,S.discontinuity=!1,S.trackSwitch=!1,r.executeEnd=Rg(),_}flush(e){const t=e.transmuxing;t.executeStart=Rg();const{decrypter:i,currentTransmuxState:s,decryptionPromise:r}=this;if(r)return r.then((()=>this.flush(e)));const o=[],{timeOffset:a}=s;if(i){const t=i.flush();t&&o.push(this.push(t,null,e))}const{demuxer:n,remuxer:l}=this;if(!n||!l)return t.executeEnd=Rg(),[zg(e)];const d=n.flush(a);return Wg(d)?d.then((t=>(this.flushRemux(o,t,e),o))):(this.flushRemux(o,d,e),o)}flushRemux(e,t,i){const{audioTrack:s,videoTrack:r,id3Track:o,textTrack:a}=t,{accurateTimeOffset:n,timeOffset:l}=this.currentTransmuxState;Hc.log(`[transmuxer.ts]: Flushed fragment ${i.sn}${i.part>-1?" p: "+i.part:""} of level ${i.level}`);const d=this.remuxer.remux(s,r,o,a,l,n,!0,this.id);e.push({remuxResult:d,chunkMeta:i}),i.transmuxing.executeEnd=Rg()}resetInitialTimestamp(e){const{demuxer:t,remuxer:i}=this;t&&i&&(t.resetTimeStamp(e),i.resetTimeStamp(e))}resetContiguity(){const{demuxer:e,remuxer:t}=this;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,i,s,r){const{demuxer:o,remuxer:a}=this;o&&a&&(o.resetInitSegment(e,t,i,s),a.resetInitSegment(e,t,i,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(e,t,i,s,r){let o;return o=t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,i,s,r):this.transmuxUnencrypted(e,i,s,r),o}transmuxUnencrypted(e,t,i,s){const{audioTrack:r,videoTrack:o,id3Track:a,textTrack:n}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,o,a,n,t,i,!1,this.id),chunkMeta:s}}transmuxSampleAes(e,t,i,s,r){return this.demuxer.demuxSampleAes(e,t,i).then((e=>({remuxResult:this.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,i,s,!1,this.id),chunkMeta:r})))}configureTransmuxer(e){const{config:t,observer:i,typeSupported:s,vendor:r}=this;let o;for(let t=0,i=jg.length;t({remuxResult:{},chunkMeta:e});function Wg(e){return"then"in e&&e.then instanceof Function}class Vg{constructor(e,t,i,s,r){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=s,this.defaultInitPts=r||null}}class $g{constructor(e,t,i,s,r,o){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=s,this.timeOffset=r,this.initSegmentChange=o}}var Hg={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function s(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function o(e,t,s,o,a){if("function"!=typeof s)throw new TypeError("The listener must be a function");var n=new r(s,o||e,a),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],n]:e._events[l].push(n):(e._events[l]=n,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function n(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(i=!1)),n.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(i?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},n.prototype.listeners=function(e){var t=i?i+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,o=s.length,a=new Array(o);r{(t=t||{}).frag=this.frag,t.id=this.id,e===Nc.ERROR&&(this.error=t.error),this.hls.trigger(e,t)};this.observer=new Jg,this.observer.on(Nc.FRAG_DECRYPTED,o),this.observer.on(Nc.ERROR,o);const a=Ap(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},n={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')};if(this.useWorker&&"undefined"!=typeof Worker){if(r.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{r.workerPath?(Hc.log(`loading Web Worker ${r.workerPath} for "${t}"`),this.workerContext=function(e){const t=new self.URL(e,self.location.href).href;return{worker:new self.Worker(t),scriptURL:t}}(r.workerPath)):(Hc.log(`injecting Web Worker for "${t}"`),this.workerContext=function(){const e=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),t=self.URL.createObjectURL(e);return{worker:new self.Worker(t),objectURL:t}}()),this.onwmsg=e=>this.onWorkerMessage(e);const{worker:e}=this.workerContext;e.addEventListener("message",this.onwmsg),e.onerror=e=>{const i=new Error(`${e.message} (${e.filename}:${e.lineno})`);r.enableWorker=!1,Hc.warn(`Error in "${t}" Web Worker, fallback to inline`),this.hls.trigger(Nc.ERROR,{type:jc.OTHER_ERROR,details:Gc.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:i})},e.postMessage({cmd:"init",typeSupported:n,vendor:"",id:t,config:JSON.stringify(r)})}catch(e){Hc.warn(`Error setting up "${t}" Web Worker, fallback to inline`,e),this.resetWorker(),this.error=null,this.transmuxer=new Gg(this.observer,n,r,"",t)}return}}this.transmuxer=new Gg(this.observer,n,r,"",t)}resetWorker(){if(this.workerContext){const{worker:e,objectURL:t}=this.workerContext;t&&self.URL.revokeObjectURL(t),e.removeEventListener("message",this.onwmsg),e.onerror=null,e.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{const e=this.transmuxer;e&&(e.destroy(),this.transmuxer=null)}const e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(e,t,i,s,r,o,a,n,l,d){var h,c;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,p=o?o.start:r.start,f=r.decryptdata,m=this.frag,g=!(m&&r.cc===m.cc),y=!(m&&l.level===m.level),A=m?l.sn-m.sn:-1,b=this.part?l.part-this.part.index:-1,v=0===A&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),_=!y&&(1===A||0===A&&(1===b||v&&b<=0)),S=self.performance.now();(y||A||0===r.stats.parsing.start)&&(r.stats.parsing.start=S),!o||!b&&_||(o.stats.parsing.start=S);const E=!(m&&(null==(h=r.initSegment)?void 0:h.url)===(null==(c=m.initSegment)?void 0:c.url)),w=new $g(g,_,n,y,p,E);if(!_||g||E){Hc.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${g}\n trackSwitch: ${y}\n contiguous: ${_}\n accurateTimeOffset: ${n}\n timeOffset: ${p}\n initSegmentChange: ${E}`);const e=new Vg(i,s,t,a,d);this.configureTransmuxer(e)}if(this.frag=r,this.part=o,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:f,chunkMeta:l,state:w},e instanceof ArrayBuffer?[e]:[]);else if(u){const t=u.push(e,f,l,w);Wg(t)?(u.async=!0,t.then((e=>{this.handleTransmuxComplete(e)})).catch((e=>{this.transmuxerError(e,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(t))}}flush(e){e.transmuxing.start=self.performance.now();const{transmuxer:t}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(t){let i=t.flush(e);Wg(i)||t.async?(Wg(i)||(i=Promise.resolve(i)),i.then((t=>{this.handleFlushResult(t,e)})).catch((t=>{this.transmuxerError(t,e,"transmuxer-interface flush error")}))):this.handleFlushResult(i,e)}}transmuxerError(e,t,i){this.hls&&(this.error=e,this.hls.trigger(Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.FRAG_PARSING_ERROR,chunkMeta:t,frag:this.frag||void 0,fatal:!1,error:e,err:e,reason:i}))}handleFlushResult(e,t){e.forEach((e=>{this.handleTransmuxComplete(e)})),this.onFlush(t)}onWorkerMessage(e){const t=e.data;if(null==t||!t.event)return void Hc.warn("worker message received with no "+(t?"event name":"data"));const i=this.hls;if(this.hls)switch(t.event){case"init":{var s;const e=null==(s=this.workerContext)?void 0:s.objectURL;e&&self.URL.revokeObjectURL(e);break}case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":Hc[t.data.logType]&&Hc[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)}}configureTransmuxer(e){const{transmuxer:t}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:e}):t&&t.configure(e)}handleTransmuxComplete(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)}}function Kg(e,t){if(e.length!==t.length)return!1;for(let i=0;ie[i]!==t[i]))}function Qg(e,t){return t.label.toLowerCase()===e.name.toLowerCase()&&(!t.language||t.language.toLowerCase()===(e.lang||"").toLowerCase())}class Xg{constructor(e){this.buffered=void 0;const t=(t,i,s)=>{if((i>>>=0)>s-1)throw new DOMException(`Failed to execute '${t}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${s})`);return e[i][t]};this.buffered={get length(){return e.length},end:i=>t("end",i,e.length),start:i=>t("start",i,e.length)}}}class Zg{constructor(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}append(e,t,i){const s=this.queues[t];s.push(e),1!==s.length||i||this.executeNext(t)}insertAbort(e,t){this.queues[t].unshift(e),this.executeNext(t)}appendBlocker(e){let t;const i=new Promise((e=>{t=e})),s={execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(s,e),i}executeNext(e){const t=this.queues[e];if(t.length){const i=t[0];try{i.execute()}catch(t){Hc.warn(`[buffer-operation-queue]: Exception executing "${e}" SourceBuffer operation: ${t}`),i.onError(t);const s=this.buffers[e];null!=s&&s.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues[e].shift(),this.executeNext(e)}current(e){return this.queues[e][0]}}const ey=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function ty(e){const t=e.querySelectorAll("source");[].slice.call(t).forEach((t=>{e.removeChild(t)}))}const iy={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},sy=e=>String.fromCharCode(iy[e]||e),ry=15,oy=100,ay={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},ny={17:2,18:4,21:6,22:8,23:10,19:13,20:15},ly={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},dy={25:2,26:4,29:6,30:8,31:10,27:13,28:15},hy=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class cy{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;Hc.log(`${this.time} [${e}] ${i}`)}}}const uy=function(e){const t=[];for(let i=0;ioy&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=oy)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=sy(e);this.pos>=oy?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",s=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class yy{constructor(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 gy(i),this.nonDisplayedMemory=new gy(i),this.lastOutputScreen=new gy(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(e){this.outputFilter=e}setPAC(e){this.writeScreen.setPAC(e)}setBkgData(e){this.writeScreen.setBkgData(e)}setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(2,(()=>"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)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(1,(()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0))),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(e){this.logger.log(2,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,s=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=s[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const 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))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Ay{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const s=this.logger=new cy;this.channels=[null,new yy(e,t,s),new yy(e+1,i,s)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+uy([t[e],t[e+1]])+"] -> ("+uy([i,s])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if(vy(i,s,a)){by(null,null,a),this.logger.log(3,(()=>"Repeated command ("+uy([i,s])+") is dropped"));continue}by(i,s,this.cmdHistory),r=this.parseCmd(i,s),r||(r=this.parseMidrow(i,s)),r||(r=this.parsePAC(i,s)),r||(r=this.parseBackgroundAttributes(i,s))}else by(null,null,a);if(!r&&(o=this.parseChars(i,s),o)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(o)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}r||o||this.logger.log(2,(()=>"Couldn't parse cleaned data "+uy([i,s])+" orig: "+uy([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,s=this.channels[i];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),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const s=this.channels[i];return!!s&&(s.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+uy([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const s=e<=23?1:2;i=t>=64&&t<=95?1===s?ay[e]:ly[e]:1===s?ny[e]:dy[e];const r=this.channels[s];return!!r&&(r.setPAC(this.interpretPAC(i,t)),this.currentChannel=s,!0)}interpretPAC(e,t){let i;const s={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,s.underline=1==(1&i),i<=13?s.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(s.italics=!0,s.color="white"):s.indent=4*Math.floor((i-16)/2),s}parseChars(e,t){let i,s=null,r=null;if(e>=25?(i=2,r=e-8):(i=1,r=e),r>=17&&r<=19){let e;e=17===r?t+80:18===r?t+112:t+144,this.logger.log(2,(()=>"Special char '"+sy(e)+"' in channel "+i)),s=[e]}else e>=32&&e<=127&&(s=0===t?[e]:[e,t]);return s&&this.logger.log(3,(()=>"Char codes = "+uy(s).join(","))),s}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const s={};16===e||24===e?(i=Math.floor((t-32)/2),s.background=hy[i],t%2==1&&(s.background=s.background+"_semi")):45===t?s.background="transparent":(s.foreground="black",47===t&&(s.underline=!0));const r=e<=23?1:2;return this.channels[r].setBkgData(s),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var Sy=function(){if(null!=du&&du.VTTCue)return self.VTTCue;const 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;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function s(e){return i(t,e)}function r(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");b=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"positionAlign",r({},l,{get:function(){return v},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");v=t,this.hasBeenReset=!0}})),Object.defineProperty(n,"size",r({},l,{get:function(){return _},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");_=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"align",r({},l,{get:function(){return S},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");S=t,this.hasBeenReset=!0}})),n.displayState=void 0}return o.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},o}();class Ey{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function wy(e){function t(e,t,i,s){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(s||0)}const 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}class Ty{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let s=0;s=0&&i<=100)return this.set(e,i),!0}return!1}}function ky(e,t,i,s){const r=s?e.split(s):[e];for(const e in r){if("string"!=typeof r[e])continue;const s=r[e].split(i);if(2!==s.length)continue;t(s[0],s[1])}}const Ly=new Sy(0,0,""),Cy="middle"===Ly.align?"middle":"center";function Dy(e,t,i){const s=e;function r(){const t=wy(e);if(null===t)throw new Error("Malformed timestamp: "+s);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function o(){e=e.replace(/^\s+/,"")}if(o(),t.startTime=r(),o(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+s);e=e.slice(3),o(),t.endTime=r(),o(),function(e,t){const s=new Ty;ky(e,(function(e,t){let r;switch(e){case"region":for(let r=i.length-1;r>=0;r--)if(i[r].id===t){s.set(e,i[r].region);break}break;case"vertical":s.alt(e,t,["rl","lr"]);break;case"line":r=t.split(","),s.integer(e,r[0]),s.percent(e,r[0])&&s.set("snapToLines",!1),s.alt(e,r[0],["auto"]),2===r.length&&s.alt("lineAlign",r[1],["start",Cy,"end"]);break;case"position":r=t.split(","),s.percent(e,r[0]),2===r.length&&s.alt("positionAlign",r[1],["start",Cy,"end","line-left","line-right","auto"]);break;case"size":s.percent(e,t);break;case"align":s.alt(e,t,["start",Cy,"end","left","right"])}}),/:/,/\s/),t.region=s.get("region",null),t.vertical=s.get("vertical","");let r=s.get("line","auto");"auto"===r&&-1===Ly.line&&(r=-1),t.line=r,t.lineAlign=s.get("lineAlign","start"),t.snapToLines=s.get("snapToLines",!0),t.size=s.get("size",100),t.align=s.get("align",Cy);let o=s.get("position","auto");"auto"===o&&50===Ly.position&&(o="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=o}(e,t)}function xy(e){return e.replace(//gi,"\n")}class Ry{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Ey,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=xy(e);i>>0).toString()};function My(e,t,i){return By(e.toString())+By(t.toString())+By(i)}function Fy(e,t,i,s,r,o,a){const n=new Ry,l=Fu(new Uint8Array(e)).trim().replace(Py,"\n").split("\n"),d=[],h=t?function(e,t=1){return Dg(e,9e4,1/t)}(t.baseTime,t.timescale):0;let c,u="00:00.000",p=0,f=0,m=!0;n.oncue=function(e){const o=i[s];let a=i.ccOffset;const n=(p-h)/9e4;if(null!=o&&o.new&&(void 0!==f?a=i.ccOffset=o.start:function(e,t,i){let s=e[t],r=e[s.prevCC];if(!r||!r.new&&s.new)return e.ccOffset=e.presentationOffset=s.start,void(s.new=!1);for(;null!=(o=r)&&o.new;){var o;e.ccOffset+=s.start-r.start,s.new=!1,s=r,r=e[s.prevCC]}e.presentationOffset=i}(i,s,n)),n){if(!t)return void(c=new Error("Missing initPTS for VTT MPEGTS"));a=n-i.presentationOffset}const l=e.endTime-e.startTime,u=Mg(9e4*(e.startTime+a-f),9e4*r)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=My(e.startTime,e.endTime,m)),e.endTime>0&&d.push(e)},n.onparsingerror=function(e){c=e},n.onflush=function(){c?a(c):o(d)},l.forEach((e=>{if(m){if(Iy(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Iy(e,"LOCAL:")?u=e.slice(6):Iy(e,"MPEGTS:")&&(p=parseInt(e.slice(7)))}));try{f=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),s=parseInt(e.slice(-9,-7)),r=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(Fc(t)&&Fc(i)&&Fc(s)&&Fc(r)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*s,t+=36e5*r,t}(u)/1e3}catch(e){c=e}return}""===e&&(m=!1)}n.parse(e+"\n")})),n.flush()}const Uy="stpp.ttml.im1t",Oy=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Ny=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,jy={left:"start",center:"center",right:"end",start:"start",end:"end"};function Gy(e,t,i,s){const r=Ku(new Uint8Array(e),["mdat"]);if(0===r.length)return void s(new Error("Could not parse IMSC1 mdat"));const o=r.map((e=>Fu(e))),a=function(e,t,i=1,s=!1){return Dg(e,t,1/i,s)}(t.baseTime,1,t.timescale);try{o.forEach((e=>i(function(e,t){const i=new DOMParser,s=i.parseFromString(e,"text/xml").getElementsByTagName("tt")[0];if(!s)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},o=Object.keys(r).reduce(((e,t)=>(e[t]=s.getAttribute(`ttp:${t}`)||r[t],e)),{}),a="preserve"!==s.getAttribute("xml:space"),n=Wy(zy(s,"styling","style")),l=Wy(zy(s,"layout","region")),d=zy(s,"body","[begin]");return[].map.call(d,(e=>{const i=Vy(e,a);if(!i||!e.hasAttribute("begin"))return null;const s=Jy(e.getAttribute("begin"),o),r=Jy(e.getAttribute("dur"),o);let d=Jy(e.getAttribute("end"),o);if(null===s)throw Hy(e);if(null===d){if(null===r)throw Hy(e);d=s+r}const h=new Sy(s-t,d-t,i);h.id=My(h.startTime,h.endTime,h.text);const c=function(e,t,i){const s="http://www.w3.org/ns/ttml#styling";let r=null;const o=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(r=i[a]);return o.reduce(((i,o)=>{const a=$y(t,s,o)||$y(e,s,o)||$y(r,s,o);return a&&(i[o]=a),i}),{})}(l[e.getAttribute("region")],n[e.getAttribute("style")],n),{textAlign:u}=c;if(u){const e=jy[u];e&&(h.lineAlign=e),h.align=u}return Mc(h,c),h})).filter((e=>null!==e))}(e,a))))}catch(e){s(e)}}function zy(e,t,i){const s=e.getElementsByTagName(t)[0];return s?[].slice.call(s.querySelectorAll(i)):[]}function Wy(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function Vy(e,t){return[].slice.call(e.childNodes).reduce(((e,i,s)=>{var r;return"br"===i.nodeName&&s?e+"\n":null!=(r=i.childNodes)&&r.length?Vy(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function $y(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function Hy(e){return new Error(`Could not parse ttml timestamp ${e}`)}function Jy(e,t){if(!e)return null;let i=wy(e);return null===i&&(Oy.test(e)?i=function(e,t){const i=Oy.exec(e),s=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+s/t.frameRate}(e,t):Ny.test(e)&&(i=function(e,t){const i=Ny.exec(e),s=Number(i[1]);switch(i[2]){case"h":return 3600*s;case"m":return 60*s;case"ms":return 1e3*s;case"f":return s/t.frameRate;case"t":return s/t.tickRate}return s}(e,t))),i}function qy(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function Ky(e,t){return!!e&&e.kind===qy(t)&&Qg(t,e)}class Yy{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(Nc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(Nc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Nc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Nc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Nc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Nc.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(Nc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(Nc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Nc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Nc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Nc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Nc.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&Fc(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&Hc.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,Yy.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const 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}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let s=e.length-1;const r=Math.max(t,i);for(let t=0;t=r||i.height>=r)&&(o=i,!(a=e[t+1])||o.width!==a.width||o.height!==a.height)){s=t;break}}var o,a;return s}}const Qy="[eme]";class Xy{constructor(e){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=Xy.CDMCleanupPromise?[Xy.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=Hc.debug.bind(Hc,Qy),this.log=Hc.log.bind(Hc,Qy),this.warn=Hc.warn.bind(Hc,Qy),this.error=Hc.error.bind(Hc,Qy),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const e=this.config;e.requestMediaKeySystemAccessFunc=null,e.licenseXhrSetup=e.licenseResponseCallback=void 0,e.drmSystems=e.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Nc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Nc.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Nc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Nc.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,s=t[e];if(s)return s.licenseUrl;if(e===hu.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,s=t.map((e=>e.audioCodec)).filter(i),r=t.map((e=>e.videoCodec)).filter(i);return s.length+r.length===0&&r.push("avc1.42e01e"),new Promise(((t,i)=>{const o=e=>{const a=e.shift();this.getMediaKeysPromise(a,s,r).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?o(e):i(t instanceof Zy?t:new Zy({type:jc.KEY_SYSTEM_ERROR,details:Gc.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};o(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===bu&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const s=function(e,t,i,s){let r;switch(e){case hu.FAIRPLAY:r=["cenc","sinf"];break;case hu.WIDEVINE:case hu.PLAYREADY:r=["cenc"];break;case hu.CLEARKEY:r=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,s){return[{initDataTypes:e,persistentState:s.persistentState||"optional",distinctiveIdentifier:s.distinctiveIdentifier||"optional",sessionTypes:s.sessionTypes||[s.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:s.audioRobustness||"",encryptionScheme:s.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:s.videoRobustness||"",encryptionScheme:s.videoEncryptionScheme||null})))}]}(r,t,i,s)}(e,t,i,this.config.drmSystemOptions),r=this.keySystemAccessPromises[e];let o=null==r?void 0:r.keySystemAccess;if(!o){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(s)}`),o=this.requestMediaKeySystemAccess(e,s);const t=this.keySystemAccessPromises[e]={keySystemAccess:o};return o.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),o.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const s=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),s.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return o.then((()=>r.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${Nu(e.keyId||[])}`);const s=i.createSession(),r={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:s,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),s=this.getKeyIdString(t),r="cenc";this.keyIdToKeySessionPromise[s]=this.generateRequestWithPreferredKeySession(i,r,t.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(e)}getKeyIdString(e){if(!e)throw new Error("Could not read keyId of undefined decryptdata");if(null===e.keyId)throw new Error("keyId is null");return Nu(e.keyId)}updateKeySession(e,t){var i;const s=e.mediaKeysSession;return this.log(`Updating key-session "${s.sessionId}" for keyID ${Nu((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),s.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const s=Au(this.config),r=e.map(mu).filter((e=>!!e&&-1!==s.indexOf(e)));return this.getKeySystemSelectionPromise(r).then((({keySystem:e})=>{const s=yu(e);s?t(s):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),s=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${s}`);let r=this.keyIdToKeySessionPromise[i];return r||(r=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:r})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${s}`),this.attemptSetMediaKeys(i,r).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:r,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),r.catch((e=>this.handleError(e)))),r}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof Zy?this.hls.trigger(Nc.ERROR,e.data):this.hls.trigger(Nc.ERROR,{type:jc.KEY_SYSTEM_ERROR,details:Gc.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=mu(e.keyFormat),i=t?[t]:Au(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=Au(this.config)),0===e.length)throw new Zy({type:jc.KEY_SYSTEM_ERROR,details:Gc.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(e)}_onMediaEncrypted(e){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let s,r;if("sinf"===t&&this.config.drmSystems[hu.FAIRPLAY]){const e=Wu(new Uint8Array(i));try{const t=au(JSON.parse(e).sinf),i=ip(new Uint8Array(t));if(!i)return;s=i.subarray(8,24),r=hu.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),s=i.getUint32(0);if(e.byteLength!==s&&s>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=Nu(new Uint8Array(e,12,16));const r=i.getUint32(28);if(0===t.version){if(s-32this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-key-match")));break}}l||(l=a[o]=this.getKeySystemSelectionPromise([r]).then((({keySystem:e,mediaKeys:r})=>{var a;this.throwIfDestroyed();const n=new cp("ISO-23001-7",o,null!=(a=yu(e))?a:"");return n.pssh=new Uint8Array(i),n.keyId=s,this.attemptSetMediaKeys(e,r).then((()=>{this.throwIfDestroyed();const s=this.createMediaKeySessionContext({decryptdata:n,keySystem:e,mediaKeys:r});return this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const s=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(s),s.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(s),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,s){var r,o;const a=null==(r=this.config.drmSystems)||null==(o=r[e.keySystem])?void 0:o.generateRequest;if(a)try{const s=a.call(this.hls,t,i,e);if(!s)throw new Error("Invalid response from configured generateRequest filter");t=s.initDataType,i=e.decryptdata.pssh=s.initData?new Uint8Array(s.initData):null}catch(e){var n;if(this.warn(e.message),null!=(n=this.hls)&&n.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${s}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${s}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const d=new Jg,h=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void d.emit("error",new Error("invalid state"));const{messageType:s,message:r}=t;this.log(`"${s}" message event for session "${i.sessionId}" message size: ${r.byteLength}`),"license-request"===s||"license-renewal"===s?this.renewLicense(e,r).catch((e=>{this.handleError(e),d.emit("error",e)})):"license-release"===s?e.keySystem===hu.FAIRPLAY&&(this.updateKeySession(e,lu("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${s}"`)},c=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void d.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;d.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",h),e.mediaKeysSession.addEventListener("keystatuseschange",c);const u=new Promise(((e,t)=>{d.on("error",t),d.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new Zy({type:jc.KEY_SYSTEM_ERROR,details:Gc.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new Zy({type:jc.KEY_SYSTEM_ERROR,details:Gc.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new Zy({type:jc.KEY_SYSTEM_ERROR,details:Gc.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw d.removeAllListeners(),this.removeSession(e),t})).then((()=>(d.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${Nu("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${Nu(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),s=this.getServerCertificateUrl(e);return s?(this.log(`Fetching server certificate for "${e}"`),new Promise(((r,o)=>{const a={responseType:"arraybuffer",url:s},n=t.certLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{r(e.data)},onError:(t,i,r,n)=>{o(new Zy({type:jc.KEY_SYSTEM_ERROR,details:Gc.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:Pc({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${s}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,r)=>{o(new Zy({type:jc.KEY_SYSTEM_ERROR,details:Gc.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${s})`))},onAbort:(e,t,i)=>{o(new Error("aborted"))}};i.load(a,l,d)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((s,r)=>{e.setServerCertificate(i).then((r=>{this.log(`setServerCertificate ${r?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),s(e)})).catch((e=>{r(new Zy({type:jc.KEY_SYSTEM_ERROR,details:Gc.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new Zy({type:jc.KEY_SYSTEM_ERROR,details:Gc.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const s=(new DOMParser).parseFromString(i,"application/xml"),r=s.querySelectorAll("HttpHeader");if(r.length>0){let t;for(let i=0,s=r.length;i in key message");return lu(atob(l))}setupLicenseXHR(e,t,i,s){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return r.call(this.hls,e,t,i,s)})).catch((o=>{if(!i.decryptdata)throw o;return e.open("POST",t,!0),r.call(this.hls,e,t,i,s)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||s}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:s}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((s,r)=>{const o=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${o}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return r(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,o,e)}catch(e){this.error(e)}s(t)}else{const n=i.errorRetry,l=n?n.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)r(new Zy({type:jc.KEY_SYSTEM_ERROR,details:Gc.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:o,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${o}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(s,r)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,o,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==hu.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const e=this.media,t=this.mediaKeySessions;e&&(e.removeEventListener("encrypted",this.onMediaEncrypted),e.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},cp.clearKeyUriToKeyIdMap();const i=t.length;Xy.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=e;if(t){this.log(`Remove licenses and keys and close session ${t.sessionId}`),e._onmessage&&(t.removeEventListener("message",e._onmessage),e._onmessage=void 0),e._onkeystatuseschange&&(t.removeEventListener("keystatuseschange",e._onkeystatuseschange),e._onkeystatuseschange=void 0),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const s=this.mediaKeySessions.indexOf(e);return s>-1&&this.mediaKeySessions.splice(s,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}Xy.CDMCleanupPromise=void 0;class Zy extends Error{constructor(e,t){super(t),this.data=void 0,e.error||(e.error=new Error(t)),this.data=e,e.err=e.error}}var eA,tA,iA;!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"}(eA||(eA={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(tA||(tA={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(iA||(iA={}));const sA={[iA.OBJECT]:["br","d","ot","tb"],[iA.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[iA.SESSION]:["cid","pr","sf","sid","st","v"],[iA.STATUS]:["bs","rtp"]};class rA{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof rA?e:new rA(e)))),this.value=e,this.params=t}}class oA{constructor(e){this.description=void 0,this.description=e}}function aA(e,t,i,s){return new Error(`failed to ${e} "${r=t,Array.isArray(r)?JSON.stringify(r):r instanceof Map?"Map{}":r instanceof Set?"Set{}":"object"==typeof r?JSON.stringify(r):String(r)}" as ${i}`,{cause:s});var r}const nA="Bare Item";const lA=/[\x00-\x1f\x7f]+/;function dA(e,t,i){return aA("serialize",e,t,i)}function hA(e){if(!1===ArrayBuffer.isView(e))throw dA(e,"Byte Sequence");return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function cA(e){if(function(e){return e<-999999999999999||99999999999999912)throw dA(e,"Decimal");const i=t.toString();return i.includes(".")?i:`${i}.0`}function fA(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw dA(t,"Token");return t}function mA(e){switch(typeof e){case"number":if(!Fc(e))throw dA(e,nA);return Number.isInteger(e)?cA(e):pA(e);case"string":return function(e){if(lA.test(e))throw dA(e,"String");return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return fA(e);case"boolean":return function(e){if("boolean"!=typeof e)throw dA(e,"Boolean");return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${cA(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return hA(e);if(e instanceof oA)return fA(e);default:throw dA(e,nA)}}function gA(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw dA(e,"Key");return e}function yA(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${gA(e)}`:`;${gA(e)}=${mA(t)}`)).join("")}function AA(e){return e instanceof rA?`${mA(e.value)}${yA(e.params)}`:mA(e)}function bA(e,t={whitespace:!0}){if("object"!=typeof e)throw dA(e,"Dict");const i=e instanceof Map?e.entries():Object.entries(e),s=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof rA==!1&&(t=new rA(t));let i=gA(e);var s;return!0===t.value?i+=yA(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(s=t).value.map(AA).join(" ")})${yA(s.params)}`:i+=AA(t)),i})).join(`,${s}`)}const vA=e=>Math.round(e),_A=e=>100*vA(e/100),SA={br:vA,d:vA,bl:_A,dl:_A,mtp:_A,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),s=new URL(t);if(i.origin!==s.origin)return e;const r=i.pathname.split("/").slice(1),o=s.pathname.split("/").slice(1,-1);for(;r[0]===o[0];)r.shift(),o.shift();for(;o.length;)o.shift(),r.unshift("..");return r.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:_A,tb:vA};function EA(e,t){const i={};if(null==e||"object"!=typeof e)return i;const s=Object.keys(e).sort(),r=Mc({},SA,null==t?void 0:t.formatters),o=null==t?void 0:t.filter;return s.forEach((s=>{if(null!=o&&o(s))return;let a=e[s];const n=r[s];n&&(a=n(a,t)),"v"===s&&1===a||"pr"==s&&1===a||(e=>"number"==typeof e?Fc(e):null!=e&&""!==e&&!1!==e)(a)&&((e=>"ot"===e||"sf"===e||"st"===e)(s)&&"string"==typeof a&&(a=new oA(a)),i[s]=a)})),i}function wA(e,t={}){return e?function(e,t){return bA(e,t)}(EA(e,t),Mc({whitespace:!1},t)):""}function TA(e,t,i){return Mc(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),s=Object.entries(sA).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),r=i.reduce(((e,t)=>{var i;const[r,o]=t,a=(null==(i=s.find((e=>e[1].includes(r))))?void 0:i[0])||iA.REQUEST;return null!=e[a]||(e[a]={}),e[a][r]=o,e}),{});return Object.entries(r).reduce(((e,[i,s])=>(e[i]=wA(s,t),e)),{})}(t,i))}const kA=/CMCD=[^&#]+/;function LA(e,t,i){const s=function(e,t={}){if(!e)return"";const i=wA(e,t);return`CMCD=${encodeURIComponent(i)}`}(t,i);if(!s)return e;if(kA.test(e))return e.replace(kA,s);const r=e.includes("?")?"&":"?";return`${e}${r}${s}`}function CA(e,t,i,s){e&&Object.keys(t).forEach((r=>{const o=e.filter((e=>e.groupId===r)).map((e=>{const o=Mc({},e);return o.details=void 0,o.attrs=new Kc(o.attrs),o.url=o.attrs.URI=DA(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),o.groupId=o.attrs["GROUP-ID"]=t[r],o.attrs["PATHWAY-ID"]=s,o}));e.push(...o)}))}function DA(e,t,i,s){const{HOST:r,PARAMS:o,[i]:a}=s;let n;t&&(n=null==a?void 0:a[t],n&&(e=n));const l=new self.URL(e);return r&&!n&&(l.host=r),o&&Object.keys(o).sort().forEach((e=>{e&&l.searchParams.set(e,o[e])})),l.href}const xA=/^age:\s*[\d.]+\s*$/im;class RA{constructor(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=e&&e.xhrSetup||null,this.stats=new Xc,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,s=this.stats;s.loading.first=0,s.loaded=0,s.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return r(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),r(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,s)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const s=t.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:o}=i.loadPolicy;if(s)for(const t in s)e.setRequestHeader(t,s[t]);t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,self.clearTimeout(this.requestTimeout),i.timeout=r&&Fc(r)?r:o,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const s=t.readyState,r=this.config;if(!i.aborted&&s>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===s)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const s=t.status,o="text"!==t.responseType;if(s>=200&&s<300&&(o&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const r=o?t.response:t.responseText,a="arraybuffer"===t.responseType?r.byteLength:r.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const n=this.callbacks.onProgress;if(n&&n(i,e,r,t),!this.callbacks)return;const l={url:t.responseURL,data:r,code:s};this.callbacks.onSuccess(l,i,e,t)}else{const o=r.loadPolicy.errorRetry;Bf(o,i.retry,!1,{url:e.url,data:void 0,code:s})?this.retry(o):(Hc.error(`${s} while loading ${e.url}`),this.callbacks.onError({code:s,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(Bf(e,this.stats.retry,!0))this.retry(e);else{var t;Hc.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=Pf(e,i.retry),i.retry++,Hc.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)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&xA.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const PA=/(\d+)-(\d+)\/(\d+)/;class IA{constructor(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||BA,this.controller=new self.AbortController,this.stats=new Xc}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now();const r=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Mc({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),o=i.onProgress,a="arraybuffer"===e.responseType,n=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:d}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,r),self.clearTimeout(this.requestTimeout),t.timeout=l&&Fc(l)?l:d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),t.timeout),self.fetch(this.request).then((r=>{this.response=this.loader=r;const n=Math.max(self.performance.now(),s.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),d-(n-s.loading.start)),!r.ok){const{status:e,statusText:t}=r;throw new MA(t||"fetch, bad network response",e,r)}return s.loading.first=n,s.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=PA.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(Fc(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(r.headers)||s.total,o&&Fc(t.highWaterMark)?this.loadProgressively(r,s,e,t.highWaterMark,o):a?r.arrayBuffer():"json"===e.responseType?r.json():r.text()})).then((r=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),s.loading.end=Math.max(self.performance.now(),s.loading.first);const l=r[n];l&&(s.loaded=s.total=l);const d={url:a.url,data:r,code:a.status};o&&!Fc(t.highWaterMark)&&o(s,e,r,a),i.onSuccess(d,s,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),s.aborted)return;const r=t&&t.code||0,o=t?t.message:null;i.onError({code:r,text:o},e,t?t.details:null,s)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,s=0,r){const o=new Wm,a=e.body.getReader(),n=()=>a.read().then((a=>{if(a.done)return o.dataLength&&r(t,i,o.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,d=l.length;return t.loaded+=d,d=s&&r(t,i,o.flush(),e)):r(t,i,l,e),n()})).catch((()=>Promise.reject()));return n()}}function BA(e,t){return new self.Request(e.url,t)}class MA extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const FA=/\s/,UA={newCue(e,t,i,s){const r=[];let o,a,n,l,d;const h=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const s=xy(d.trim()),p=My(t,i,s);null!=e&&null!=(c=e.cues)&&c.getCueById(p)||(a=new h(t,i,s),a.id=p,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),r.push(a))}return e&&r.length&&(r.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),r.forEach((t=>Zp(e,t)))),r}},OA=Pc(Pc({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:RA,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:class{constructor(e){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:s,media:r}=i;if(!e||!r)return;const o=performance.now(),a=t?t.stats:e.stats,n=t?t.duration:e.duration,l=o-a.loading.start,d=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=d)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!s||r.paused||!r.playbackRate||!r.readyState)return;const h=i.mainForwardBufferInfo;if(null===h)return;const c=this.bwEstimator.getEstimateTTFB(),u=Math.abs(r.playbackRate);if(l<=Math.max(c,n/(2*u)*1e3))return;const p=h.len/u,f=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&f>-1,g=this.getBwEstimate(),y=i.levels,A=y[e.level],b=a.total||Math.max(a.loaded,Math.round(n*A.averageBitrate/8));let v=m?l-f:l;v<1&&m&&(v=Math.min(l,8*a.loaded/g));const _=m?1e3*a.loaded/v:0,S=_?(b-a.loaded)/_:8*b/g+c/1e3;if(S<=p)return;const E=_?8*_:g;let w,T=Number.POSITIVE_INFINITY;for(w=e.level-1;w>d;w--){const e=y[w].maxBitrate;if(T=this.getTimeToLoadFrag(c/1e3,E,n*e,!y[w].details),T=S)return;if(T>10*n)return;i.nextLoadLevel=i.nextAutoLevel=w,m?this.bwEstimator.sample(l-Math.min(c,f),a.loaded):this.bwEstimator.sampleTTFB(l);const k=y[w].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>k&&this.resetEstimator(k),this.clearTimer(),Hc.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${p.toFixed(3)} s\n Estimated load time for current fragment: ${S.toFixed(3)} s\n Estimated load time for down switch fragment: ${T.toFixed(3)} s\n TTFB estimate: ${0|f} ms\n Current BW estimate: ${Fc(g)?0|g:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${w} @ ${0|k} bps`),i.trigger(Nc.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(Hc.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new qf(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Nc.FRAG_LOADING,this.onFragLoading,this),e.on(Nc.FRAG_LOADED,this.onFragLoaded,this),e.on(Nc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Nc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Nc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Nc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Nc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(Nc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Nc.FRAG_LOADING,this.onFragLoading,this),e.off(Nc.FRAG_LOADED,this.onFragLoaded,this),e.off(Nc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Nc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Nc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Nc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Nc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(Nc.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(e,t){const i=t.frag;if(!this.ignoreFragment(i)){var s;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(s=t.part)?s:null;this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(e,t){this.clearTimer()}onError(e,t){if(!t.fatal)switch(t.details){case Gc.BUFFER_ADD_CODEC_ERROR:case Gc.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case Gc.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:s}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=s?s.stats:e.stats,r=t-i.loading.start,o=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&o>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(r-Math.min(e,o),i.loaded)}else this.bwEstimator.sampleTTFB(r)}break}}}getTimeToLoadFrag(e,t,i,s){return e+i/t+(s?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:s}=t.stats,r=s.end-s.start;Fc(r)&&(this.lastLevelLoadSec=r/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const s=i?i.stats:t.stats;if(t.type===Hp&&this.bwEstimator.sampleTTFB(s.loading.first-s.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,r=this.hls.levels[t.level],o=(r.loaded?r.loaded.bytes:0)+s.loaded,a=(r.loaded?r.loaded.duration:0)+e;r.loaded={bytes:o,duration:a},r.realBitrate=Math.round(8*o/a)}if(t.bitrateTest){const e={stats:s,frag:t,part:i,id:t.type};this.onFragBuffered(Nc.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:s}=t,r=null!=s&&s.stats.loaded?s.stats:i.stats;if(r.aborted)return;if(this.ignoreFragment(i))return;const o=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(o,r.loaded),r.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=o/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==Hp||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),s=this.hls.config.maxStarvationDelay,r=this.findBestLevel(i,t,e,0,s,1,1);if(r>-1)return r;const o=this.hls.firstLevel,a=Math.min(Math.max(o,t),e);return Hc.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${o} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const s=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,s)&&t[e].loadError<=t[s].loadError)return e}return this._nextAutoLevel=s,this.nextAutoLevelKey=this.getAutoLevelKey(),s}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:s,config:r,minAutoLevel:o}=i,a=t?t.duration:e?e.duration:0,n=this.getBwEstimate(),l=this.getStarvationDelay();let d=r.abrBandWidthFactor,h=r.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(n,o,s,l,0,d,h);if(e>=0)return e}let c=a?Math.min(a,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){c=(a?Math.min(a,r.maxLoadingDelay):r.maxLoadingDelay)-e,Hc.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),d=h=1}}const u=this.findBestLevel(n,o,s,l,c,d,h);if(Hc.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const p=i.levels[o],f=i.levels[i.loadLevel];return(null==p?void 0:p.bitrate)<(null==f?void 0:f.bitrate)?o:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,s=e.mainForwardBufferInfo;return(s?s.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,s,r,o,a){var n;const l=s+r,d=this.lastLoadedFragLevel,h=-1===d?this.hls.firstLevel:d,{fragCurrent:c,partCurrent:u}=this,{levels:p,allAudioTracks:f,loadLevel:m,config:g}=this.hls;if(1===p.length)return 0;const y=p[h],A=!(null==y||null==(n=y.details)||!n.live),b=-1===m||-1===d;let v,_="SDR",S=(null==y?void 0:y.frameRate)||0;const{audioPreference:E,videoPreference:w}=g,T=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const s=t.channels||"2";return i.channels[s]=(i.channels[s]||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:{}})}(f));if(b){if(-1!==this.firstSelection)return this.firstSelection;const s=this.codecTiers||(this.codecTiers=function(e,t,i,s){return e.slice(i,s+1).reduce(((e,i)=>{if(!i.codecSet)return e;const s=i.audioGroups;let r=e[i.codecSet];r||(e[i.codecSet]=r={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!s,fragmentError:0}),r.minBitrate=Math.min(r.minBitrate,i.bitrate);const o=Math.min(i.height,i.width);return r.minHeight=Math.min(r.minHeight,o),r.minFramerate=Math.min(r.minFramerate,i.frameRate),r.maxScore=Math.max(r.maxScore,i.score),r.fragmentError+=i.fragmentError,r.videoRanges[i.videoRange]=(r.videoRanges[i.videoRange]||0)+1,s&&s.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(r.hasDefaultAudio=r.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{r.channels[e]=(r.channels[e]||0)+i.channels[e]})))})),e}),{})}(p,T,t,i)),r=function(e,t,i,s,r){const o=Object.keys(e),a=null==s?void 0:s.channels,n=null==s?void 0:s.audioCodec,l=a&&2===parseInt(a);let d=!0,h=!1,c=1/0,u=1/0,p=1/0,f=0,m=[];const{preferHDR:g,allowedVideoRanges:y}=Zf(t,r);for(let t=o.length;t--;){const i=e[o[t]];d=i.channels[2]>0,c=Math.min(c,i.minHeight),u=Math.min(u,i.minFramerate),p=Math.min(p,i.minBitrate);const s=y.filter((e=>i.videoRanges[e]>0));s.length>0&&(h=!0,m=s)}c=Fc(c)?c:0,u=Fc(u)?u:0;const A=Math.max(1080,c),b=Math.max(30,u);p=Fc(p)?p:i,i=Math.max(p,i),h||(t=void 0,m=[]);const v=o.reduce(((t,s)=>{const r=e[s];if(s===t)return t;if(r.minBitrate>i)return em(s,`min bitrate of ${r.minBitrate} > current estimate of ${i}`),t;if(!r.hasDefaultAudio)return em(s,"no renditions with default or auto-select sound found"),t;if(n&&s.indexOf(n.substring(0,4))%5!=0)return em(s,`audio codec preference "${n}" not found`),t;if(a&&!l){if(!r.channels[a])return em(s,`no renditions with ${a} channel sound found (channels options: ${Object.keys(r.channels)})`),t}else if((!n||l)&&d&&0===r.channels[2])return em(s,"no renditions with stereo sound found"),t;return r.minHeight>A?(em(s,`min resolution of ${r.minHeight} > maximum of ${A}`),t):r.minFramerate>b?(em(s,`min framerate of ${r.minFramerate} > maximum of ${b}`),t):m.some((e=>r.videoRanges[e]>0))?r.maxScore=wp(t)||r.fragmentError>e[t].fragmentError)?t:(f=r.maxScore,s):(em(s,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0);return{codecSet:v,videoRanges:m,preferHDR:g,minFramerate:u,minBitrate:p}}(s,_,e,E,w),{codecSet:o,videoRanges:a,minFramerate:n,minBitrate:l,preferHDR:d}=r;v=o,_=d?a[a.length-1]:a[0],S=n,e=Math.max(e,l),Hc.log(`[abr] picked start tier ${JSON.stringify(r)}`)}else v=null==y?void 0:y.codecSet,_=null==y?void 0:y.videoRange;const k=u?u.duration:c?c.duration:0,L=this.bwEstimator.getEstimateTTFB()/1e3,C=[];for(let n=i;n>=t;n--){var D;const t=p[n],c=n>h;if(!t)continue;if(g.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&Qf(t,T,_,S,e,E)?(t.supportedPromise=Xf(t,T,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,s=i.indexOf(t);e.error?Hc.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${s} ${JSON.stringify(e)}`):e.supported||(Hc.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${s} ${JSON.stringify(e)}`),s>-1&&i.length>1&&(Hc.log(`[abr] Removing unsupported level ${s}`),this.hls.removeLevel(s)))}))):t.supportedResult=Kf}if(v&&t.codecSet!==v||_&&t.videoRange!==_||c&&S>t.frameRate||!c&&S>0&&S=2*k&&0===r?p[n].averageBitrate:p[n].maxBitrate,P=this.getTimeToLoadFrag(L,x,R*w,void 0===f);if(x>=R&&(n===d||0===t.loadError&&0===t.fragmentError)&&(P<=L||!Fc(P)||A&&!this.bitrateTestDelay||P${n} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-R)} ttfb:${L.toFixed(1)} avgDuration:${w.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${P.toFixed(1)} firstSelection:${b} codecSet:${v} videoRange:${_} hls.loadLevel:${m}`)),b&&(this.firstSelection=n),n}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,s=Math.min(Math.max(e,i),t);this._nextAutoLevel!==s&&(this.nextAutoLevelKey="",this._nextAutoLevel=s)}},bufferController:class{constructor(e){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(Nc.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&Hc.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=Ap(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=Hc.log.bind(Hc,t),this.warn=Hc.warn.bind(Hc,t),this.error=Hc.error.bind(Hc,t),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){const{hls:e}=this;e.on(Nc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Nc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Nc.BUFFER_RESET,this.onBufferReset,this),e.on(Nc.BUFFER_APPENDING,this.onBufferAppending,this),e.on(Nc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Nc.BUFFER_EOS,this.onBufferEos,this),e.on(Nc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Nc.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(Nc.FRAG_PARSED,this.onFragParsed,this),e.on(Nc.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(Nc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Nc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Nc.BUFFER_RESET,this.onBufferReset,this),e.off(Nc.BUFFER_APPENDING,this.onBufferAppending,this),e.off(Nc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Nc.BUFFER_EOS,this.onBufferEos,this),e.off(Nc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Nc.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(Nc.FRAG_PARSED,this.onFragParsed,this),e.off(Nc.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Zg(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(e,t){let i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,s=Ap(this.appendSource);if(i&&s){var r;const e=this.mediaSource=new s;this.log(`created media source: ${null==(r=e.constructor)?void 0:r.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const s=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||s&&e instanceof s,ty(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;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)),e&&(e.removeEventListener("emptied",this._onMediaEmptied),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&ty(e),e.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(Nc.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(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)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,s=Object.keys(t);if(s.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var s;const{id:r,codec:o,levelCodec:a,container:n,metadata:l}=t[e],d=Cp(i.codec,i.levelCodec),h=null==d?void 0:d.replace(ey,"$1");let c=Cp(o,a);const u=null==(s=c)?void 0:s.replace(ey,"$1");if(c&&h!==u){"audio"===e.slice(0,5)&&(c=Lp(c,this.appendSource));const t=`${n};codecs=${c}`;this.appendChangeType(e,t),this.log(`switching codec ${d} to ${c}`),this.tracks[e]={buffer:i.buffer,codec:o,container:n,levelCodec:a,metadata:l,id:r}}}}else this.pendingTracks[e]=t[e]})),i)return;const r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${s.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,s={execute:()=>{const s=this.sourceBuffer[e];s&&(this.log(`changing ${e} sourceBuffer type to ${t}`),s.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(s,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:s,tracks:r}=this,{data:o,type:a,frag:n,part:l,chunkMeta:d}=t,h=d.buffering[a],c=self.performance.now();h.start=c;const u=n.stats.buffering,p=l?l.stats.buffering:null;0===u.start&&(u.start=c),p&&0===p.start&&(p.start=c);const f=r.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==f?void 0:f.container)&&(m=!this.lastMpegAudioChunk||1===d.id||this.lastMpegAudioChunk.sn!==d.sn,this.lastMpegAudioChunk=d);const g=n.start,y={execute:()=>{if(h.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=g-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${g} (delta: ${t}) sn: ${n.sn})`),e.timestampOffset=g)}}this.appendExecutor(o,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();h.executeEnd=h.end=e,0===u.first&&(u.first=e),p&&0===p.first&&(p.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=pm.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(Nc.BUFFER_APPENDED,{type:a,frag:n,part:l,chunkMeta:d,parent:n.type,timeRanges:i})},onError:e=>{const t={type:jc.MEDIA_ERROR,parent:n.type,details:Gc.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:n,part:l,chunkMeta:d,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=Gc.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=Gc.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(Nc.ERROR,t)}};s.append(y,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,s=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(Nc.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(s(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(s(e),e)}))}onFragParsed(e,t){const{frag:i,part:s}=t,r=[],o=s?s.elementaryStreams:i.elementaryStreams;o[tu]?r.push("audiovideo"):(o[Zc]&&r.push("audio"),o[eu]&&r.push("video"));0===r.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,s&&(s.stats.buffering.end=e);const t=s?s.stats:i.stats;this.hls.trigger(Nc.FRAG_BUFFERED,{frag:i,part:s,stats:t,id:i.type})}),r)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const s=this.sourceBuffer[i];return!s||t.type&&t.type!==i||(s.ending=!0,s.ended||(s.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(s&&!s.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const s=e.config,r=i.currentTime,o=t.levelTargetDuration,a=t.live&&null!==s.liveBackBufferLength?s.liveBackBufferLength:s.backBufferLength;if(Fc(a)&&a>0){const e=Math.max(a,o),t=Math.floor(r/o)*o-e;this.flushBackBuffer(r,o,t)}if(Fc(s.frontBufferFlushThreshold)&&s.frontBufferFlushThreshold>0){const e=Math.max(s.maxBufferLength,s.frontBufferFlushThreshold),t=Math.max(e,o),i=Math.floor(r/o)*o+t;this.flushFrontBuffer(r,o,i)}}flushBackBuffer(e,t,i){const{details:s,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((o=>{const a=r[o];if(a){const r=pm.getBuffered(a);if(r.length>0&&i>r.start(0)){if(this.hls.trigger(Nc.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=s&&s.live)this.hls.trigger(Nc.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&r.end(r.length-1)-e<2*t)return void this.log(`Cannot flush ${o} back buffer while SourceBuffer is in ended state`);this.hls.trigger(Nc.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:o})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((r=>{const o=s[r];if(o){const s=pm.getBuffered(o),a=s.length;if(a<2)return;const n=s.start(a-1),l=s.end(a-1);if(i>n||e>=n&&e<=l)return;if(o.ended&&e-l<2*t)return void this.log(`Cannot flush ${r} front buffer while SourceBuffer is in ended state`);this.hls.trigger(Nc.BUFFER_FLUSHING,{startOffset:n,endOffset:1/0,type:r})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:s}=this,r=e.fragments[0].start+e.totalduration,o=i.duration,a=Fc(s.duration)?s.duration:0;e.live&&t.config.liveDurationInfinity?(s.duration=1/0,this.updateSeekableRange(e)):(r>a&&r>o||!Fc(o))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),s.duration=r)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const s=Math.max(0,i[0].start),r=Math.max(s,s+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${s}-${r}.`),t.setLiveSeekableRange(s,r)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,s=Object.keys(i).length;if(s&&(!e||2===s||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(Nc.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const r in e)if(!t[r]){var s;const o=e[r];if(!o)throw Error(`source buffer exists for track ${r}, however track does not`);let a=-1===(null==(s=o.levelCodec)?void 0:s.indexOf(","))?o.levelCodec:o.codec;a&&"audio"===r.slice(0,5)&&(a=Lp(a,this.appendSource));const n=`${o.container};codecs=${a}`;this.log(`creating sourceBuffer(${n})`);try{const e=t[r]=i.addSourceBuffer(n),s=r;this.addBufferListener(s,"updatestart",this._onSBUpdateStart),this.addBufferListener(s,"updateend",this._onSBUpdateEnd),this.addBufferListener(s,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(s,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(Nc.BUFFER_FLUSHED,{type:r})})),this.tracks[r]={buffer:e,codec:a,container:o.container,levelCodec:o.levelCodec,metadata:o.metadata,id:o.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:r,mimeType:n})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const s=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${s}`,t),this.hls.trigger(Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:s,fatal:!1});const r=this.operationQueue.current(e);r&&r.onError(s)}removeExecutor(e,t,i){const{media:s,mediaSource:r,operationQueue:o,sourceBuffer:a}=this,n=a[e];if(!s||!r||!n)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void o.shiftAndExecuteNext(e);const l=Fc(s.duration)?s.duration:1/0,d=Fc(r.duration)?r.duration:1/0,h=Math.max(0,t),c=Math.min(i,l,d);c>h&&(!n.ending||n.ended)?(n.ended=!1,this.log(`Removing [${h},${c}] from the ${e} SourceBuffer`),n.remove(h,c)):o.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)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`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,s=t.map((e=>i.appendBlocker(e)));Promise.all(s).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const s=this.sourceBuffer[e];if(!s)return;const r=i.bind(this,e);this.listeners[e].push({event:t,listener:r}),s.addEventListener(t,r)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:Yy,errorController:class{constructor(e){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=e,this.log=Hc.log.bind(Hc,"[info]:"),this.warn=Hc.warn.bind(Hc,"[warning]:"),this.error=Hc.error.bind(Hc,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Nc.ERROR,this.onError,this),e.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Nc.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Nc.ERROR,this.onError,this),e.off(Nc.ERROR,this.onErrorOut,this),e.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Nc.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===Hp?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,s;if(t.fatal)return;const r=this.hls,o=t.context;switch(t.details){case Gc.FRAG_LOAD_ERROR:case Gc.FRAG_LOAD_TIMEOUT:case Gc.KEY_LOAD_ERROR:case Gc.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case Gc.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:Nf,flags:Wf});case Gc.FRAG_GAP:case Gc.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=jf);case Gc.LEVEL_EMPTY_ERROR:case Gc.LEVEL_PARSING_ERROR:{var a,n;const e=t.parent===Hp?t.level:r.loadLevel;t.details===Gc.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(n=a.levelDetails)&&n.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case Gc.LEVEL_LOAD_ERROR:case Gc.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==o?void 0:o.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,o.level)));case Gc.AUDIO_TRACK_LOAD_ERROR:case Gc.AUDIO_TRACK_LOAD_TIMEOUT:case Gc.SUBTITLE_LOAD_ERROR:case Gc.SUBTITLE_TRACK_LOAD_TIMEOUT:if(o){const e=r.levels[r.loadLevel];if(e&&(o.type===Vp&&e.hasAudioGroup(o.groupId)||o.type===$p&&e.hasSubtitleGroup(o.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,r.loadLevel),t.errorAction.action=jf,void(t.errorAction.flags=Vf)}return;case Gc.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=r.levels[r.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:jf,flags:$f,hdcpLevel:i}:this.keySystemError(t)}return;case Gc.BUFFER_ADD_CODEC_ERROR:case Gc.REMUX_ALLOC_ERROR:case Gc.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(s=t.level)?s:r.loadLevel));case Gc.INTERNAL_EXCEPTION:case Gc.BUFFER_APPENDING_ERROR:case Gc.BUFFER_FULL_ERROR:case Gc.LEVEL_SWITCH_ERROR:case Gc.BUFFER_STALLED_ERROR:case Gc.BUFFER_SEEK_OVER_HOLE:case Gc.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:Nf,flags:Wf})}t.type===jc.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Rf(this.hls.config.playlistLoadPolicy,e),s=this.playlistError++;if(Bf(i,s,xf(e),e.response))return{action:zf,flags:Wf,retryConfig:i,retryCount:s};const r=this.getLevelSwitchAction(e,t);return i&&(r.retryConfig=i,r.retryCount=s),r}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),s=t.levels[i],{fragLoadPolicy:r,keyLoadPolicy:o}=t.config,a=Rf(e.details.startsWith("key")?o:r,e),n=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(s){e.details!==Gc.FRAG_GAP&&s.fragmentError++;if(Bf(a,n,xf(e),e.response))return{action:zf,flags:Wf,retryConfig:a,retryCount:n}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=n),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const s=this.hls.levels[t];if(s){var r,o;const t=e.details;s.loadError++,t===Gc.BUFFER_APPEND_ERROR&&s.fragmentError++;let l=-1;const{levels:d,loadLevel:h,minAutoLevel:c,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const p=null==(r=e.frag)?void 0:r.type,f=(p===Jp&&t===Gc.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===Gc.BUFFER_ADD_CODEC_ERROR||t===Gc.BUFFER_APPEND_ERROR))&&d.some((({audioCodec:e})=>s.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===Gc.BUFFER_ADD_CODEC_ERROR||t===Gc.BUFFER_APPEND_ERROR)&&d.some((({codecSet:e,audioCodec:t})=>s.codecSet!==e&&s.audioCodec===t)),{type:g,groupId:y}=null!=(o=e.context)?o:{};for(let i=d.length;i--;){const r=(i+h)%d.length;if(r!==h&&r>=c&&r<=u&&0===d[r].loadError){var a,n;const i=d[r];if(t===Gc.FRAG_GAP&&p===Hp&&e.frag){const t=d[r].details;if(t){const i=Ff(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(g===Vp&&i.hasAudioGroup(y)||g===$p&&i.hasSubtitleGroup(y))continue;if(p===Jp&&null!=(a=s.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||p===qp&&null!=(n=s.subtitleGroups)&&n.some((e=>i.hasSubtitleGroup(e)))||f&&s.audioCodec===i.audioCodec||!f&&s.audioCodec!==i.audioCodec||m&&s.codecSet===i.codecSet)continue}l=r;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:jf,flags:Wf,nextAutoLevel:l}}return{action:jf,flags:Vf}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case Nf:break;case jf:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===Gc.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()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:s,hdcpLevel:r,nextAutoLevel:o}=i;switch(s){case Wf:this.switchLevel(e,o);break;case $f:r&&(t.maxHdcpLevel=pf[pf.indexOf(r)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,o)}switchLevel(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)}},fpsController:class{constructor(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()}setStreamController(e){this.streamController=e}registerListeners(){this.hls.on(Nc.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(Nc.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const s=performance.now();if(t){if(this.lastTime){const e=s-this.lastTime,r=i-this.lastDroppedFrames,o=t-this.lastDecodedFrames,a=1e3*r/e,n=this.hls;if(n.trigger(Nc.FPS_DROP,{currentDropped:r,currentDecoded:o,totalDroppedFrames:i}),a>0&&r>n.config.fpsDroppedMonitoringThreshold*o){let e=n.currentLevel;Hc.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===n.autoLevelCapping||n.autoLevelCapping>=e)&&(e-=1,n.trigger(Nc.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:n.currentLevel}),n.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=s,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:bu,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},{cueHandler:UA,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends zm{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",qp),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Nc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Nc.ERROR,this.onError,this),e.on(Nc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Nc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(Nc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Nc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(Nc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Nc.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Nc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Nc.ERROR,this.onError,this),e.off(Nc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Nc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(Nc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Nc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(Nc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Nc.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=Rm,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(e,t){this.mainDetails=t.details}onSubtitleFragProcessed(e,t){const{frag:i,success:s}=t;if(this.fragPrevious=i,this.state=Rm,!s)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let o;const a=i.start;for(let e=0;e=r[e].start&&a<=r[e].end){o=r[e];break}const n=i.start+i.duration;o?o.end=n:(o={start:a,end:n},r.push(o)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:s}=t;if(0===i&&s!==Number.POSITIVE_INFINITY){const e=s-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew vf(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new vf(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,qp),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const s=this.levels[this.currentTrackId];null!=s&&s.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,s&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:s,levels:r}=this,{details:o,id:a}=t;if(!r)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const n=r[a];if(a>=r.length||!n)return;this.log(`Subtitle track ${a} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""},duration:${o.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(o.live||null!=(i=n.details)&&i.live){const e=this.mainDetails;if(o.deltaUpdateFailed||!e)return;const t=e.fragments[0];var d;if(n.details)l=this.alignPlaylists(o,n.details,null==(d=this.levelLastLoaded)?void 0:d.details),0===l&&t&&(l=t.start,kf(o,l));else o.hasProgramDateTime&&e.hasProgramDateTime?(bm(o,e),l=o.fragments[0].start):t&&(l=t.start,kf(o,l))}if(n.details=o,this.levelLastLoaded=n,a===s&&(this.startFragRequested||!this.mainDetails&&o.live||this.setStartPosition(this.mainDetails||o,l),this.tick(),o.live&&!this.fragCurrent&&this.media&&this.state===Rm)){Ff(null,o.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),n.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,s=t.decryptdata,r=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=s&&s.key&&s.iv&&"AES-128"===s.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),s.key.buffer,s.iv.buffer).catch((e=>{throw r.trigger(Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const s=performance.now();r.trigger(Nc.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:s}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=Rm}))}}doTick(){if(this.media){if(this.state===Rm){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:s}=this,r=this.getLoadPosition(),o=pm.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,s.maxBufferHole),{end:a,len:n}=o,l=this.getFwdBufferInfo(this.media,Hp),d=i.details;if(n>this.getMaxBufferLength(null==l?void 0:l.len)+d.levelTargetDuration)return;const h=d.fragments,c=h.length,u=d.edge;let p=null;const f=this.fragPrevious;if(au-e?0:e;p=Ff(f,h,Math.max(h[0].start,a),t),!p&&f&&f.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=sf(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Nc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Nc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Nc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Nc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Nc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Nc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Nc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Nc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Nc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Nc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media&&(this.queuedDefaultTrack>-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))}pollTrackChange(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)}onMediaDetaching(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId);sf(this.media.textTracks).forEach((e=>{ef(e)})),this.subtitleTrack=-1,this.media=null}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.subtitleTracks}onSubtitleTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Subtitle track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Subtitle track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!r&&t){this.selectDefaultTrack=!1;const i=tm(t,e);if(i>-1)r=e[i];else{const e=tm(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const o={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(Nc.SUBTITLE_TRACKS_UPDATED,o),-1!==s&&-1===this.trackId&&this.setSubtitleTrack(s)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let s=0;s-1){const e=this.tracksInGroup[s];return this.setSubtitleTrack(s),e}if(i)return null;{const i=tm(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,s=t.groupId;let r=t.url;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(Nc.SUBTITLE_TRACK_LOADING,{url:r,id:i,groupId:s,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=sf(e.textTracks),i=this.currentTrack;let s;if(i&&(s=t.filter((e=>Qg(i,e)))[0],s||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==s&&(e.mode="disabled")})),s){const e=this.subtitleDisplay?"showing":"hidden";s.mode!==e&&(s.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!Fc(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e]||null;if(this.trackId=e,this.currentTrack=s,this.toggleTrackModes(),!s)return void this.hls.trigger(Nc.SUBTITLE_TRACK_SWITCH,{id:e});const r=!!s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;this.log(`Switching to subtitle-track ${e}`+(s?` "${s.name}" lang:${s.lang} group:${s.groupId}`:""));const{id:o,groupId:a="",name:n,type:l,url:d}=s;this.hls.trigger(Nc.SUBTITLE_TRACK_SWITCH,{id:o,groupId:a,name:n,type:l,url:d});const h=this.switchParams(s.url,null==i?void 0:i.details,s.details);this.loadPlaylist(h)}},timelineController:class{constructor(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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(Nc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Nc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Nc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Nc.FRAG_LOADING,this.onFragLoading,this),e.on(Nc.FRAG_LOADED,this.onFragLoaded,this),e.on(Nc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(Nc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(Nc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(Nc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(Nc.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(Nc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Nc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Nc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Nc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Nc.FRAG_LOADING,this.onFragLoading,this),e.off(Nc.FRAG_LOADED,this.onFragLoaded,this),e.off(Nc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(Nc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(Nc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(Nc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(Nc.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){const e=new _y(this,"textTrack1"),t=new _y(this,"textTrack2"),i=new _y(this,"textTrack3"),s=new _y(this,"textTrack4");this.cea608Parser1=new Ay(1,e,t),this.cea608Parser2=new Ay(3,i,s)}}addCues(e,t,i,s,r){let o=!1;for(let e=r.length;e--;){const s=r[e],h=(a=s[0],n=s[1],l=t,d=i,Math.min(n,d)-Math.max(a,l));if(h>=0&&(s[0]=Math.min(s[0],t),s[1]=Math.max(s[1],i),o=!0,h/(i-t)>.5))return}var a,n,l,d;if(o||r.push([t,i]),this.config.renderTextTracksNatively){const r=this.captionsTracks[e];this.Cues.newCue(r,t,i,s)}else{const r=this.Cues.newCue(null,t,i,s);this.hls.trigger(Nc.CUES_PARSED,{type:"captions",cues:r,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:s,timescale:r}){const{unparsedVttFrags:o}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:s,timescale:r}),o.length&&(this.unparsedVttFrags=[],o.forEach((e=>{this.onFragLoaded(Nc.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let s=0;s{ef(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===Uy));if(this.config.enableWebVTT||s&&this.config.enableIMSC1){if(Kg(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?sf(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let s;if(t){let i=null;for(let s=0;snull!==e)).map((e=>e.label));e.length&&Hc.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(Nc.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,s=this.captionsProperties[i];s&&(s.label=e.name,e.lang&&(s.languageCode=e.lang),s.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===Hp){var i,s;const{cea608Parser1:e,cea608Parser2:r,lastSn:o}=this,{cc:a,sn:n}=t.frag,l=null!=(i=null==(s=t.part)?void 0:s.index)?i:-1;e&&r&&(n!==o+1||n===o&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),r.reset()),this.lastCc=a,this.lastSn=n,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:s}=t;if(i.type===qp)if(s.byteLength){const e=i.decryptdata,r="stats"in t;if(null==e||!e.encrypted||r){const e=this.tracks[i.level],r=this.vttCCs;r[i.cc]||(r[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===Uy?this._parseIMSC1(i,s):this._parseVTTs(t)}}else this.hls.trigger(Nc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;Gy(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(Nc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{Hc.log(`Failed to parse IMSC1: ${t}`),i.trigger(Nc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:s}=e,{initPTS:r,unparsedVttFrags:o}=this,a=r.length-1;if(!r[i.cc]&&-1===a)return void o.push(e);const n=this.hls;Fy(null!=(t=i.initSegment)&&t.data?rp(i.initSegment.data,new Uint8Array(s)):s,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),n.trigger(Nc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const r="Missing initPTS for VTT MPEGTS"===t.message;r?o.push(e):this._fallbackToIMSC1(i,s),Hc.log(`Failed to parse VTT cue: ${t}`),r&&a>i.cc||n.trigger(Nc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||Gy(t,this.initPTS[e.cc],(()=>{i.textCodec=Uy,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>Zp(i,e)))}else{const s=this.tracks[t];if(!s)return;const r=s.default?"default":"subtitles"+t;i.trigger(Nc.CUES_PARSED,{type:"subtitles",cues:e,track:r})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===qp&&this.onFragLoaded(Nc.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:s}=this;if(!this.enabled||!i||!s)return;const{frag:r,samples:o}=t;if(r.type!==Hp||"NONE"!==this.closedCaptionsForLevel(r))for(let e=0;etf(e[s],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==s){const{textTracks:e}=this;Object.keys(e).forEach((i=>tf(e[i],t,s)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let s=2;for(let r=0;r0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=Rm):(this.loadedmetadata=!1,this.state=Mm),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case Rm:this.doTickIdle();break;case Mm:{var e;const{levels:t,trackId:i}=this,s=null==t||null==(e=t[i])?void 0:e.details;if(s){if(this.waitForCdnTuneIn(s))break;this.state=jm}break}case Bm:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=Rm}break}case jm:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:s,complete:r}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Im;const e={frag:t,part:i,payload:s.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),r&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=pm.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Uf(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=Rm}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=Rm)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:s}=this,r=e.config;if(!i&&(this.startFragRequested||!r.startFragPrefetch)||null==t||!t[s])return;const o=t[s],a=o.details;if(!a||a.live&&this.levelLastLoaded!==o||this.waitForCdnTuneIn(a))return void(this.state=Mm);const n=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&n&&(this.bufferFlushed=!1,this.afterBufferFlushed(n,Zc,Jp));const l=this.getFwdBufferInfo(n,Jp);if(null===l)return;const{bufferedTrack:d,switchingTrack:h}=this;if(!h&&this._streamEnded(l,a))return e.trigger(Nc.BUFFER_EOS,{type:"audio"}),void(this.state=Om);const c=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,Hp),u=l.len,p=this.getMaxBufferLength(null==c?void 0:c.len),f=a.fragments,m=f[0].start;let g=this.flushing?this.getLoadPosition():l.end;if(h&&i){const e=this.getLoadPosition();d&&!Yg(h.attrs,d.attrs)&&(g=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=p&&!h&&gc.end+a.targetduration;if(b||(null==c||!c.len)&&l.len){const e=this.getAppendedFrag(y.start,Hp);if(null===e)return;if(A||(A=!!e.gap||!!b&&0===c.len),b&&!A||A&&l.nextStart&&l.nextStartnew vf(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:s}=this;s&&(s.abortRequests(),this.removeUnbufferedFrags(s.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=Rm,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=xm),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(e,t){this.mainDetails=t.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(Nc.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:s}=this,{details:r,id:o}=t;if(!s)return void this.warn(`Audio tracks were reset while loading level ${o}`);this.log(`Audio track ${o} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const a=s[o];let n=0;if(r.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(r);const e=this.mainDetails;if(r.deltaUpdateFailed||!e)return;var l;if(!a.details&&r.hasProgramDateTime&&e.hasProgramDateTime)bm(r,e),n=r.fragments[0].start;else n=this.alignPlaylists(r,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=r,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&r.live||this.setStartPosition(this.mainDetails||r,n),this.state!==Mm||this.waitForCdnTuneIn(r)||(this.state=Rm),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{config:o,trackId:a,levels:n}=this;if(!n)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=n[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const d=l.details;if(!d)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const h=o.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let c=this.transmuxer;c||(c=this.transmuxer=new qg(this.hls,Jp,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],p=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=s?s.index:-1,o=-1!==t,a=new fm(i.level,i.sn,i.stats.chunkCount,r.byteLength,t,o);c.push(r,p,h,"",i,s,d.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${d.startSN} ,${d.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:s,cache:new Wm,complete:!1};e.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=jm}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i.type===Jp)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(Nc.AUDIO_TRACK_SWITCHED,Pc({},e)))}this.fragBufferedComplete(i,s)}else if(!this.loadedmetadata&&i.type===Hp){const e=this.videoBuffer||this.media;if(e){pm.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=Nm;else switch(t.details){case Gc.FRAG_GAP:case Gc.FRAG_PARSING_ERROR:case Gc.FRAG_DECRYPT_ERROR:case Gc.FRAG_LOAD_ERROR:case Gc.FRAG_LOAD_TIMEOUT:case Gc.KEY_LOAD_ERROR:case Gc.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Jp,t);break;case Gc.AUDIO_TRACK_LOAD_ERROR:case Gc.AUDIO_TRACK_LOAD_TIMEOUT:case Gc.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Mm||(null==(i=t.context)?void 0:i.type)!==Vp||(this.state=Rm);break;case Gc.BUFFER_APPEND_ERROR:case Gc.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===Gc.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case Gc.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==eu&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==eu){this.flushing=!1,this.bufferFlushed=!0,this.state===Om&&(this.state=Rm);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,Jp),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{details:h}=d,{audio:c,text:u,id3:p,initSegment:f}=r;if(!this.fragContextChanged(n)&&h){if(this.state=Fm,this.switchingTrack&&c&&this.completeAudioSwitch(this.switchingTrack),null!=f&&f.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,f.tracks,e,o),s.trigger(Nc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}if(c){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=c;l&&(l.elementaryStreams[Zc]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(Zc,e,t,i,s),this.bufferFragmentData(c,n,l,o)}if(null!=p&&null!=(t=p.samples)&&t.length){const e=Mc({id:i,frag:n,details:h},p);s.trigger(Nc.FRAG_PARSING_METADATA,e)}if(u){const e=Mc({id:i,frag:n,details:h},u);s.trigger(Nc.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(n)}_bufferInitSegment(e,t,i,s){if(this.state!==Fm)return;t.video&&delete t.video;const r=t.audio;if(!r)return;r.id="audio";const o=e.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${o}/${r.codec}]`),o&&1===o.split(",").length&&(r.levelCodec=o),this.hls.trigger(Nc.BUFFER_CODECS,t);const a=r.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:s,parent:i.type,data:a};this.hls.trigger(Nc.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);var r;if(this.fragCurrent=e,this.switchingTrack||s===om||s===nm)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(r=t.details)&&r.live&&!this.initPTS[e.cc]){this.log(`Waiting for video PTS in continuity counter ${e.cc} of live stream before loading audio fragment ${e.sn} of level ${this.trackId}`),this.state=jm;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&bm(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,s=null==i?void 0:i.attrs,r=e.attrs;t&&s&&(s.CHANNELS!==r.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(Nc.AUDIO_TRACK_SWITCHED,Pc({},e))}},audioTrackController:class extends Hf{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Nc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Nc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Nc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Nc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(Nc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Nc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Nc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Nc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Nc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(Nc.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Audio track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Audio track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!r&&t){const i=tm(t,e,sm);if(i>-1)r=e[i];else{const e=tm(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(Nc.AUDIO_TRACKS_UPDATED,a);const n=this.trackId;if(-1!==s&&-1===n)this.setAudioTrack(s);else if(e.length&&-1===n){var o;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(o=this.groupIds)?void 0:o.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==Vp||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(this.requestScheduled=-1,this.checkRetry(t)))}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(e){this.selectDefaultTrack=!1,this.setAudioTrack(e)}setAudioOption(e){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const s=this.currentTrack;if(s&&im(e,s,sm))return s;const r=tm(e,this.tracksInGroup,sm);if(r>-1){const e=this.tracksInGroup[r];return this.setAudioTrack(r),e}if(s){let s=t.loadLevel;-1===s&&(s=t.firstAutoLevel);const r=function(e,t,i,s,r){const o=t[s],a=t.reduce(((e,t,i)=>{const s=t.uri;return(e[s]||(e[s]=[])).push(i),e}),{})[o.uri];a.length>1&&(s=Math.max.apply(Math,a));const n=o.videoRange,l=o.frameRate,d=o.codecSet.substring(0,4),h=rm(t,s,(t=>{if(t.videoRange!==n||t.frameRate!==l||t.codecSet.substring(0,4)!==d)return!1;const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return tm(e,o,r)>-1}));return h>-1?h:rm(t,s,(t=>{const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return tm(e,o,r)>-1}))}(e,t.levels,i,s,sm);if(-1===r)return null;t.nextLoadLevel=r}if(e.channels||e.audioCodec){const t=tm(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e],r=s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;if(this.log(`Switching to audio-track ${e} "${s.name}" lang:${s.lang} group:${s.groupId} channels:${s.channels}`),this.trackId=e,this.currentTrack=s,this.hls.trigger(Nc.AUDIO_TRACK_SWITCHING,Pc({},s)),r)return;const o=this.switchParams(s.url,null==i?void 0:i.details,s.details);this.loadPlaylist(o)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:eA.MANIFEST,su:!this.initialized})}catch(e){Hc.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],s=this.getObjectType(t),r={d:1e3*t.duration,ot:s};s!==eA.VIDEO&&s!==eA.AUDIO&&s!=eA.MUXED||(r.br=i.bitrate/1e3,r.tb=this.getTopBandwidth(s)/1e3,r.bl=this.getBufferLength(s)),this.apply(e,r)}catch(e){Hc.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}))}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Nc.MEDIA_DETACHED,this.onMediaDetached,this),e.on(Nc.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(Nc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Nc.MEDIA_DETACHED,this.onMediaDetached,this),e.off(Nc.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=null}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(e,t){var i,s;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(s=t.tracks.video)?void 0:s.buffer}createData(){var e;return{v:1,sf:tA.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Mc(t,this.createData());const i=t.ot===eA.INIT||t.ot===eA.VIDEO||t.ot===eA.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:s}=this;s&&(t=Object.keys(t).reduce(((e,i)=>(s.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),TA(e.headers,t)):e.url=LA(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?eA.TIMED_TEXT:"initSegment"===e.sn?eA.INIT:"audio"===t?eA.AUDIO:"main"===t?this.hls.audioTracks.length?eA.VIDEO:eA.MUXED:void 0}getTopBandwidth(e){let t,i=0;const s=this.hls;if(e===eA.AUDIO)t=s.audioTracks;else{const e=s.maxAutoLevel,i=e>-1?e+1:s.levels.length;t=s.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===eA.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*pm.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}},contentSteeringController:class{constructor(e){this.hls=void 0,this.log=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this.pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=e,this.log=Hc.log.bind(Hc,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Nc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Nc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Nc.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Nc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Nc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Nc.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===jf&&i.flags===Vf){const e=this.levels;let s=this.pathwayPriority,r=this.pathwayId;if(t.context){const{groupId:i,pathwayId:s,type:o}=t.context;i&&e?r=this.getPathwayForGroupId(i,o,r):s&&(r=s)}r in this.penalizedPathways||(this.penalizedPathways[r]=performance.now()),!s&&e&&(s=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),s&&s.length>1&&(this.updatePathwayPriority(s),i.resolved=this.pathwayId!==r),i.resolved||Hc.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${r} levels: ${e?e.length:e} priorities: ${JSON.stringify(s)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const 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}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,s=performance.now();Object.keys(i).forEach((e=>{s-i[e]>3e5&&delete i[e]}));for(let s=0;s0){this.log(`Setting Pathway to "${r}"`),this.pathwayId=r,Df(t),this.hls.trigger(Nc.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[o];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=o);break}}}getPathwayForGroupId(e,t,i){const s=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:r,"BASE-ID":o,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===r)))return;const n=this.getLevelsForPathway(o).map((e=>{const t=new Kc(e.attrs);t["PATHWAY-ID"]=r;const o=t.AUDIO&&`${t.AUDIO}_clone_${r}`,n=t.SUBTITLES&&`${t.SUBTITLES}_clone_${r}`;o&&(i[t.AUDIO]=o,t.AUDIO=o),n&&(s[t.SUBTITLES]=n,t.SUBTITLES=n);const l=DA(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),d=new vf({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${s}"`);const o=e.data;if(1!==o.VERSION)return void this.log(`Steering VERSION ${o.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=o.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":n,"PATHWAY-PRIORITY":l}=o;if(a)try{this.uri=new self.URL(a,s).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),n&&this.clonePathways(n);const d={steeringManifest:o,url:s.toString()};this.hls.trigger(Nc.STEERING_MANIFEST_LOADED,d),l&&this.updatePathwayPriority(l)},onError:(e,t,i,s)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let r=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,r);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(r=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${s}`),this.loader.load(r,n,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function NA(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(NA):Object.keys(e).reduce(((t,i)=>(t[i]=NA(e[i]),t)),{}):e}function jA(e){const t=e.loader;if(t!==IA&&t!==RA)Hc.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=IA,e.progressive=!0,e.enableSoftwareAES=!0,Hc.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let GA;class zA extends Hf{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Nc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Nc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Nc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Nc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Nc.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(Nc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Nc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Nc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Nc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Nc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Nc.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,s=[],r={},o={};let a=!1,n=!1,l=!1;t.levels.forEach((e=>{var t,d;const h=e.attrs;let{audioCodec:c,videoCodec:u}=e;-1!==(null==(t=c)?void 0:t.indexOf("mp4a.40.34"))&&(GA||(GA=/chrome|firefox/i.test(navigator.userAgent)),GA&&(e.audioCodec=c=void 0)),c&&(e.audioCodec=c=Lp(c,i)),0===(null==(d=u)?void 0:d.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(",");for(let e=0;e2){let s=i.shift()+".";s+=parseInt(i.shift()).toString(16),s+=("000"+parseInt(i.shift()).toString(16)).slice(-4),t[e]=s}}return t.join(",")}(u));const{width:p,height:f,unknownCodecs:m}=e;if(a||(a=!(!p||!f)),n||(n=!!u),l||(l=!!c),null!=m&&m.length||c&&!vp(c,"audio",i)||u&&!vp(u,"video",i))return;const{CODECS:g,"FRAME-RATE":y,"HDCP-LEVEL":A,"PATHWAY-ID":b,RESOLUTION:v,"VIDEO-RANGE":_}=h,S=`${`${b||"."}-`}${e.bitrate}-${v}-${y}-${g}-${_}-${A}`;if(r[S])if(r[S].uri===e.url||e.attrs["PATHWAY-ID"])r[S].addGroupId("audio",h.AUDIO),r[S].addGroupId("text",h.SUBTITLES);else{const t=o[S]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new vf(e);r[S]=i,s.push(i)}else{const t=new vf(e);r[S]=t,o[S]=1,s.push(t)}})),this.filterAndSortMediaOptions(s,t,a,n,l)}filterAndSortMediaOptions(e,t,i,s,r){let o=[],a=[],n=e;if((i||s)&&r&&(n=n.filter((({videoCodec:e,videoRange:t,width:i,height:s})=>{return(!!e||!(!i||!s))&&(!!(r=t)&&ff.indexOf(r)>-1);var r}))),0===n.length)return void Promise.resolve().then((()=>{if(this.hls){t.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(t.levels[0].attrs)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;o=t.audioTracks.filter((t=>!t.audioCodec||vp(t.audioCodec,"audio",e))),WA(o)}t.subtitles&&(a=t.subtitles,WA(a));const l=n.slice(0);n.sort(((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 ff.indexOf(e.videoRange)-ff.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Ep(e.videoCodec),s=Ep(t.videoCodec);if(i!==s)return s-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=wp(e.codecSet),s=wp(t.codecSet);if(i!==s)return s-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let d=l[0];if(this.steering&&(n=this.steering.filterParsedLevels(n),n.length!==l.length))for(let e=0;ei&&i===OA.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const c=r&&!s,u={levels:n,audioTracks:o,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:r,video:s,altAudio:!c&&o.some((e=>!!e.url))};this.hls.trigger(Nc.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),s=e<0;if(this.hls.trigger(Nc.ERROR,{type:jc.OTHER_ERROR,details:Gc.LEVEL_SWITCH_ERROR,level:e,fatal:s,error:i,reason:i.message}),s)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,s=this.currentLevel,r=s?s.attrs["PATHWAY-ID"]:void 0,o=t[e],a=o.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=o,i===e&&o.details&&s&&r===a)return;this.log(`Switching to level ${e} (${o.height?o.height+"p ":""}${o.videoRange?o.videoRange+" ":""}${o.codecSet?o.codecSet+" ":""}@${o.bitrate})${a?" with Pathway "+a:""} from level ${i}${r?" with Pathway "+r:""}`);const n={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(Nc.LEVEL_SWITCHING,n);const l=o.details;if(!l||l.live){const e=this.switchParams(o.uri,null==s?void 0:s.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===Wp&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===Hp){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:s,details:r}=t,o=this._levels[s];var a;if(!o)return this.warn(`Invalid level index ${s}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(r.deltaUpdateFailed=!0));s===this.currentLevelIndex?(0===o.fragmentError&&(o.loadError=0),this.playlistLoaded(s,t,o.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let s=i.uri;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const r=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${r?" Pathway "+r:""} ${s}`),this.clearTimer(),this.hls.trigger(Nc.LEVEL_LOADING,{url:s,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));Df(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(Nc.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(Nc.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function WA(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class VA{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const s=this.keyUriToKeyInfo[i].loader;if(s){var t;if(e&&e!==(null==(t=s.context)?void 0:t.frag.type))return;s.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=Gc.KEY_LOAD_ERROR,i,s,r){return new wm({type:jc.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:r,error:i,networkDetails:s})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:s}=e;for(let e=0;e{r.setKeyFormat(e)}));break}}}}load(e){return!e.decryptdata&&e.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(e).then((t=>this.loadInternal(e,t))):this.loadInternal(e)}loadInternal(e,t){var i,s;t&&e.setKeyFormat(t);const r=e.decryptdata;if(!r){const i=new Error(t?`Expected frag.decryptdata to be defined after setting format ${t}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(e,Gc.KEY_LOAD_ERROR,i))}const o=r.uri;if(!o)return Promise.reject(this.createKeyLoadError(e,Gc.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${o}"`)));let a=this.keyUriToKeyInfo[o];if(null!=(i=a)&&i.decryptdata.key)return r.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var n;if(null!=(s=a)&&s.keyLoadPromise)switch(null==(n=a.mediaKeySessionContext)?void 0:n.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(r.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[o]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===r.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,Gc.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,s=new(0,i.loader)(i);return t.keyLoader=e.loader=s,e.keyLoadPromise=new Promise(((r,o)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},n=i.keyLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{const{frag:a,keyInfo:n,url:l}=i;if(!a.decryptdata||n!==this.keyUriToKeyInfo[l])return o(this.createKeyLoadError(a,Gc.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),s));n.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,n.loader=null,r({frag:a,keyInfo:n})},onError:(e,i,s,r)=>{this.resetLoader(i),o(this.createKeyLoadError(t,Gc.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),s,Pc({url:a.url,data:void 0},e)))},onTimeout:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,Gc.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),s))},onAbort:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,Gc.INTERNAL_ABORTED,new Error("key loading aborted"),s))}};s.load(a,l,d)}))}resetLoader(e){const{frag:t,keyInfo:i,url:s}=e,r=i.loader;t.keyLoader===r&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[s],r&&r.destroy()}}function $A(){return self.SourceBuffer||self.WebKitSourceBuffer}function HA(){if(!Ap())return!1;const e=$A();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class JA{constructor(e,t,i,s){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=i,this.hls=s}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:s,stalled:r}=this;if(null===s)return;const{currentTime:o,seeking:a}=s,n=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,o!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==r){if(this.stallReported){const e=self.performance.now()-r;Hc.warn(`playback not stuck anymore @${o}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||n)return void(this.stalled=null);if(s.paused&&!a||s.ended||0===s.playbackRate||!pm.getBuffered(s).length)return void(this.nudgeRetry=0);const d=pm.bufferInfo(s,o,0),h=d.nextStart||0;if(a){const e=d.len>2,i=!h||t&&t.start<=o||h-o>2&&!this.fragmentTracker.getPartialFragment(o);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var c;if(!(d.len>0)&&!h)return;const e=Math.max(h,d.start||0)-o,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(c=t.details)?void 0:c.live)?2*t.details.targetduration:2,r=this.fragmentTracker.getPartialFragment(o);if(e>0&&(e<=i||r))return void(s.paused||this._trySkipBufferHole(r))}const u=self.performance.now();if(null===r)return void(this.stalled=u);const p=u-r;if(!a&&p>=250&&(this._reportStall(d),!this.media))return;const f=pm.bufferInfo(s,o,i.maxBufferHole);this._tryFixBufferStall(f,p)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:s,media:r}=this;if(null===r)return;const o=r.currentTime,a=s.getPartialFragment(o);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-o1e3*i.highBufferWatchdogPeriod&&(Hc.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:s}=this;if(!s&&i){this.stallReported=!0;const s=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);Hc.warn(s.message),t.trigger(Nc.ERROR,{type:jc.MEDIA_ERROR,details:Gc.BUFFER_STALLED_ERROR,fatal:!1,error:s,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:s}=this;if(null===s)return 0;const r=s.currentTime,o=pm.bufferInfo(s,r,0),a=r0&&o.len<1&&s.readyState<3,d=a-r;if(d>0&&(n||l)){if(d>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===r){const e=t.getAppendedFrag(0,Hp);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=Rm,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=xm}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case Gm:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],s=null==i?void 0:i.details;if(s&&(!s.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(s))break;this.state=Rm;break}if(this.hls.nextLoadLevel!==this.level){this.state=Rm;break}break}case Bm:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=Rm}}}this.state===Rm&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:s}=this;if(null===t||!s&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const r=e.nextLoadLevel;if(null==i||!i[r])return;const o=i[r],a=this.getMainFwdBufferInfo();if(null===a)return;const n=this.getLevelDetails();if(n&&this._streamEnded(a,n)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(Nc.BUFFER_EOS,e),void(this.state=Om)}e.loadLevel!==r&&-1===e.manualLevel&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=e.nextLoadLevel=r;const l=o.details;if(!l||this.state===Gm||l.live&&this.levelLastLoaded!==o)return this.level=r,void(this.state=Gm);const d=a.len,h=this.getMaxBufferLength(o.maxBitrate);if(d>=h)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const c=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(c,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==lm){var p;const e=(null!=(p=this.backtrackFragment)?p:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,c)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?Zc:eu,t=(e===eu?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,Hp)}u=this.getNextFragmentLoopLoading(u,l,a,Hp,h)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,o,c))}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);this.fragCurrent=e,s===om||s===nm?"initSegment"===e.sn?this._loadInitSegment(e,t):this.bitrateTest?(this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(e,t)):(this.startFragRequested=!0,super.loadFragment(e,t,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,Hp)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const s=this.getAppendedFrag(t.currentTime);s&&s.start>1&&this.flushMainBuffer(0,s.start-1);const r=this.getLevelDetails();if(null!=r&&r.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*r.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],s=this.fragLastKbps;i=s&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*s)+1:0}else i=0;const o=this.getBufferedFrag(t.currentTime+i);if(o){const e=this.followingBufferedFrag(o);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,s=Math.max(o.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(s,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case Pm:case Im:case Bm:case Fm:case Um:this.state=Rm}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new JA(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{media:e}=this;e&&this.onvplaying&&this.onvseeked&&(e.removeEventListener("playing",this.onvplaying),e.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){const e=this.media,t=e?e.currentTime:null;Fc(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(Nc.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}onManifestParsed(e,t){let i=!1,s=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),s=s||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&s&&!function(){var e;const t=$A();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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}onLevelLoading(e,t){const{levels:i}=this;if(!i||this.state!==Rm)return;const s=i[t.level];(!s.details||s.details.live&&this.levelLastLoaded!==s||this.waitForCdnTuneIn(s.details))&&(this.state=Gm)}onLevelLoaded(e,t){var i;const{levels:s}=this,r=t.level,o=t.details,a=o.totalduration;if(!s)return void this.warn(`Levels were reset while loading level ${r}`);this.log(`Level ${r} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""}, cc [${o.startCC}, ${o.endCC}] duration:${a}`);const n=s[r],l=this.fragCurrent;!l||this.state!==Im&&this.state!==Bm||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let d=0;if(o.live||null!=(i=n.details)&&i.live){var h;if(this.checkLiveUpdate(o),o.deltaUpdateFailed)return;d=this.alignPlaylists(o,n.details,null==(h=this.levelLastLoaded)?void 0:h.details)}if(n.details=o,this.levelLastLoaded=n,this.hls.trigger(Nc.LEVEL_UPDATED,{details:o,level:r}),this.state===Gm){if(this.waitForCdnTuneIn(o))return;this.state=Rm}this.startFragRequested?o.live&&this.synchronizeToLiveEdge(o):this.setStartPosition(o,d),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{levels:o}=this;if(!o)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=o[i.level],n=a.details;if(!n)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,d=n.PTSKnown||!n.live,h=null==(t=i.initSegment)?void 0:t.data,c=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new qg(this.hls,Hp,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),p=s?s.index:-1,f=-1!==p,m=new fm(i.level,i.sn,i.stats.chunkCount,r.byteLength,p,f),g=this.initPTS[i.cc];u.push(r,h,c,l,i,s,n.totalduration,d,m,g)}onAudioTrackSwitching(e,t){const 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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(Nc.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(Nc.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,s=!!this.hls.audioTracks[i].url;if(s){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=s,this.tick()}onBufferCreated(e,t){const i=t.tracks;let s,r,o=!1;for(const e in i){const t=i[e];if("main"===t.id){if(r=e,s=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else o=!0}o&&s?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=s.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i&&i.type!==Hp)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===Um&&(this.state=Rm));const r=s?s.stats:i.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,s)}onError(e,t){var i;if(t.fatal)this.state=Nm;else switch(t.details){case Gc.FRAG_GAP:case Gc.FRAG_PARSING_ERROR:case Gc.FRAG_DECRYPT_ERROR:case Gc.FRAG_LOAD_ERROR:case Gc.FRAG_LOAD_TIMEOUT:case Gc.KEY_LOAD_ERROR:case Gc.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Hp,t);break;case Gc.LEVEL_LOAD_ERROR:case Gc.LEVEL_LOAD_TIMEOUT:case Gc.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Gm||(null==(i=t.context)?void 0:i.type)!==Wp||(this.state=Rm);break;case Gc.BUFFER_APPEND_ERROR:case Gc.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===Gc.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case Gc.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!pm.getBuffered(e).length){const e=this.state!==Rm?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=Rm,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==Zc||this.audioOnly&&!this.altAudio){const e=(t===eu?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,Hp),this.tick()}}onLevelsUpdated(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=t.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(r{const{hls:s}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=Rm,this.startFragRequested=!1,this.bitrateTest=!1;const r=e.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),s.trigger(Nc.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{video:h,text:c,id3:u,initSegment:p}=r,{details:f}=d,m=this.altAudio?void 0:r.audio;if(this.fragContextChanged(n))this.fragmentTracker.removeFragment(n);else{if(this.state=Fm,p){if(null!=p&&p.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,p.tracks,e,o),s.trigger(Nc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:p.tracks})}const e=p.initPTS,t=p.timescale;Fc(e)&&(this.initPTS[n.cc]={baseTime:e,timescale:t},s.trigger(Nc.INIT_PTS_FOUND,{frag:n,id:i,initPTS:e,timescale:t}))}if(h&&f&&"initSegment"!==n.sn){const e=f.fragments[n.sn-1-f.startSN],t=n.sn===f.startSN,i=!e||n.cc>e.cc;if(!1!==r.independent){const{startPTS:e,endPTS:s,startDTS:r,endDTS:a}=h;if(l)l.elementaryStreams[h.type]={startPTS:e,endPTS:s,startDTS:r,endDTS:a};else if(h.firstKeyFrame&&h.independent&&1===o.id&&!i&&(this.couldBacktrack=!0),h.dropped&&h.independent){const r=this.getMainFwdBufferInfo(),o=(r?r.end:this.getLoadPosition())+this.config.maxBufferHole,l=h.firstKeyFramePTS?h.firstKeyFramePTS:e;if(!t&&o2&&(n.gap=!0);n.setElementaryStreamInfo(h.type,e,s,r,a),this.backtrackFragment&&(this.backtrackFragment=n),this.bufferFragmentData(h,n,l,o,t||i)}else{if(!t&&!i)return void this.backtrack(n);n.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=m;l&&(l.elementaryStreams[Zc]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(Zc,e,t,i,s),this.bufferFragmentData(m,n,l,o)}if(f&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:n,details:f,samples:u.samples};s.trigger(Nc.FRAG_PARSING_METADATA,e)}if(f&&c){const e={id:i,frag:n,details:f,samples:c.samples};s.trigger(Nc.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,s){if(this.state!==Fm)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:r,video:o,audiovideo:a}=t;if(r){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=r.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==r.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),r.levelCodec=t,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${r.codec}]`)}o&&(o.levelCodec=e.videoCodec,o.id="main",this.log(`Init video buffer, container:${o.container}, codecs[level/parsed]=[${e.videoCodec||""}/${o.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(Nc.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const r=t[e].initSegment;null!=r&&r.byteLength&&this.hls.trigger(Nc.BUFFER_APPENDING,{type:e,data:r,frag:i,part:null,chunkMeta:s,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,Hp)}backtrack(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=Rm}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(pm.isBuffered(e,i)?t=this.getAppendedFrag(i):pm.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(Nc.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(Nc.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&Fc(t)&&Fc(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class KA{static get version(){return"1.5.13"}static isMSESupported(){return HA()}static isSupported(){return function(){if(!HA())return!1;const e=Ap();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(Sp(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(Sp(t,"audio")))))}()}static getMediaSource(){return Ap()}static get Events(){return Nc}static get ErrorTypes(){return jc}static get ErrorDetails(){return Gc}static get DefaultConfig(){return KA.defaultConfig?KA.defaultConfig:OA}static set DefaultConfig(e){KA.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new Jg,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){$c(e,"debug","log","info","warn","error");try{Vc.log(`Debug logs enabled for "${t}" in hls.js version 1.5.13`)}catch(e){Vc=Wc}}else Vc=Wc}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){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"');const i=NA(e),s=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const r=`${"level"===e?"playlist":e}LoadPolicy`,o=void 0===t[r],a=[];s.forEach((s=>{const n=`${e}Loading${s}`,l=t[n];if(void 0!==l&&o){a.push(n);const e=i[r].default;switch(t[r]={default:e},s){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&Hc.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${r}": ${JSON.stringify(t[r])}`)})),Pc(Pc({},i),t)}(KA.DefaultConfig,e);this.userConfig=e,t.progressive&&jA(t);const{abrController:i,bufferController:s,capLevelController:r,errorController:o,fpsController:a}=t,n=new o(this),l=this.abrController=new i(this),d=this.bufferController=new s(this),h=this.capLevelController=new r(this),c=new a(this),u=new Qp(this),p=new cf(this),f=t.contentSteeringController,m=f?new f(this):null,g=this.levelController=new zA(this,m),y=new dm(this),A=new VA(this.config),b=this.streamController=new qA(this,y,A);h.setStreamController(b),c.setStreamController(b);const v=[u,g,b];m&&v.splice(1,0,m),this.networkControllers=v;const _=[l,d,h,c,p,y];this.audioTrackController=this.createController(t.audioTrackController,v);const S=t.audioStreamController;S&&v.push(new S(this,y,A)),this.subtitleTrackController=this.createController(t.subtitleTrackController,v);const E=t.subtitleStreamController;E&&v.push(new E(this,y,A)),this.createController(t.timelineController,_),A.emeController=this.emeController=this.createController(t.emeController,_),this.cmcdController=this.createController(t.cmcdController,_),this.latencyController=this.createController(uf,_),this.coreComponents=_,v.push(n);const w=n.onErrorOut;"function"==typeof w&&this.on(Nc.ERROR,w,n)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,s){this._emitter.off(e,t,i,s)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(Hc.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===Nc.ERROR;this.trigger(Nc.ERROR,{type:jc.OTHER_ERROR,details:Gc.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){Hc.log("destroy"),this.trigger(Nc.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){Hc.log("attachMedia"),this._media=e,this.trigger(Nc.MEDIA_ATTACHING,{media:e})}detachMedia(){Hc.log("detachMedia"),this.trigger(Nc.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,s=this.url=xc.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,Hc.log(`loadSource:${s}`),t&&i&&(i!==s||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(Nc.MANIFEST_LOADING,{url:e})}startLoad(e=-1){Hc.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){Hc.log("stopLoad"),this.started=!1,this.networkControllers.forEach((e=>{e.stopLoad()}))}resumeBuffering(){this.started&&this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.startLoad(-1)}))}pauseBuffering(){this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.stopLoad()}))}swapAudioCodec(){Hc.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){Hc.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){Hc.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){Hc.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){Hc.log(`set loadLevel:${e}`),this.levelController.manualLevel=e}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(e){this.levelController.nextLoadLevel=e}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(e){Hc.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){Hc.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(Hc.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return pf.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let s=0;s=t)return s;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let s;if(s=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=s;t--;){const s=e[t].attrs["HDCP-LEVEL"];if(s&&s<=i)return t}return s}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(e){this.abrController.nextAutoLevel=e}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}setAudioOption(e){var t;return null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}KA.defaultConfig=void 0;class YA extends Ma{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):KA.isSupported()?(this.$videoElement=this.player.video.$videoElement,this.hls=new KA({}),this._initHls(),this._bindEvents()):this.player.debugError(this.TAG_NAME,"init hls error ,not support "),this.player.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{if(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.player._opt.useCanvasRender&&this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}this.$videoElement=null,this.hlsFps=0,this.player.debugLog(this.TAG_NAME,"destroy"),setTimeout((()=>{e()}),0)}))}checkHlsBufferedDelay(){const e=this.$videoElement;let t=0;const i=e.buffered,s=i.length?i.end(i.length-1):0;return t=s-e.currentTime,t<0&&(this.player.debugWarn(this.TAG_NAME,`checkHlsBufferedDelay ${t} < 0, and buffered is ${s} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${s}`),e.currentTime=s,t=0),t}getFps(){return this.hlsFps}_startCanvasRender(){xa()?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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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(gt.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(aa(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,ko()&&(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,s=xa(),r=t(i,ls,(t=>{if(this.hls){const i=parseInt(t.timeStamp,10);this.player._opt.useCanvasRender&&wa(s)&&e.updateStats({ts:i,dts:i})}}));this.eventsDestroy.push(r),this._startBandwidthEstimateInterval(),this._startFpsInterval(),this.hls.on(KA.Events.ERROR,((e,t)=>{if(t.fatal)switch(t.type){case KA.ErrorTypes.NETWORK_ERROR:this.player.debugWarn(this.TAG_NAME,"fatal network error encountered, try to recover"),this.hls.startLoad();break;case KA.ErrorTypes.MEDIA_ERROR:this.player.debugWarn(this.TAG_NAME,"fatal media error encountered, try to recover"),this.hls.recoverMediaError()}})),this.hls.on(KA.Events.MEDIA_ATTACHING,(()=>{})),this.hls.on(KA.Events.MEDIA_ATTACHED,(()=>{})),this.hls.on(KA.Events.MEDIA_DETACHING,(()=>{})),this.hls.on(KA.Events.MEDIA_DETACHED,(()=>{})),this.hls.on(KA.Events.BUFFER_RESET,(()=>{})),this.hls.on(KA.Events.BUFFER_CODECS,(()=>{})),this.hls.on(KA.Events.BUFFER_CREATED,(()=>{})),this.hls.on(KA.Events.BUFFER_APPENDING,((e,t)=>{this.player.debugLog(this.TAG_NAME,"BUFFER_APPENDING",t.type)})),this.hls.on(KA.Events.BUFFER_APPENDED,(()=>{})),this.hls.on(KA.Events.BUFFER_EOS,(()=>{})),this.hls.on(KA.Events.BUFFER_FLUSHING,(()=>{})),this.hls.on(KA.Events.BUFFER_FLUSHED,(()=>{})),this.hls.on(KA.Events.MANIFEST_LOADING,(()=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_LOADING 开始加载playlist m3u8资源")})),this.hls.on(KA.Events.MANIFEST_LOADED,((e,t)=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_LOADED playlist m3u8文件加载完成",t.url)})),this.hls.on(KA.Events.MANIFEST_PARSED,(()=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_PARSED playlist m3u8解析完成"),e._times.demuxStart||(e._times.demuxStart=uo())})),this.hls.on(KA.Events.LEVEL_LOADING,(()=>{})),this.hls.on(KA.Events.LEVEL_LOADED,((e,t)=>{})),this.hls.on(KA.Events.FRAG_LOADING,(()=>{})),this.hls.on(KA.Events.FRAG_LOADED,((t,i)=>{e._times.decodeStart||(e._times.decodeStart=uo())})),this.hls.on(KA.Events.BUFFER_APPENDING,(()=>{e._times.videoStart||(e._times.videoStart=uo(),e.handlePlayToRenderTimes())})),this.hls.on(KA.Events.FRAG_DECRYPTED,(()=>{})),this.hls.on(KA.Events.KEY_LOADING,(()=>{})),this.hls.on(KA.Events.KEY_LOADING,(()=>{})),this.hls.on(KA.Events.FPS_DROP,(e=>{})),this.hls.on(KA.Events.FPS_DROP_LEVEL_CAPPING,(e=>{})),this.hls.on(KA.Events.FRAG_PARSING_INIT_SEGMENT,((e,t)=>{this.player.debugLog(this.TAG_NAME,"FRAG_PARSING_INIT_SEGMENT",t);const i=!!(t&&t.tracks&&t.tracks.audio),s=!!(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,s=e.codec;this.player.audio&&this.player.audio.updateAudioInfo({encType:s,channels:i,sampleRate:44100})}if(s&&t.tracks.video){let e=t.tracks.video;const i={encTypeCode:-1!==e.codec.indexOf("avc")?Ct:Dt};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,as,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,ns,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,ls,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,ds,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,s,r)}loadSource(e){return new Promise(((t,i)=>{this.canVideoPlay?(this.initVideoPlay(e),t()):this.hls.on(KA.Events.MEDIA_ATTACHED,(()=>{this.hls.loadSource(e),t()}))}))}}const QA=2097152,XA="fetch",ZA="xhr",eb="arraybuffer",tb="text",ib="json",sb="real_time_speed",rb=Object.prototype.toString;function ob(e){if("[object Object]"!==rb.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function ab(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 nb(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function lb(e,t){if(!e)return;if(!t)return e;let i;const s=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]"===rb.call(i)?t=t.toISOString():function(e){return null!==e&&"object"==typeof e}(t)&&(t=JSON.stringify(t)),`${nb(e)}=${nb(t)}`})).join("&")})).filter(Boolean).join("&");if(s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}function db(e,t,i,s,r,o,a,n,l,d,h){r=null!=r?parseFloat(r):null,s=parseInt(s||"0",10),Number.isNaN(s)&&(s=0);return{data:e,done:t,option:{range:l,vid:d,index:n,contentLength:s,age:r,startTime:o,firstByteTime:a,endTime:Date.now(),priOptions:h},response:i}}function hb(e,t){return Math.round(8*e*1e3/t/1024)}class cb extends Error{constructor(e,t,i,s){super(s),bh(this,"retryCount",0),bh(this,"isTimeout",!1),bh(this,"loaderType",XA),bh(this,"startTime",0),bh(this,"endTime",0),bh(this,"options",{}),this.url=e,this.request=t,this.response=i}}class ub extends Ma{constructor(e){super(),bh(this,"_abortController",null),bh(this,"_timeoutTimer",null),bh(this,"_reader",null),bh(this,"_response",null),bh(this,"_aborted",!1),bh(this,"_index",-1),bh(this,"_range",null),bh(this,"_receivedLength",0),bh(this,"_running",!1),bh(this,"_logger",null),bh(this,"_vid",""),bh(this,"_onProcessMinLen",0),bh(this,"_onCancel",null),bh(this,"_priOptions",null),bh(this,"TAG_NAME","FetchLoader"),this.player=e}load(e){var t;let{url:i,vid:s,timeout:r,responseType:o,onProgress:a,index:n,onTimeout:l,onCancel:d,range:h,transformResponse:c,request:u,params:p,logger:f,method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:S,referrerPolicy:E,onProcessMinLen:w,priOptions:T}=e;this._aborted=!1,this._onProcessMinLen=w,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=n,this._range=h||[0,0],this._vid=s||i,this._priOptions=T||{};const k={method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:S,referrerPolicy:E,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal};let L=!1;clearTimeout(this._timeoutTimer),i=lb(i,p);const C=ab(h);C&&(g=u?u.headers:k.headers=k.headers||(Headers?new Headers:{}),Headers&&g instanceof Headers?g.append("Range",C):g.Range=C),r&&(this._timeoutTimer=setTimeout((()=>{if(L=!0,this.cancel(),l){const e=new cb(i,k,null,"timeout");e.isTimeout=!0,l(e,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),r));const D=Date.now();return(Go(n)||Go(h))&&this.player.debugLog(this.TAG_NAME,"[fetch load start], index,",n,",range,",h),new Promise(((e,t)=>{fetch(u||i,u?void 0:k).then((async s=>{if(clearTimeout(this._timeoutTimer),this._response=s,this._aborted||!this._running)return;if(c&&(s=c(s,i)||s),!s.ok)throw new cb(i,k,s,"bad network response");const r=Date.now();let l;if(o===tb)l=await s.text(),this._running=!1;else if(o===ib)l=await s.json(),this._running=!1;else{if(a)return this.resolve=e,this.reject=t,void this._loadChunk(s,a,D,r);{l=await s.arrayBuffer(),l=new Uint8Array(l),this._running=!1;const e=Date.now()-D,t=hb(l.byteLength,e);this.emit(sb,{speed:t,len:l.byteLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}(Go(n)||Go(h))&&this.player.debugLog(this.TAG_NAME,"[fetch load end], index,",n,",range,",h),e(db(l,!0,s,s.headers.get("Content-Length"),s.headers.get("age"),D,r,n,h,this._vid,this._priOptions))})).catch((e=>{var s;clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!L||((e=e instanceof cb?e:new cb(i,k,null,null===(s=e)||void 0===s?void 0:s.message)).startTime=D,e.endTime=Date.now(),e.isTimeout=L,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},t(e))}))}))}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,s){if(!e.body||!e.body.getReader){this._running=!1;const t=new cb(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(QA),this._writeIdx=0);const r=this._reader=e.body.getReader();let o,a,n;const l=async()=>{var d;a=Date.now();try{o=await r.read(),n=Date.now()}catch(e){return n=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 h=(null===(d=this._range)||void 0===d?void 0:d.length)>0?this._range[0]:0,c=h+this._receivedLength;if(this._aborted)return this._running=!1,void t(void 0,!1,{range:[c,c],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e);const u=o.value?o.value.byteLength:0;let p;if(this._receivedLength+=u,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress call】,task,",this._range,", start,",c,", end,",h+this._receivedLength,", done,",o.done),this._onProcessMinLen>0){if(this._writeIdx+u>=this._onProcessMinLen||o.done)p=new Uint8Array(this._writeIdx+u),p.set(this._cache.slice(0,this._writeIdx),0),u>0&&p.set(o.value,this._writeIdx),this._writeIdx=0,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress enough】,done,",o.done,",len,",p.byteLength,", writeIdx,",this._writeIdx);else if(u>0&&this._writeIdx+u0){const e=new Uint8Array(this._writeIdx+u+2048);this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress extra start】,size,",this._writeIdx+u+2048,", datalen,",u,", writeIdx,",this._writeIdx),e.set(this._cache.slice(0,this._writeIdx),0),u>0&&e.set(o.value,this._writeIdx),this._writeIdx+=u,delete this._cache,this._cache=e,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",this._writeIdx)}}else p=o.value;if((p&&p.byteLength>0||o.done)&&t(p,o.done,{range:[this._range[0]+this._receivedLength-(p?p.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e),o.done){const t=Date.now()-i,r=hb(this._receivedLength,t);this.emit(sb,{speed:r,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this.player.debugLog(this.TAG_NAME,"[fetchLoader onProgress end],task,",this._range,",done,",o.done),this.resolve(db(o,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),i,s,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 pb{constructor(e,t,i){bh(this,"TAG_NAME","Task"),this.promise=function(){let e,t;const i=new Promise(((i,s)=>{e=i,t=s}));return i.used=!1,i.resolve=function(){return i.used=!0,e(...arguments)},i.reject=function(){return i.used=!0,t(...arguments)},i}(),this.alive=!!t.onProgress,this._loaderType=e,this.player=i,this._loader=e===XA&&window.fetch?new ub(i):new fb(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:s,...r}=this._config,o=async()=>{try{const e=await this._loader.load(r);this.promise.resolve(e)}catch(a){if(this._loader.running=!1,this.player.debugLog(this.TAG_NAME,"[task request catch err]",a),this._canceled)return;a.loaderType=this._loaderType,a.retryCount=this._retryCount;let n=a;s&&(n=s(n)||n),i&&this._retryCount>0&&i(n,this._retryCount,{index:r.index,vid:r.vid,range:r.range,priOptions:r.priOptions}),this._retryCount++;let l=!0;if(this._retryCheckFunc&&(l=this._retryCheckFunc(a)),l&&this._retryCount<=e)return clearTimeout(this._retryTimer),this.player.debugLog(this.TAG_NAME,"[task request setTimeout],retry",this._retryCount,",retry range,",r.range),void(this._retryTimer=setTimeout(o,t));this.promise.reject(n)}};return o(),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 fb extends Ma{constructor(e){super(),bh(this,"_xhr",null),bh(this,"_aborted",!1),bh(this,"_timeoutTimer",null),bh(this,"_range",null),bh(this,"_receivedLength",0),bh(this,"_url",null),bh(this,"_onProgress",null),bh(this,"_index",-1),bh(this,"_headers",null),bh(this,"_currentChunkSizeKB",384),bh(this,"_timeout",null),bh(this,"_xhr",null),bh(this,"_withCredentials",null),bh(this,"_startTime",-1),bh(this,"_loadCompleteResolve",null),bh(this,"_loadCompleteReject",null),bh(this,"_runing",!1),bh(this,"_logger",!1),bh(this,"_vid",""),bh(this,"_responseType",void 0),bh(this,"_credentials",void 0),bh(this,"_method",void 0),bh(this,"_transformResponse",void 0),bh(this,"_firstRtt",void 0),bh(this,"_onCancel",null),bh(this,"_priOptions",null),bh(this,"TAG_NAME","XhrLoader"),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.debugLog(this.TAG_NAME,"【xhrLoader task】, range",this._range),this._url=lb(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 cb?e:new cb(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===eb&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const t=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let s=this._range[1];t],tast :",this._range,", SubRange, ",e)}else e=this._range,this.player.debugLog(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=>{var t,i,s;this._running=!1;const r=new cb(this._url,this._request,null==e||null===(t=e.currentTarget)||void 0===t?void 0:t.response,"xhr.onerror.status:"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.status)+",statusText,"+(null==e||null===(s=e.currentTarget)||void 0===s?void 0:s.statusText));r.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(r)},t.ontimeout=e=>{this.cancel();const t=new cb(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||{},s=ab(e);s&&(i.Range=s),i&&Object.keys(i).forEach((e=>{t.setRequestHeader(e,i[e])})),this.player.debugLog(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){var t;const i=e.target.status;if(i<200||i>299){const t=new cb(this._url,null,{...e.target.response,status:i},"bad response,status:"+i);return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}let s,r=null,o=!1;const a=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===eb){var n;const t=new Uint8Array(e.target.response);if(s=a+this._receivedLength,t&&t.byteLength>0){this._receivedLength+=t.byteLength;const e=Date.now()-this._startTime,i=hb(this._receivedLength,e);this.emit(sb,{speed:i,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:[s,a+this._receivedLength],priOptions:this._priOptions})}r=t,o=!((null===(n=this._range)||void 0===n?void 0:n.length)>1&&this._range[1]&&this._receivedLength], tast :",this._range,", start",s,"end ",a+this._receivedLength,",dataLen,",t?t.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",o)}else o=!0,r=e.target.response;let l={ok:i>=200&&i<300,status:i,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(l=this._transformResponse(l,this._url)||l),this._onProgress&&this._onProgress(r,o,{index:this._index,vid:this._vid,range:[s,a+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},l),o?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(db(this._onProgress?null:r,o,l,l.headers["content-length"],l.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 mb extends Ma{constructor(e,t){super(),bh(this,"type",XA),bh(this,"_queue",[]),bh(this,"_alive",[]),bh(this,"_currentTask",null),bh(this,"_config",void 0),this.player=t,this._config=function(e){return{loaderType:XA,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:tb,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!==ZA&&ub.isSupported()||(this.type=ZA)}destroy(){this._queue=[],this._alive=[],this._currentTask=null}isFetch(){return this.type===XA}static isFetchSupport(){return ub.isSupported()}load(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?t=e:t.url=e||t.url||this._config.url,t=Object.assign({},this._config,t),t.params&&(t.params=Object.assign({},t.params)),t.headers&&ob(t.headers)&&(t.headers=Object.assign({},t.headers)),t.body&&ob(t.body)&&(t.body=Object.assign({},t.body)),t.transformRequest&&(t=t.transformRequest(t)||t);const i=new pb(this.type,t,this.player);return i.loader.on(sb,(e=>{this.emit(sb,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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]: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((()=>{var e,t;null!==(e=this._currentTask)&&void 0!==e&&e.alive&&(null===(t=this._alive)||void 0===t?void 0:t.length)>0&&(this._alive=this._alive.filter((e=>e&&e!==this._currentTask))),this._processTask()}))}}const gb="network",yb="network_timeout",Ab="other",bb="manifest",vb="hls",_b="demux";class Sb extends Error{constructor(e,t,i,s,r){super(r||(null==i?void 0:i.message)),this.errorType=e===yb?gb:e,this.originError=i,this.ext=s,this.errorMessage=this.message}static create(e,t,i,s,r){return e instanceof Sb?e:(e instanceof Error&&(i=e,e=""),e||(e=Ab),new Sb(e,t,i,s,r))}static network(e){var t;return new Sb(null!=e&&e.isTimeout?yb:gb,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==e||null===(t=e.response)||void 0===t?void 0:t.status})}}const Eb=/^#(EXT[^:]*)(?::(.*))?$/,wb=/([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g,Tb=/^(?:[a-zA-Z0-9+\-.]+:)?\/\//,kb=/^((?:[a-zA-Z0-9+\-.]+:)?\/\/[^/?#]*)?([^?#]*\/)?/;function Lb(e){const t=e.match(Eb);if(t&&t[1])return[t[1].replace("EXT-X-",""),t[2]]}function Cb(e){const t={};let i=wb.exec(e);for(;i;)t[i[1]]=i[2]||i[3],i=wb.exec(e);return t}function Db(e,t){if(!t||!e||Tb.test(e))return e;const i=kb.exec(t);return i?"/"===e[0]?i[1]+e:i[1]+i[2]+e:e}const xb={audio:[/^mp4a/,/^vorbis$/,/^opus$/,/^flac$/,/^[ae]c-3$/],video:[/^avc/,/^hev/,/^hvc/,/^vp0?[89]/,/^av1$/],text:[/^vtt$/,/^wvtt/,/^stpp/]};function Rb(e,t){const i=xb[e];if(i&&t&&t.length)for(let e=0;e>8*(15-t)&255}}}class zb{static parse(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;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 zb.isMediaPlaylist(e)?function(e,t){const i=new Nb;i.url=t;let s,r=new jb,o=null,a=null,n=0,l=0,d=0,h=0,c=!1;for(;(s=e[h++])&&!c;){if("#"!==s[0]){r.sn=l,r.cc=d,r.url=Db(s,t),a&&(r.key=a.clone(l)),o&&(r.initSegment=o),i.segments.push(r),r=new jb,l++;continue}const e=Lb(s);if(!e)continue;const[h,u]=e;switch(h){case"VERSION":i.version=parseInt(u);break;case"PLAYLIST-TYPE":i.type=null==u?void 0: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":r.setByteRange(u,i.segments[i.segments.length-1]);break;case"EXTINF":{const[e,t]=u.split(",");r.start=n,r.duration=parseFloat(e),n+=r.duration,r.title=t}break;case"KEY":{const e=Cb(u);if("NONE"===e.METHOD){a=null;break}if("AES-128"!==e.METHOD)throw new Error(`encrypt ${e.METHOD}/${e.KEYFORMAT} is not supported`);if(a=new Gb,a.method=e.METHOD,a.url=/^blob:/.test(e.URI)?e.URI:Db(e.URI,t),a.keyFormat=e.KEYFORMAT||"identity",a.keyFormatVersions=e.KEYFORMATVERSIONS,e.IV){let t=e.IV.slice(2);t=(1&t.length?"0":"")+t,a.iv=new Uint8Array(t.length/2);for(let e=0,i=t.length/2;e{e.id=t})),o.length&&(o.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.audioGroup&&(e.audioStreams=o.filter((t=>t.group===e.audioGroup)))}))),a.length&&(a.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.subtitleGroup&&(e.subtitleStreams=a.filter((t=>t.group===e.subtitleGroup)))}))),i}(i,t)}static isMediaPlaylist(e){return e.includes("#EXTINF:")||e.includes("#EXT-X-TARGETDURATION:")}}class Wb{constructor(e){bh(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(zs,{error:Sb.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this.TAG_NAME="HlsManifestLoader",this._timer=null;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._loader=new mb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioLoader=new mb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._subtitleLoader=new mb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,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.debugLog(this.TAG_NAME,"load()",e,t,i);const s=[this._loader.load(e)];let r,o,a,n,l,d;t&&s.push(this._audioLoader.load(t)),i&&s.push(this._subtitleLoader.load(i));try{const[e,i,n]=await Promise.all(s);if(!e)return[];r=e.data,t?(o=null==i?void 0:i.data,a=null==n?void 0:n.data):a=null==i?void 0:i.data}catch(e){throw Sb.network(e)}try{var h;if(n=zb.parse(r,e),!1===(null===(h=n)||void 0===h?void 0:h.live)&&n.segments&&!n.segments.length)throw new Error("empty segments list");o&&(l=zb.parse(o,t)),a&&(d=zb.parse(a,i))}catch(e){throw new Sb(bb,vb,e)}return n&&(n.isMaster?this.hls.emit(Fs,{playlist:n}):this.hls.emit(Us,{playlist:n})),[n,l,d]}poll(e,t,i,s,r,o){clearTimeout(this._timer),o=o||3e3;let a=this.hls.config.pollRetryCount;const n=async()=>{clearTimeout(this._timer);try{const r=await this.load(e,t,i);if(!r[0])return;a=this.hls.config.pollRetryCount,s(r[0],r[1],r[2])}catch(e){a--,a<=0&&r(e)}this._timer=setTimeout(n,o)};this._timer=setTimeout(n,o)}stopPoll(){return clearTimeout(this._timer),this.cancel()}cancel(){return Promise.all([this._loader.cancel(),this._audioLoader.cancel()])}}class Vb{constructor(){bh(this,"_chunkSpeeds",[]),bh(this,"_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 $b{constructor(e){bh(this,"_emitOnLoaded",((e,t)=>{const{data:i,response:s,option:r}=e,{firstByteTime:o,startTime:a,endTime:n,contentLength:l}=r||{},d=n-a;this._bandwidthService.addRecord(l||i.byteLength,d),this.hls.emit(Vs,{time:d,byteLength:l,url:t}),this.hls.emit($s,{url:t,elapsed:d||0}),this.hls.emit(Gs,{url:t,responseUrl:s.url,elapsed:o-a}),this.hls.emit(Hs,{headers:s.headers})})),bh(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(zs,{error:Sb.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this._bandwidthService=new Vb;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._segmentLoader=new mb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioSegmentLoader=new mb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._keyLoader=new mb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,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){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i;const r=[];return e&&(r[0]=this.loadVideoSegment(e,i)),t&&(r[1]=this.loadAudioSegment(t,s)),Promise.all(r)}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){var s;let r,o,a,n,l;const d=[];if(this.hls.emit(Ws,{url:t.url}),d[0]=e.load(t.url),i&&t.initSegment){var h;const i=t.initSegment.url;r=this._mapCache[i],r||(this.hls.emit(Ws,{url:i}),d[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=null===(h=t.initSegment.key)||void 0===h?void 0:h.url;s&&(l=t.initSegment.key.iv,n=this._keyCache[s],n||(this.hls.emit(Ws,{url:s}),d[2]=this._keyLoader.load(s).then((e=>{e&&(n=this._keyCache[s]=e.data,this._emitOnLoaded(e,s))}))))}const c=null===(s=t.key)||void 0===s?void 0:s.url;c&&(a=t.key.iv,o=this._keyCache[c],o||(this.hls.emit(Ws,{url:c}),d[3]=this._keyLoader.load(c).then((e=>{e&&(o=this._keyCache[c]=e.data,this._emitOnLoaded(e,c))}))));const[u]=await Promise.all(d);if(!u)return;const p=u.data;return this._emitOnLoaded(u,t.url),{data:p,map:r,key:o,mapKey:n,keyIv:a,mapKeyIv:l}}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()])}}class Hb{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(){var e;return this.targetDuration||(null===(e=this.segments[0])||void 0===e?void 0:e.duration)||0}get liveEdge(){return this.endTime}get endTime(){var e;return(null===(e=this.lastSegment)||void 0===e?void 0:e.end)||0}get currentSubtitleEndSn(){var e;return(null===(e=this.currentSubtitleStream)||void 0===e?void 0:e.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 s=this.segments;for(let t=0,r=s.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 s=i[i.length-1],r=(null==s?void 0:s.sn)||-1;if(re.sn===r)),a=o<0?e.segments:e.segments.slice(o+1);if(i.length&&a.length){let e=s.end;a.forEach((t=>{t.start=e,e=t.end}));const t=(null==s?void 0:s.cc)||-1;t>a[0].cc&&a.forEach((e=>e.cc+=t))}return t.endSN=e.endSN,t.segments=i.concat(a),a}}else t.segments=e.segments}}class Jb{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(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.lastSegment}get currentSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer]}get nextSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer+1]}get currentSegments(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.segments}get currentSubtitleEndSn(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.currentSubtitleEndSn}get liveEdge(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.liveEdge}get totalDuration(){var e;return(null===(e=this.currentStream)||void 0===e?void 0:e.totalDuration)||0}get seekRange(){const e=this.currentSegments;if(e&&e.length)return[e[0].start,e[e.length-1].end]}get isEmpty(){var e;return!(null!==(e=this.currentSegments)&&void 0!==e&&e.length)}get isLive(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.live}get hasSubtitle(){var e;return!(null===(e=this.currentStream)||void 0===e||!e.currentSubtitleStream)}getAudioSegment(e){var t;return null===(t=this.currentStream)||void 0===t?void 0:t.getAudioSegment(e)}moveSegmentPointer(e){var t;null==e&&(e=this._segmentPointer+1),this._segmentPointer=po(e,-1,null===(t=this.currentSegments)||void 0===t?void 0:t.length),this.player.debugLog(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){var t;return null===(t=this.currentSegments)||void 0===t?void 0:t[e]}setNextSegmentByIndex(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this._segmentPointer=e-1,this.player.debugLog(this.TAG_NAME,"setNextSegmentByIndex()",e,this._segmentPointer)}findSegmentIndexByTime(e){const t=this.currentSegments;if(t){for(let i,s=0,r=t.length;s=i.start&&ee.url)).forEach(((e,t)=>{this.streams[t]?this.streams[t].update(e):this.streams[t]=new Hb(e)})),this.currentStream=this.streams[0];else if(Array.isArray(e.segments)){const s=this.currentStream;if(s){s.update(e,t,i);const r=s.updateSubtitle(i);r&&this.hls.emit(Ms,{list:r})}else this.reset(),this.currentStream=this.streams[0]=new Hb(e,t,i)}this.currentStream&&this.hls.isLive&&!this.dvrWindow&&(this.dvrWindow=this.currentSegments.reduce(((e,t)=>e+=t.duration),0))}switchSubtitle(e){var t;null===(t=this.currentStream)||void 0===t||t.switchSubtitle(e)}clearOldSegment(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50;const t=this.currentStream;if(!this.dvrWindow||!t)return;const i=t.endTime-this.dvrWindow;if(i<=0)return void this.player.debugLog(this.TAG_NAME,`clearOldSegment() stream.endTime:${t.endTime}, this.dvrWindow:${this.dvrWindow} startTime <= 0`);const s=t.segments;if(s.length<=e)return void this.player.debugLog(this.TAG_NAME,`clearOldSegment() segments.length:${s.length} <= maxPlaylistSize:${e}`);const r=this._segmentPointer;this._segmentPointer=t.clearOldSegment(i,r),this.player.debugLog(this.TAG_NAME,"clearOldSegment() update _segmentPointer:",r,this._segmentPointer),this.player.debugLog(this.TAG_NAME,"currentSegments",this.currentSegments)}checkSegmentTrackChange(e,t){const i=this.findSegmentIndexByTime(e),s=this.getSegmentByIndex(i);if(!s)return;if(!s.hasAudio&&!s.hasVideo)return;if(2!==t&&s.hasAudio&&s.hasVideo)return s;if(s.end-e>.3)return;const r=this.getSegmentByIndex(i+1);return r&&(r.hasAudio||r.hasVideo)&&(r.hasAudio!==s.hasAudio||r.hasVideo!==s.hasVideo)?r:void 0}}class qb{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?Dh(e.map,t):t}async _decryptData(e,t,i){if(this.externalDecryptor)return await this.externalDecryptor.decrypt(e,t,i);if(this.subtle){const s=await this.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt","decrypt"]),r=await this.subtle.decrypt({name:"AES-CBC",iv:i},s,e);return new Uint8Array(r)}e=Pd(e),t=Pd(t),i=Pd(i);return function(e){const{words:t}=e,{sigBytes:i}=e,s=new Uint8Array(i);for(let e=0;e>>2]>>>24-e%4*8&255;return s}(xd.AES.decrypt({ciphertext:e},t,{iv:i,mode:xd.mode.CBC}))}}class Kb extends lh{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=Ct,this._audioCodecType=Pt,this._vps=null,this._sps=null,this._pps=null,this.TAG_NAME="HlsTsLoader",this.videoTrack=Kb.initVideoTrack(),this.audioTrack=Kb.initAudioTrack(),this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,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.debugLog(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.videoTrack=null,this.audioTrack=null,this.tempSampleListInfo={},this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._hasCalcFps=!1,this._tempSampleTsList=[],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.player.debugLog(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])}_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let r,o;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?(o=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-o>54e5&&(r=o)):o=r),{data:e.subarray(9+t),pts:r,dts:o,originalPts:r,originalDts:o}}_demux(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t&&(this._pmtId=-1,this.videoTrack=Kb.initVideoTrack(),this.audioTrack=Kb.initAudioTrack()),!i||t?(this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[]):(this.videoTrack.samples=[],this.audioTrack.samples=[],this._remainingPacketData&&(e=Dh(this._remainingPacketData,e),this._remainingPacketData=null));let s=e.length;const r=s%188;r&&(this._remainingPacketData=e.subarray(s-r),s-=r);for(let t=0;t>4>1){if(r=t+5+e[t+4],r===t+188)continue}else r=t+4;switch(s){case 0:i&&(r+=e[r]+1),this._pmtId=(31&e[r+10])<<8|e[r+11];break;case this._pmtId:{i&&(r+=e[r]+1);const t=r+3+((15&e[r+1])<<8|e[r+2])-4;for(r+=12+((15&e[r+10])<<8|e[r+11]);r=t)return[];const r=[];for(;s{const t=s?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(!s&&5!==t||s&&5===t)break;r.isIFrame=!0,this._gopId++;break;case 6:case 39:case 40:if(!s&&6!==t||s&&6===t)break;const o=oo(function(e){const t=e.byteLength,i=[];let s=1;for(;s=i)return;const r=s,o=[],a=(60&e[s+2])>>>2,n=jr[a];if(!n)throw new Error(`Invalid sampling index: ${a}`);const l=1+((192&e[s+2])>>>6),d=(1&e[s+2])<<2|(192&e[s+3])>>>6;let h,c,u=0;const p=Jr(n);for(;s+7>5,i-s=i?void 0:e.subarray(s),frames:o,samplingFrequencyIndex:a,sampleRate:n,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=Wr({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});this._isSendAACSeqHeader=!0,this.player.debugLog(this.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),this._doDecodeByHls(e,Ne,0,!1,0)}if(this._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const i=t.pts,s=new Uint8Array(t.data.length+2);s.set([175,1],0),s.set(t.data,2);const r={type:Ne,pts:i,dts:i,payload:s};e.push(r)})),this.audioTrack.samples=this.audioTrack.samples.concat(e)}else this.player.debugWarn(this.TAG_NAME,"aac seq header not send")}else this.player.debugWarn(this.TAG_NAME,"aac parseADTS error")}this._audioPesData=[]}else e&&"startPrefixError"===e.code&&(this._audioPesData=[])}_fix(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=Math.round(9e4*e);const s=this.videoTrack,r=this.audioTrack,o=s.samples,a=r.samples;if(!o.length&&!a.length)return;const n=o[0],l=a[0];let d=0;if(o.length&&a.length&&(d=n.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=n?n.dts-this._baseDts-this._videoNextDts:0,i=l?l.pts-this._baseDts-this._audioNextPts:0;Math.abs(t||i)>Er&&(this._calculateBaseDts(this.audioTrack,this.videoTrack),this._baseDts-=e)}this._resetBaseDtsWhenStreamBreaked(),this._fixAudio(r),this._fixVideo(s);let h=s.samples.concat(r.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===je?this._doDecodeVideo({...e,payload:t}):e.type===Ne&&this._doDecodeAudio({...e,payload:t})})),wa(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(h))}_calculateBaseDts(){const e=this.audioTrack,t=this.videoTrack,i=e.samples,s=t.samples;if(!i.length&&!s.length)return!1;let r=1/0,o=1/0;i.length&&(e.baseDts=r=i[0].pts),s.length&&(t.baseDts=o=s[0].dts),this._baseDts=Math.min(r,o);const a=o-r;return Number.isFinite(a)&&Math.abs(a)>45e3&&this.player.debugWarn(this.TAG_NAME,`large av first frame gap,\n video pts: ${o},\n audio pts: ${r},\n base dts: ${this._baseDts},\n detect is: ${a}`),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 s=0;const r=t[0],o=t[1],a=this._videoNextDts-r.dts;let n;Math.abs(a)>45e3&&(r.dts+=a,r.pts+=a,this.player.debugWarn(this.TAG_NAME,`large video gap between chunk,\n next dts is ${this._videoNextDts},\n first dts is ${r.dts},\n next dts is ${o&&o.dts},\n duration is ${a}`),o&&Math.abs(o.dts-r.dts)>Er&&(this._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=a,e.pts+=a)}))));const l=e.samples[0],d=e.samples[i-1];n=1===i?9e3:Math.floor((d.dts-l.dts)/(i-1));for(let r=0;rEr||s<0){this._videoTimestampBreak=!0,s=this._audioTimestampBreak?n:Math.max(s,2700);const i=this._audioNextPts||0;a&&a.dts>i&&(s=n),this.player.debugWarn(this.TAG_NAME,`large video gap between frames,\n time is ${o/e.timescale},\n dts is ${o},\n origin dts is ${t[r].originalDts},\n next dts is ${this._videoNextDts},\n sample Duration is ${s} ,\n ref Sample DurationInt is ${n}`)}t[r].duration=s,this._videoNextDts+=s}}_doFixAudioInternal(e,t,i){e.sampleDuration||(e.sampleDuration=Jr(e.timescale,i));const s=e.sampleDuration;if(void 0===this._audioNextPts){const e=t[0];this._audioNextPts=e.pts}for(let i=0;i=3*s&&a<=_r&&!ko()){Hr(e.codec,e.channelCount)||t[0].data.subarray();const n=Math.floor(a/s);Math.abs(o.pts-this._lastAudioExceptionGapDot)>Sr&&(this._lastAudioExceptionGapDot=o.pts),this.player.debugWarn(this.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${n},\n nextPts is ${r},\n ref sample duration is ${s}`);for(let e=0;e=-9e4?(Math.abs(o.pts-this._lastAudioExceptionOverlapDot)>Sr&&(this._lastAudioExceptionOverlapDot=o.pts,this.player.debugWarn(this.TAG_NAME,`audio overlap detected,\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n ref sample duration is ${s}`)),t.splice(i,1),i--):(Math.abs(a)>=_r&&(this._audioTimestampBreak=!0,Math.abs(o.pts-this._lastAudioExceptionLargeGapDot)>Sr&&(this._lastAudioExceptionLargeGapDot=o.pts,this.player.debugWarn(this.TAG_NAME,`large audio gap detected,\n time is ${o.pts/1e3}\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n sample duration is ${a}\n ref sample duration is ${s}`))),o.dts=o.pts=r,this._audioNextPts+=s)}}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=ma(this._tempSampleTsList,je);if(i)this._tempSampleTsList=[],this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debugLog(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debugLog(this.TAG_NAME,"_initLoopWorker()");const e=Da(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(`JbPro:[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((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=Math.round(s.duration/90))):s.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 if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};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 s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),se),s.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=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debugWarn(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=this.cryptoPayloadAudio(t);this._doDecodeByHls(i,Ne,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?rl(t,e.isIFrame):Vn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,je,e.dts,e.isIFrame,s)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}}function Yb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function Qb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Xb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=Math.pow(2,32);return Qb(e,t)*i+Qb(e,t+4)}const Zb="aac",ev="g7110a",tv="g7110m",iv="avc",sv="hevc";class rv{static getFrameDuration(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}static getRateIndexByRate(e){return rv.FREQ.indexOf(e)}}function ov(e,t,i,s,r,o){const a=[],n=null==r?void 0:r.entries,l=t.entries,d=s.entries,h=i.entrySizes,c=null==o?void 0:o.entries;let u,p,f;c&&(u={},c.forEach((e=>{u[e-1]=!0}))),n&&(p=[],n.forEach((e=>{let{count:t,offset:i}=e;for(let e=0;e{let{count:t,delta:s}=e;for(let e=0;e=S&&(b++,S=l[b+1]?l[b+1].firstChunk-1:1/0),_+=l[b].samplesPerChunk)})),a}function av(e,t){return e.dataReferenceIndex=Yb(t,6),e.width=Yb(t,24),e.height=Yb(t,26),e.horizresolution=Qb(t,28),e.vertresolution=Qb(t,32),e.frameCount=Yb(t,40),e.depth=Yb(t,74),78}function nv(e,t){return e.dataReferenceIndex=Yb(t,6),e.channelCount=Yb(t,16),e.sampleSize=Yb(t,18),e.sampleRate=Qb(t,24)/65536,28}function lv(e,t,i){if(!e)return;if(e.size!==e.data.length)throw new Error(`box ${e.type} size !== data.length`);const s={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(s.version=e.data[e.headerSize],s.flags=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),s.headerSize+=4),i(s,e.data.subarray(s.headerSize),s.start+s.headerSize),s}bh(rv,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);const dv=function(e,t,i){const s=String(i),r=t>>0;let o=Math.ceil(r/s.length);const a=[],n=String(e);for(;o--;)a.push(s);return a.join("").substring(0,r-n.length)+n},hv=function(){const e=[];for(var t=arguments.length,i=new Array(t),s=0;s{e.push(dv(Number(t).toString(16),2,0))})),e[0]};class cv{static probe(e){return!!cv.findBox(e,["ftyp"])}static findBox(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=[];if(!e)return s;let r=0,o="",a=0;for(;e.length>7;){if(r=Qb(e),o=String.fromCharCode.apply(null,e.subarray(4,8)),a=8,1===r?(r=Xb(e,8),a+=8):r||(r=e.length),!t[0]||o===t[0]){const n=e.subarray(0,r);if(!(t.length<2))return cv.findBox(n.subarray(a),t.slice(1),i+a);s.push({start:i,size:r,headerSize:a,type:o,data:n})}i+=r,e=e.subarray(r)}return s}static tfhd(e){return lv(e,!0,((e,t)=>{e.trackId=Qb(t);let i=4;const s=1&e.flags,r=2&e.flags,o=8&e.flags,a=16&e.flags,n=32&e.flags;s&&(i+=4,e.baseDataOffset=Qb(t,i),i+=4),r&&(e.sampleDescriptionIndex=Qb(t,i),i+=4),o&&(e.defaultSampleDuration=Qb(t,i),i+=4),a&&(e.defaultSampleSize=Qb(t,i),i+=4),n&&(e.defaultSampleFlags=Qb(t,i))}))}static sidx(e){return lv(e,!0,((e,t)=>{let i=0;e.reference_ID=Qb(t,i),i+=4,e.timescale=Qb(t,i),i+=4,0===e.version?(e.earliest_presentation_time=Qb(t,i),i+=4,e.first_offset=Qb(t,i),i+=4):(e.earliest_presentation_time=Xb(t,i),i+=8,e.first_offset=Xb(t,i),i+=8),i+=2,e.references=[];const s=Yb(t,i);i+=2;for(let r=0;r>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=Qb(t,i),i+=4,r=Qb(t,i),i+=4,s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}}))}static moov(e){return lv(e,!1,((e,t,i)=>{e.mvhd=cv.mvhd(cv.findBox(t,["mvhd"],i)[0]),e.trak=cv.findBox(t,["trak"],i).map((e=>cv.trak(e))),e.pssh=cv.pssh(cv.findBox(t,["pssh"],i)[0])}))}static mvhd(e){return lv(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=Qb(t,16),e.duration=Xb(t,20),i+=28):(e.timescale=Qb(t,8),e.duration=Qb(t,12),i+=16),e.nextTrackId=Qb(t,i+76)}))}static trak(e){return lv(e,!1,((e,t,i)=>{e.tkhd=cv.tkhd(cv.findBox(t,["tkhd"],i)[0]),e.mdia=cv.mdia(cv.findBox(t,["mdia"],i)[0])}))}static tkhd(e){return lv(e,!0,((e,t)=>{let i=0;1===e.version?(e.trackId=Qb(t,16),e.duration=Xb(t,24),i+=32):(e.trackId=Qb(t,8),e.duration=Qb(t,16),i+=20),e.width=Qb(t,i+52),e.height=Qb(t,i+56)}))}static mdia(e){return lv(e,!1,((e,t,i)=>{e.mdhd=cv.mdhd(cv.findBox(t,["mdhd"],i)[0]),e.hdlr=cv.hdlr(cv.findBox(t,["hdlr"],i)[0]),e.minf=cv.minf(cv.findBox(t,["minf"],i)[0])}))}static mdhd(e){return lv(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=Qb(t,16),e.duration=Xb(t,20),i+=28):(e.timescale=Qb(t,8),e.duration=Qb(t,12),i+=16);const s=Yb(t,i);e.language=String.fromCharCode(96+(s>>10&31),96+(s>>5&31),96+(31&s))}))}static hdlr(e){return lv(e,!0,((e,t)=>{0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}static minf(e){return lv(e,!1,((e,t,i)=>{e.vmhd=cv.vmhd(cv.findBox(t,["vmhd"],i)[0]),e.smhd=cv.smhd(cv.findBox(t,["smhd"],i)[0]),e.stbl=cv.stbl(cv.findBox(t,["stbl"],i)[0])}))}static vmhd(e){return lv(e,!0,((e,t)=>{e.graphicsmode=Yb(t),e.opcolor=[Yb(t,2),Yb(t,4),Yb(t,6)]}))}static smhd(e){return lv(e,!0,((e,t)=>{e.balance=Yb(t)}))}static stbl(e){return lv(e,!1,((e,t,i)=>{var s,r,o;e.stsd=cv.stsd(cv.findBox(t,["stsd"],i)[0]),e.stts=cv.stts(cv.findBox(t,["stts"],i)[0]),e.ctts=cv.ctts(cv.findBox(t,["ctts"],i)[0]),e.stsc=cv.stsc(cv.findBox(t,["stsc"],i)[0]),e.stsz=cv.stsz(cv.findBox(t,["stsz"],i)[0]),e.stco=cv.stco(cv.findBox(t,["stco"],i)[0]),e.stco||(e.co64=cv.co64(cv.findBox(t,["co64"],i)[0]),e.stco=e.co64);const a=null===(s=e.stsd.entries[0])||void 0===s||null===(r=s.sinf)||void 0===r||null===(o=r.schi)||void 0===o?void 0:o.tenc.default_IV_size;e.stss=cv.stss(cv.findBox(t,["stss"],i)[0]),e.senc=cv.senc(cv.findBox(t,["senc"],i)[0],a)}))}static senc(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return lv(e,!0,((e,i)=>{let s=0;const r=Qb(i,s);s+=4,e.samples=[];for(let o=0;o{const i=[],s=[];let r=0;for(let e=0;e<16;e++)s.push(hv(t[r+e]));if(r+=16,e.version>0){const e=Qb(t,r);r+=4;for(let s=0;s<(""+e).length;s++)for(let e=0;e<16;e++){const e=t[r];r+=1,i.push(hv(e))}}const o=Qb(t,r);e.data_size=o,r+=4,e.kid=i,e.system_id=s,e.buffer=t}))}static stsd(e){return lv(e,!0,((e,t,i)=>{e.entryCount=Qb(t),e.entries=cv.findBox(t.subarray(4),[],i+4).map((e=>{switch(e.type){case"avc1":case"avc2":case"avc3":case"avc4":return cv.avc1(e);case"hvc1":case"hev1":return cv.hvc1(e);case"mp4a":return cv.mp4a(e);case"alaw":case"ulaw":return cv.alaw(e);case"enca":return lv(e,!1,((e,t,i)=>{e.channelCount=Yb(t,16),e.samplesize=Yb(t,18),e.sampleRate=Qb(t,24)/65536,t=t.subarray(28),e.sinf=cv.sinf(cv.findBox(t,["sinf"],i)[0]),e.esds=cv.esds(cv.findBox(t,["esds"],i)[0])}));case"encv":return lv(e,!1,((e,t,i)=>{e.width=Yb(t,24),e.height=Yb(t,26),e.horizresolution=Qb(t,28),e.vertresolution=Qb(t,32),t=t.subarray(78),e.sinf=cv.sinf(cv.findBox(t,["sinf"],i)[0]),e.avcC=cv.avcC(cv.findBox(t,["avcC"],i)[0]),e.hvcC=cv.hvcC(cv.findBox(t,["hvcC"],i)[0]),e.pasp=cv.pasp(cv.findBox(t,["pasp"],i)[0])}))}})).filter(Boolean)}))}static tenc(e){return lv(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 s=0;s<16;s++)e.default_KID.push(hv(t[i])),i+=1}))}static schi(e){return lv(e,!1,((e,t,i)=>{e.tenc=cv.tenc(cv.findBox(t,["tenc"],i)[0])}))}static sinf(e){return lv(e,!1,((e,t,i)=>{e.schi=cv.schi(cv.findBox(t,["schi"],i)[0]),e.frma=cv.frma(cv.findBox(t,["frma"],i)[0])}))}static frma(e){return lv(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 lv(e,!1,((e,t,i)=>{const s=av(e,t),r=t.subarray(s);i+=s,e.avcC=cv.avcC(cv.findBox(r,["avcC"],i)[0]),e.pasp=cv.pasp(cv.findBox(r,["pasp"],i)[0])}))}static avcC(e){return lv(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 s=0;s<3;s++)t=e[s].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 s=0;s{const s=av(e,t),r=t.subarray(s);i+=s,e.hvcC=cv.hvcC(cv.findBox(r,["hvcC"],i)[0]),e.pasp=cv.pasp(cv.findBox(r,["pasp"],i)[0])}))}static hvcC(e){return lv(e,!1,((t,i)=>{t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=i[0];const s=i[1];t.generalProfileSpace=s>>6,t.generalTierFlag=(32&s)>>5,t.generalProfileIdc=31&s,t.generalProfileCompatibility=Qb(i,2),t.generalConstraintIndicatorFlags=i.subarray(6,12),t.generalLevelIdc=i[12],t.avgFrameRate=Yb(i,19),t.numOfArrays=i[22],t.vps=[],t.sps=[],t.pps=[];let r=23,o=0,a=0,n=0;for(let e=0;e{e.hSpacing=Qb(t),e.vSpacing=Qb(t,4)}))}static mp4a(e){return lv(e,!1,((e,t,i)=>{const s=nv(e,t);e.esds=cv.esds(cv.findBox(t.subarray(s),["esds"],i+s)[0])}))}static esds(e){return lv(e,!0,((e,t)=>{e.codec="mp4a.";let i=0,s=0,r=0,o=0;for(;t.length;){for(i=0,o=t[i],s=t[i+1],i+=2;128&s;)r=(127&s)<<7,s=t[i],i+=1;if(r+=127&s,3===o)t=t.subarray(i+3);else{if(4!==o){if(5===o){const s=e.config=t.subarray(i,i+r);let o=(248&s[0])>>3;return 31===o&&s.length>=2&&(o=32+((7&s[0])<<3)+((224&s[1])>>5)),e.objectType=o,e.codec+=o.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 lv(e,!1,((e,t)=>{nv(e,t)}))}static stts(e){return lv(e,!0,((e,t)=>{const i=Qb(t),s=[];let r=4;for(let e=0;e{const i=Qb(t),s=[];let r=4;if(1===e.version)for(let e=0;e{const i=Qb(t),s=[];let r=4;for(let e=0;e{const i=Qb(t),s=Qb(t,4),r=[];if(!i){let e=8;for(let i=0;i{const i=Qb(t),s=[];let r=4;for(let e=0;e{const i=Qb(t),s=[];let r=4;for(let e=0;e{const i=Qb(t),s=[];let r=4;for(let e=0;e{e.mfhd=cv.mfhd(cv.findBox(t,["mfhd"],i)[0]),e.traf=cv.findBox(t,["traf"],i).map((e=>cv.traf(e)))}))}static mfhd(e){return lv(e,!0,((e,t)=>{e.sequenceNumber=Qb(t)}))}static traf(e){return lv(e,!1,((e,t,i)=>{e.tfhd=cv.tfhd(cv.findBox(t,["tfhd"],i)[0]),e.tfdt=cv.tfdt(cv.findBox(t,["tfdt"],i)[0]),e.trun=cv.trun(cv.findBox(t,["trun"],i)[0])}))}static trun(e){return lv(e,!0,((e,t)=>{const{version:i,flags:s}=e,r=t.length,o=e.sampleCount=Qb(t);let a=4;if(r>a&&1&s&&(e.dataOffset=-(1+~Qb(t,a)),a+=4),r>a&&4&s&&(e.firstSampleFlags=Qb(t,a),a+=4),e.samples=[],r>a){let r;for(let n=0;n{1===e.version?e.baseMediaDecodeTime=Xb(t):e.baseMediaDecodeTime=Qb(t)}))}static probe(e){return!!cv.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){var s,r;const o=e.trak;if(!o||!o.length)return;const a=o.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),n=o.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(a&&t){var l,d,h,c,u,p,f;const i=t,s=null===(l=a.tkhd)||void 0===l?void 0:l.trackId;null!=s&&(i.id=a.tkhd.trackId),i.tkhdDuration=a.tkhd.duration,i.mvhdDurtion=e.mvhd.duration,i.mvhdTimecale=e.mvhd.timescale,i.timescale=i.formatTimescale=a.mdia.mdhd.timescale,i.duration=a.mdia.mdhd.duration||i.mvhdDurtion/i.mvhdTimecale*i.timescale;const r=a.mdia.minf.stbl.stsd.entries[0];if(i.width=r.width,i.height=r.height,r.pasp&&(i.sarRatio=[r.pasp.hSpacing,r.pasp.vSpacing]),r.hvcC)i.codecType=sv,i.codec=r.hvcC.codec,i.vps=r.hvcC.vps,i.sps=r.hvcC.sps,i.pps=r.hvcC.pps,i.hvcC=r.hvcC.data;else{if(!r.avcC)throw new Error("unknown video stsd entry");i.codecType=iv,i.codec=r.avcC.codec,i.sps=r.avcC.sps,i.pps=r.avcC.pps}var m,g,y,A,b,v,_,S;if(i.present=!0,i.ext={},i.ext.stss=null===(d=a.mdia)||void 0===d||null===(h=d.minf)||void 0===h||null===(c=h.stbl)||void 0===c?void 0:c.stss,i.ext.ctts=null===(u=a.mdia)||void 0===u||null===(p=u.minf)||void 0===p||null===(f=p.stbl)||void 0===f?void 0:f.ctts,r&&"encv"===r.type)i.isVideoEncryption=!0,r.default_KID=null===(m=r.sinf)||void 0===m||null===(g=m.schi)||void 0===g?void 0:g.tenc.default_KID,r.default_IsEncrypted=null===(y=r.sinf)||void 0===y||null===(A=y.schi)||void 0===A?void 0:A.tenc.default_IsEncrypted,r.default_IV_size=null===(b=r.sinf)||void 0===b||null===(v=b.schi)||void 0===v?void 0:v.tenc.default_IV_size,i.videoSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,r.data_format=null===(_=r.sinf)||void 0===_||null===(S=_.frma)||void 0===S?void 0:S.data_format,i.useEME=e.useEME,i.kidValue=e.kidValue,i.pssh=e.pssh,i.encv=r}if(n&&i){var E,w,T,k,L,C,D,x,R;const t=i,o=null===(E=n.tkhd)||void 0===E?void 0:E.trackId;null!=o&&(t.id=n.tkhd.trackId),t.tkhdDuration=n.tkhd.duration,t.mvhdDurtion=e.mvhd.duration,t.mvhdTimecale=e.mvhd.timescale,t.timescale=t.formatTimescale=n.mdia.mdhd.timescale,t.duration=n.mdia.mdhd.duration||t.mvhdDurtion/t.mvhdTimecale*t.timescale;const a=n.mdia.minf.stbl.stsd.entries[0];switch(t.sampleSize=a.sampleSize,t.sampleRate=a.sampleRate,t.channelCount=a.channelCount,t.present=!0,a.type){case"alaw":t.codecType=t.codec=ev,t.sampleRate=8e3;break;case"ulaw":t.codecType=t.codec=tv,t.sampleRate=8e3;break;default:t.codecType=Zb,t.sampleDuration=rv.getFrameDuration(t.sampleRate,t.timescale),t.sampleRateIndex=rv.getRateIndexByRate(t.sampleRate),t.objectType=(null===(s=a.esds)||void 0===s?void 0:s.objectType)||2,a.esds&&(t.config=Array.from(a.esds.config)),t.codec=(null===(r=a.esds)||void 0===r?void 0:r.codec)||"mp4a.40.2"}var P,I,B,M,F,U,O,N;if(t.sampleDuration=rv.getFrameDuration(t.sampleRate,t.timescale),t.objectType=(null===(w=a.esds)||void 0===w?void 0:w.objectType)||2,a.esds&&(a.esds.config?t.config=Array.from(a.esds.config):console.warn("esds config is null")),t.codec=(null===(T=a.esds)||void 0===T?void 0:T.codec)||"mp4a.40.2",t.sampleRateIndex=rv.getRateIndexByRate(t.sampleRate),t.ext={},t.ext.stss=null===(k=n.mdia)||void 0===k||null===(L=k.minf)||void 0===L||null===(C=L.stbl)||void 0===C?void 0:C.stss,t.ext.ctts=null===(D=n.mdia)||void 0===D||null===(x=D.minf)||void 0===x||null===(R=x.stbl)||void 0===R?void 0:R.ctts,t.present=!0,a&&"enca"===a.type)t.isAudioEncryption=!0,a.data_format=null===(P=a.sinf)||void 0===P||null===(I=P.frma)||void 0===I?void 0:I.data_format,a.default_KID=null===(B=a.sinf)||void 0===B||null===(M=B.schi)||void 0===M?void 0:M.tenc.default_KID,a.default_IsEncrypted=null===(F=a.sinf)||void 0===F||null===(U=F.schi)||void 0===U?void 0:U.tenc.default_IsEncrypted,a.default_IV_size=null===(O=a.sinf)||void 0===O||null===(N=O.schi)||void 0===N?void 0:N.tenc.default_IV_size,t.audioSenc=n.mdia.minf.stbl.senc&&n.mdia.minf.stbl.senc.samples,t.useEME=e.useEME,t.kidValue=e.kidValue,t.enca=a}if(i&&(i.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!i&&i.isAudioEncryption),null!=t&&t.encv||null!=i&&i.enca){var j,G;const e=null==t||null===(j=t.encv)||void 0===j?void 0:j.default_KID,s=null==i||null===(G=i.enca)||void 0===G?void 0:G.default_KID,r=e||s?(e||s).join(""):null;t&&(t.kid=r),i&&(i.kid=r)}return t&&(t.flags=3841),i&&(i.flags=1793),{videoTrack:t,audioTrack:i}}static evaluateDefaultDuration(e,t,i){var s;const r=null==t||null===(s=t.samples)||void 0===s?void 0:s.length;if(!r)return 1024;return 1024*r/t.timescale*e.timescale/i}static moofToSamples(e,t,i){const s={};return e.mfhd&&(t&&(t.sequenceNumber=e.mfhd.sequenceNumber),i&&(i.sequenceNumber=e.mfhd.sequenceNumber)),e.traf.forEach((e=>{let{tfhd:r,tfdt:o,trun:a}=e;if(!r||!a)return;o&&(t&&t.id===r.trackId&&(t.baseMediaDecodeTime=o.baseMediaDecodeTime),i&&i.id===r.trackId&&(i.baseMediaDecodeTime=o.baseMediaDecodeTime));const n=r.defaultSampleSize||0,l=r.defaultSampleDuration||cv.evaluateDefaultDuration(t,i,a.samples.length||a.sampleCount);let d=a.dataOffset||0,h=0,c=-1;if(!a.samples.length&&a.sampleCount){s[r.trackId]=[];for(let e=0;e((e={offset:d,dts:h,pts:h+(e.cts||0),duration:e.duration||l,size:e.size||n,gopId:c,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(c++,e.gopId=c),h+=e.duration,d+=e.size,e)))})),s}static moovToSamples(e){const t=e.trak;if(!t||!t.length)return;const i=t.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),s=t.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(!i&&!s)return;let r,o;if(i){var a,n;const e=null===(a=i.mdia)||void 0===a||null===(n=a.minf)||void 0===n?void 0:n.stbl;if(!e)return;const{stts:t,stsc:s,stsz:o,stco:l,stss:d,ctts:h}=e;if(!(t&&s&&o&&l&&d))return;r=ov(t,s,o,l,h,d)}if(s){var l,d,h;const e=null===(l=s.mdia)||void 0===l||null===(d=l.minf)||void 0===d?void 0:d.stbl;if(!e)return;const t=null===(h=s.mdia.mdhd)||void 0===h?void 0:h.timescale,{stts:i,stsc:r,stsz:a,stco:n}=e;if(!(t&&i&&r&&a&&n))return;o=ov(i,r,a,n)}return{videoSamples:r,audioSamples:o}}}class uv extends lh{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._tempSampleTsList=[],this._basefps=25,this._isUseWorker()&&this._initLoopWorker(),e.debugLog(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._tempSampleTsList=[],this.videoTrack=null,this.audioTrack=null,this.isInitVideo=!1,this.isInitAudio=!1,this._basefps=25,this.player.debugLog(this.TAG_NAME,"destroy")}demux(e,t){let i=this.audioTrack,s=this.videoTrack;if(this.checkInitAudio(),this.checkInitVideo(),i.samples=[],s.samples=[],t){if(this.player.updateStats({abps:t.byteLength}),wa(this.isInitAudio)){const e=cv.findBox(t,["moov"])[0];if(!e)return void this.player.debugError(this.TAG_NAME,"cannot found moov box");cv.moovToTrack(cv.moov(e),null,i),this.checkInitAudio()&&(this.player.debugLog(this.TAG_NAME,"audioData audio init success"),this._sendAccADTSHeader(i))}const e=cv.findBox(t,["moof"])[0];if(e){const s=cv.moofToSamples(cv.moof(e),null,i)[i.id],r=i.baseMediaDecodeTime;if(s){const o=e.start;s.map((e=>{e.offset+=o;const s=t.subarray(e.offset,e.offset+e.size),a=e.dts+r,n=new Uint8Array(s.length+2);n.set([175,1],0),n.set(s,2),i.samples.push({type:Ne,pts:a,dts:a,payload:n,duration:e.duration,size:n.byteLength})}))}}}if(e){if(this.player.updateStats({vbps:e.byteLength}),wa(this.isInitVideo)&&wa(this.isInitAudio)){const t=cv.findBox(e,["moov"])[0];if(!t)throw new Error("cannot found moov box");if(cv.moovToTrack(cv.moov(t),s,i),wa(this.isInitAudio)&&this.checkInitAudio()&&(this.player.debugLog(this.TAG_NAME,"videoData audio init success",i),this._sendAccADTSHeader(i)),this.checkInitVideo()){this.player.debugLog(this.TAG_NAME,"video init success");let e=null;s.codecType===us?s.sps.length&&s.vps.length&&s.pps.length&&(e=sl({sps:s.sps[0],pps:s.pps[0],vps:s.vps[0]})):s.sps.length&&s.pps.length&&(e=Wn({sps:s.sps[0],pps:s.pps[0]})),e&&(this.player.debugLog(this.TAG_NAME,"seqHeader"),this._doDecodeByHls(e,je,0,!0,0))}}const t=cv.findBox(e,["moof"])[0];if(t){const r=cv.moofToSamples(cv.moof(t),s,i),o=s.baseMediaDecodeTime,a=i.baseMediaDecodeTime,n=t.start;Object.keys(r).forEach((t=>{s.id==t?r[t].map((t=>{t.offset+=n;const i={type:je,pts:(t.pts||t.dts)+o,dts:t.dts+o,units:[],payload:null,isIFrame:!1};i.duration=t.duration,i.gopId=t.gopId,t.keyframe&&(i.isIFrame=!0);const r=e.subarray(t.offset,t.offset+t.size);i.payload=r,s.samples.push(i)})):i.id==t&&r[t].map((t=>{t.offset+=n;const s=e.subarray(t.offset,t.offset+t.size),r=t.dts+a,o=new Uint8Array(s.length+2);o.set([175,1],0),o.set(s,2),i.samples.push({type:Ne,pts:r,dts:r,payload:o,duration:t.duration,size:o.byteLength})}))}))}}const r=s.samples.concat(i.samples);r.sort(((e,t)=>e.dts-t.dts)),r.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===je?this._doDecodeVideo({...e,payload:t}):e.type===Ne&&this._doDecodeAudio({...e,payload:t})})),wa(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(r))}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=Wr({profile:e.objectType,sampleRate:e.sampleRateIndex,channel:e.channelCount});this._doDecodeByHls(t,Ne,0,!0,0)}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=ma(this._tempSampleTsList,je);if(i)this._tempSampleTsList=[],this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debugLog(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debugLog(this.TAG_NAME,"_initLoopWorker()");const e=Da(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(`JbPro:[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((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=s.duration)):s.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 if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};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 s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),se),s.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=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debugWarn(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}),this.cryptoPayloadAudio(t),this._doDecodeByHls(t,Ne,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?rl(t,e.isIFrame):Vn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,je,e.dts,e.isIFrame,s)}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 pv{constructor(e,t){this.hls=e,this.player=this.hls.player,this.isMP4=t,this._initSegmentId="",this.TAG_NAME="HlsTransmuxer",this._demuxer=t?new uv(this.hls.player):new Kb(this.hls.player),this.player.debugLog(this.TAG_NAME,`init and isMP4 is ${t}`)}destroy(){this._demuxer&&(this._demuxer.destroy(),this._demuxer=null)}transmux(e,t,i,s,r,o){this.player.debugLog(this.TAG_NAME,`transmux videoChunk:${e&&e.byteLength}, audioChunk:${t&&t.byteLength}, discontinuity:${i}, contiguous:${s}, startTime:${r}, needInit:${o}`);const a=this._demuxer;try{this.isMP4?a.demux(e,t):a.demuxAndFix(Dh(e,t),i,s,r)}catch(e){throw new Sb(_b,vb,e)}}}class fv{constructor(e){this.hls=e,this.player=e.player,this._decryptor=new qb(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(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t._baseDts}get nbSb(){return 0}async updateDuration(e){this.player.debugLog(this.TAG_NAME,"updateDuration()",e)}getBuferredDuration(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getBuferredDuration()}getBufferedSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleListLength()}getBufferedAudioSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleAudioListLength()}getBufferedVideoSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleVideoListLength()}createSource(e,t,i,s){if(this._sourceCreated)return;const r=e||t;r&&(Kb.probe(r)?this._transmuxer||(this._transmuxer=new pv(this.hls,!1)):cv.probe(r)?this._transmuxer||(this._transmuxer=new pv(this.hls,!0)):this.player.debugError(this.TAG_NAME,"createSource error: chunk is not ts"))}async appendBuffer(e,t,i,s,r,o,a){if(null!=i&&i.length||null!=s&&s.length)return this._needInitSegment,this._transmuxer.transmux(i,s,r,o,a,this._needInitSegment||r),!0}async clearAllBuffer(){this.player.debugLog(this.TAG_NAME,"clearAllBuffer")}decryptBuffer(e,t){return this._decryptor.decrypt(e,t)}async reset(){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 mv{constructor(e){this.emitter=e,this._seiSet=new Set,e.on(Js,(e=>{e&&this._seiSet.add(e)}))}throw(e){if(null==e||!this._seiSet.size)return;const t=e-.2,i=e+.2,s=[];this._seiSet.forEach((e=>{e.time>=t&&e.time<=i&&s.push(e)})),s.forEach((e=>{this._seiSet.delete(e),this.emitter.emit(qs,e)}))}reset(){this._seiSet.clear()}}class gv{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(e){var t;let{data:i}=e;const s=null==i||null===(t=i.onMetaData)||void 0===t?void 0:t.framerate;s&&s>0&&s<100&&(this.fps=s)}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 yv{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3;bh(this,"_core",null),bh(this,"_samples",[]),this._core=e,this._timescale=t,this._stats=new gv(t),this._bindEvents()}getStats(){var e,t,i,s,r,o,a;const{currentTime:n=0,decodeFps:l=0}=(null===(e=this._core)||void 0===e?void 0:e.media)||{};return{...this._stats.getStats(),downloadSpeed:(null===(t=this._core)||void 0===t||null===(i=t.speedInfo)||void 0===i?void 0:i.call(t).speed)||0,avgSpeed:(null===(s=this._core)||void 0===s||null===(r=s.speedInfo)||void 0===r?void 0:r.call(s).avgSpeed)||0,currentTime:n,bufferEnd:(null===(o=this._core)||void 0===o||null===(a=o.bufferInfo())||void 0===a?void 0:a.remaining)||0,decodeFps:l}}_bindEvents(){this._core.on(Os,(e=>this._stats.updateBitrate(e.samples))),this._core.on(Ns,(e=>{this._stats.setFpsFromScriptData(e)})),this._core.on(js,(e=>{"video"===e.type?this._stats.setVideoMeta(e.track):this._stats.setAudioMeta(e.track)})),this._core.on(Gs,(e=>{this._stats.setDomain(e.responseUrl)}))}reset(){this._samples=[],this._stats=new gv(this._timescale)}}class Av extends Ma{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),bh(this,"_loadSegment",(async()=>{if(this._segmentProcessing)return void this.player.debugWarn("_loadSegment()","_segmentProcessing is ture and return");if(!this._playlist)return void this.player.debugWarn("_loadSegment()","this._playlist is null and return");const e=this._playlist.currentSegment,t=this._playlist.nextSegment;if(this.player.debugLog(this.TAG_NAME,"_loadSegment()","curSeg",e&&e.url,"nextSeg",t&&t.url),t)return this._loadSegmentDirect();this.player.debugLog(this.TAG_NAME,"nextSeg is null and return")})),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 Wb(this),this._segmentLoader=new $b(this),this._playlist=new Jb(this),this._bufferService=new fv(this),this._seiService=new mv(this),this._stats=new yv(this,9e4),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){this.player.debugLog(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.debugLog(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.debugLog(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(){var e;return null===(e=this._bufferService)||void 0===e?void 0:e.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 Sb(Ab,Ab,null,null,"m3u8 url is missing"));const t=await this._loadM3U8(e),{currentStream:i}=this._playlist;if(this._urlSwitching){var s,r;if(0===i.bitrate&&null!==(s=this._switchUrlOpts)&&void 0!==s&&s.bitrate)i.bitrate=null===(r=this._switchUrlOpts)||void 0===r?void 0:r.bitrate;const e=this._getSeamlessSwitchPoint();this.config.startTime=e;const t=this._playlist.findSegmentIndexByTime(e),o=this._playlist.getSegmentByIndex(t+1);if(o){const e=o.start;this.player.debugWarn(this.TAG_NAME,`clear buffer from ${e}`)}}t&&(this.isLive?(this.player.debugLog(this.TAG_NAME,"is live"),this._bufferService.setLiveSeekableRange(0,4294967295),this.config.targetLatency{let[t,i,a]=e;t?(this._playlist.upsertPlaylist(t,i,a),this.isLive&&this._pollM3U8(s,r,o)):this.player.debugWarn(this.TAG_NAME,"_refreshM3U8() mediaPlaylist is empty")})).catch((e=>{throw this._emitError(Sb.create(e))}))}_pollM3U8(e,t,i){var s;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(Sb.create(e))}),1e3*((null===(s=this._playlist.lastSegment)||void 0===s?void 0:s.duration)||0))}async _loadSegmentDirect(){const e=this._playlist.nextSegment;if(!e)return void this.player.debugLog(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(Sb.create(i)):(t?(this._urlSwitching&&(this._urlSwitching=!1,this.emit(Ys,{url:this.config.url})),this._playlist.moveSegmentPointer(),this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast",e.isLast),e.isLast?(this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast"),this._end()):(this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","and next _loadSegment()"),this._loadSegment())):this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect() not appended"),t)}async _reqAndBufferSegment(e,t){this.player.debugLog(this.TAG_NAME,"video seg",e&&e.url,"audio seg",t&&t.url);const i=e?e.cc:t.cc,s=this._prevSegCc!==i;let r=[];try{r=await this._segmentLoader.load(e,t,s)}catch(e){throw e.fatal=!1,this._segmentLoader.error=e,e}if(!r[0])return;const o=await this._bufferService.decryptBuffer(...r);if(!o)return void this.player.debugLog(this.TAG_NAME,"decryptBuffer return null");const a=e?e.sn:t.sn,n=e?e.start:t.start,l=this._playlist.currentStream;return this._bufferService.createSource(o[0],o[1],null==l?void 0:l.videoCodec,null==l?void 0:l.audioCodec),await this._bufferService.appendBuffer(e,t,o[0],o[1],s,this._prevSegSn===a-1,n),this._prevSegCc=i,this._prevSegSn=a,!0}async _clear(){this.player.debugLog(this.TAG_NAME,"_clear()"),clearTimeout(this._disconnectTimer),this._stopTick(),await Promise.all([this._segmentLoader.cancel(),this._manifestLoader.stopPoll()]),this._segmentProcessing=!1}async _reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.player.debugLog(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.debugLog(this.TAG_NAME,"_end()"),this._clear()}_emitError(e){var t;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var s;!1===(null===(t=e.originError)||void 0===t?void 0:t.fatal)?console.warn(e):(console.table(e),console.error(e),console.error(null===(s=this.media)||void 0===s?void 0:s.error),this._stopTick(),this._urlSwitching&&(this._urlSwitching=!1,this.emit(Ks,e)),i&&this._end(),this._seiService.reset(),this.emit(Zs,e));return e}_getSeamlessSwitchPoint(){const{media:e}=this;let t=e.currentTime;if(!e.paused){var i;const s=this._playlist.findSegmentIndexByTime(e.currentTime),r=this._playlist.getSegmentByIndex(s),o=null===(i=this._stats)||void 0===i?void 0:i.getStats().downloadSpeed;if(o&&r){t+=r.duration*this._playlist.currentStream.bitrate/o+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 bv extends Ma{constructor(e){super(),bh(this,"TAG_NAME","Hls256Decoder"),this.player=e,this.$videoElement=this.player.video.$videoElement,this.hls=null,this.eventsDestroy=[],this.bandwidthEstimateInterval=null,this.hls=new Av(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.debugLog(this.TAG_NAME,"destroy"),!0}_bindEvents(){this.hls.on(Zs,(e=>{this.player.emitError(bt.hlsError,e)})),this._startBandwidthEstimateInterval()}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{const e=this.hls.speedInfo();this.player.emit(gt.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 vv extends Ma{constructor(e,t){if(super(),this.player=e,this.player.$container.classList.add("jb-pro-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=!!Ea(t.isUseFpsRender),this._rate=1,this._audioTimestamp=0,this._videoTimestamp=0,this.controlType=t.controlType||Q.normal,t.controlType&&-1===[Q.normal,Q.simple].indexOf(t.controlType)&&(this.player.debugWarn("Playback","constructor()","controlType is not in [normal,simple]",t.controlType),this.controlType=Q.normal),this._currentLocalTimestamp=0,this._localOneFrameTimestamp=t.localOneFrameTimestamp||40,this._localCalculateTimeInterval=null,this._isUseLocalCalculateTime=!!Ea(t.isUseLocalCalculateTime),this._isPlaybackPauseClearCache=!wa(t.isPlaybackPauseClearCache),this._isCacheBeforeDecodeForFpsRender=!!Ea(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===Q.normal)this.initPlaybackList(t.playList,t.showPrecision,t.startTime);else if(t.controlType===Q.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(gt.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};try{e.debugLog("Playback","init",JSON.stringify(i))}catch(t){e.debugLog("Playback","init",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("jb-pro-container-playback"),this.off(),this.player.debugLog("Playback","destroy")}_listen(){this.player.on(gt.stats,(e=>{const t=e.ts;this._playStartTime||(this._playStartTime=t-1e3);let i=t-this._playStartTime;if(this.setPlayingTimestamp(i),this.player.isPlaybackUseMSE()&&this.player.isPlaying()&&0===e.videoCurrentTimeDiff&&(this.player.debugWarn(this.TAG_NAME,`updateStats and videoCurrentTimeDiff is 0 and\n videoCurrentTime is ${e.videoCurrentTime}\n and next update video currentTime`),this.player.mseDecoder.updateVideoCurrentTimeByBufferStart()),this.player.isStreamEnd()&&this.player.isPlaying()&&this.player.isPlaybackUseMSE()&&0===e.videoCurrentTimeDiff){this.player.mseDecoder.isCurrentTimeInBufferEnd()&&this.player.emit(gt.playbackEnd)}}))}pause(){this.clearStatsInterval()}resume(){this.startCheckStatsInterval()}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._startFpsTimestamp||(this._startFpsTimestamp=uo()),Go(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=uo(),i=t-this._startFpsTimestamp;if(i<1e3)return;let s=null;this._startfpsTime&&(s=this._playbackTs-this._startfpsTime),this.player.emit(gt.playbackStats,{fps:this._renderFps,rate:this.rate,start:this._startfpsTime,end:this._playbackTs,timestamp:i,dataTimestamp:s,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 s=0;if(this.playbackList.forEach(((e,t)=>{10===Xo(e.start)?(e.startTimestamp=1e3*e.start,e.startTime=Lo(e.startTimestamp)):(e.startTimestamp=e.start,e.startTime=Lo(e.startTimestamp)),10===Xo(e.end)?(e.endTimestamp=1e3*e.end,e.endTime=Lo(e.endTimestamp)):(e.endTimestamp=e.end,e.endTime=Lo(e.endTimestamp)),e.duration=e.end-e.start,s+=e.duration})),this._totalDuration=s,this.player.debugLog("Playback",this.playbackList),this.playbackList.length>0){const e=this.playbackList[0].startTimestamp;this._playbackListStartTimestamp=e;let t=e;i&&(10===Xo(i)&&(i*=1e3),this._isTimeInPlaybackList(i)&&(t=i)),this.setStartTime(t)}const r=t||Pi;this.setShowPrecision(r)}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(gt.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===Pi}get is30Min(){return this.showPrecision===Ii}get is10Min(){return this.showPrecision===Bi}get is5Min(){return this.showPrecision===Mi}get is1Min(){return this.showPrecision===Mi}get isPlaybackPauseClearCache(){return this._isPlaybackPauseClearCache}get isCacheBeforeDecodeForFpsRender(){return this._isCacheBeforeDecodeForFpsRender}setShowPrecision(e){Ui.includes(e)||(this.player.debugWarn("Playback","setShowPrecision()","type is not in PLAYBACK_CONTROL_TIME_PRECISION_ARRAY",e),e=Pi),this._showPrecision&&this._showPrecision===e||(this._showPrecision=e,this.player.emit(gt.playbackPrecision,this._showPrecision,this.playbackList),this.player.emit(gt.playbackShowPrecisionChange,this._showPrecision))}setPlayingTimestamp(e){let t;if(this.controlType===Q.normal){t=this.startTime+e,this._playingTimestamp=t,this.player.emit(gt.playbackTime,t);const i=new Date(t);this.player.emit(gt.playbackTimestamp,{ts:t,hour:i.getHours(),min:i.getMinutes(),second:i.getSeconds()})}else this.controlType===Q.simple&&(t=this.startTime+Math.round(e/1e3),t>this.totalDuration&&(this.player.debugLog("Playback","setPlayingTimestamp()",`timestamp ${t} > this.totalDuration ${this.totalDuration}`),t=this.totalDuration),this._playingTimestamp=t,this.player.emit(gt.playbackTime,t),this.player.emit(gt.playbackTimestamp,{ts:t}))}get playingTimestamp(){return this._playingTimestamp}narrowPrecision(){const e=Ui.indexOf(this.showPrecision)-1;if(e>=0){const t=Ui[e];this.setShowPrecision(t)}}expandPrecision(){const e=Ui.indexOf(this.showPrecision)+1;if(e<=Ui.length-1){const t=Ui[e];this.setShowPrecision(t)}}seek(e){if(this.player.debugLog("Playback","seek()",e),this.controlType===Q.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(gt.playbackSeek,i)}}else if(this.controlType===Q.simple){let t=e.time;this.player.emit(gt.playbackSeek,{ts:t})}}currentTimeScroll(){this.player.emit(gt.playbackTimeScroll)}_findMoreInfoByTimestamp(e){let t=null;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=i)})),t}_isTimeInPlaybackList(e){let t=!1;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=!0)})),t}getControlType(){return this.controlType}isControlTypeNormal(){return this.controlType===Q.normal}isControlTypeSimple(){return this.controlType===Q.simple}isPlaybackPauseNotClearCacheAndCacheBeforeDecode(){return wa(this.isPlaybackPauseClearCache)&&this.isCacheBeforeDecodeForFpsRender}isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender(){return this.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.isUseFpsRender}}class _v extends Ma{constructor(e){super(),this.player=e,this.TAG_NAME="zoom",this.bindEvents=[],this.isDragging=!1,this.isGesturing=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.prevGestureScale=null,this.prevGestureTouches=[],this._isZooming=!1,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.player,this.player.on(gt.zooming,this._handleZooming.bind(this)),e.debugLog("zoom","init")}destroy(){this._unbindEvents(),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.debugLog("zoom","destroy")}_handleZooming(e){if(e){this.player.$container.classList.add("jb-pro-zoom-control"),this._bindEvents();const e=this.player.video.$videoElement.style.transform;let t=this.player.video.$videoElement.offsetLeft,i=this.player.video.$videoElement.offsetTop;t=parseFloat(t),i=parseFloat(i),t&&(this.videoPosition.left=t),i&&(this.videoPosition.top=i),this.prevVideoElementStyleTransform=e;let s=e.match(/scale\([0-9., ]*\)/g);if(s&&s[0]){let e=s[0].replace("scale(","").replace(")","");this.prevVideoElementStyleScale=e.split(",")}this._isZooming=!0}else{this.player.$container.classList.remove("jb-pro-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,vo()&&this.player._opt.useWebFullScreen&&this.player.resize(),this._isZooming=!1}}_bindEvents(){const{events:{proxy:e}}=this.player,t=Ia(),i=e(this.player.$container,t.move,this.handleMouseMove.bind(this)),s=e(this.player.$container,t.down,this.handleMouseDown.bind(this)),r=e(window,t.up,this.handleMouseUp.bind(this));if(this.bindEvents.push(i,s,r),vo()&&this.player._opt.zoomSupportGestureInMobile)if(So()){this.handleGestureChangeThrottle=Ro(this.handleGestureChangeForAndroid.bind(this),100);const t=e(this.player.$container,"touchstart",this.handleGestureStartForAndroid.bind(this)),i=e(this.player.$container,"touchmove",this.handleGestureChangeThrottle.bind(this)),s=e(this.player.$container,"touchend",this.handleGestureEndForAndroid.bind(this));this.bindEvents.push(t,i,s)}else{this.handleGestureChangeThrottle=Ro(this.handleGestureChange.bind(this),100);const t=e(this.player.$container,"gesturestart",this.handleGestureStart.bind(this)),i=e(this.player.$container,"gesturechange",this.handleGestureChangeThrottle.bind(this)),s=e(this.player.$container,"gestureend",this.handleGestureEnd.bind(this));this.bindEvents.push(t,i,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}=na(e),s=this.tempPosition.x-t,r=this.tempPosition.y-i;this.videoPosition.left=this.videoPosition.left-s,this.videoPosition.top=this.videoPosition.top-r,this.tempPosition.x=t,this.tempPosition.y=i,this.updateVideoPosition()}}handleMouseDown(e){e.stopPropagation();const t=ra(e);if(this.player.zooming&&(t.matches("video")||t.matches("canvas"))){e.preventDefault();const{posX:t,posY:i}=na(e);this.player.$container.style.cursor="grabbing",this.tempPosition.x=t,this.tempPosition.y=i,this.isDragging=!0,this.player.debugLog("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.debugLog("zoom","handleMouseUp is dragging false"))}handleGestureStart(e){e.stopPropagation(),this.player.zooming&&(null===this.prevGestureScale&&(this.prevGestureScale=e.scale),this.isGesturing=!0)}handleGestureStartForAndroid(e){e.stopPropagation(),this.player.zooming&&e.touches.length>=2&&(this.isGesturing=!0,this.prevGestureTouches=e.touches)}handleGestureChangeForAndroid(e){if(e.stopPropagation(),e.preventDefault(),this.player.zooming&&this.isGesturing&&e.touches.length>=2){const s=e.touches,r=t(s[0],s[1])/t(this.prevGestureTouches[0],this.prevGestureTouches[1]);i(s[0],s[1]),i(this.prevGestureTouches[0],this.prevGestureTouches[1]),null===this.prevGestureScale&&(this.prevGestureScale=r);const o=r-this.prevGestureScale,a=this.player._opt.zoomSupportGestureInMobileSpeed;o>0?this.expandPrecision(a):o<0&&this.narrowPrecision(a)}function t(e,t){var i=t.pageX-e.pageX,s=t.pageY-e.pageY;return Math.sqrt(i*i+s*s)}function i(e,t){var i=e.pageX-t.pageX,s=e.pageY-t.pageY;return 180*Math.atan2(s,i)/Math.PI}}handleGestureEndForAndroid(e){e.stopPropagation(),this.player.zooming&&(this.prevGestureScale=null,this.isGesturing=!1,this.prevGestureTouches=[])}handleGestureChange(e){if(e.stopPropagation(),this.player.zooming&&this.isGesturing&&null!==this.prevGestureScale){const t=e.scale,i=t-this.prevGestureScale,s=this.player._opt.zoomSupportGestureInMobileSpeed;i>0?this.expandPrecision(s):i<0&&this.narrowPrecision(s),this.prevGestureScale=t}}handleGestureEnd(e){e.stopPropagation(),this.player.zooming&&(this.prevGestureScale=null,this.isGesturing=!1)}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(e){this.currentZoom<=1||(this.currentZoom-=1,this.updateVideoElementScale(e))}expandPrecision(e){this.currentZoom>=this.player._opt.zoomMaxScale||(this.currentZoom+=1,this.updateVideoElementScale(e))}updateCurrentZoom(e,t){e<1||e>this.player._opt.zoomMaxScale||(this.currentZoom=e,this.updateVideoElementScale(t))}updatePrevVideoElementStyleScale(e){this.prevVideoElementStyleScale=e}updateVideoElementScale(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5;const t=this.player.video.$videoElement;let i=t.style.transform,s=1,r=1;if(this.prevVideoElementStyleScale){const e=this.prevVideoElementStyleScale[0];void 0!==e&&(s=e,r=e);const t=this.prevVideoElementStyleScale[1];void 0!==t&&(r=t)}r=Do(r),s=Do(s);const o=e*s*(this.currentZoom-1)+s,a=e*r*(this.currentZoom-1)+r;let n;n=-1===i.indexOf("scale(")?i+` scale(${o},${a})`:i.replace(/scale\([0-9., ]*\)/,`scale(${o},${a})`),this.player.debugLog("zoom",`updateVideoElementScale end is X: ${s} -> ${o}, Y: ${r} -> ${a} style is ${n}`),t.style.transform=n}isZooming(){return this._isZooming}}class Sv extends Ma{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.debugLog("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.debugLog("AiLoader","destroy")}initFaceDetector(){if(this.player._opt.useFaceDetector&&window.JessibucaProFaceDetector){const e=new JessibucaProFaceDetector({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.debugLog("AiLoader","init face detector success"),this.faceDetector=e,this.faceDetector.on("jessibuca-pro-face-detector-info",(e=>{if(this.player.emit(gt.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.JessibucaProObjectDetector){const e=new JessibucaProObjectDetector({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.debugLog("AiLoader","init object detector success"),this.objectDetector=e,this.objectDetector.on("jessibuca-pro-object-detector-info",(e=>{if(this.player.emit(gt.aiObjectDetectorInfo,e),this.player._opt.aiObjectDetectShowRect){const t=[],i=this.player._opt.aiObjectDetectRectConfig||{};(e.list||[]).forEach((e=>{const s={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},r={type:"text",color:i.color||"#000",fontSize:i.fontSize||14,text:e.zh,x:e.rect.x,y:e.rect.y-25};t.push(s,r)})),this.player.video&&this.player.video.addAiContentToCanvas(t)}}))}))}}initImageDetector(){if(this.player._opt.useImageDetector&&window.JessibucaProImageDetector){const e=new JessibucaProImageDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debugLog("AiLoader","init image detector success"),this.imageDetector=e}))}}initOcclusionDetector(){if(this.player._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector){const e=new JessibucaProOcclusionDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debugLog("AiLoader","init occlusion detector success"),this.occlusionDetector=e}))}}updateFaceDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.faceDetector&&this.faceDetector.updateConfig(e)}updateObjectDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.objectDetector&&this.objectDetector.updateConfig(e)}updateImageDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.imageDetector&&this.imageDetector.updateConfig(e)}updateOcclusionDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.occlusionDetector&&this.occlusionDetector.updateConfig(e)}}class Ev extends Ma{constructor(e){super(),this.player=e,this.LOG_NAME="Contextmenu",this.menuList=[],this.$contextmenus=e.control.$contextmenus,vo()?this.player.debugWarn(this.LOG_NAME,"not support mobile"):this.init(),e.debugLog(this.LOG_NAME,"init")}destroy(){this.menuList=[],this.player.debugLog(this.LOG_NAME,"destroy")}get isShow(){return mc(this.player.$container,"jb-pro-contextmenus-show")}show(){pc(this.player.$container,"jb-pro-contextmenus-show")}hide(){fc(this.player.$container,"jb-pro-contextmenus-show")}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:s,width:r,left:o,top:a}=this.player.$container.getBoundingClientRect(),{height:n,width:l}=this.$contextmenus.getBoundingClientRect();let d=t-o,h=i-a;t+l>o+r&&(d=r-l),i+n>a+s&&(h=s-n),fo(this.$contextmenus,{left:`${d}px`,top:`${h}px`})})),e(this.player.$container,"click",(e=>{Ac(e,this.$contextmenus)||this.hide()})),this.player.on(gt.blur,(()=>{this.hide()}))}_validateMenuItem(e){let t=!0;return e.content||(this.player.debugWarn(this.LOG_NAME,"content is required"),t=!1),t}addMenuItem(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=ba(Is);if(e=Object.assign({},t,e),!this._validateMenuItem(e))return;const{events:{proxy:i},debug:s}=this.player,r=xo(),o=`\n
    \n ${e.content}\n
    \n `,a=Array.from(this.$contextmenus.children)[e.index];a?a.insertAdjacentHTML("beforebegin",o):gc(this.$contextmenus,o);const n=this.$contextmenus.querySelector(`.jb-pro-contextmenu-${r}`);e.click&&i(n,"click",(t=>{t.preventDefault(),e.click.call(this.player,this,t),this.hide()})),this.menuList.push({uuid:r,$menuItem:n})}}class wv extends Ma{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"),ko()&&(this.$videoElement.style.position="absolute"),this._initVideoEvents()),this.$videoElement.muted=!0,this._initRtcPeerConnection()}destroy(){if(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))if(this.player._opt.webrtcUseCanvasRender){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}else this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject"));this.$videoElement=null,this.rtcPeerConnection&&(this.rtcPeerConnection.onicecandidate=no,this.rtcPeerConnection.ontrack=no,this.rtcPeerConnection.onconnectionstatechange=no,this.rtcPeerConnection.ondatachannel=no,this.rtcPeerConnection.close(),this.rtcPeerConnection=null)}_initVideoEvents(){this.player.debugLog(this.TAG_NAME,"_initVideoEvents()");const{proxy:e}=this.player.events,t=e(this.$videoElement,as,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,ns,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,hs,(()=>{this.player.debugLog(this.TAG_NAME,"video loadedmetadata")})),r=e(this.$videoElement,ls,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),o=e(this.$videoElement,ds,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,r,o,s)}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debugLog(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debugLog(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debugLog(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debugLog(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(gt.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(gt.webrtcFailed);break;case"disconnected":t.emit(gt.webrtcDisconnect);break;case"closed":t.emit(gt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debugLog(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debugLog(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=t=>{if(this.player.debugLog(this.TAG_NAME,"ontrack",t),"video"===t.track.kind){this.player.debugLog(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.debugLog(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.debugLog(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(bt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debugLog(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(gt.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(gt.webrtcFailed)}},this.rtcPeerConnection=e}_startBandwidthEstimateInterval(){this.player.debugLog(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 br:this.currentWebrtcStats.remoteCandidate=e||{};break;case Ar:this.currentWebrtcStats.localCandidate=e||{};break;case yr:this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcVideoStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcVideoStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.vbps=o,this.prevWebrtcVideoStats=e;break;case vr: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===yr){this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcAudioStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcAudioStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.abps=o,this.prevWebrtcAudioStats=e}})),this.player.updateStats(t),this.player.emit(gt.kBps,(i/1024).toFixed(2))})):(this.player.updateStats(t),this.player.emit(gt.kBps,(i/1024).toFixed(2)))}))}),1e3)}_stopBandwidthEstimateInterval(){this.player.debugLog(this.TAG_NAME,"_stopBandwidthEstimateInterval"),this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startCanvasRender(){xa()?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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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.updateStats({dts:i}),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}isVideoPlaying(){return this.$videoElement&&wa(this.$videoElement.paused)&&wa(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class Tv extends wv{constructor(e){super(e),this.TAG_NAME="WebrtcForSRSDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debugError(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r})).then((()=>{t()})).catch((e=>{this.player&&this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"response sdp is null"),i("response sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class kv extends wv{constructor(e){super(e),this.TAG_NAME="WebrtcForOthersDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`),e.text().then((e=>{this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp response");try{let t=JSON.parse(e);this.player.debugLog(this.TAG_NAME,"this is json sdp response"),0!=t.code&&(this.player.debugError(this.TAG_NAME,`response json code ${t.code}`),i(new Error(`response sdp json code: ${t.code}`))),e=t.sdp}catch(e){this.player.debugLog(this.TAG_NAME,"this is raw sdp response")}e?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{t()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"loadSource sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class Lv extends wv{constructor(e){super(e),this.rtcPeerConnectionDataChannel=null,this.player.isWebrtcH265()&&(this.streamRate=yo((t=>{e.emit(gt.kBps,(t/1024).toFixed(2))}))),this.TAG_NAME="WebrtcForM7SDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.stopStreamRateInterval(),this.rtcPeerConnectionDataChannel&&(this.rtcPeerConnectionDataChannel.onopen=no,this.rtcPeerConnectionDataChannel.onclose=no,this.rtcPeerConnectionDataChannel.onmessage=no,this.rtcPeerConnectionDataChannel.close(),this.rtcPeerConnectionDataChannel=null),this.player.debugLog(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.debugLog(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debugLog(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debugLog(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debugLog(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(gt.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(gt.webrtcFailed);break;case"disconnected":t.emit(gt.webrtcDisconnect);break;case"closed":t.emit(gt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debugLog(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debugLog(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=i=>{this.player.debugLog(this.TAG_NAME,"ontrack",i);const s=t.getWebrtcVideo();if(t.isWebrtcH264())if("video"===i.track.kind){this.player.debugLog(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];s.autoplay=!0,s.srcObject=t,this.videoStream=t}else"audio"===i.track.kind&&(this.player.debugLog(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.debugLog(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(bt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debugLog(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(gt.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(gt.webrtcFailed)}},e.ondatachannel=e=>{const t=e.channel;this.player.debugLog(this.TAG_NAME,"ondatachannel"),t.onopen=()=>{this.player.debugLog(this.TAG_NAME,"ondatachannel and onopen")},t.onmessage=e=>{const t=e.data;if(this.player.isWebrtcH264())return this.player.debugWarn(this.TAG_NAME,"ondatachannel is H265 but decode is h264 so emit webrtcStreamH265 "),void this.player.emit(gt.webrtcStreamH265);this.player.isDestroyedOrClosed()?this.player.debugWarn(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.debugWarn(this.TAG_NAME,"ondatachannel and onclose")},this.rtcPeerConnectionDataChannel=t};e.createDataChannel("signal").onmessage=e=>{this.player.debugLog(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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{const r=this.rtcPeerConnection;r.createOffer().then((o=>{r.setLocalDescription(o),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t,i){let s={"Content-Type":"application/sdp"};return i.username&&i.password&&(s.Authorization="Basic "+btoa(i.username+":"+i.password)),fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:s,body:t})}(e,o.sdp,t).then((e=>{e.text().then((e=>{this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp response"),e?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{this.player.isWebrtcH265()&&this.startStreamRateInterval(),i()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),s(e)})):(this.player.debugError(this.TAG_NAME,"loadSource sdp is null"),s("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),s(e)}))}))}}class Cv extends wv{constructor(e){super(e),this.TAG_NAME="WebrtcForZLMDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return Nl({url:e,type:"POST",data:t,contentType:"text/plain;charset=utf-8",processData:!1,dataType:"json"})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debugError(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r&&r.sdp?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r.sdp})).then((()=>{t()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"response sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class Dv extends Ma{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.debugLog(this.TAG_NAME,"init")}destroy(){this.aliyunRtc&&(this.aliyunRtcRemoteStream&&(this.aliyunRtcRemoteStream=null),this.aliyunRtc.unsubscribe(),this.aliyunRtc=null),this.$videoElement=null,this.off(),this.player.debugLog(this.TAG_NAME,"destroy")}listenEvents(){this.aliyunRtc.on("onError",(e=>{this.player.debugLog(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),10400!==e.errorCode&&(this.player.debugError(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),this.player.emitError(bt.aliyunRtcError,e))})),this.aliyunRtc.on("reconnect",(e=>{this.player.debugLog(this.TAG_NAME,"reconnect",e)}));const e="canplay",t="waiting",i="playing",s="media";this.aliyunRtc.on("onPlayEvent",(r=>{if(r.event===e)this.player.debugLog(this.TAG_NAME,"onPlayEvent and canplay");else if(r.event===t)this.player.debugLog(this.TAG_NAME,"onPlayEvent and playing - > waiting");else if(r.event===i)this.player.debugLog(this.TAG_NAME,"onPlayEvent and waiting -> playing");else if(r.event===s){const e=r.data;let t={},i=0;if(e.audio){const s=Math.floor(e.audio.bytesReceivedPerSecond);i+=s,t.abps=s}if(e.video){const s=Math.floor(e.video.bytesReceivedPerSecond);i+=s,t.vbps=s}this.player.updateStats(t),this.player.emit(gt.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.debugError(this.TAG_NAME,"loadSource and subscribe is not success: ",e.message),i(e.message)}))})).catch((e=>{this.player.debugError(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}isVideoPlaying(){return this.$videoElement&&wa(this.$videoElement.paused)&&wa(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class xv{constructor(e){this.player=e,this.TAG_NAME="PressureObserverCpu",this.observer=null,this.latestCpuInfo=null,this.currentLevel=-1,this.observeCpuSuccess=!1,this._init(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.observer&&(this.observeCpuSuccess&&this.observer.disconnect(),this.observer=null),this.latestCpuInfo=null,this.currentLevel=-1,this.player.debugLog(this.TAG_NAME,"destroy")}getCurrentCpuState(){return this.currentLevel}_init(){wa(Ra())?this.player.debugLog(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(gt.pressureObserverCpu,this.currentLevel)}})),this.observer&&this.observer.observe("cpu",{sampleInterval:1e3}).then((()=>{this.observeCpuSuccess=!0,this.player.debugLog(this.TAG_NAME,"observe cpu success")})).catch((()=>{this.observeCpuSuccess=!1,this.player.debugLog(this.TAG_NAME,"observe cpu fail")})))}}class Rv extends qa{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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(gt.start,(()=>{const e=wa(bo)?decodeURIComponent("JessibucaPro%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.debugLog(this.TAG_NAME,"int")}destroy(){super.destroy(),this.shadowRootDynamicDom=null,this.stopAnimation(),this.rafID&&(cancelAnimationFrame(this.rafID),this.rafID=null)}startAnimation(){if(!this.rafID){let e=1,t=1,i=Math.random(),s={width:0,height:0};const r=()=>{try{if(wa(this.isPauseAnimation)&&this.shadowRootDynamicDom&&this.shadowRootInnerDom){const o=this.shadowRootInnerDom,a=this.shadowRootDynamicDom,n=o.getBoundingClientRect(),l=a.getBoundingClientRect();if(l.width&&l.height&&(s.width=l.width,s.height=l.height),!this.shadowRootInnerDom.contains(this.shadowRootDynamicDom))return this.isGhost?wa(this.waterMarkWillAdd)&&(this.waterMarkWillAdd=!0,setTimeout((()=>{this._addDom(n,s),this.waterMarkWillAdd=!1}),1e3*this.ghostConfig.off)):this._addDom(n,s),void(0!==this.speed&&requestAnimationFrame(r));const d=Math.min(1,0===this.speed?0:this.speed?this.speed:.2);let h=l.left-n.left,c=l.top-n.top;h+=d*t*i,c+=d*e*(1-i),h+s.width>n.width?(t=-1,i=Math.random()):h<0&&(t=1,i=Math.random()),c+s.height>n.height?(e=-1,i=Math.random()):c<0&&(e=1,i=Math.random()),h=Math.min(n.width-s.width,h),c=Math.min(n.height-s.height,c);const u=h/n.width*100,p=c/n.height*100;this.shadowRootDynamicDom.style.left=`${u}%`,this.shadowRootDynamicDom.style.top=`${p}%`,wa(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(r)};this.rafID=requestAnimationFrame(r)}}_addDom(e,t){if(this.shadowRootInnerDom&&this.shadowRootDynamicDom){this.shadowRootInnerDom.appendChild(this.shadowRootDynamicDom);let i=e.width*Math.random(),s=e.height*Math.random();i=Math.min(e.width-2*t.width,i),s=Math.min(e.height-2*t.height,s),this.shadowRootDynamicDom.style.left=`${i}px`,this.shadowRootDynamicDom.style.top=`${s}px`}}resumeAnimation(){this.isPauseAnimation=!1}pauseAnimation(){this.isPauseAnimation=!0}stopAnimation(){this.isStopAnimation=!0}}class Pv extends Ma{constructor(e){super(),this.player=e,this.TAG_NAME="DrawRectangle",this.drawingRectangle=!1,this.isDragging=!1,this.bindEvents=[],this.$rectBox=null,this._resetPoint(),this.player.on(gt.drawingRect,this._handleDrawingRect.bind(this)),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this._unbindEvents(),this.drawingRectangle=!1,this.isDragging=!1,this._removeRectBox(),this.off(),this.player.debugLog(this.TAG_NAME,"destroy")}_resetPoint(){this.startPagePoint={x:0,y:0},this.startPoint={x:0,y:0},this.endPoint={x:0,y:0}}_handleDrawingRect(e){this.drawingRectangle=e,e?this._bindEvents():(this._unbindEvents(),this._removeRectBox())}_bindEvents(){const{events:{proxy:e}}=this.player,t=e(this.player.$container,"mousemove",this.handleMouseMove.bind(this)),i=e(this.player.$container,"mousedown",this.handleMouseDown.bind(this)),s=e(window,"mouseup",this.handleMouseUp.bind(this));this.bindEvents.push(t,i,s)}_unbindEvents(){this.bindEvents.forEach((e=>{e&&e()})),this.bindEvents=[]}_removeRectBox(){if(this.$rectBox){if(!bc(this.$rectBox)){const e=this.player.$container.querySelector(".jb-pro-drawing-rect-box");e&&this.player.$container&&this.player.$container.removeChild(e)}this.$rectBox=null}}handleMouseDown(e){if(e.stopPropagation(),!this.drawingRectangle)return;this._removeRectBox();const t=e.offsetX,i=e.offsetY;this.startPoint.x=t,this.startPoint.y=i,this.startPagePoint.x=e.pageX-this.player.$container.offsetLeft,this.startPagePoint.y=e.pageY-this.player.$container.offsetTop,this.$rectBox=document.createElement("div"),this.$rectBox.classList.add("jb-pro-drawing-rect-box"),this.$rectBox.style.border=`${this.player._opt.drawingRectLineWidth}px solid ${this.player._opt.drawingRectColor}`,this.$rectBox.style.position="absolute",this.$rectBox.style.left=`${this.startPoint.x}px`,this.$rectBox.style.top=`${this.startPoint.y}px`,this.player.$container.appendChild(this.$rectBox),this.isDragging=!0}handleMouseMove(e){if(e.stopPropagation(),!this.isDragging)return;if(!this.drawingRectangle)return;if(!this.$rectBox)return;const t=this.player.$container,i=this.player.getControlHeight(),s=e.pageX-t.offsetLeft,r=e.pageY-t.offsetTop;if(sn&&(o=n,this.endPoint.x=this.startPoint.x+o),a>l&&(a=l,this.endPoint.y=this.startPoint.y+a),this.$rectBox.style.width=`${o}px`,this.$rectBox.style.height=`${a}px`}handleMouseUp(e){if(e.stopPropagation(),this.drawingRectangle&&this.isDragging){e.preventDefault(),this.isDragging=!1,this.player._opt.drawingRectEndRemoveDom&&this._removeRectBox();const t={startPoint:this.startPoint,endPoint:this.endPoint,width:Math.abs(this.endPoint.x-this.startPoint.x),height:Math.abs(this.endPoint.y-this.startPoint.y)};this.player._opt.isResize,this.player.emit(gt.drawingRectInfo,t),this._resetPoint()}}}class Iv extends Ma{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this._opt={},this.TAG_NAME="Player",this.$container=e;const i=_a();if(this._opt=Object.assign({},i,t),this.debug=new Mr(this),this.debugLog(this.TAG_NAME,"init and version is",Ao),this._opt.forceNoOffscreen=!0,this._canPlayAppleMpegurl=!1,(ko()||To())&&(this._canPlayAppleMpegurl=la(),this.debugLog(this.TAG_NAME,"isIOS or isSafari and canPlayAppleMpegurl",this._canPlayAppleMpegurl)),Ea(Or.isEnabled)&&Ea(this._opt.useWebFullScreen)&&(this.debugLog(this.TAG_NAME,"screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),wa(Or.isEnabled)&&wa(this._opt.useWebFullScreen)&&(this.debugLog(this.TAG_NAME,"screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0),ka()&&(this.debugLog(this.TAG_NAME,"isIphone and set _opt.videoRenderSupportScale false"),this._opt.videoRenderSupportScale=!1,ia()&&Ea(this._opt.isHls)&&wa(this._opt.supportHls265)&&(this.debugLog(this.TAG_NAME,"isIphone and is in wechat and is hls so set supportHls265 true"),this._opt.supportHls265=!0)),wa(this._opt.playFailedAndReplay)&&(this.debugLog(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.streamErrorReplay=!1,this._opt.streamEndReplay=!1,this._opt.mseWaitVideoCanplayAutoWasm=!1),this._opt.hiddenControl&&(this.debugLog(this.TAG_NAME,"_opt.hiddenControl is true and set others show btn to false"),Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(this._opt.operateBtns[e]=!1)})),this._opt.showBandwidth=!1,this._opt.extendOperateBtns=[],this._opt.controlHtml="",this.isPlayback()&&(this._opt.playbackConfig.showControl=!1)),this._opt.watermarkConfig={image:{src:"data:image/png;base64,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",width:75,height:24},opacity:.1,right:10,top:10},this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.isMpeg4&&(this.debugLog(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()&&(Ea(this._opt.useMSE)&&Ea(this._opt.mseDecoderUseWorker)&&this.debugLog(this.TAG_NAME,"isPlayback and mseDecoderUseWorker is true, so set mseDecoderUseWorker false"),this._opt.mseDecoderUseWorker=!1,Ea(this._opt.useWCS)&&Ea(this._opt.wcsDecodeAudio)&&this.debugLog(this.TAG_NAME,"isPlayback and wcsDecodeAudio is true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1),this._opt.poster&&(this._opt.background=this._opt.poster),wa(this._opt.muted)&&(this._opt.isNotMute=!0),this._opt.mseDecoderUseWorker&&(this._opt.mseDecoderUseWorker=!!(Br.Worker&&Br.MediaSource&&"canConstructInDedicatedWorker"in Br.MediaSource&&!0===Br.MediaSource.canConstructInDedicatedWorker),wa(this._opt.mseDecoderUseWorker)&&this.debugLog(this.TAG_NAME,"mseDecoderUseWorker is true but not support so set _opt.mseDecoderUseWorker = false")),(this.isOldHls()||this.isWebrtcH264()||this.isAliyunRtc())&&(this.debugLog(this.TAG_NAME,"isOldHls or isWebrtcH264 or isAliyunRtc is true, so set some params false and set _opt.recordType = 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=E),this._opt.isNakedFlow&&(this.debugLog(this.TAG_NAME,"isNakedFlow is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),Eo()&&(this.debugLog(this.TAG_NAME,"isFirefox is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),!this.isOldHls()&&!this.isWebrtcH264()){if(this._opt.useWCS){const e=function(){let e=!1;return"VideoDecoder"in window&&(e=!0),e}(),t=Mo();this._opt.useWCS=e,this._opt.useWCS&&this._opt.isH265&&(this._opt.useWCS=t),this._opt.useWCS||this.debugWarn(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.wcsDecodeAudio&&(this._opt.wcsDecodeAudio=function(){let e=!1;return"AudioDecoder"in window&&(e=!0),e}(),this._opt.wcsDecodeAudio||this.debugWarn(this.TAG_NAME,"wcsDecodeAudio is true, but not support so set wcsDecodeAudio false")),this._opt.useOffscreen?this._opt.wcsUseVideoRender=!1:this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=Fo()&&Uo(),this._opt.wcsUseVideoRender||this.debugWarn(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 Br&&(e=!0),e}()||function(){let e=!1;return!("MediaSource"in Br)&&"ManagedMediaSource"in Br&&(e=!0),e}(),t=Bo()||function(){let e=!1;return!("MediaSource"in Br)&&"ManagedMediaSource"in Br&&Br.ManagedMediaSource&&(Br.ManagedMediaSource.isTypeSupported(_i)||Br.ManagedMediaSource.isTypeSupported(Si)||Br.ManagedMediaSource.isTypeSupported(Ei)||Br.ManagedMediaSource.isTypeSupported(wi)||Br.ManagedMediaSource.isTypeSupported(Ti))&&(e=!0),e}();this._opt.useMSE=e,this._opt.useMSE&&this._opt.isH265&&(this._opt.useMSE=t),this._opt.useMSE||this.debugWarn(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(wa(this._opt.useMSE)&&(this._opt.mseDecodeAudio=!1),wa(this._opt.useWCS)&&(this._opt.wcsDecodeAudio=!1),this._opt.useMSE?(this._opt.useWCS&&this.debugWarn(this.TAG_NAME,"useMSE is true and useWCS is true then useWCS set true->false"),this._opt.forceNoOffscreen||this.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(this.TAG_NAME,"is stream use webTransport is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.wcsDecodeAudio&&this._opt.demuxUseWorker&&(this.debugWarn(this.TAG_NAME,"is wcsDecodeAudio true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),wa(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.debugWarn(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=ka();this._opt.useSIMD=e&&wa(t),this._opt.useSIMD||this.debugWarn(this.TAG_NAME,`useSIMD is true, but not support(isSupportSimd is ${e} ,isIphone is ${t}) so set useSIMD false`)}var s;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.decoderOld=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-old.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.decoderOld=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-old.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.decoderOld=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-old.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"),this._opt.decoderOld=this._opt.decoder.replace("decoder-pro.js","decoder-pro-old.js")),wa(this._opt.hasAudio)&&(this._opt.operateBtns.audio=!1),wa(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.debugWarn(this.TAG_NAME,"_opt.qualityConfig is empty, so set operateBtns.quality false")),Ea(this._opt.useWebGPU)&&(this._opt.useWebGPU=function(){let e=!1;return"gpu"in navigator&&(e=!0),e}(),wa(this._opt.useWebGPU)&&this.debugWarn(this.TAG_NAME,"useWebGPU is true, but not support so set useWebGPU false")),this._opt.useMSE&&this._opt.mseWaitVideoCanplayTimeout>this._opt.loadingTimeout&&(this.debugWarn(this.TAG_NAME,`mseWaitVideoCanplayTimeout ${this._opt.mseWaitVideoCanplayTimeout} is greater than loadingTimeout ${this._opt.loadingTimeout}, so set mseWaitVideoCanplayTimeout = loadingTimeout -1`),this._opt.mseWaitVideoCanplayTimeout=Math.max(this._opt.loadingTimeout-1,1)),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._playbackPause=!1,this._hasLoaded=!1,this._zooming=!1,this._drawingRect=!1,this._destroyed=!1,this._destroyLock=!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._tempTsList=[],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._serverInfo=null,this._mseWorkerData={},this._isStreamEnd=!1,wa(this._opt.useMSE)&&wa(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=Co()&&Fo()&&Uo(),this._opt.wasmUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false"),this._opt.wasmUseVideoRender&&this._opt.wasmPlayAudioUseVideoRender&&(this._opt.wasmPlayAudioUseVideoRender="AudioData"in window,this._opt.wasmPlayAudioUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render play audio, but not support so set wasmPlayAudioUseVideoRender false"))),this._opt.useSIMD?this.debugLog(this.TAG_NAME,"use simd wasm"):this.debugLog(this.TAG_NAME,"use wasm")),this._opt.useWasm&&(this._opt.useFaceDetector&&window.JessibucaProFaceDetector||this._opt.useObjectDetector&&window.JessibucaProObjectDetector||this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||this._opt.useImageDetector&&window.JessibucaProImageDetector)?(this.ai=new Sv(this),this._opt.useFaceDetector&&window.JessibucaProFaceDetector||(this._opt.operateBtns.aiFace=!1),this._opt.useObjectDetector&&window.JessibucaProObjectDetector||(this._opt.operateBtns.aiObject=!1),this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||(this._opt.operateBtns.aiOcclusion=!1),this._opt.useImageDetector&&this._opt.aiImageDetectActive&&window.JessibucaProImageDetector&&(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.JessibucaProFaceDetector||this.debugWarn(this.TAG_NAME,`use face detector, useWasm is ${this._opt.useWasm} and window.JbProFaceDetector is null`)),this._opt.useObjectDetector&&(this._opt.useWasm&&window.JessibucaProObjectDetector||this.debugWarn(this.TAG_NAME,`use object detector, useWasm is ${this._opt.useWasm} and window.JbProObjectDetector is null`)),this._opt.useOcclusionDetector&&(this._opt.useWasm&&window.JessibucaProOcclusionDetector||this.debugWarn(this.TAG_NAME,`use occlusion detector, useWasm is ${this._opt.useWasm} and window.JessibucaProOcclusionDetector is null`)),this._opt.useImageDetector&&(this._opt.useWasm&&window.JessibucaProImageDetector||this.debugWarn(this.TAG_NAME,`use image detector, useWasm is ${this._opt.useWasm} and window.JessibucaProImageDetector is null`)),this._opt.videoRenderType&&(this.debugLog(this.TAG_NAME,`videoRenderType is ${this._opt.videoRenderType}`),this._opt.videoRenderType===H?(this._opt.useVideoRender=!0,this._opt.useCanvasRender=!1):this._opt.videoRenderType===$&&(this._opt.useVideoRender=!1,this._opt.useCanvasRender=!0)),this._opt.useVideoRender&&(this._opt.useWasm&&!this._opt.useOffscreen?(this._opt.wasmUseVideoRender=Co()&&Fo()&&Uo(),this._opt.wasmUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")):this._opt.useWCS&&!this._opt.useOffscreen&&(this._opt.wcsUseVideoRender=Fo()&&Uo(),this._opt.wcsUseVideoRender||this.debugWarn(this.TAG_NAME,"use wcs video render, but not support so set wcsUseVideoRender false"))),this._opt.useCanvasRender&&(this._opt.useMSE&&wa(this._opt.mseDecoderUseWorker)&&(this._opt.mseUseCanvasRender=!0),this._opt.useWasm&&(this._opt.wasmUseVideoRender=!1),this._opt.useWCS&&(this._opt.wcsUseVideoRender=!1),this.isOldHls()&&!ko()&&(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),this._opt.useCanvasRender&&this.useVideoPlayAudio()&&(this.debugLog(this.TAG_NAME,"useCanvasRender is true and useVideoPlayAudio() return true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1,this._opt.wasmPlayAudioUseVideoRender=!1),s=this,Object.defineProperty(s,"rect",{get:()=>{let e={};return s.$container&&(e=s.$container.getBoundingClientRect(),e.width=Math.max(e.width,s.$container.clientWidth),e.height=Math.max(e.height,s.$container.clientHeight)),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(s,e,{get:()=>s.rect[e]||0})})),this.events=new Ba(this),this._opt.hasVideo&&(this.video=new dn(this),this.recorder=new vl(this)),this.isOldHls()?(this.hlsDecoder=new YA(this),this.loaded=!0):this.isWebrtcH264()?(this._opt.isWebrtcForZLM?this.webrtc=new Cv(this):this._opt.isWebrtcForSRS?this.webrtc=new Tv(this):this._opt.isWebrtcForOthers?this.webrtc=new kv(this):this.webrtc=new Lv(this),this.loaded=!0):this.isAliyunRtc()?(this.aliyunRtcDecoder=new Dv(this),this.loaded=!0):(this.isUseHls265()&&(this.hlsDecoder=new bv(this)),this.isWebrtcH265()&&(this.webrtc=new Lv(this)),wa(da(this._opt))?this.decoderWorker=new kl(this):this.loaded=!0),this._opt.hasAudio&&(this.audio=new Cn(this)),this.stream=null,this.demux=null,this._lastVolume=null,this._isMute=null,this._isInZoom=!1,this._playingStartTimestamp=null,this.isMSEVideoDecoderInitializationFailedNotSupportHevc=!1,this.isMSEAudioDecoderError=!1,this.isMSEPlaybackRateChangePause=!1,this.isMSECurrentMoreThanBufferedPause=!1,this.isPlayFailedAndPaused=!1,this._seiList=[],this._opt.useWCS&&(this.webcodecsDecoder=new ic(this),!this._opt.hasAudio&&wa(this._opt.demuxUseWorker)&&(this.loaded=!0)),this._opt.useMSE&&wa(this._opt.mseDecoderUseWorker)&&(this.mseDecoder=new Tc(this),!this._opt.hasAudio&&wa(this._opt.demuxUseWorker)&&(this.loaded=!0)),this.control=new Sc(this),this._opt.contextmenuBtns.length>0&&wa(this._opt.disableContextmenu)&&_o()?this.contextmenu=new Ev(this):Ea(this._opt.disableContextmenu)&&this._opt.contextmenuBtns.length>0&&_o()&&this.debugWarn(this.TAG_NAME,"disableContextmenu is true, but contextmenuBtns is not empty, so Contextmenu can not be created,please check"),this.isPlayback()&&(this.playback=new vv(this,this._opt.playbackConfig)),this._opt.operateBtns.zoom&&(this.zoom=new _v(this)),/(iphone|ipad|ipod|ios|android)/i.test(window.navigator.userAgent.toLowerCase())&&wa(this._opt.supportLockScreenPlayAudio&&To())&&(this.keepScreenOn=new Lc(this)),(e=>{try{const t=t=>{ra(t)===e.$container&&(e.emit(yt.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};Or.on("change",t),e.events.destroys.push((()=>{Or.off("change",t)}))}catch(e){}if(e.on(gt.decoderWorkerInit,(()=>{e.debugLog("player","listen decoderWorkerInit and set loaded true"),e.loaded=!0})),e.on(gt.play,(()=>{e.loading=!1})),e.on(gt.fullscreen,(t=>{if(t)try{Or.request(e.$container).then((()=>{})).catch((t=>{e.debugError("player","fullscreen request error",t,t.toString()),e.emitError(bt.fullscreenError,t.toString()),vo()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){vo()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{Or.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((t=>{e.debugError("player","fullscreen exit error",t,t.toString()),e.emitError(bt.fullscreenError,t.toString()),e.webFullscreen&&(e.webFullscreen=!1)}))}catch(t){e.webFullscreen&&(e.webFullscreen=!1)}})),vo()&&e.on(gt.webFullscreen,(t=>{t?e.$container.classList.add("jb-pro-fullscreen-web"):e.$container.classList.remove("jb-pro-fullscreen-web"),e.emit(yt.fullscreen,e.fullscreen)})),e.on(gt.resize,(()=>{e.resize()})),e._opt.debug){const t=[gt.timeUpdate,gt.currentPts,gt.videoSEI,gt.videoSEISyncPts,gt.performance,gt.videoSmooth],i=[gt.stats,gt.playbackStats,gt.playbackTimestamp,gt.flvMetaData,gt.playToRenderTimes,gt.audioInfo,gt.videoInfo];Object.keys(gt).forEach((s=>{e.on(gt[s],(function(r){if(!t.includes(s)){i.includes(s)&&(r=JSON.stringify(r));for(var o=arguments.length,a=new Array(o>1?o-1:0),n=1;n{e.on(bt[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.updateOption({rotate:e?270:0}),this.resize()}),10)}get webFullscreen(){return this.$container.classList.contains("jb-pro-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded||this.isOldHls()||this.isWebrtcH264()||this._opt.useMSE&&wa(this._opt.hasAudio)&&wa(this._opt.demuxUseWorker)||this._opt.useWCS&&!this._opt.hasAudio&&wa(this._opt.demuxUseWorker)}set playing(e){this.isClosed()&&e?this.debugLog(this.TAG_NAME,"player is closed, so can not play"):(e&&Ea(this.loading)&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(gt.playing,e),this.emit(gt.volumechange,this.volume),e?this.emit(gt.play):this.emit(gt.pause)))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio?(this.audio.setVolume(e),this._lastVolume=this.volume,this._isMute=0===this.volume):this.debugWarn(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(gt.loading,this._loading))}get loading(){return this._loading}set zooming(e){this.isDestroyedOrClosed()||this.zooming!==e&&(this.zoom||(this.zoom=new _v(this)),this._zooming=e,this.emit(gt.zooming,this.zooming))}get zooming(){return this._zooming}set drawingRect(e){this.isDestroyedOrClosed()||this.drawingRect!==e&&(this.drawRectangle||(this.drawRectangle=new Pv(this)),this._drawingRect=e,this.emit(gt.drawingRect,this.drawingRect))}get drawingRect(){return this._drawingRect}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(gt.streamQualityChange,e))}get streamQuality(){return this._streamQuality}get isDebug(){return Ea(this._opt.debug)}get scaleType(){const e=this._opt,t=e.isResize,i=e.isFullResize;let s=ni;return wa(i)&&wa(t)?s=ni:wa(i)&&Ea(t)?s=li:Ea(i)&&Ea(t)&&(s=di),s}set visibility(e){this._visibility!==e&&(this._visibility=e,this.emit(gt.visibilityChange,e),this._lastestVisibilityChangeTimestamp=uo(),e?this.clearVisibilityHiddenTimeout():this.startVisibilityHiddenTimeout())}get visibility(){return this._visibility}set playbackPause(e){this._playbackPause!==e&&(this._playbackPause=e,this.emit(gt.playbackPause,e),this.emit(gt.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(gt.faceDetectActive,e))}get faceDetectActive(){return this._faceDetectActive}set objectDetectActive(e){this._objectDetectActive!==e&&(this._objectDetectActive=e,this.emit(gt.objectDetectActive,e))}get objectDetectActive(){return this._objectDetectActive}set occlusionDetectActive(e){this._occlusionDetectActive!==e&&(this._occlusionDetectActive=e,this.emit(gt.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}isDestroying(){return this._destroyed&&this._destroyLock}isClosed(){return this._closed}isDestroyedOrClosed(){return this.isDestroyed()||this.isClosed()}isLoading(){return this.loading}isPlaying(){let e=!1;return this._opt.playType===b?e=this.playing:this._opt.playType===_&&(e=wa(this.playbackPause)&&this.playing),e}updateOption(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._opt=Object.assign({},this._opt,e),Ea(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 dn(this)),this.audio||this._opt.hasAudio&&(this.audio=new Cn(this)),this.stream||(this.stream=new On(this)),this.isOldHls()?(this.hlsDecoder||(this.hlsDecoder=new YA(this),this.loaded=!0),e()):this.isWebrtcH264()?(this.webrtc||(this._opt.isWebrtcForZLM?this.webrtc=new Cv(this):this._opt.isWebrtcForSRS?this.webrtc=new Tv(this):this._opt.isWebrtcForOthers?this.webrtc=new kv(this):this.webrtc=new Lv(this),this.loaded=!0),e()):this.isAliyunRtc()?(this.aliyunRtcDecoder||(this.aliyunRtcDecoder=new Dv(this),this.loaded=!0),e()):(this.demux||this._opt.hasVideo&&!this.isUseWorkerDemuxAndDecode&&(this.demux=new qh(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new ic(this))),this._opt.useMSE&&wa(this._opt.mseDecoderUseWorker)&&(this.mseDecoder||(this.mseDecoder=new Tc(this))),this.isUseHls265()&&(this.hlsDecoder||(this.hlsDecoder=new bv(this))),this.isWebrtcH265()&&(this.webrtc||(this.webrtc=new Lv(this))),this.decoderWorker?this.loaded?e():this.once(gt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debugError(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())})):wa(da(this._opt))?(this.decoderWorker=new kl(this),this.once(gt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debugError(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())}))):e())}))}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!e&&!this._opt.url)return s("url is empty");this._closed=!1,this.loading=!0,this.playing=!1,this._times.playInitStart=uo(),e||(e=this._opt.url),this._opt.url=e,this.control&&this._opt.loadingBackground&&this.control.initLoadingBackground(),this.init().then((()=>{this.debugLog(this.TAG_NAME,"play() init and next fetch stream"),this._times.playStart=uo(),this._opt.isNotMute&&this.mute(!1),this.enableWakeLock(),this.checkLoadingTimeout(),this.stream?(this.stream.once(bt.fetchError,(e=>{this.emitError(bt.fetchError,e)})),this.stream.once(bt.websocketError,(e=>{this.emitError(bt.websocketError,e)})),this.stream.once(gt.streamEnd,(e=>{this.emit(gt.streamEnd,e)})),this.stream.once(bt.hlsError,(e=>{this.emitError(bt.hlsError,e)})),this.stream.once(bt.webrtcError,(e=>{this.emitError(bt.webrtcError,e)})),this.stream.once(gt.streamSuccess,(()=>{i(),this._times.streamResponse=uo(),this.video&&this.video.play(),this.checkStatsInterval(),this.isPlayback()&&this.playback&&this.playback.startCheckStatsInterval();{const e=Number("1")||1;setTimeout((()=>{this.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码)"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload()}),60*e*60*1e3)}})),this.stream.fetchStream(e,t)):(this.debugWarn(this.TAG_NAME,`play() this.stream is null and is isDestroyedOrClosed is ${this.isDestroyedOrClosed()}`),s("this.stream is null"))})).catch((e=>{s(e)}))}))}playForControl(){return new Promise(((e,t)=>{this.debugLog(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&&wa(this._isMute)&&(this.volume=this.lastVolume)}async _close(){this._closed=!0,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.loading=!1,this.recording=!1,this.zooming=!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:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.stream&&(await this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.webcodecsDecoder&&(await this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.hlsDecoder&&(await this.hlsDecoder.destroy(),this.hlsDecoder=null),this.webrtc&&(this.webrtc.destroy(),this.webrtc=null),this.aliyunRtcDecoder&&(this.aliyunRtcDecoder.destroy(),this.aliyunRtcDecoder=null),this.audio&&(await this.audio.destroy(),this.audio=null),this.playing=!1}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];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.debugLog(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.debugLog(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.debugWarn(this.TAG_NAME,"pauseForControl() and videoInfo is null")}else this.debugWarn(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)}cancelRecord(){return new Promise(((e,t)=>{this.recorder||t("recorder is null"),this.recording&&(this._opt.useWasm&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})))}))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{this.recorder||s("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=>{s(e)}))):s("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),this._opt.controlHtml&&(e=!0),e}useWasmDecode(){return wa(this._opt.useMSE)&&wa(this._opt.useWCS)}canVideoTrackWritter(){const e=this._opt;return!this.isOldHls()&&!this.isWebrtcH264()&&wa(e.useMSE)&&!this.isAliyunRtc()&&(e.useWCS&&wa(e.useOffscreen)&&e.wcsUseVideoRender||this.useWasmDecode())}checkHeartTimeout$2(){if(wa(this.playbackPause)&&this.playing){if(this.isDestroyedOrClosed())return void this.debugWarn(this.TAG_NAME,"checkHeartTimeout$2 but player is destroyed");if(wa(this.isHistoryFpsListAllZero()))return void this.debugWarn(this.TAG_NAME,"checkHeartTimeout$2 but fps is not all zero");if(0!==this._stats.fps)return void this.debugWarn(this.TAG_NAME,`checkHeartTimeout$2 but fps is ${this._stats.fps}`);const e=this._historyFpsList.join(",");this.debugWarn(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(gt.timeout,gt.delayTimeout),this.emit(gt.delayTimeout)}else this.debugLog(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.debugWarn(this.TAG_NAME,`checkLoadingTimeout but loading is ${this.loading} and playing is ${this.playing}`):this.isDestroyedOrClosed()?this.debugWarn(this.TAG_NAME,"checkLoadingTimeout but player is destroyed"):(this.debugWarn(this.TAG_NAME,"checkLoadingTimeout and pause and emit loadingTimeout event"),this.emit(gt.timeout,gt.loadingTimeout),this.emit(gt.loadingTimeout))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(this.debugLog(this.TAG_NAME,"clearCheckLoadingTimeout"),clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.isDestroyedOrClosed()?this.debugWarn(this.TAG_NAME,"handleRender but player is destroyed"):(this.loading&&(this.clearCheckLoadingTimeout(),this.loading=!1,this.emit(gt.start)),this.playing||(this.playing=!0))}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.isDestroyedOrClosed())return void this.debugLog(this.TAG_NAME,"updateStats but player is closed or destroyed");if(this._startBpsTime||(this._startBpsTime=uo()),Go(e.ts)){const t=parseInt(e.ts,10);this._stats.ts=t,this._tempTsList.push(t),null===this._playingStartTimestamp&&t>0&&(this._playingStartTimestamp=t)}Go(e.dts)&&(this._stats.dts=parseInt(e.dts,10)),Go(e.mseTs)&&(this._stats.mseTs=e.mseTs),Go(e.buf)&&(this._stats.buf=e.buf),Go(e.netBuf)&&(this._stats.netBuf=e.netBuf),Go(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=uo();if(t-this._startBpsTime<1e3)return;null!==this._playingStartTimestamp&&this._stats.fps>0&&(this._stats.pTs+=1);let i=0,s=0,r=0,o=0,a=0;this._opt.useMSE&&(this.mseDecoder?(i=this.mseDecoder.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.mseDecoder.checkSourceBufferStore(),s=s.toFixed(2),o=this.mseDecoder.getDecodePlaybackRate(),a=this.mseDecoder.getPendingSegmentsLength()):this.isMseDecoderUseWorker()&&(i=this.video.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.video.checkSourceBufferStore(),s=s.toFixed(2),o=this.video.getDecodePlaybackRate())),this._opt.useWCS&&this.webcodecsDecoder&&(r=this.webcodecsDecoder.getDecodeDiffTimes()),this.isOldHls()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=parseInt(1e3*i,10));let n=0,l=0,d=0;this.isUseHls265()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=i.toFixed(2),n=this.hlsDecoder.getDemuxBufferedListLength(),d=this.hlsDecoder.getDemuxVideoBufferedListLength(),l=this.hlsDecoder.getDemuxAudioBufferedListLength());let h=0,c=0,u=0,p=!1,f=0,m=0;this._opt.useWasm||this._opt.demuxUseWorker?this._tempWorkerStats&&(c=this._tempWorkerStats.demuxBufferDelay,u=this._tempWorkerStats.audioDemuxBufferDelay,h=this._tempWorkerStats.streamBufferByteLength,this._stats.netBuf=this._tempWorkerStats.netBuf,f=this._tempWorkerStats.pushLatestDelay,p=this._tempWorkerStats.isStreamTsMoreThanLocal,this._stats.buf=this._tempWorkerStats.latestDelay,m=this._tempWorkerStats.wasmDecodeDelay):this.demux&&(h=this.demux.getInputByteLength(),f=this.demux.getPushLatestDelay(),p=this.demux.getIsStreamTsMoreThanLocal(),this.demux.bufferList&&(c=this.demux.bufferList.length));let g=0,y=0;this.audio&&this.audio.bufferList&&(g=this.audio.bufferList.length,y=parseInt(g*this.audio.oneBufferDuration,10));let A=0,b=0;if(this.isPlayback()&&this.video){this._opt.playbackConfig.isUseFpsRender&&(A=this.video.bufferList&&this.video.bufferList.length||0);let e=this.video.getStreamFps();const t=e>0?1e3/e:0;b=parseInt(t*A+t*c,10)}let v=0;this.videoTimestamp>0&&(v=this._stats.dts-this.videoTimestamp);const _=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 S=this.getVideoCurrentTime();const E=this._stats.videoCurrentTime;let w=-1;E&&S&&(w=Do((S-E).toFixed(2)),S=S.toFixed(2));let k=0;this.audioTimestamp>0&&(k=this.audioTimestamp-this.getRenderCurrentPts()),this._allStatsData=Object.assign(this._stats,{audioBuffer:g,audioBufferDelayTs:y,audioTs:this.audioTimestamp,latestAudioTs:this.latestAudioTimestamp,playbackVideoBuffer:A,playbackVideoWaitingBuffer:0,playbackAudioWaitingBuffer:0,playbackCacheDataDuration:b,demuxBuffer:c,pushLatestDelay:f,audioDemuxBuffer:u,streamBuffer:h,mseDelay:i,mseStore:s,mseDecodeDiffTimes:r,mseDecodePlaybackRate:o,msePendingBuffer:a,wcsDecodeDiffTimes:r,wasmDecodeDelay:m,hlsDelay:i,hlsDemuxLength:n,hlsDemuxAudioLength:l,hlsDemuxVideoLength:d,delayTs:v,totalDelayTs:_,isStreamTsMoreThanLocal:p,videoCurrentTime:S,videoCurrentTimeDiff:w,audioSyncVideo:k});let L=null,C=null,D="";if(this.isPlayer()&&this._opt.hasVideo&&this.playing){L=function(e,t){let i=3;const s=t||25;return e<=s*(1/4)?i=0:e<=.5*s?i=1:e<=s*(3/4)&&(i=2),i}(this._stats.fps,this._flvMetaDataFps),this._allStatsData.performance=L;const e=this.checkVideoSmooth(this._allStatsData);D=e.reason,C=e.result,this._allStatsData.videoSmooth=C}this.emit(gt.stats,this._allStatsData),this._allStatsData.streamBuffer>this._opt.flvDemuxBufferSizeMaxLarge&&this.getDemuxType()===T&&this.emit(bt.flvDemuxBufferSizeTooLarge,this._allStatsData.streamBuffer),this._opt.hasVideo?(this.updateHistoryFpsList(this._stats.fps,this._allStatsData.videoCurrentTimeDiff),Go(L)&&this.emit(gt.performance,L),Go(C)&&this.emit(gt.videoSmooth,C,D)):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._tempTsList=[],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={},this._tempTsList=[]}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&&wa(this._opt.isHls)&&(i="vbpsIsZero",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&e.isDropping&&(i="isDroppingIsTrue",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&this.visibility&&this._historyFpsList.length>=this._opt.heartTimeout){const s=function(e){const t=Math.max(...e),i=Math.min(...e);return e.filter((e=>e!==t&&e!==i))}(this._historyFpsList),r=s.reduce(((e,t)=>e+t),0)/s.length,o=.83*r;e.fps=1.5||e.videoCurrentTimeDiff<=.5)&&-1!==e.videoCurrentTimeDiff){if(i="videoCurrentTimeDiffIsNotNormal",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because videoCurrentTimeDiff is ${e.videoCurrentTimeDiff}`),0===Number(e.videoCurrentTimeDiff)){const e=this.isVideoPlaying(),t=this.getVideoCurrentTime(),i=this.getVideoBufferTimeRange();let s=-1,r=-1;i&&(s=i.start,r=i.end),this.debugLog(this.TAG_NAME,`checkVideoSmooth and videoCurrentTimeDiff is 0 so check\n videoCurrentTime is ${t} and isPlaying is ${e}\n bufferStartTime is ${s} and bufferEndTime is ${r}`)}t=!1}return{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(gt.beforeDestroy)}handlePlayToRenderTimes(){if(this.isDestroyedOrClosed())return void this.debugLog(this.TAG_NAME,"handlePlayToRenderTimes but player is closed or destroyed");const e=this.getPlayToRenderTimes();this.emit(gt.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===b}isPlayback(){return this._opt.playType===_}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()?z:this.isAliyunRtc()?V:this.isOldHls()?W:(t.useMSE&&(e+=F+" ",t.mseDecoderUseWorker&&(e+="worker")),t.useWCS&&(e+=U+" "),t.useWasm&&(e+=N+" ",t.useSIMD&&(e+=j+" "),t.useMThreading&&(e+=G+" ")),t.useOffscreen&&(e+=O+" "),e)}getDemuxType(){return this._opt.demuxType}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}isStreamTypeNotWorker(){return-1===this.getStreamType().indexOf(y)}getAllStatsData(){return this._allStatsData}isFlvDemux(){return this._opt.demuxType===T}isM7SDemux(){return this._opt.demuxType===k}isNakedFlowDemux(){return this._opt.demuxType===x}isMpeg4Demux(){return this._opt.demuxType===P}isTsDemux(){return this._opt.demuxType===B}isFmp4Demux(){return this._opt.demuxType===R}togglePerformancePanel(e){this.updateOption({showPerformance:e}),this.emit(gt.togglePerformancePanel,e)}setScaleMode(e){let t={isFullResize:!1,isResize:!1,aspectRatio:"default"};switch(e=Number(e)){case ni:t.isFullResize=!1,t.isResize=!1;break;case li:t.isFullResize=!1,t.isResize=!0;break;case di:t.isFullResize=!0,t.isResize=!0}this.updateOption(t),this.resize(),this.emit(gt.viewResizeChange,e)}startVisibilityHiddenTimeout(){this.clearVisibilityHiddenTimeout(),this._opt.pageVisibilityHiddenTimeout>0&&(this.visibilityHiddenTimeout=setTimeout((()=>{this.emit(gt.visibilityHiddenTimeout)}),1e3*this._opt.pageVisibilityHiddenTimeout))}clearVisibilityHiddenTimeout(){this._checkVisibleHiddenTimeout&&(clearTimeout(this._checkVisibleHiddenTimeout),this._checkVisibleHiddenTimeout=null)}faceDetect(e){this.faceDetectActive=e,wa(e)&&this.video&&this.video.addAiContentToCanvas([])}objectDetect(e){this.objectDetectActive=e,wa(e)&&this.video&&this.video.addAiContentToCanvas([])}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 s=!1;if(e&&t&&i){s=1e3/i*t>e}return s}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.video&&this.video.addContentToCanvas(e)}addContentToContainer(){}sendWebsocketMessage(e){const t=this.getStreamType();t===f||t===y+" "+f?this.stream.sendMessage(e):this.debugWarn(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="")}toggleControlHtml(e){this.control&&this.control.toggleControlHtml(e)}getControlHtmlIsShow(){return!!this.control&&this.control.getControlHtmlIsShow()}getControlHtml(){return this.control?this.control.getControlHtml():null}setExtendHtml(e){this.control&&(this.control.$extendDom?this.control.updateExtendDom(e):this.control.addExtendDom({html:e,showBeforePlay:!0}))}clearExtendHtml(){this.control&&this.control.removeExtendDom()}toggleExtendHtml(e){this.control&&this.control.toggleExtendDom(e)}getExtendHtmlIsShow(){return!!this.control&&this.control.getExtendDomIsShow()}getExtendHtml(){return this.control?this.control.getExtendDom():null}updateWatermark(e){this.singleWatermark||(this.singleWatermark=new qa(this)),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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(gt.error,e,t),this.emit(e,t)}updateHistoryFpsList(e,t){this.playbackPause||wa(this.visibility)||(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 Ea(this._opt.isHls)&&Ea(this._opt.supportHls265)}isHls(){return Ea(this._opt.isHls)}isOldHls(){return Ea(this._opt.isHls)&&wa(this._opt.supportHls265)}isWebrtcNotH265(){return Ea(this._opt.isWebrtc)&&wa(this._opt.isWebrtcH265)}isWebrtcH264(){return Ea(this._opt.isWebrtc)&&wa(this._opt.isWebrtcH265)}isWebrtcH265(){return Ea(this._opt.isWebrtc)&&Ea(this._opt.isWebrtcH265)}isAliyunRtc(){return Ea(this._opt.isAliyunRtc)}isUseHls265UseMse(){return this.isUseHls265()&&this.isUseMSE()}isStreamWebTransport(){return this.getStreamType()===g}isPlaybackCacheBeforeDecodeForFpsRender(){return this.isPlayback()&&Ea(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)&&Ea(this._opt.useWCS)}isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender(){return this.isPlayback()&&wa(this._opt.playbackConfig.isPlaybackPauseClearCache)&&Ea(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)}isPlaybackUseWCS(){return this.isPlayback()&&Ea(this._opt.useWCS)}isPlaybackUseMSE(){return this.isPlayback()&&Ea(this._opt.useMSE)}isPlaybackUseWASM(){return this.isPlayback()&&Ea(this._opt.useWasm)}isPlayUseMSE(){return this.isPlayer()&&Ea(this._opt.useMSE)}isMSEDecodeAudio(){return this._opt.useMSE&&this._opt.mseDecodeAudio}isWCSDecodeAudio(){this._opt.useWCS&&this._opt.wcsDecodeAudio}isInWebFullscreen(){return this._opt.useWebFullScreen&&vo()&&this.fullscreen}getPlaybackRate(){let e=1;return Ea(this.isPlayback())&&this.playback&&(e=this.playback.rate),e}isPlaybackOnlyDecodeIFrame(){return Ea(this.isPlayback())&&this.getPlaybackRate()>=this._opt.playbackForwardMaxRateDecodeIFrame&&!this.isMSEDecodeAudio()}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}getVideoBufferTimeRange(){let e=null;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.getVideoBufferTimeRange():this.isMseDecoderUseWorker()&&(e=this.video.getVideoBufferTimeRange()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.getVideoBufferTimeRange():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.getVideoBufferTimeRange())),e}isVideoPlaying(){let e=!0;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.isVideoPlaying():this.isMseDecoderUseWorker()&&(e=this.video.isVideoPlaying()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.isVideoPlaying():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.isVideoPlaying())),e}addMemoryLog(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s0){const e=t/1e3;this._flvMetaDataFps=e}}jo(e.hasAudio)&&wa(e.hasAudio)&&(this.debugLog("updateMetaData","hasAudio",e.hasAudio,"and update _opt.hasAudio"),this._opt.hasAudio=e.hasAudio),jo(e.hasVideo)&&wa(e.hasVideo)&&(this.debugLog("updateMetaData","hasVideo",e.hasVideo,"and update _opt.hasVideo"),this._opt.hasVideo=e.hasVideo),e.server&&(this._serverInfo=(e.server+"").substring(0,10)),e.MetaDataCreator&&(this._serverInfo=e.MetaDataCreator)}this.emit(gt.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===w}isRecordTypeMp4(){return this.recorder&&this._opt.recordType===S}isRecordTypeWebm(){return this.recorder&&this._opt.recordType===E}isDemuxInWorker(){return this._opt.useWasm||this._opt.demuxUseWorker}isUseMSE(){return Ea(this._opt.useMSE)}isUseWCS(){return Ea(this._opt.useWCS)}isUseWASM(){return Ea(this._opt.useWasm)}isMseDecoderUseWorker(){return this.isUseMSE()&&Ea(this._opt.mseDecoderUseWorker)}getAudioSyncVideoDiff(){return this.audioTimestamp-this.getRenderCurrentPts()}getCurrentVideoAndAudio(){return{video:this.getRenderCurrentPts(),audio:this.audioTimestamp}}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(gt.currentPts,e),this.emitVideSeiSyncPts(e)}emitVideoSei(e){this.emit(gt.videoSEI,e),this._seiList.push(e)}emitVideSeiSyncPts(e){if(0===this._seiList.length||wa(this._opt.isEmitSEI))return;const t=1e3*this._opt.videoSEISyncPtsDiff,i=e-t,s=e+t,r=[];this._seiList.forEach((t=>{t.ts>=i&&t.ts<=s&&(t.pts=e,r.push(t))})),r.forEach((e=>{this.emit(gt.videoSEISyncPts,e)})),this._seiList=this._seiList.filter((e=>e.ts>s))}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(){Ea(this._opt.checkFirstIFrame)&&(this.mseDecoder?this.mseDecoder.isDecodeFirstIIframe=!1:this.webcodecsDecoder&&(this.webcodecsDecoder.isDecodeFirstIIframe=!1))}isHlsCanVideoPlay(){return this._canPlayAppleMpegurl&&this.isOldHls()}setPtzPosition(e){this.control&&this.control.updatePtzPosition(e)}setRotate(e){this.updateOption({rotate:e}),this.resize()}setPlayFailedAndPaused(){this.isPlayFailedAndPaused=!0}getMseMineType(){let e={};return this.mseDecoder&&(e=this.mseDecoder.getMimeType()),e}getMaxDelayTs(){return this._opt.videoBuffer+this._opt.videoBufferDelay}isMseVideoStateInited(){return!this.video||this.video.getReadyStateInited()}showPlayBtn(){this.control&&this.control.showPlayBtn()}toggleControlExtendBtn(e,t){this.control&&this.control.toggleExtendBtn(e,t)}getControlExtendBtnActive(e){let t=!1;return this.control&&(t=this.control.getExtendBtnActive(e)),t}useVideoPlayAudio(){return this._opt.hasAudio&&(this._opt.useWCS&&this._opt.wcsDecodeAudio||this._opt.useWasm&&this._opt.wasmPlayAudioUseVideoRender)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}debugLog(e){if(this._opt.debug&&this.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s1?t-1:0),s=1;s1?t-1:0),s=1;s1&&0===e[e.length-1]&&0===e[e.length-2]}getShowVideoRect(){let e=this.width,t=this.height;const i=this.getControlHeight();return vo()&&this.fullscreen&&(this._opt.useWebFullScreen||this._opt.androidMobileFullscreenRotate)?e-=i:t-=i,{width:e,height:t}}updateControlSize(e){this.updateOption({controlSize:e}),this.control&&this.control.updateControlSize(),this.resize()}isStreamEnd(){let e=!1;return wa(this._opt.checkStreamEnd)&&(e=this._isStreamEnd),e}updateStreamEndInner(){this._isStreamEnd=!0}checkPlaybackEnd(){return this.isPlayback()&&wa(this._opt.checkStreamEnd),!1}getWebrtcVideo(){let e=null;return this.webrtc&&(e=this.webrtc.$videoElement),e}}class Bv{constructor(e){this.player=e,this.globalSetting=null;const t=xo();this.defaultSettings={watermark_id:`JbPro_${t}`,watermark_prefix:`JbPro_mask_${t}`,watermark_txt:"JbPro 测试水印",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.load({text:decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),color:"white"}),this.player.debugLog("Watermark","int")}destroy(){this._removeMark(),this.globalSetting=null,this.defaultSettings=null,this.player.debugLog("Watermark","destroy")}remove(){}load(e){this.globalSetting=e,this._loadMark(e)}resize(){this.player.debugLog("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 s="string"==typeof e.watermark_parent_node?document.getElementById(e.watermark_parent_node):e.watermark_parent_node,r=s||document.body;const o=r.getBoundingClientRect();var a=Math.max(r.scrollWidth,r.clientWidth,o.width),n=Math.max(r.scrollHeight,r.clientHeight,o.height),l=arguments[0]||{},d=r;(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=r.children,p=Math.floor(Math.random()*(u.length-1))+1;u[p]?r.insertBefore(h,u[p]):r.appendChild(h)}e.watermark_cols=parseInt((a-e.watermark_x)/(e.watermark_width+e.watermark_x_space));var f,m=parseInt((a-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((n-e.watermark_y)/(e.watermark_height+e.watermark_y_space));var g,y,A,b=parseInt((n-e.watermark_y-e.watermark_height*e.watermark_rows)/e.watermark_rows);e.watermark_y_space=b?e.watermark_y_space:b,s?(f=e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),g=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),g=0+e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1));for(var v=0;v\n \n \n ${m.watermark_txt}\n \n \n ${m.watermark_txt}\n \n \n \n \n `,_=window.btoa(unescape(encodeURIComponent(v)));var S=document.createElement("div");S.style.position="absolute",S.style.left="0px",S.style.top="0px",S.style.overflow="hidden",S.style.zIndex="9999999",S.style.width=a+"px",S.style.height=n+"px",S.style.display="block",S.style["-ms-user-select"]="none",S.style.backgroundImage=`url(data:image/svg+xml;base64,${_})`,c.appendChild(S)}_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,s=document.createElement("span");s.innerHTML=e,s.setAttribute("style",`font-family: ${t}; font-size: ${i}px; visibility: hidden; display: inline-block`),document.querySelector("body").appendChild(s);const r={width:s.offsetWidth,height:s.offsetHeight};return s.remove(),r}}const Fv="right",Uv="left",Ov="up",Nv="down",jv="leftUp",Gv="leftDown",zv="rightUp",Wv="rightDown",Vv="zoomExpand",$v="zoomNarrow",Hv="apertureFar",Jv="apertureNear",qv="focusFar",Kv="focusNear",Yv="setPos",Qv="calPos",Xv="delPos",Zv="wiperOpen",e_="wiperClose",t_="cruiseStart",i_={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,setCruise:132,decCruise:133,cruiseStart:136,cruiseStop:0},s_=[25,50,75,100,125,150,175,200,225,250],r_=[1,2,3,4,5,6,7,8,9,16],o_=[16,48,80,112,144,160,176,192,208,224];function a_(e){const{type:t,speed:i=5,index:s=0}=e,r=function(e){return s_[(e=e||5)-1]||s_[4]}(i);let o,a,n,l;if(o=i_[t],!o)return"";switch(t){case Ov:case Nv:case Hv:case Jv:n=r;break;case Fv:case Uv:case qv:case Kv:a=r;break;case jv:case Gv:case zv:case Wv:a=r,n=r;break;case Vv:case $v:l=function(e){return o_[(e=e||5)-1]||o_[4]}(i);break;case Qv:case Xv:case Yv:n=n_(s);break;case e_:case Zv:a=1;break;case t_:a=n_(s)}return function(e,t,i,s){let r=[];r[0]=165,r[1]=15,r[2]=1,r[3]=0,r[4]=0,r[5]=0,r[6]=0,e&&(r[3]=e);t&&(r[4]=t);i&&(r[5]=i);s&&(r[6]=s);return r[7]=(r[0]+r[1]+r[2]+r[3]+r[4]+r[5]+r[6])%256,function(e){let t="";for(let i=0;it)){for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i===t?s[r]=d_(e[r]):"object"==typeof e[r]?s[r]=h_(e[r],t,i+1):s[r]=e[r]);return s}}function c_(){return(new Date).toLocaleString()}class u_{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player=e,this.TAG_NAME="MemoryLogger",this.logMaxSize=(null==t?void 0:t.logMaxSize)||204800,this.logSize=0,this.logTextArray=[],this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.clear(),this.player.debugLog(this.TAG_NAME,"destroy")}clear(){this.logSize=0,this.logTextArray=[]}logCache(){let e="";try{for(var t=arguments.length,i=new Array(t),s=0;sh_(e)));e="[JbPro] "+c_()+JSON.stringify(r)}catch(e){return}if(this.logSize+=e.length,this.logTextArray.push(e),this.logSize>this.logMaxSize){const e=this.logTextArray.shift();this.logSize-=e.length}}getLog(){return this.logTextArray.join("\n")}getLogBlob(){const e=this.getLog();return new Blob([e],{type:"text/plain"})}download(){const e=this.getLog();this.clear();const t=new Blob([e],{type:"text/plain"});tn(t,"JbPro-"+c_()+".log")}}class p_ extends Ma{constructor(e){super(),this.player=e,this.TAG_NAME="Network",this.online=this.isOnline(),this.prevOnline=this.online,this.interval=null,this._initListener(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.off(),this._stopCheck(),window.removeEventListener("online",this._updateOnlineStatus),window.removeEventListener("offline",this._updateOfflineStatus),this.player.debugLog(this.TAG_NAME,"destroy")}_initListener(){window.addEventListener("online",this._updateOnlineStatus.bind(this)),window.addEventListener("offline",this._updateOfflineStatus.bind(this))}_stopCheck(){this.interval&&(clearInterval(this.interval),this.interval=null)}_startCheck(){this.interval=setInterval((()=>{this.isOnline()!==this.prevOnline&&(this.isOnline()?this._updateOnlineStatus():this._updateOfflineStatus())}),1e3)}_updateOnlineStatus(){this.prevOnline=this.online,this.online=!0,this.logStatus(),this.emit("online")}_updateOfflineStatus(){this.prevOnline=this.online,this.online=!1,this.logStatus(),this.emit("offline")}logStatus(){const e=this.prevOnline?"online":"offline",t=this.online?"online":"offline";this.player.debugLog(this.TAG_NAME,`prevOnline: ${this.prevOnline}, online: ${this.online}, status: ${e} -> ${t}`)}isOnline(){return void 0===navigator.onLine||navigator.onLine}isOffline(){return!this.isOnline()}}class f_ extends Ma{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this._opt={},this.TAG_NAME="JbPro",this.$container=null,Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`JbPro option "${t}" can not be undefined`)})),this.originalOptions=e;const t=va();let i=Object.assign({},t,e);i.url="",i.isMulti&&(i.debugUuid=Aa()),this.debug=new Mr(this);let s=e.container;if("string"==typeof e.container&&(s=document.querySelector(e.container)),!s)throw this.debugError("JbPro","JbPro need container option and now container is",e.container),new Error("JbPro need container option");if(wa(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%",s.appendChild(e),this.$videoElement=e,this.$container=s,void(this._opt=i)}if(i.decoder&&wa(-1!==i.decoder.indexOf("decoder-pro.js")||-1!==i.decoder.indexOf("decoder-pro-simd.js")))throw this.debugError("JbPro",`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`),new Error(`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`);if("CANVAS"===s.nodeName||"VIDEO"===s.nodeName)throw this.debugError("JbPro",`JbPro container type can not be ${s.nodeName} type`),new Error(`JbPro container type can not be ${s.nodeName} type`);if(i.videoBuffer>=i.heartTimeout)throw this.debugError("JbPro",`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`),new Error(`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`);if(!s.classList)throw this.debugError(this.TAG_NAME,"JbPro container is invalid, must be a DOM Element",s),new Error("JbPro container is invalid, must be a DOM Element",s);if(this._checkHasCreated(s))throw this.debugError("JbPro","JbPro container has been created and can not be created again",s),new Error("JbPro container has been created and can not be created again",s);var r,o,a;if(s.classList.add("jb-pro-container"),r=s,o=ie,a=xo(),r&&(r.dataset?r.dataset[o]=a:r.setAttribute("data-"+o,a)),delete i.container,Go(i.videoBuffer)&&(i.videoBuffer=1e3*Number(i.videoBuffer)),Go(i.videoBufferDelay)&&(i.videoBufferDelay=1e3*Number(i.videoBufferDelay)),Go(i.networkDelay)&&(i.networkDelay=1e3*Number(i.networkDelay)),Go(i.aiFaceDetectInterval)&&(i.aiFaceDetectInterval=1e3*Number(i.aiFaceDetectInterval)),Go(i.aiObjectDetectInterval)&&(i.aiObjectDetectInterval=1e3*Number(i.aiObjectDetectInterval)),Go(i.timeout)&&(No(i.loadingTimeout)&&(i.loadingTimeout=i.timeout),No(i.heartTimeout)&&(i.heartTimeout=i.timeout)),Go(i.autoWasm)&&(No(i.decoderErrorAutoWasm)&&(i.decoderErrorAutoWasm=i.autoWasm),No(i.hardDecodingNotSupportAutoWasm)&&(i.hardDecodingNotSupportAutoWasm=i.autoWasm),No(i.mseWaitVideoCanplayAutoWasm)&&(i.mseWaitVideoCanplayAutoWasm=i.autoWasm)),Go(i.aiFaceDetectLevel)&&No(i.aiFaceDetectWidth)){const e=er[i.aiFaceDetectLevel];e&&(i.aiFaceDetectWidth=e)}if(Go(i.aiObjectDetectLevel)&&No(i.aiObjectDetectWidth)){const e=tr[i.aiObjectDetectLevel];e&&(i.aiObjectDetectWidth=e)}Ea(i.isCrypto)&&(i.isM7sCrypto=!0),this._opt=i,this.debugLog("JbPro","init"),i.videoBuffer>1e4&&this.debugWarn(this.TAG_NAME,`videoBuffer ${i.videoBuffer/1e3}s is too long, will black screen for ${i.videoBuffer/1e3}s , it is recommended to set it to less than 10s`),this._destroyed=!1,this._destroyLock=!1,this.$container=s,this._tempPlayBgObj={},this._tempVideoLastIframeInfo={},this._tempPlayerIsMute=!0,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this.events=new Ba(this),this._opt.isUseNewFullscreenWatermark?this.watermark=new Mv(this):this.watermark=new Bv(this),this.memoryLogger=new u_(this),this.network=new p_(this),this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[],this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.widthOrHeightChangeReplayDelayTimeout=null,this.streamErrorReplayDelayTimeout=null,this.streamEndReplayDelayTimeout=null,this.playbackPauseTimeout=null,this.playbackResumeTimeout=null,this.initDecoderWorkerTimeout=null,this.$loadingBgImage=null,this.$loadingBg=null,this._initOnLock(),this._initPlayer(s,i),this._initWatermark(),this._initNetwork(),this.debugLog("JbPro",'init success and version is "9-2-2024"'),console.log('JbPro Version is "9-2-2024" '+(wa(bo)?"and is Trial Version[试用版本]":""))}destroy(){return new Promise(((e,t)=>{if(this.debugLog("JbPro","destroy()"),this._destroyLock)return t("JbPro is destroying");this._destroyLock=!0,this._destroyed=!0,this.off(),this._removeTimeout(),this._clearInitDecoderWorkerTimeout(),this._initOnLock(),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._removeLoadingBackgroundForIOS(),this.player?this.player.destroy().then((()=>{this.player=null,this._destroy(),this._destroyLock=!1,e()})).catch((e=>{this._destroyLock=!1,t(e)})):(this._destroy(),this._destroyLock=!1,e())}))}_removeTimeout(){this.widthOrHeightChangeReplayDelayTimeout&&(clearTimeout(this.widthOrHeightChangeReplayDelayTimeout),this.widthOrHeightChangeReplayDelayTimeout=null),this.streamErrorReplayDelayTimeout&&(clearTimeout(this.streamErrorReplayDelayTimeout),this.streamErrorReplayDelayTimeout=null),this.streamEndReplayDelayTimeout&&(clearTimeout(this.streamEndReplayDelayTimeout),this.streamEndReplayDelayTimeout=null),this.playbackPauseTimeout&&(clearTimeout(this.playbackPauseTimeout),this.playbackPauseTimeout=null),this.playbackResumeTimeout&&(clearTimeout(this.playbackResumeTimeout),this.playbackResumeTimeout=null)}_destroy(){var e,t;this.events&&(this.events.destroy(),this.events=null),this.watermark&&(this.watermark.destroy(),this.watermark=null),this.network&&(this.network.destroy(),this.network=null),this.memoryLogger&&(this.memoryLogger.destroy(),this.memoryLogger=null),this.$container&&(this.$container.classList.remove("jb-pro-container"),this.$container.classList.remove("jb-pro-fullscreen-web"),e=this.$container,t=ie,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this._tempPlayBgObj=null,this._tempVideoLastIframeInfo=null,this._isNetworkOfflinePaused=!1,this._playerOnLock=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this._tempPlayerIsMute=!0,this._resetReplayTimes(),this.debugLog("JbPro","destroy end"),this._opt={},this.debug=null}_resetReplayTimes(){this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[]}_getOriginalOpt(){const e=va();return Object.assign({},e,this.originalOptions)}_initPlayer(e,t){this.player=new Iv(e,t),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(((t,i)=>{try{this.debugLog(this.TAG_NAME,"_resetPlayer()",JSON.stringify(e))}catch(t){this.debugLog(this.TAG_NAME,"_resetPlayer()",e)}const s=()=>{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,s(),this.debugLog(this.TAG_NAME,"_resetPlayer() end"),t()})).catch((e=>{this.debugError(this.TAG_NAME,"_resetPlayer() error",e),i(e)})):(s(),this.debugLog(this.TAG_NAME,"_resetPlayer() end"),t())}))}_bindEvents(){var e=this;Object.keys(yt).forEach((t=>{this.player.on(yt[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.player&&this.player.showTipsMessageByCode(e)})),this.player.once(gt.beforeDestroy,(()=>{this.emit(gt.close),this.destroy().then((()=>{})).catch((e=>{}))})),this.player.on(gt.resize,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(gt.fullscreen,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(gt.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(gt.memoryLog,(function(){e.memoryLogger.logCache(...arguments)})),this.player.on(gt.downloadMemoryLog,(()=>{this.downloadMemoryLog()}))}_initWatermark(){if(this._opt.fullscreenWatermarkConfig.text=decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),this._opt.fullscreenWatermarkConfig.color="white",ea(this._opt.fullscreenWatermarkConfig)){const e=Wo(this.$container,this._opt.fullscreenWatermarkConfig);if(!e.watermark_txt)return void this.debugWarn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(e)}}_initNetwork(){this.network.on(gt.online,(()=>{if(this.emit(gt.networkState,gt.online),this.isDestroyed())this.debugLog(this.TAG_NAME,"network online and JbPro is destroyed");else if(this.debugLog(this.TAG_NAME,"network online"),this._isNetworkOfflinePaused&&this._isNetworkOfflinePausedAndNextPlayConfig&&this._isNetworkOfflinePausedAndNextPlayConfig.url){const e=this._isNetworkOfflinePausedAndNextPlayConfig.url,t=this._isNetworkOfflinePausedAndNextPlayConfig.playOptions;this._streamErrorReplayTimes++;const i=this._isNetworkOfflinePausedAndNextPlayConfig.type||"unknown";this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.debugLog(this.TAG_NAME,`${i} and network online and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and reset player and play`),this.play(e,t).then((()=>{this.debugLog(this.TAG_NAME,`${i} and network online and play success`)})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.fetchError,{},e),this.debugError(this.TAG_NAME,`${i} and network online and play error`,e.toString(),e)}))}})),this.network.on(gt.offline,(()=>{this.emit(gt.networkState,gt.offline),this.debugLog(this.TAG_NAME,"network offline")}))}_checkHasCreated(e){if(!e)return!1;const t=function(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}(e,ie);return!!t}_initOnLock(){this.webglAlignmentErrorOnLock=!1,this.webglContextLostErrorOnLock=!1,this.mediaSourceH265NotSupportOnLock=!1,this.mediaSourceFullOnLock=!1,this.mediaSourceAppendBufferErrorOnLock=!1,this.mseSourceBufferErrorOnLock=!1,this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.mseAddSourceBufferErrorOnLock=!1,this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.mediaSourceTsIsMaxDiffOnLock=!1,this.mseWidthOrHeightChangeOnLock=!1,this.mediaSourceAudioG711NotSupportOnLock=!1,this.mediaSourceAudioInitTimeoutOnLock=!1,this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.mseWorkerAddSourceBufferErrorOnLock=!1,this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.webcodecsH265NotSupportOnLock=!1,this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.webcodecsDecodeConfigureErrorOnLock=!1,this.webcodecsDecodeErrorOnLock=!1,this.wcsWidthOrHeightChangeOnLock=!1,this.webcodecsAudioNoDataTimeoutOnLock=!1,this.webcodecsAudioInitTimeoutOnLock=!1,this.simdDecodeErrorOnLock=!1,this.wasmWidthOrHeightChangeOnLock=!1,this.wasmUseVideoRenderErrorOnLock=!1,this.notSupportNewWasmOnLock=!1,this.videoElementPlayingFailedOnLock=!1,this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.networkDelayTimeoutOnLock=!1,this.flvDemuxBufferSizeTooLargeOnLock=!1,this.fetchErrorOnLock=!1,this.streamEndOnLock=!1,this.websocketErrorOnLock=!1,this.webrtcErrorOnLock=!1,this.hlsErrorOnLock=!1,this.aliyunRtcErrorOnLock=!1,this.decoderWorkerInitErrorOnLock=!1,this.decoderWorkerWasmErrorOnLock=!1,this.videoElementPlayingFailedForWebrtcOnLock=!1,this.videoInfoErrorOnLock=!1,this.playbackEndOnLock=!1,this.webrtcStreamH265OnLock=!1,this.mseWaitVideoCanplayTimeoutOnLock=!1}isDestroyed(){return this._destroyed}getOption(){return this.player?this.player.getOption():{}}setDebug(e){this.debugLog("JbPro",`setDebug() ${e}`),this._opt.debug=!!e,this.player?this.player.updateOption({debug:!!e},!0):this.debugWarn("JbPro","player is not init")}getIsDebug(){let e=!1;return this.player&&(e=this.player._opt.debug),e}mute(){this.debugLog("JbPro","mute()"),this.player&&this.player.mute(!0)}cancelMute(){this.debugLog("JbPro","cancelMute() and is mute is ",this.isMute()),this.player&&this.player.isAudioMute()&&this.player.mute(!1)}setVolume(e){this.debugLog("JbPro",`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.debugLog("JbPro","audioResume() and call cancelMute()"),this.cancelMute()}setTimeout(e){this.debugLog("JbPro",`setTimeout() ${e}`),e=Number(e),isNaN(e)?this.debugWarn("JbPro",`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.debugLog("JbPro",`setScaleMode() ${e}`),this.player?this.player.setScaleMode(e):this.debugWarn("JbPro","setScaleMode() player is null")}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{this.debugLog("JbPro",`pause() ${e}`),this.isDestroyed()&&i("JbPro is destroyed"),(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&(this._tempPlayBgObj=this._getVideoLastIframeInfo()),this._tempPlayerIsMute=this.isMute(),this._pause(e).then((e=>{t(e)})).catch((e=>{i(e)}))}))}_pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{if(this.debugLog("JbPro",`_pause() ${e}`),this.isDestroyed())return i("JbPro is destroyed");this._resetReplayTimes(),this.player?this.player.pause(e).then((e=>{t(e)})).catch((e=>{i(e)})):i("player is null")}))}close(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("JbPro is destroyed");this.debugLog("JbPro","close() and inner destroy()"),this.destroy().then((()=>{e()})).catch((e=>{t(e)}))}))}clearView(){this.debugLog("JbPro","clearView()"),this.player&&this.player.video?this.getRenderType()===$?this.player.video.clearView():this.debugWarn("JbPro","clearView","render type is video, not support clearView, please use canvas render type"):this.debugWarn("JbPro","clearView","player is null")}play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debugLog("JbPro",`play() ${e}`,JSON.stringify(t))}catch(i){this.debugLog("JbPro",`play() ${e}`,t)}if(!e&&!this._opt.url)return this.emit(gt.error,bt.playError),void s("url is null and this._opt.url is null");if(e&&(e=(""+e).trim(),-1===e.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 s(`url ${e} must be "http:" or "https:" or "webrtc:" or "ws:" or "wss:" or "wt:" or "artc:" protocol`);if(wa(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 r=t.cryptoKey||this._opt.playOptions.cryptoKey,o=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.m7sCryptoKey&&(!r||!o)){const e=this._opt.m7sCryptoKey.split(".");r=ga(e[0]),o=ga(e[1])}if(!r||!o){const r=e||this._opt.url;return void this._cryptoPlay(r).then((r=>{let{cryptoIV:o,cryptoKey:a}=r;this._opt.playOptions.cryptoKey=a,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=a,this._playBefore(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}this._opt.playOptions.cryptoKey=r,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=r}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=ga(t[0]),i=ga(t[1])}e&&i&&(this._opt.playOptions.cryptoKey=e,this._opt.playOptions.cryptoIV=i,t.cryptoIV=i,t.cryptoKey=e)}else if(this._opt.isSm4Crypto){let e=t.cryptoKey||this._opt.playOptions.cryptoKey,i=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.sm4CryptoKey&&(!e||!i)){const t=this._opt.sm4CryptoKey.split(".");2===t.length&&(e=ml(t[0]),i=ml(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=>{s(e)}))}))}_playBefore(e,t){return new Promise(((i,s)=>{if(this.player)if(e)if(this._opt.url)if(e===this._opt.url)if(this.player.playing)this.debugLog("JbPro","_playBefore","playing and resolve()"),i();else{this.debugLog("JbPro","_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)),wa(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore this.player.play error",e),this.emit(gt.crashLog,this.getCrashLog("this.player.play 1",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e),s(e)}))}else{this.debugLog("JbPro","_playBefore",`\n this._url.url is ${this._opt.url}\n and new url is ${e}\n and destroy and play new url`);const r=this._getOriginalOpt();this._resetPlayer(r).then((()=>{this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(gt.crashLog,this.getCrashLog("this.player.play 2",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e)}))}else this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(gt.crashLog,this.getCrashLog("this.player.play 3",e)),s(e)}));else{let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj)),wa(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(gt.crashLog,this.getCrashLog("this.player.play 4",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e)}))}else e?this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(gt.crashLog,this.getCrashLog("this.player.play 5",e)),s(e)})):this._play(this._opt.url,this._opt.playOptions).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(gt.crashLog,this.getCrashLog("this.player.play 6",e)),s(e)}))}))}_cryptoPlay(e){return new Promise(((t,i)=>{const s=function(e){const t=(e||document.location.toString()).split("//"),i=t[1].indexOf("/");let s=t[1].substring(i);return-1!=s.indexOf("?")&&(s=s.split("?")[0]),s}(e);let r=this._opt.cryptoKeyUrl,o="";const a=ya(e);if(r){if(o=r,this._opt.isM7sCrypto&&-1===o.indexOf("/crypto/?stream=")){const e=ya(r);o=e.origin+te+`?stream=${s}`}}else r=a.origin+te,o=r+`?stream=${s}`;var n;this.player.debugLog("JbPro",`_cryptoPlay() cryptoKeyUrl: ${o} and opt.cryptoKeyUrl: ${this._opt.cryptoKeyUrl}`),(n=o,new Promise(((e,t)=>{Nl.get(n).then((t=>{e(t)})).catch((e=>{t(e)}))}))).then((e=>{if(e){const s=e.split("."),r=ga(s[0]),o=ga(s[1]);o&&r?t({cryptoIV:o,cryptoKey:r}):i("get cryptoIV or cryptoKey error")}else i(`cryptoKeyUrl: getM7SCryptoStreamKey ${o} res is null`)})).catch((e=>{i(e)}))}))}playback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debugLog("JbPro",`playback() ${e}, options: `,JSON.stringify(t))}catch(i){this.debugLog("JbPro",`playback() ${e}, options: `,t)}if(wa(this._opt.isLive))return s("this._opt.isLive is false, can not playback");const r=_a(),o=Object.assign({},r.playbackConfig,this._opt.playbackConfig,t);wa(o.isUseFpsRender)&&o.isCacheBeforeDecodeForFpsRender&&(o.isCacheBeforeDecodeForFpsRender=!1,this.debugWarn("JbPro","playbackConfig.isUseFpsRender is false, isCacheBeforeDecodeForFpsRender can not be ture, isCacheBeforeDecodeForFpsRender is set to false")),0===o.rateConfig.length&&o.showRateBtn&&(o.showRateBtn=!1,this.debugWarn("JbPro","playbackConfig.rateConfig.length is 0, showRateBtn can not be ture, showRateBtn is set to false")),o.controlType,Q.simple,this._resetPlayer({videoBuffer:0,playbackConfig:o,playType:_,openWebglAlignment:!0,useMSE:o.useMSE,useWCS:o.useWCS,useSIMD:!0}).then((()=>{this.play(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}))}playbackPause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro",`playbackPause() ${e}`),this._opt.playType===b?Promise.reject("playType is player, can not call playbackPause method"):new Promise(((t,i)=>{if(!this.player)return i("player is null");Ea(e)?this._pause().then((()=>{t()})).catch((e=>{i(e)})):(this.player.playbackPause=!0,this.player.recording=!1,this.player.zooming=!1,this.playbackPauseTimeout=setTimeout((()=>{this.playbackPauseTimeout=null,t()}),100))})))}playbackResume(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro","playbackResume()"),this._opt.playType===b?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,this.playbackResumeTimeout=setTimeout((()=>{this.playbackResumeTimeout=null,e()}),100)})))}forward(e){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro",`forward() ${e}`),wa(this._opt.isLive)||this._opt.playType===b?(this.debugLog("JbPro",`forward() and this._opt.isLive is ${this._opt.isLive} and this._opt.playType is ${this._opt.playType}`),Promise.reject("forward() method only just for playback type")):Io(Number(e))?new Promise(((t,i)=>{this.player?(e=po(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&&wa(this.player.isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender())&&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.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((t,i)=>{this.forward(e).then((()=>{t()})).catch((e=>{i(e)}))}))}normal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.forward(1).then((()=>{e()})).catch((e=>{t(e)}))}))}playbackNormal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.normal().then((()=>{e()})).catch((e=>{t(e)}))}))}updatePlaybackForwardMaxRateDecodeIFrame(e){this.isDestroyed()||(this.debugLog("JbPro",`updatePlaybackForwardMaxRateDecodeIFrame() ${e}`),e=Number(e),e=po(e=parseInt(e,10),1,8),this._opt.playbackForwardMaxRateDecodeIFrame=e,this.player?this.player.updateOption({playbackForwardMaxRateDecodeIFrame:e},!0):this.debugWarn("JbPro","updatePlaybackForwardMaxRateDecodeIFrame() player is null"))}setPlaybackStartTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setPlaybackStartTime() ${e}`);const t=Xo(e);this.player?this.player.isPlayback()?t<10&&0!==e&&this.player.playback.isControlTypeNormal()?this.debugWarn("JbPro",`setPlaybackStartTime() control type is normal and timestamp: ${e} is not valid`):this.player.playback.isControlTypeSimple()&&e>this.player.playback.totalDuration?this.debugWarn("JbPro",`setPlaybackStartTime() control type is simple and timestamp: ${e} is more than ${this.player.playback.totalDuration}`):this.player.playing&&(this.player.playback.isControlTypeNormal()&&10===t&&(e*=1e3),this.player.playback.setStartTime(e),this.playbackClearCacheBuffer()):this.debugWarn("JbPro","setPlaybackStartTime() playType is not playback"):this.debugWarn("JbPro","setPlaybackStartTime() player is null")}setPlaybackShowPrecision(e){this.isDestroyed()||(this.debugLog("JbPro",`setPlaybackShowPrecision() ${e}`),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.setShowPrecision(e):this.debugWarn("JbPro","control type is not normal , not support!"):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}playbackCurrentTimeScroll(){this.isDestroyed()||(this.debugLog("JbPro","playbackCurrentTimeScroll()"),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.currentTimeScroll():this.debugWarn("JbPro","control type is not normal , not support!"):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}playbackClearCacheBuffer(){this.isDestroyed()||(this.debugLog("JbPro","playbackClearCacheBuffer()"),this.player?this.player.isPlayback()?(this.player.video&&this.player.video.clear(),this.player.audio&&this.player.audio.clear(),this.clearBufferDelay()):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}getPlaybackCurrentRate(){return this.player?this.player.isPlayback()?this.player.getPlaybackRate():(this.debugWarn("JbPro","playType is not playback"),1):(this.debugWarn("JbPro","player is null"),1)}updatePlaybackLocalOneFrameTimestamp(e){this.isDestroyed()||(this.debugLog("JbPro",`updatePlaybackLocalOneFrameTimestamp() ${e}`),this.player?this.player.isPlayback()?this.player.playback.updateLocalOneFrameTimestamp(e):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}setStreamQuality(e){if(this.isDestroyed())return;if(this.debugLog("JbPro",`setStreamQuality() ${e}`),!this.player)return void this.debugWarn("JbPro","player is null");if(!this.player._opt.operateBtns.quality)return void this.debugWarn("JbPro","player._opt.operateBtns.quality is false");(this.player._opt.qualityConfig||[]).includes(e)?this.player.streamQuality=e:this.debugWarn("JbPro",`quality: ${e} is not in qualityList`)}_play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!this.player)return s("player is null");let r=!1;this._opt.url&&this._opt.url!==e&&(r=!0),this._opt.url=e,this._opt.playOptions=t;const u=e.split("?")[0],p=u.startsWith("http://")||u.startsWith("https://"),f=u.startsWith("webrtc://"),m=u.startsWith("artc://"),g=u.startsWith("wt://"),y=u.startsWith("ws://")||u.startsWith("wss://"),A=p||y,b=p&&u.endsWith(".m3u8"),v=A&&u.endsWith(".flv"),_=A&&(u.endsWith(".fmp4")||u.endsWith(".mp4")),S=A&&u.endsWith(".mpeg4"),E=A&&(u.endsWith(".h264")||u.endsWith(".h265")),w=A&&u.endsWith(".ts");let M=this._opt.isWebrtcForZLM||!1,F=this._opt.isWebrtcForSRS||!1,U=this._opt.isWebrtcForOthers||!1;f&&(-1!==e.indexOf("/index/api/webrtc")?(M=!0,F=!1,U=!1):-1!==e.indexOf("/rtc/v1/play/")&&(F=!0,M=!1,U=!1));let O=null,N=null;if(v&&wa(this._opt.isFlv)&&this._resetDemuxType("isFlv"),_&&wa(this._opt.isFmp4)&&this._resetDemuxType("isFmp4"),S&&wa(this._opt.isMpeg4)&&this._resetDemuxType("isMpeg4"),E&&wa(this._opt.isNakedFlow)&&this._resetDemuxType("isNakedFlow"),w&&wa(this._opt.isTs)&&this._resetDemuxType("isTs"),p?O=b?n:a:g?O=d:f?O=l:m?O=h:y&&(O=o),this._opt.isNakedFlow?N=x:this._opt.isFmp4?N=R:this._opt.isMpeg4?N=P:this._opt.isFlv?N=T:this._opt.isTs?N=B:b?N=L:f?N=C:m?N=I:g?N=D:y&&(N=k),!O||!N)return this._opt.playFailedAndPausedShowMessage&&this.showErrorMessageTips("url is not support"),s(`play url ${e} is invalid, protocol is ${c[O]}, demuxType is ${N}`);this.debugLog("JbPro",`play url ${e} protocol is ${c[O]}, demuxType is ${N}`);const j=()=>{this.player.on(bt.webglAlignmentError,this._handleWebglAlignmentError.bind(this)),this.player.on(bt.webglContextLostError,this._handleWebglContextLostError.bind(this)),this.player.on(bt.mediaSourceH265NotSupport,this._handleMediaSourceH265NotSupport.bind(this)),this.player.on(bt.mseWaitVideoCanplayTimeout,this._handleMseWaitVideoCanplayTimeout.bind(this)),this.player.on(bt.mediaSourceFull,this._handleMediaSourceFull.bind(this)),this.player.on(bt.mediaSourceAppendBufferError,this._handleMediaSourceAppendBufferError.bind(this)),this.player.on(bt.mseSourceBufferError,this._handleMseSourceBufferError.bind(this)),this.player.on(bt.mediaSourceBufferedIsZeroError,this._handleMediaSourceBufferedIsZeroError.bind(this)),this.player.on(bt.mseAddSourceBufferError,this._handleMseAddSourceBufferError.bind(this)),this.player.on(bt.mediaSourceDecoderConfigurationError,this._handleMediaSourceDecoderConfigurationError.bind(this)),this.player.on(bt.mediaSourceTsIsMaxDiff,this._handleMediaSourceTsIsMaxDiff.bind(this)),this.player.on(bt.mseWidthOrHeightChange,this._handleMseWidthOrHeightChange.bind(this)),this.player.on(bt.mediaSourceAudioG711NotSupport,this._handleMediaSourceAudioG711NotSupport.bind(this)),this.player.on(bt.mediaSourceAudioInitTimeout,this._handleMediaSourceAudioInitTimeout.bind(this)),this.player.once(bt.mediaSourceAudioNoDataTimeout,this._handleMediaSourceAudioNoDataTimeout.bind(this)),this.player.on(bt.mseWorkerAddSourceBufferError,this._handleMseWorkerAddSourceBufferError.bind(this)),this.player.on(bt.mediaSourceUseCanvasRenderPlayFailed,this._handleMediaSourceUseCanvasRenderPlayFailed.bind(this)),this.player.on(bt.webcodecsH265NotSupport,this._handleWebcodecsH265NotSupport.bind(this)),this.player.on(bt.webcodecsUnsupportedConfigurationError,this._handleWebcodecsUnsupportedConfigurationError.bind(this)),this.player.on(bt.webcodecsDecodeConfigureError,this._handleWebcodecsDecodeConfigureError.bind(this)),this.player.on(bt.webcodecsDecodeError,this._handleWebcodecsDecodeError.bind(this)),this.player.on(bt.wcsWidthOrHeightChange,this._handleWcsWidthOrHeightChange.bind(this)),this.player.on(bt.webcodecsAudioNoDataTimeout,this._handleWebcodecsAudioNoDataTimeout.bind(this)),this.player.on(bt.webcodecsAudioInitTimeout,this._handleWebcodecsAudioInitTimeout.bind(this)),this.player.on(bt.simdDecodeError,this._handleSimdDecodeError.bind(this)),this.player.on(bt.wasmWidthOrHeightChange,this._handleWasmWidthOrHeightChange.bind(this)),this.player.on(bt.wasmUseVideoRenderError,this._handleWasmUseVideoRenderError.bind(this)),this.player.on(bt.notSupportNewWasm,this._handleNotSupportNewWasm.bind(this)),this.player.on(bt.videoElementPlayingFailed,this._handleVideoElementPlayingFailed.bind(this)),this.player.on(bt.simdH264DecodeVideoWidthIsTooLarge,this._handleSimdH264DecodeVideoWidthIsTooLarge.bind(this)),this.player.on(gt.networkDelayTimeout,this._handleNetworkDelayTimeout.bind(this)),this.player.on(gt.flvDemuxBufferSizeTooLarge,this._handleFlvDemuxBufferSizeTooLarge.bind(this)),this.player.on(bt.fetchError,this._handleFetchError.bind(this)),this.player.on(gt.streamEnd,this._handleStreamEnd.bind(this)),this.player.on(bt.websocketError,this._handleWebsocketError.bind(this)),this.player.on(bt.webrtcError,this._handleWebrtcError.bind(this)),this.player.on(bt.hlsError,this._handleHlsError.bind(this)),this.player.on(bt.aliyunRtcError,this._handleAliyunRtcError.bind(this)),this.player.on(bt.decoderWorkerInitError,this._handleDecoderWorkerInitError.bind(this)),this.player.on(bt.decoderWorkerWasmError,this._handleDecoderWorkerWasmError.bind(this)),this.player.on(bt.videoElementPlayingFailedForWebrtc,this._handleVideoElementPlayingFailedForWebrtc.bind(this)),this.player.on(bt.videoInfoError,this._handleVideoInfoError.bind(this)),this.player.on(gt.webrtcStreamH265,this._handleWebrtcStreamH265.bind(this)),this.player.on(gt.playbackEnd,this._handlePlaybackEnd.bind(this)),this.player.on(gt.delayTimeout,this._handleDelayTimeout.bind(this)),this.player.on(gt.loadingTimeout,this._handleLoadingTimeout.bind(this)),this._hasLoaded()?(this.debugLog(this.TAG_NAME,"_playNext and _hasLoaded() is true"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_hasLoaded() and play error",e),this.emit(gt.crashLog,this.getCrashLog("_hasLoaded() and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debugError("JbPro","_hasLoaded() and play error and next pause error",e)}))}))):(this.debugLog(this.TAG_NAME,"_playNext and waiting decoderWorkerInit callback"),this._checkInitDecoderWorkerTimeout(),this.player.once(gt.decoderWorkerInit,(()=>{this._clearInitDecoderWorkerTimeout(),this.isDestroyed()?this.debugLog("JbPro","decoderWorkerInit but player is destroyed"):(this.debugLog(this.TAG_NAME,"_playNext and decoderWorkerInit callback and next play"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","decoderWorkerInit and play error",e),this.emit(gt.crashLog,this.getCrashLog("decoderWorkerInit and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debugError("JbPro","decoderWorkerInit and play error and next pause error",e)}))})))})))},G=this.player.getOption(),z=b&&wa(this._opt.supportHls265),W=f&&wa(this._opt.isWebrtcH265),V=b&&!!la(),$=b&&G.demuxUseWorker;if(z||W||m||r||S||V||$)this.debugLog("JbPro",`need reset player and\n isOldHls is ${z} and isOldWebrtc is ${W} and\n isAliyunRtc is ${m} and\n needResetPlayer(url change) is ${r} and\n isMpeg4 is ${S} and\n isHlsCanVideoPlay is ${V} and\n isHlsButDemuxUseWorker is ${$}`),this._resetPlayer({protocol:O,demuxType:N,isHls:b,isWebrtc:f,isWebrtcForZLM:M,isWebrtcForSRS:F,isWebrtcForOthers:U,isAliyunRtc:m,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||"",url:e,playOptions:t}).then((()=>{j()})).catch((e=>{s("reset player error")}));else{const e={protocol:O,demuxType:N,isHls:b,isWebrtc:f,isAliyunRtc:m,isFlv:this._opt.isFlv,isFmp4:this._opt.isFmp4,isMpeg4:this._opt.isMpeg4,isNakedFlow:this._opt.isNakedFlow,isTs:this._opt.isTs,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||""};this._opt.isNakedFlow&&(e.mseDecodeAudio=!1,e.wcsDecodeAudio=!1),this.player.updateOption(e),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.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)}resize(){this.isDestroyed()||(this.debugLog("JbPro","resize()"),this.player&&this.player.resize())}setBufferTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setBufferTime() ${e}`),(e=Number(e))>10&&this.debugWarn("JbPro",`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.debugWarn("JbPro","setBufferTime() player is null")}setBufferDelayTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setBufferDelayTime() ${e}`),(e=Number(e))<.2&&this.debugWarn("JbPro",`setBufferDelayTime() buffer time delay is ${e} second, is too small`);const t=1e3*(e=po(e,.2,100));this._opt.videoBufferDelay=t,this.player?this.player.updateOption({videoBufferDelay:t},!0):this.debugWarn("JbPro","setBufferDelayTime() player is null")}setRotate(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.setRotate(e):this.debugWarn("JbPro","setRotate() player is null")):this.debugWarn("JbPro",`setRotate() rotate is ${e} and this._opt.rotate is ${this._opt.rotate}`)}setMirrorRotate(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.debugWarn("JbPro","setMirrorRotate() player is null")):this.debugWarn("JbPro",`setMirrorRotate() mirrorRotate is ${e} and this._opt.mirrorRotate is ${this._opt.mirrorRotate}`)}setAspectRatio(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.debugWarn("JbPro","setAspectRatio() player is null")):this.debugWarn("JbPro",`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.isDestroyed()||(this.debugLog("JbPro","setKeepScreenOn()"),this._opt.keepScreenOn=!0,this.player?this.player.updateOption({keepScreenOn:!0}):this.debugWarn("JbPro","setKeepScreenOn() player is not ready"))}setFullscreen(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setFullscreen() ${e}`);const t=!!e;this.player?this.player.fullscreen!==t?this.player.fullscreen=t:this.debugWarn("JbPro",`setFullscreen() fullscreen is ${t} and this.player.fullscreen is ${this.player.fullscreen}`):this.debugWarn("JbPro","setFullscreen() player is not ready")}setWebFullscreen(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setWebFullscreen() ${e}`);const t=!!e;this.player?this.player.webFullscreen=t:this.debugWarn("JbPro","setWebFullscreen() player is not ready")}screenshot(e,t,i,s){if(!this.isDestroyed())return this.debugLog("JbPro",`screenshot() ${e} ${t} ${i} ${s}`),this.player&&this.player.video?this.player.video.screenshot(e,t,i,s):(this.debugWarn("JbPro","screenshot() player is not ready"),null)}screenshotWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debugLog("JbPro","screenshotWatermark()",e),this.player&&this.player.video?this.player.video.screenshotWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debugWarn("JbPro","screenshotWatermark() player is not ready"),i("player is not ready"))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debugLog("JbPro","screenshotCopyrightWatermark()",e),this.player&&this.player.video?this.player.video.screenshotCopyrightWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debugWarn("JbPro","screenshotCopyrightWatermark() player is not ready"),i("player is not ready"))}))}startRecord(e,t){return new Promise(((i,s)=>this.isDestroyed()?s("player is destroyed"):(this.debugLog("JbPro",`startRecord() ${e} ${t}`),this.player?void(this.player.playing?(this.player.startRecord(e,t),i()):(this.debugWarn("JbPro","startRecord() player is not playing"),s("not playing"))):(this.debugWarn("JbPro","startRecord() player is not ready"),s("player is not ready")))))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{if(this.isDestroyed())return s("player is destroyed");this.debugLog("JbPro",`stopRecordAndSave() ${e} ${t}`),this.player&&this.player.recording?this.player.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{s(e)})):s("not recording")}))}cancelRecord(){return new Promise(((e,t)=>this.isDestroyed()?t("player is destroyed"):(this.debugLog("JbPro","cancelRecord()"),this.player?void this.player.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})):(this.debugWarn("JbPro","cancelRecord() player is not ready"),t("player is not ready")))))}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===b?e=!this.isPlaying()&&!this.isLoading():this._opt.playType===_&&this.player&&(e=this.player.playbackPause),e}isPaused(){return this.isPause()}isPlaybackPause(){let e=!1;return this._opt.playType===_&&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.isDestroyed()||(this.debugLog("JbPro","clearBufferDelay()"),this.player?this.player.clearBufferDelay():this.debugWarn("JbPro","clearBufferDelay() player is not init"))}setNetworkDelayTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setNetworkDelayTime() ${e}`),(e=Number(e))<1&&this.debugWarn("JbPro",`setNetworkDelayTime() network delay is ${e} second, is too small`);const t=1e3*(e=po(e,1,100));this._opt.networkDelay=t,this.player?this.player.updateOption({networkDelay:t},!0):this.debugWarn("JbPro","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=ks;return this.player&&(e=this.player.loading?Es:this.player.playing?ws:Ts),e}getPlayType(){return this.player?this.player._opt.playType:b}togglePerformancePanel(e){if(this.isDestroyed())return;this.debugLog("JbPro",`togglePerformancePanel() ${e}`);const t=this.player._opt.showPerformance;let i=!t;jo(e)&&(i=e),i!==t?this.player?this.player.togglePerformancePanel(i):this.debugWarn("JbPro","togglePerformancePanel() failed, this.player is not init"):this.debugWarn("JbPro",`togglePerformancePanel() failed, showPerformance is prev: ${t} === now: ${i}`)}openZoom(){if(!this.isDestroyed())if(this.debugLog("JbPro","openZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debugWarn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!0}else this.debugWarn("JbPro","openZoom() failed, this.player is not init")}closeZoom(){if(!this.isDestroyed())if(this.debugLog("JbPro","closeZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debugWarn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!1}else this.debugWarn("JbPro","closeZoom() failed, this.player is not init")}isZoomOpen(){let e=!1;return this.player&&(e=this.player.zooming),e}toggleZoom(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleZoom() ${e}`),jo(e)||(e=!this.isZoomOpen()),Ea(e)?this.openZoom():wa(!1)&&this.closeZoom())}expandZoom(){this.isDestroyed()||(this.debugLog("JbPro","expandZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.expandPrecision():this.debugWarn("JbPro","expandZoom() failed, zoom is not open or not init"))}narrowZoom(){this.isDestroyed()||(this.debugLog("JbPro","narrowZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.narrowPrecision():this.debugWarn("JbPro","narrowZoom failed, zoom is not open or not init"))}updateCurrentZoom(e){this.isDestroyed()||(this.debugLog("JbPro","updateCurrentZoom()",e),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.updateCurrentZoom(e):this.debugWarn("JbPro","narrowZoom failed, zoom is not open or not init"))}getCurrentZoomIndex(){if(this.isDestroyed())return;let e=1;return this.player&&this.player.zoom&&(e=this.player.zoom.currentZoom),e}setNakedFlowFps(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");if(this.debugLog("JbPro","setNakedFlowFps()",e),No(e))return i("setNakedFlowFps() fps is empty");let s=Number(e);s=po(s,1,100),this._opt.nakedFlowFps=s,this.player?this.player.updateOption({nakedFlowFps:s}):this.debugWarn("JbPro","setNakedFlowFps() player is null"),t()}))}getCrashLog(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!this.player)return;const i=this.player.getAllStatsData(),s=this.player;let r={url:this._opt.url,playType:s.isPlayback()?"playback":"live",demuxType:s.getDemuxType(),decoderType:s.getDecodeType(),renderType:s.getRenderType(),videoInfo:{encType:"",width:"",height:""},audioInfo:{encType:"",sampleRate:"",channels:""},audioEngine:s.getAudioEngineType(),allTimes:i.pTs,timestamp:uo(),type:e,error:fa(t)||e};if(s.video){const e=s.video.videoInfo||{};r.videoInfo={encType:e.encType||"",width:e.width||"",height:e.height||""}}if(s.audio){const e=s.audio.audioInfo||{};r.audioInfo={encType:e.encType||"",sampleRate:e.sampleRate||"",channels:e.channels||""}}return r}updateDebugLevel(e){this.isDestroyed()||(this.debugLog("JbPro","updateDebugLevel()",e),e===J||e===q?e!==this.player._opt.debugLevel?(this._opt.debugLevel=e,this.player?this.player.updateOption({debugLevel:e},!0):this.debugWarn("JbPro","updateDebugLevel() player is null")):this.debugWarn("JbPro",`updateDebugLevel() level is same, level: ${e}`):this.debugWarn("JbPro",`updateDebugLevel() level is not valid, level: ${e}`))}updateWatermark(e){this.isDestroyed()||(this.debugLog("JbPro","updateWatermark()",e),this.player?this.player.updateWatermark(e):this.debugWarn("JbPro","updateWatermark() player is not init"))}removeWatermark(){this.isDestroyed()||(this.debugLog("JbPro","removeWatermark()"),this.player?this.player.removeWatermark():this.debugWarn("JbPro","removeWatermark() player is not init"))}updateFullscreenWatermark(e){if(!this.isDestroyed())if(this.debugLog("JbPro","updateFullscreenWatermark()",e),ea(e)){this._opt.fullscreenWatermarkConfig=e;const t=Wo(this.$container,e);if(!t.watermark_txt)return void this.debugWarn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(t)}else this.debugWarn("JbPro",`updateFullscreenWatermark() config is not valid, config: ${e}`)}removeFullscreenWatermark(){this.isDestroyed()||(this.debugLog("JbPro","removeFullscreenWatermark()"),this.watermark?this.watermark.remove():this.debugWarn("JbPro","removeFullscreenWatermark() watermark is not init"))}faceDetectOpen(){this.isDestroyed()||(this.debugLog("JbPro","faceDetectOpen()"),this.player?this.player.faceDetect(!0):this.debugWarn("JbPro","faceDetectOpen() player is not init"))}faceDetectClose(){this.isDestroyed()||(this.debugLog("JbPro","faceDetectClose()"),this.player?this.player.faceDetect(!1):this.debugWarn("JbPro","faceDetectClose() player is not init"))}objectDetectOpen(){this.isDestroyed()||(this.debugLog("JbPro","objectDetectOpen()"),this.player?this.player.objectDetect(!0):this.debugWarn("JbPro","objectDetectOpen() player is not init"))}objectDetectClose(){this.isDestroyed()||(this.debugLog("JbPro","objectDetectClose()"),this.player?this.player.objectDetect(!1):this.debugWarn("JbPro","objectDetectClose() player is not init"))}sendWebsocketMessage(e){this.isDestroyed()||(this.debugLog("JbPro","sendWebsocketMessage()",e),this.player?this.player.sendWebsocketMessage(e):this.debugWarn("JbPro","sendWebsocketMessage() player is not init"))}addContentToCanvas(e){this.isDestroyed()||(this.debugLog("JbPro","addContentToCanvas()"),this.player?this.player.addContentToCanvas(e):this.debugWarn("JbPro","addContentToCanvas() player is not init"))}clearContentToCanvas(){this.isDestroyed()||(this.debugLog("JbPro","clearContentToCanvas()"),this.player?this.player.addContentToCanvas([]):this.debugWarn("JbPro","clearContentToCanvas() player is not init"))}addContentToContainer(e){this.isDestroyed()||(this.debugLog("JbPro","addContentToContainer()"),this.player?this.player.addContentToContainer(e):this.debugWarn("JbPro","addContentToContainer() player is not init"))}clearContentToContainer(){this.isDestroyed()||(this.debugLog("JbPro","clearContentToContainer()"),this.player?this.player.addContentToContainer([]):this.debugWarn("JbPro","clearContentToContainer() player is not init"))}setControlHtml(e){this.isDestroyed()||(this.debugLog("JbPro","setControlHtml()",e),this.player?this.player.setControlHtml(e):this.debugWarn("JbPro","setControlHtml() player is not init"))}clearControlHtml(){this.isDestroyed()||(this.debugLog("JbPro","clearControlHtml()"),this.player?this.player.clearControlHtml():this.debugWarn("JbPro","clearControlHtml() player is not init"))}toggleControlHtml(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleControlHtml() ${e}`),this.player?this.player.toggleControlHtml(e):this.debugWarn("JbPro","toggleControlHtml() player is not init"))}getControlHtmlIsShow(){return!!this.player&&this.player.getControlHtmlIsShow()}getControlHtml(){return this.player?this.player.getControlHtml():null}setExtendHtml(e){this.isDestroyed()||(this.debugLog("JbPro","setExtendHtml()",e),this.player?this.player.setExtendHtml(e):this.debugWarn("JbPro","setExtendHtml() player is not init"))}clearExtendHtml(){this.isDestroyed()||(this.debugLog("JbPro","clearExtendHtml()"),this.player?this.player.clearExtendHtml():this.debugWarn("JbPro","clearExtendHtml() player is not init"))}toggleExtendHtml(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleExtendHtml() ${e}`),this.player?this.player.toggleExtendHtml(e):this.debugWarn("JbPro","toggleExtendHtml() player is not init"))}getExtendHtmlIsShow(){return!!this.player&&this.player.getExtendHtmlIsShow()}getExtendHtml(){return this.player?this.player.getExtendHtml():null}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){if(this.isDestroyed())return;this.debugLog("JbPro","setSm4CryptoKey()",e);const t=(e=""+e).split(".");if(32!==e.length&&2!==t.length)return void this.debugWarn("JbPro",`setSm4CryptoKey() key is invalid and length is ${e.length} !== 32`);if(2===t.length&&(32!==t[0].length||32!==t[1].length))return void this.debugWarn("JbPro",`setSm4CryptoKey() key is invalid and key length is ${t[0].length} !== 32 or iv length ${t[1].length} !== 32`);this._opt.sm4CryptoKey=e;let i=2===t.length;if(i&&(this._opt.playOptions.cryptoKey=ml(t[0]),this._opt.playOptions.cryptoIV=ml(t[1])),this.player){const t={sm4CryptoKey:e};i&&(t.cryptoKey=this._opt.playOptions.cryptoKey,t.cryptoIV=this._opt.playOptions.cryptoIV),this.player.updateOption(t,!0)}else this.debugWarn("JbPro","setSm4CryptoKey() player is null")}setM7sCryptoKey(e){this.isDestroyed()||(this.debugLog("JbPro","setM7sCryptoKey()",e),e=""+e,this._opt.m7sCryptoKey=e,this.player?this.player.updateOption({m7sCryptoKey:e},!0):this.debugWarn("JbPro","setM7sCryptoKey() player is null"))}setXorCryptoKey(e){this.isDestroyed()||(this.debugLog("JbPro","setXorCryptoKey()",e),e=""+e,this._opt.xorCryptoKey=e,this.player?this.player.updateOption({xorCryptoKey:e},!0):this.debugWarn("JbPro","setXorCryptoKey() player is null"))}updateLoadingText(e){this.isDestroyed()||(this.debugLog("JbPro","updateLoadingText()",e),this.player?this.player.updateLoadingText(e):this.debugWarn("JbPro","updateLoadingText() player is null"))}updateIsEmitSEI(e){this.isDestroyed()||(this.debugLog("JbPro","updateIsEmitSEI()",e),this._opt.isEmitSEI=e,this.player?this.player.updateOption({isEmitSEI:e},!0):this.debugWarn("JbPro","updateIsEmitSEI() player is null"))}getPTZCmd(e,t){return this.debugLog("JbPro","getPTZCmd()",e),e?this.player?a_({type:e,index:0,speed:t}):(this.debugWarn("JbPro","getPTZCmd() player is null"),null):(this.debugWarn("JbPro","getPTZCmd() ptz is null"),null)}downloadTempNakedFlowFile(){return new Promise(((e,t)=>{this.player?(this.player.downloadNakedFlowFile(),e()):t("player is not init")}))}downloadTempFmp4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadFmp4File(),e()):t("player is not init")}))}downloadTempMpeg4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadMpeg4File(),e()):t("player is not init")}))}downloadMemoryLog(){this.isDestroyed()||this.memoryLogger&&this.memoryLogger.download()}_getVideoLastIframeInfo(){const e=this.getVideoInfo()||{},t={loadingBackground:this.screenshot("","png",.92,"base64"),loadingBackgroundWidth:e.width||0,loadingBackgroundHeight:e.height||0};return t.loadingBackground&&t.loadingBackgroundWidth&&t.loadingBackgroundHeight&&(this._tempVideoLastIframeInfo=t),this._tempVideoLastIframeInfo||{}}getExtendBtnList(){this.debugLog("JbPro","getExtendBtnList()");let e=[];return this.player?e=this.player.getExtendBtnList():this.debugWarn("JbPro","getExtendBtnList() player is null"),e}getFlvMetaData(){this.debugLog("JbPro","getFlvMetaData()");let e=null;return this.player?e=this.player.getMetaData():this.debugWarn("JbPro","getFlvMetaData() player is null"),e}updateAiFaceDetectInterval(e){if(this.isDestroyed())return;this.debugLog("JbPro","updateAiFaceDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiFaceDetectInterval=t,this.player?this.player.updateOption({aiFaceDetectInterval:t}):this.debugWarn("JbPro","updateAiFaceDetectInterval() player is null")}updateAiFaceDetectLevel(e){if(this.isDestroyed())return;if(this.debugLog("JbPro","updateAiFaceDetectLevel()",e),!er[e])return void this.debugWarn("JbPro",`'updateAiFaceDetectLevel() level ${e} is invalid'`);const t=er[e];this._opt.aiFaceDetectWidth=t,this.player?(this.player.updateOption({aiFaceDetectWidth:t}),this.player.ai&&this.player.ai.updateFaceDetectorConfig({detectWidth:t})):this.debugWarn("JbPro","updateAiFaceDetectLevel() player is null")}updateAiObjectDetectInterval(e){if(this.isDestroyed())return;this.debugLog("JbPro","updateAiObjectDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiObjectDetectInterval=t,this.player?this.player.updateOption({aiObjectDetectInterval:t}):this.debugWarn("JbPro","updateAiObjectDetectInterval() player is null")}updateAiObjectDetectLevel(e){if(this.isDestroyed())return;if(this.debugLog("JbPro","updateAiObjectDetectLevel()",e),!tr[e])return void this.debugWarn("JbPro",`'updateAiObjectDetectLevel() level ${e} is invalid'`);const t=tr[e];this._opt.aiObjectDetectWidth=t,this.player?(this.player.updateOption({aiObjectDetectWidth:t}),this.player.ai&&this.player.ai.updateObjectDetectorConfig({detectWidth:t})):this.debugWarn("JbPro","updateAiObjectDetectLevel() player is null")}setCryptoKeyUrl(e){this.isDestroyed()||(this.debugLog("JbPro","setCryptoKeyUrl()",e),e&&(this._opt.cryptoKeyUrl=e))}showErrorMessageTips(e){this.isDestroyed()||(this.debugLog("JbPro","showErrorMessageTips()",e),e&&(this.player?this.player.showTipsMessageByContent(e):this.debugWarn("JbPro","showErrorMessageTips() player is null")))}setPtzPosition(e){this.debugLog("JbPro","setPtzPosition()",e),e&&!Zo(e)&&(this.player?this.player.setPtzPosition(e):this.debugWarn("JbPro","setPtzPosition() player is null"))}hideErrorMessageTips(){this.isDestroyed()||(this.debugLog("JbPro","hideErrorMessageTips()"),this.player?this.player.hideTipsMessage():this.debugWarn("JbPro","hideErrorMessageTips() player is null"))}getContainerRect(){return this._getContainerRect()}proxy(e,t,i,s){return this.events.proxy(e,t,i,s)}getUrl(){return this._opt.url}toggleControlExtendBtn(e,t){this.isDestroyed()||(this.debugLog(this.TAG_NAME,`toggleControlExtendBtn() ${e} ${t}`),this.player?this.player.toggleControlExtendBtn(e,t):this.debugWarn(this.TAG_NAME,"toggleControlExtendBtn() player is null"))}getControlExtendBtnActive(e){if(this.isDestroyed())return;this.debugLog(this.TAG_NAME,`getControlExtendBtnActive() ${e}`);let t=!1;return this.player?t=this.player.getControlExtendBtnActive(e):this.debugWarn(this.TAG_NAME,"getControlExtendBtnActive() player is null"),t}toggleControlBar(e){this.isDestroyed()||(this.debugLog(this.TAG_NAME,`toggleControlBar() ${e}`),this.player?this.player.toggleControlBar(e):this.debugWarn(this.TAG_NAME,"toggleControlBar() player is null"))}getControlBarShow(){if(this.isDestroyed())return!1;this.debugLog(this.TAG_NAME,"getControlBarShow()");let e=!1;return this.player?e=this.player.getControlBarShow():this.debugWarn(this.TAG_NAME,"getControlBarShow() player is null"),e}static getCopyrightWatermarkHash(e){return $o(e)}static extractScreenshotCopyrightWatermark(e){return function(e){for(var t=e,i=0,s=0,r=0;r<32;r++)s|=(1&t[i])<=5){const s=i[0],r=i[i.length-1],o=r-s;o<=1e4&&(this.debugWarn(this.TAG_NAME,`retry type is ${e}, and retry length is ${i.length}, and start is ${s} and end is ${r} and diff is ${o}`),t=!1)}return t}_initLoadingBackgroundForIOS(e){(To()||ko())&&e.loadingBackground&&e.loadingBackgroundWidth&&e.loadingBackgroundHeight&&(this._initLoadingBg(),"default"===this.player._opt.aspectRatio||vo()?this.player.getRenderType()===$?this._doInitLoadingBackgroundForCanvas(e):this.player.getRenderType()===H&&this._doInitLoadingBackgroundForVideo(e):this._doInitLoadingBackgroundForRatio(e))}_doInitLoadingBackgroundForVideo(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForVideo");const t=this._getContainerRect();let i=t.width,s=t.height;const r=this.player._opt;s-=this.player.getControlHeight();let o=i,a=s;const n=r.rotate;270!==n&&90!==n||(o=s,a=i),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,this.$loadingBgImage.src=e.loadingBackground;let l=(i-o)/2,d=(s-a)/2,h="contain";r.isResize||(h="fill"),r.isFullResize&&(h="none");let c="";"none"===r.mirrorRotate&&n&&(c+=" rotate("+n+"deg)"),"level"===r.mirrorRotate?c+=" rotateY(180deg)":"vertical"===r.mirrorRotate&&(c+=" rotateX(180deg)"),this._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=h),this.$loadingBgImage.style.transform=c,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px",this.$loadingBgImage.complete?pc(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{pc(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_doInitLoadingBackgroundForCanvas(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForCanvas");const t=this._getContainerRect();let i=t.width,s=t.height;const r=this.player._opt;s-=this.player.getControlHeight();let o=i,a=s;const n=r.rotate;let l=(i-o)/2,d=(s-a)/2;270!==n&&90!==n||(o=s,a=i),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,this.$loadingBgImage.src=e.loadingBackground;const h=i/o,c=s/a;let u=h>c?c:h;wa(r.isResize)&&h!==c&&(u=h+","+c),r.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===r.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===r.mirrorRotate?p+=" rotateY(180deg)":"vertical"===r.mirrorRotate&&(p+=" rotateX(180deg)"),this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.transform=p,this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px",this.$loadingBgImage.complete?pc(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{pc(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_doInitLoadingBackgroundForRatio(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForRatio");const t=this.player._opt.aspectRatio.split(":").map(Number),i=this._getContainerRect();let s=i.width,r=i.height,o=this.player.getControlHeight();r-=o;const a=e.loadingBackgroundWidth,n=e.loadingBackgroundHeight,l=a/n,d=t[0]/t[1];if(this.$loadingBgImage.src=e.loadingBackground,l>d){const e=d*n/a;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${o}px)`,this.$loadingBgImage.style.padding=`0 ${(s-s*e)/2}px`}else{const e=a/d/n;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${o}px)`,this.$loadingBgImage.style.padding=(r-r*e)/2+"px 0"}this.$loadingBgImage.complete?pc(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{pc(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_initLoadingBg(){if(!this.$loadingBg){const e=document.createElement("div"),t=document.createElement("img");e.className="jb-pro-loading-bg-for-ios",this.$loadingBg=e,this.$loadingBgImage=t,e.appendChild(t),this.$container.appendChild(e)}}_removeLoadingBackgroundForIOS(){if(this.$loadingBg){this.debugLog(this.TAG_NAME,"_removeLoadingBackgroundForIOS()");if(!bc(this.$loadingBg)){const e=this.$container.querySelector(".jb-pro-loading-bg-for-ios");e&&this.$container&&this.$container.removeChild(e)}this.$loadingBg=null,this.$loadingBgImage=null}}_getContainerRect(){let e={};return this.$container&&(e=this.$container.getBoundingClientRect(),e.width=Math.max(e.width,this.$container.clientWidth),e.height=Math.max(e.height,this.$container.clientHeight)),e}_isNeedNetworkDisconnectReplay(){return this._opt.networkDisconnectReplay&&this.network.isOffline()}_handleWebglAlignmentError(e){if(this.isDestroyed())this.debugLog("JbPro","webglAlignmentError but player is destroyed");else if(this.webglAlignmentErrorOnLock)this.debugLog("JbPro","webglAlignmentErrorOnLock is true");else if(this.emit(gt.crashLog,this.getCrashLog(bt.webglAlignmentError,e)),this.webglAlignmentErrorOnLock=!0,this.player&&this.player._opt.webglAlignmentErrorReplay){this.debugLog("JbPro","webglAlignmentError");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({openWebglAlignment:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webglAlignmentError and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.webglAlignmentError,{},e),this.debugError("JbPro","webglAlignmentError and play error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))})).catch((e=>{this.webglAlignmentErrorOnLock=!1,this.debugError("JbPro","webglAlignmentError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.webglAlignmentError,{},e),this.debugLog("JbPro","webglAlignmentError and webglAlignmentErrorReplay is false")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.webglAlignmentError,{},e),this.debugError("JbPro","webglAlignmentError and pause error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))}}_handleWebglContextLostError(e){if(this.isDestroyed())return void this.debugLog("JbPro","webglContextLostError but player is destroyed");if(this.webglContextLostErrorOnLock)return void this.debugLog("JbPro","webglContextLostErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.webglContextLostError,e));const t=this._getVideoLastIframeInfo();if(this.webglContextLostErrorOnLock=!0,this.player&&this.player._opt.webglContextLostErrorReplay){this.debugLog("JbPro","webglContextLostError");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","webglContextLostError and play success")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.webglContextLostError,t,e),this.debugError("JbPro","webglContextLostError and play error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))})).catch((i=>{this.webglContextLostErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.webglContextLostError,t,e),this.debugError("JbPro","webglContextLostError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.webglContextLostError,t,e),this.debugLog("JbPro","webglContextLostError and webglContextLostErrorReplay is false")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.webglContextLostError,t,e),this.debugError("JbPro","webglAlignmentError and pause error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))}}_handleMediaSourceH265NotSupport(e){if(this.isDestroyed())this.debugLog("JbPro","mediaSourceH265NotSupport but player is destroyed");else if(this.mediaSourceH265NotSupportOnLock)this.debugLog("JbPro","mediaSourceH265NotSupportOnLock is true");else if(this.emit(gt.crashLog,this.getCrashLog(bt.mediaSourceH265NotSupport,e)),this.mediaSourceH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceH265NotSupport,e),this.debugError("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))})).catch((t=>{this.mediaSourceH265NotSupportOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceH265NotSupport,{},e),this.debugLog("JbPro","mediaSourceH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))}}_handleMseWaitVideoCanplayTimeout(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mseWaitVideoCanplayTimeout but player is destroyed");else if(this.mseWaitVideoCanplayTimeoutOnLock)this.debugLog("JbPro","mseWaitVideoCanplayTimeoutOnLock is true");else if(this.emit(gt.crashLog,this.getCrashLog(bt.mseWaitVideoCanplayTimeout,e)),this.mseWaitVideoCanplayTimeoutOnLock=!0,this.player&&this.player._opt.mseWaitVideoCanplayAutoWasm){this.debugLog("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.mseWaitVideoCanplayTimeout,e),this.debugError("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))})).catch((t=>{this.mseWaitVideoCanplayTimeoutOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mseWaitVideoCanplayTimeout,{},e),this.debugError("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.mseWaitVideoCanplayTimeout,{},e),this.debugLog("JbPro","mseWaitVideoCanplayTimeout and autoWasm is false")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))}}_handleMediaSourceFull(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceFull but player is destroyed"));if(this.mediaSourceFullOnLock)return void this.debugLog("JbPro","mediaSourceFullOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.mediaSourceFull,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceFullOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Tr)?this._mseDecodeErrorRetryLog.push(uo()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mediaSourceFull and auto wasm ${wa(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceFull and reset player and play success")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and reset player and play error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))})).catch((i=>{this.mediaSourceFullOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceFull,t,e),this.debugLog("JbPro","mediaSourceFull and autoWasm is false")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and pause error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))}}_handleMediaSourceAppendBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAppendBufferError but player is destroyed"));if(this.mediaSourceAppendBufferErrorOnLock)return void this.debugLog("JbPro","mediaSourceAppendBufferErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.mediaSourceAppendBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceAppendBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Tr)?this._mseDecodeErrorRetryLog.push(uo()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEAudioDecoderError&&(this.player.debugLog("JbPro","mediaSourceAppendBufferError and isMSEAudioDecoderError is true so set mseDecodeAudio = false"),r.mseDecodeAudio=!1),this.debugLog("JbPro",`mediaSourceAppendBufferError and auto wasm ${wa(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceAppendBufferError and reset player and play success")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and reset player and play error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))})).catch((i=>{this.mediaSourceAppendBufferErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAppendBufferError,t,e),this.debugLog("JbPro","mediaSourceAppendBufferError and autoWasm is false")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and pause error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))}}_handleMseSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseSourceBufferError but player is destroyed"));if(this.mseSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseSourceBufferErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.mseSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseSourceBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={};if(this.player._opt.mseDecoderUseWorker)r={mseDecoderUseWorker:!1},this.debugLog("JbPro","mseSourceBufferError auto wasm [mse worker -> mse] reset player and play");else{let e=this.player._opt.decoderErrorAutoWasm,t=!0;e?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Tr)?this._mseDecodeErrorRetryLog.push(uo()):(e=!0,t=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc&&(this.debugLog("JbPro","mseSourceBufferError and isMSEVideoDecoderInitializationFailedNotSupportHevc is true so auto wasm"),r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mseSourceBufferError auto wasm ${wa(t)?" and is not meaningful Retry":""} [mse-> ${e?"wasm":"mse"}] reset player and play`)}this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mseSourceBufferError reset player and play success")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError reset player and play error",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseSourceBufferErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.mseSourceBufferError,t,e),this.debugLog("JbPro","mseSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError and pause error:",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))}}_handleMediaSourceBufferedIsZeroError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceBufferedIsZeroError but player is destroyed"));if(this.mediaSourceBufferedIsZeroErrorOnLock)return void this.debugLog("JbPro","mediaSourceBufferedIsZeroErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.mediaSourceBufferedIsZeroError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceBufferedIsZeroErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Tr)?this._mseDecodeErrorRetryLog.push(uo()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mediaSourceBufferedIsZeroError auto wasm ${wa(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceBufferedIsZeroError reset player and play success")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError reset player and play error",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))})).catch((i=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceBufferedIsZeroError,t,e),this.debugLog("JbPro","mediaSourceBufferedIsZeroError and autoWasm is false")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError and pause error:",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))}}_handleMseAddSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseAddSourceBufferError but player is destroyed"));if(this.mseAddSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseAddSourceBufferErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.mseAddSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useWCS:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play success")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseAddSourceBufferErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.mseAddSourceBufferError,t,e),this.debugLog("JbPro","mseAddSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError and pause error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceDecoderConfigurationError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mediaSourceDecoderConfigurationError but player is destroyed");else if(this.mediaSourceDecoderConfigurationErrorOnLock)this.debugLog("JbPro","mediaSourceDecoderConfigurationErrorOnLock is true");else if(this.emit(gt.crashLog,this.getCrashLog(bt.mediaSourceDecoderConfigurationError,e)),this.mediaSourceDecoderConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;let s={useMSE:!1,useWCS:!1};this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))})).catch((t=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceDecoderConfigurationError,e),this.debugLog("JbPro","mediaSourceDecoderConfigurationError and autoWasm is false")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError and pause error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))}}_handleMediaSourceTsIsMaxDiff(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceTsIsMaxDiff but player is destroyed"));if(this.mediaSourceTsIsMaxDiffOnLock)return void this.debugLog("JbPro","mediaSourceTsIsMaxDiffOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.mediaSourceTsIsMaxDiff,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceTsIsMaxDiffOnLock=!0,this.player&&this.player._opt.mediaSourceTsIsMaxDiffReplay){this.debugLog("JbPro","mediaSourceTsIsMaxDiff reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceTsIsMaxDiff replay success")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff replay error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))})).catch((i=>{this.mediaSourceTsIsMaxDiffOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceTsIsMaxDiff,t,e),this.debugLog("JbPro","mediaSourceTsIsMaxDiff and replay is false")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff and pause error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))}}_handleMseWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseWidthOrHeightChange but player is destroyed"));if(this.mseWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","mseWidthOrHeightChangeOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.mseWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.mseWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.player._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","mseWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}),1e3*this.player._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.mseWidthOrHeightChangeOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(gt.playFailedAndPaused,bt.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange error and pause error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}}_handleMediaSourceAudioG711NotSupport(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioG711NotSupport but player is destroyed"));if(this.mediaSourceAudioG711NotSupportOnLock)return void this.debugLog("JbPro","mediaSourceAudioG711NotSupportOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioG711NotSupportOnLock=!0,this.player&&this.player._opt.mediaSourceAudioG711NotSupportReplay){this.debugLog("JbPro","mediaSourceAudioG711NotSupport and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioG711NotSupport and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))})).catch((e=>{this.mediaSourceAudioG711NotSupportOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport error and pause error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))}}_handleMediaSourceAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioInitTimeout but player is destroyed"));if(this.mediaSourceAudioInitTimeoutOnLock)return void this.debugLog("JbPro","mediaSourceAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioInitTimeoutReplay){this.debugLog("JbPro","mediaSourceAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioInitTimeout,i,t),this.debugError("JbPro","mediaSourceAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioInitTimeoutOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioInitTimeout,i,t),this.debugError("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioInitTimeout,i),this.debugError("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioInitTimeout,i),this.debugError("JbPro","mediaSourceAudioInitTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))}}_handleMediaSourceAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioNoDataTimeout but player is destroyed"));if(this.mediaSourceAudioNoDataTimeoutOnLock)return void this.debugLog("JbPro","mediaSourceAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioNoDataTimeoutReplay){this.debugLog("JbPro","mediaSourceAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioNoDataTimeout,i,t),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioNoDataTimeout,i,t),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioNoDataTimeout,i),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceAudioNoDataTimeout,i),this.debugError("JbPro","mediaSourceAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))}}_handleMseWorkerAddSourceBufferError(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseWorkerAddSourceBufferError but player is destroyed"));if(this.mseWorkerAddSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseWorkerAddSourceBufferErrorOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mseWorkerAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mseWorkerAddSourceBufferError and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecoderUseWorker:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mseWorkerAddSourceBufferError and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.mseWorkerAddSourceBufferError,i,t),this.debugError("JbPro","mseWorkerAddSourceBufferError and reset player and play error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))})).catch((e=>{this.mseWorkerAddSourceBufferErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mseWorkerAddSourceBufferError,i,t),this.debugError("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.mseWorkerAddSourceBufferError,i),this.debugError("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.mseWorkerAddSourceBufferError,i),this.debugError("JbPro","mseWorkerAddSourceBufferError error and pause error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceUseCanvasRenderPlayFailed(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed but player is destroyed");else if(this.mediaSourceUseCanvasRenderPlayFailedOnLock)this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailedOnLock is true");else if(this.emit(gt.crashLog,this.getCrashLog(bt.mediaSourceUseCanvasRenderPlayFailed,e)),this.mediaSourceUseCanvasRenderPlayFailedOnLock=!0,this.player&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplay&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType){this.debugLog("JbPro",`mediaSourceUseCanvasRenderPlayFailed relayType is ${this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType} and reset player and play`);const t=this._opt.url,i=this._opt.playOptions;let s={};const r=this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType;r===$?s={useMSE:!1,useWCS:!1}:r===H&&(s={useVideoRender:!0,useCanvasRender:!1}),this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play error",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))})).catch((t=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.emit(gt.playFailedAndPaused,bt.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed auto and _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause player success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))}}_handleWebcodecsH265NotSupport(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsH265NotSupport but player is destroyed");else if(this.webcodecsH265NotSupportOnLock)this.debugLog("JbPro","webcodecsH265NotSupportOnLock is true");else if(this.emit(gt.crashLog,this.getCrashLog(bt.webcodecsH265NotSupport,e)),this.webcodecsH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.webcodecsH265NotSupport,e),this.debugError("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))})).catch((e=>{this.webcodecsH265NotSupportOnLock=!1,this.debugError("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.webcodecsH265NotSupport,e),this.debugLog("JbPro","webcodecsH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.webcodecsH265NotSupport,e),this.debugError("JbPro","webcodecsH265NotSupport and pause error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))}}_handleWebcodecsUnsupportedConfigurationError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsUnsupportedConfigurationError but player is destroyed");else if(this.webcodecsUnsupportedConfigurationErrorOnLock)this.debugLog("JbPro","webcodecsUnsupportedConfigurationErrorOnLock is true");else if(this.emit(gt.crashLog,this.getCrashLog(bt.webcodecsUnsupportedConfigurationError,e)),this.webcodecsUnsupportedConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))})).catch((t=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.webcodecsUnsupportedConfigurationError,e),this.debugLog("JbPro","webcodecsUnsupportedConfigurationError and autoWasm is false")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError and pause error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))}}_handleWebcodecsDecodeConfigureError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsDecodeConfigureError but player is destroyed");else if(this.webcodecsDecodeConfigureErrorOnLock)this.debugLog("JbPro","webcodecsDecodeConfigureErrorOnLock is true");else if(this.emit(gt.crashLog,this.getCrashLog(bt.webcodecsDecodeConfigureError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))})).catch((t=>{this.webcodecsDecodeConfigureErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.webcodecsDecodeConfigureError,e),this.debugLog("JbPro","webcodecsDecodeConfigureError and autoWasm is false")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError and pause error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))}}_handleWebcodecsDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsDecodeError but player is destroyed"));if(this.webcodecsDecodeErrorOnLock)return void this.debugLog("JbPro","webcodecsDecodeErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.webcodecsDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.webcodecsDecodeErrorOnLock=!0,this.player&&this.player._opt.wcsDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(kr)?this._wcsDecodeErrorRetryLog.push(uo()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`webcodecs decode error autoWasm ${wa(a)?" and is not meaningful Retry":""} [wcs-> ${o?"wasm":"wcs"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","webcodecs decode error reset player and play success")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error reset player and play error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))})).catch((()=>{this.webcodecsDecodeErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.webcodecsDecodeError,t,e),this.debugLog("JbPro","webcodecs decode error and autoWasm is false")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error and pause error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))}}_handleWcsWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wcsWidthOrHeightChange but player is destroyed"));if(this.wcsWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","wcsWidthOrHeightChangeOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.wcsWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wcsWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","wcsWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wcsWidthOrHeightChangeOnLock=!1,this.emit(gt.playFailedAndPaused,bt.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(gt.playFailedAndPaused,bt.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}}_handleWebcodecsAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsAudioNoDataTimeout but player is destroyed"));if(this.webcodecsAudioNoDataTimeoutOnLock)return void this.debugLog("JbPro","webcodecsAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioNoDataTimeoutReplay){this.debugLog("JbPro","webcodecsAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","webcodecsAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.webcodecsAudioNoDataTimeout,i,t),this.debugError("JbPro","webcodecsAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioNoDataTimeoutOnLock=!1,this.emit(gt.playFailedAndPaused,bt.webcodecsAudioNoDataTimeout,i,t),this.debugError("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.webcodecsAudioNoDataTimeout,i),this.debugError("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.webcodecsAudioNoDataTimeout,i),this.debugError("JbPro","webcodecsAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))}}_handleWebcodecsAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsAudioInitTimeout but player is destroyed"));if(this.webcodecsAudioInitTimeoutOnLock)return void this.debugLog("JbPro","webcodecsAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioInitTimeoutReplay){this.debugLog("JbPro","webcodecsAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","webcodecsAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.webcodecsAudioInitTimeout,i,t),this.debugError("JbPro","webcodecsAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioInitTimeoutOnLock=!1,this.emit(gt.playFailedAndPaused,bt.webcodecsAudioInitTimeout,i,t),this.debugError("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.webcodecsAudioInitTimeout,i),this.debugError("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.webcodecsAudioInitTimeout,i),this.debugError("JbPro","webcodecsAudioInitTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))}}_handleSimdDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","simdDecodeError but player is destroyed"));if(this.simdDecodeErrorOnLock)return void this.debugLog("JbPro","simdDecodeErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.simdDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.simdDecodeErrorOnLock=!0,this.player&&this.player._opt.simdDecodeErrorReplay){this.debugLog("JbPro",`simdDecodeError error simdDecodeErrorReplayType is ${this.player._opt.simdDecodeErrorReplayType} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.simdDecodeErrorReplayType===N&&(r={useSIMD:!1}),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","simdDecodeError and reset player and play success")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and reset player and play error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))})).catch((i=>{this.simdDecodeErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and simdDecodeErrorReplay is false")})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError error and pause error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))}}_handleWasmWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wasmWidthOrHeightChange but player is destroyed"));if(this.wasmWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","wasmWidthOrHeightChangeOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.wasmWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wasmWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","wasmWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wasmWidthOrHeightChangeOnLock=!1,this.emit(gt.playFailedAndPaused,bt.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(gt.playFailedAndPaused,bt.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(gt.playFailedAndPaused,bt.wasmWidthOrHeightChange,i),this.debugError("JbPro","wasmWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}}_handleWasmUseVideoRenderError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wasmUseVideoRenderError but player is destroyed"));if(this.wasmUseVideoRenderErrorOnLock)return void this.debugLog("JbPro","wasmUseVideoRenderErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.wasmUseVideoRenderError,e)),this.debugLog("JbPro","wasmUseVideoRenderError and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.wasmUseVideoRenderErrorOnLock=!0,this._resetPlayer({useVideoRender:!1,useCanvasRender:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","wasmUseVideoRenderError and reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.wasmUseVideoRenderError,{},e),this.debugError("JbPro","wasmUseVideoRenderError and reset player and play error",t)})).finally((()=>{this.wasmUseVideoRenderErrorOnLock=!1}))})).catch((t=>{this.wasmUseVideoRenderErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.wasmUseVideoRenderError,{},e),this.debugError("JbPro","wasmUseVideoRenderError and _resetPlayer error",t)}))}_handleNotSupportNewWasm(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","notSupportNewWasm but player is destroyed"));if(this.notSupportNewWasmOnLock)return void this.debugLog("JbPro","notSupportNewWasmOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.notSupportNewWasm,e)),this.notSupportNewWasmOnLock=!0,this.debugLog("JbPro","notSupportNewWasm auto wasm [wasm-> old wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useOldWasm:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","notSupportNewWasm auto wasm [wasm-> old wasm] reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.webcodecsH265NotSupport,e),this.debugError("JbPro","notSupportNewWasm auto wasm [wasm-> old wasm] reset player and play error",t)})).finally((()=>{this.notSupportNewWasmOnLock=!1}))})).catch((e=>{this.notSupportNewWasmOnLock=!1,this.debugError("JbPro","notSupportNewWasm auto wasm [wasm-> old wasm] _resetPlayer and play error",e)}))}_handleVideoElementPlayingFailed(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoElementPlayingFailed but player is destroyed"));if(this.videoElementPlayingFailedOnLock)return void this.debugLog("JbPro","videoElementPlayingFailedOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.videoElementPlayingFailed,e));const t=this._getVideoLastIframeInfo();if(this.videoElementPlayingFailedOnLock=!0,this.player&&this.player._opt.videoElementPlayingFailedReplay){this.debugLog("JbPro",`videoElementPlayingFailed and useMSE is ${this._opt.useMSE} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useVideoRender:!1,useCanvasRender:!0};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","videoElementPlayingFailed and reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and reset player and play error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))})).catch((t=>{this.videoElementPlayingFailedOnLock=!1,this.emit(gt.playFailedAndPaused,bt.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and videoElementPlayingFailedReplay is false")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and _pause error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))}}_handleSimdH264DecodeVideoWidthIsTooLarge(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge but player is destroyed");else if(this.simdH264DecodeVideoWidthIsTooLargeOnLock)this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLargeOnLock is true");else if(this.emit(gt.crashLog,this.getCrashLog(bt.simdH264DecodeVideoWidthIsTooLarge,e)),this.simdH264DecodeVideoWidthIsTooLargeOnLock=!0,this.player&&this.player._opt.simdH264DecodeVideoWidthIsTooLargeReplay){this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useSIMD:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))})).catch((t=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.emit(gt.playFailedAndPaused,bt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and simdDecodeErrorReplay is false")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and pause error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))}}_handleNetworkDelayTimeout(e){if(this.player._opt.networkDelayTimeoutReplay){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","networkDelayTimeout but player is destroyed"));if(this.networkDelayTimeoutOnLock)return void this.debugLog("JbPro","networkDelayTimeoutOnLock is true");this.emit(gt.crashLog,this.getCrashLog(gt.networkDelayTimeout,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","network delay time out and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this.networkDelayTimeoutOnLock=!0,this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(gt.playFailedAndPaused,gt.networkDelayTimeout,t,e),this.debugError("JbPro","wasm decode error and reset player and play error",i)})).finally((()=>{this.networkDelayTimeoutOnLock=!1}))})).catch((()=>{this.networkDelayTimeoutOnLock=!1,this.emit(gt.playFailedAndPaused,gt.networkDelayTimeout,t,e),this.debugError("JbPro","wasm decode error and _resetPlayer error")}))}}_handleFlvDemuxBufferSizeTooLarge(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","flvDemuxBufferSizeTooLarge but player is destroyed"));if(this.flvDemuxBufferSizeTooLargeOnLock)return void this.debugLog("JbPro","flvDemuxBufferSizeTooLargeOnLock is true");const t=this._getVideoLastIframeInfo();if(this.flvDemuxBufferSizeTooLargeOnLock=!0,this.player._opt.flvDemuxBufferSizeTooLargeReplay){this.emit(gt.crashLog,this.getCrashLog(gt.flvDemuxBufferSizeTooLarge,e)),this.debugLog("JbPro","flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeReplay = true and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play success")})).catch((i=>{this.emit(gt.playFailedAndPaused,gt.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play error",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))})).catch((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1,this.emit(gt.playFailedAndPaused,gt.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large and _resetPlayer error")}))}else if(this._opt.flvDemuxBufferSizeTooLargeEmitFailed){this.debugLog(this.TAG_NAME,"flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeEmitFailed = true and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.flvDemuxBufferSizeTooLarge,t,e)})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))}}_handleFetchError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","fetchError but player is destroyed"));if(this.fetchErrorOnLock)return void this.debugLog("JbPro","fetchErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.fetchError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.fetchErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debugLog("JbPro","fetch error and network is disconnect and reset player and play"):this.debugLog("JbPro",`fetch error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes}, streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())this.debug&&this.debugLog("JbPro","fetch error and _resetPlayer but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","fetch error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:bt.fetchError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debugLog("JbPro","fetch error and reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.fetchError,{},e),this.debugError("JbPro","fetch error and reset player and play error",t)})).finally((()=>{this.fetchErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.fetchErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.fetchError,{},e),this.debugError("JbPro","fetch error and _resetPlayer error",t)}))}else{this.debugLog("JbPro","fetch error and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.fetchError,t,e)})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.fetchError,t,e),this.debugError("JbPro","fetch error and pause",i)})).finally((()=>{this.fetchErrorOnLock=!1}))}}_handleStreamEnd(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","streamEnd but player is destroyed and return"));if(this.streamEndOnLock)return void this.debugLog("JbPro","streamEndOnLock is true");this.emit(gt.crashLog,this.getCrashLog(gt.streamEnd,e));const t=this._getVideoLastIframeInfo(),i=""+e=="1006"&&this.player._opt.websocket1006ErrorReplay,s=!!i&&this._checkIsMeaningfulRetry(wr),r=i&&s,o=this.player._opt.streamEndReplay,a=this._isNeedNetworkDisconnectReplay();if(this.streamEndOnLock=!0,r||o||a){a?this.debugLog("JbPro","streamEnd and network is disconnect and reset player and play"):r?this.debugLog("JbPro",`streamEnd and websocket1006ErrorReplay is true and error is 1006 and _websocket1006ErrorReplayTimes is ${this._websocket1006ErrorReplayTimes} , delay ${this._opt.websocket1006ErrorReplayDelayTime}s reset player and play`):this.debugLog("JbPro",`streamEnd and isStreamEndReplay is true and and _streamEndReplayTimes is ${this._streamEndReplayTimes} , delay ${this._opt.streamEndReplayDelayTime}s reset player and play`);const s=this._opt.playOptions,o=this._opt.url;i&&this._websocket1006ErrorRetryLog.push(uo());let n={};this.player._opt.replayUseLastFrameShow&&(n=Object.assign({},n,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(n.isNotMute=!0);let l=r?this._opt.websocket1006ErrorReplayDelayTime:this._opt.streamEndReplayDelayTime;a&&(l=1),this._resetPlayer(n).then((()=>{this.streamEndReplayDelayTimeout=setTimeout((()=>{if(this.streamEndReplayDelayTimeout=null,this._removeLoadingBackgroundForIOS(),this.isDestroyed())a?this.debug&&this.debugLog("JbPro","streamEnd and network is disconnect and _resetPlayer() but player is destroyed and return"):r?this.debug&&this.debugLog("JbPro","streamEnd and 1006 error and _resetPlayer() but player is destroyed and return"):this.debug&&this.debugLog("JbPro","streamEnd and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return r?this.debugLog("JbPro","streamEnd and 1006 error network is offline and wait network online to play , so return"):this.debugLog("JbPro","streamEnd and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:s,type:r?bt.websocket1006Error:bt.streamEnd});r?this._websocket1006ErrorReplayTimes++:this._streamEndReplayTimes++,this.play(o,s).then((()=>{r?this.debugLog("JbPro","streamEnd and 1006 error and reset player and play success"):this.debugLog("JbPro","streamEnd and reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.streamEnd,{},e),r?this.debugError("JbPro","streamEnd and 1006 error and reset player and play error",t):this.debugError("JbPro","streamEnd and reset player and play error",t)})).finally((()=>{this.streamEndOnLock=!1}))}}),1e3*l)})).catch((t=>{this.streamEndOnLock=!1,this.emit(gt.playFailedAndPaused,bt.streamEnd,{},e),r?this.debugError("JbPro","streamEnd and 1006 and _resetPlayer error",t):this.debugError("JbPro","streamEnd and _resetPlayer error",t)}))}else{i?this.debugLog("JbPro","streamEnd pause player "+(wa(s)?"and is not meaningful retry":"")):this.debugLog("JbPro","streamEnd pause player");const r=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(r).then((()=>{this.emit(gt.playFailedAndPaused,gt.streamEnd,t,e)})).catch((i=>{this.emit(gt.playFailedAndPaused,gt.streamEnd,t,e),this.debugError("JbPro","streamEnd pause",i)})).finally((()=>{this.streamEndOnLock=!1}))}}_handleWebsocketError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","websocketError but player is destroyed"));if(this.websocketErrorOnLock)return void this.debugLog("JbPro","websocketErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.websocketError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.websocketErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debugLog("JbPro","websocketError error and network is disconnect and reset player and play"):this.debugLog("JbPro",`websocketError error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())i?this.debug&&this.debugLog("JbPro","websocketError error and network is disconnect and _resetPlayer() but player is destroyed and return"):this.debug&&this.debugLog("JbPro","websocketError error and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","websocketError error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:bt.websocketError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debugLog("JbPro","websocketError error and reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.fetchError,{},e),this.debugError("JbPro","websocketError error and reset player and play error",t)})).finally((()=>{this.websocketErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.websocketErrorOnLock=!1,this.emit(gt.playFailedAndPaused,bt.fetchError,{},e),this.debugError("JbPro","websocketError error and _resetPlayer error",t)}))}else{this.debugLog("JbPro","websocketError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.websocketError,t,e)})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.websocketError,t,e),this.debugError("JbPro","websocketError and pause",i)})).finally((()=>{this.websocketErrorOnLock=!1}))}}_handleWebrtcError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webrtcError but player is destroyed"));if(this.webrtcErrorOnLock)return void this.debugLog("JbPro","webrtcErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.webrtcError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debugLog("JbPro","webrtcError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:bt.webrtcError}})).catch((()=>{this.emit(gt.playFailedAndPaused,bt.webrtcError,t,e),this.debugError("JbPro","webrtcError and _resetPlayer error")})).finally((()=>{this.webrtcErrorOnLock=!1}))}else{this.debugLog("JbPro","webrtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.webrtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.webrtcError,t,e)})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.webrtcError,t,e),this.debugError("JbPro","webrtcError and pause",i)})).finally((()=>{this.webrtcErrorOnLock=!1}))}}_handleHlsError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","hlsError but player is destroyed"));if(this.hlsErrorOnLock)return void this.debugLog("JbPro","hlsErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.hlsError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debugLog("JbPro","hlsError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),wa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:bt.hlsError}})).catch((()=>{this.emit(gt.playFailedAndPaused,bt.hlsError,t,e),this.debugError("JbPro","hlsError and _resetPlayer error")})).finally((()=>{this.hlsErrorOnLock=!1}))}else{this.debugLog("JbPro","hlsError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.hlsErrorOnLock=!0,this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.hlsError,t,e)})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.hlsError,t,e),this.debugError("JbPro","hlsError and pause",i)})).finally((()=>{this.hlsErrorOnLock=!1}))}}_handleAliyunRtcError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","aliyunRtcError but player is destroyed"));if(this.aliyunRtcErrorOnLock)return void this.debugLog("JbPro","aliyunRtcErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.aliyunRtcError,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","aliyunRtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.aliyunRtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.aliyunRtcError,t,e)})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.aliyunRtcError,t,e),this.debugError("JbPro","aliyunRtcError and pause",i)})).finally((()=>{this.aliyunRtcErrorOnLock=!1}))}_handleDecoderWorkerInitError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","decoderWorkerInitError but player is destroyed"));if(this.decoderWorkerInitErrorOnLock)return void this.debugLog("JbPro","decoderWorkerInitErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.decoderWorkerInitError,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","decoderWorkerInitError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerInitErrorOnLock=!0,this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.decoderWorkerInitError,t,e)})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.decoderWorkerInitError,t,e),this.debugError("JbPro","decoderWorkerInitError and pause",i)})).finally((()=>{this.decoderWorkerInitErrorOnLock=!1}))}_handleDecoderWorkerWasmError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","decoderWorkerWasmError but player is destroyed"));if(this.decoderWorkerWasmErrorOnLock)return void this.debugLog("JbPro","decoderWorkerWasmErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.decoderWorkerWasmError,e)),this.debugLog("JbPro","decoderWorkerWasmError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerWasmErrorOnLock=!0,this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.decoderWorkerWasmError,{},e)})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.decoderWorkerWasmError,{},e),this.debugError("JbPro","decoderWorkerWasmError and pause",t)})).finally((()=>{this.decoderWorkerWasmErrorOnLock=!1}))}_handleVideoElementPlayingFailedForWebrtc(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoElementPlayingFailedForWebrtc but player is destroyed"));if(this.videoElementPlayingFailedForWebrtcOnLock)return void this.debugLog("JbPro","videoElementPlayingFailedForWebrtcOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.videoElementPlayingFailedForWebrtc,e)),this.debugLog("JbPro","videoElementPlayingFailedForWebrtc and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoElementPlayingFailedForWebrtcOnLock=!0,this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.videoElementPlayingFailedForWebrtc,{},e)})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.videoElementPlayingFailedForWebrtc,{},e),this.debugError("JbPro","videoElementPlayingFailedForWebrtc and pause",t)})).finally((()=>{this.videoElementPlayingFailedForWebrtcOnLock=!1}))}_handleVideoInfoError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoInfoError but player is destroyed"));if(this.videoInfoErrorOnLock)return void this.debugLog("JbPro","videoInfoErrorOnLock is true");this.emit(gt.crashLog,this.getCrashLog(bt.videoInfoError,e)),this.debugLog("JbPro","videoInfoError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoInfoErrorOnLock=!0,this._pause(t).then((()=>{this.emit(gt.playFailedAndPaused,bt.videoInfoError,{},e)})).catch((t=>{this.emit(gt.playFailedAndPaused,bt.videoInfoError,{},e),this.debugError("JbPro","videoInfoError and pause",t)})).finally((()=>{this.videoInfoErrorOnLock=!1}))}_handleWebrtcStreamH265(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webrtcStreamH265 but player is destroyed"));if(this.webrtcStreamH265OnLock)return void this.debugLog("JbPro","webrtcStreamH265OnLock is true");this.debugLog("JbPro","webrtcStreamH265 and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.webrtcStreamH265OnLock=!0,this._resetPlayer({isWebrtcH265:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webrtcStreamH265 and reset player and play success")})).catch((t=>{this.emit(gt.playFailedAndPaused,gt.webrtcStreamH265,{},e),this.debugError("JbPro","webrtcStreamH265 and reset player and play error",t)})).finally((()=>{this.webrtcStreamH265OnLock=!1}))})).catch((()=>{this.webrtcStreamH265OnLock=!1,this.emit(gt.playFailedAndPaused,gt.webrtcStreamH265,{},e),this.debugError("JbPro","webrtcStreamH265 and _resetPlayer error")}))}_handlePlaybackEnd(){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","playbackEnd but player is destroyed"));if(this.playbackEndOnLock)return void this.debugLog("JbPro","playbackEndOnLock is true");const e=!1===this._opt.playFailedUseLastFrameShow,t=this._getVideoLastIframeInfo();this.player.setPlayFailedAndPaused(),this.playbackEndOnLock=!0,this._pause(e).then((()=>{this.emit(gt.playFailedAndPaused,gt.playbackEnd,t,"")})).catch((e=>{this.emit(gt.playFailedAndPaused,gt.playbackEnd,t,""),this.debugError("JbPro","playbackEnd and pause",e)})).finally((()=>{this.playbackEndOnLock=!1}))}_handleDelayTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debugWarn("JbPro","delay timeout replay but player is destroyed"));this.emit(gt.crashLog,this.getCrashLog(gt.delayTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","delayTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:gt.delayTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(gt.playFailedAndPaused,gt.delayTimeout,t,e),this.debugError("JbPro","delay timeout replay error",i)}))})).catch((i=>{this.emit(gt.playFailedAndPaused,gt.delayTimeout,t,e),this.debugError("JbPro","delay timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,gt.delayTimeout,t,e),this.player&&(this.emit(gt.delayTimeoutRetryEnd),this.emit(gt.playFailedAndPaused,gt.delayTimeoutRetryEnd)),this.debugWarn("JbPro",`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(gt.playFailedAndPaused,gt.delayTimeout,t,e),this.debugError("JbPro","delay timeout and pause error",i)}))}}_handleLoadingTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","loading timeout but player is destroyed"));this.emit(gt.crashLog,this.getCrashLog(gt.loadingTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","loadingTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:gt.loadingTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(gt.playFailedAndPaused,gt.loadingTimeout,t,e),this.debugError("JbPro","loading timeout replay error",i)}))})).catch((i=>{this.emit(gt.playFailedAndPaused,gt.loadingTimeout,t,e),this.debugError("JbPro","loading timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,gt.loadingTimeout,t,e),this.player&&(this.emit(gt.loadingTimeoutRetryEnd),this.emit(gt.playFailedAndPaused,gt.loadingTimeoutRetryEnd,t,e),this._opt.loadingTimeoutRetryEndShowPlayBtn&&this.player.showPlayBtn()),this.debugLog("JbPro",`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((i=>{this.emit(gt.playFailedAndPaused,gt.loadingTimeout,t,e),this.debugError("JbPro","loading timeout and pause error",i)}))}}_handleInitDecoderWorkerTimeout(e){if(this.isDestroyed())return void this.debugLog("JbPro","InitDecoderWorkerTimeout but player is destroyed");this.emit(gt.crashLog,this.getCrashLog(bt.initDecoderWorkerTimeout,e)),this.debugLog("JbPro","InitDecoderWorkerTimeout and pause player");const t=this._getVideoLastIframeInfo(),i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(gt.playFailedAndPaused,bt.initDecoderWorkerTimeout,t,e)})).catch((i=>{this.emit(gt.playFailedAndPaused,bt.initDecoderWorkerTimeout,t,e),this.debugError("JbPro","videoInfoError and pause",i)}))}_checkInitDecoderWorkerTimeout(){this._clearInitDecoderWorkerTimeout(),this.initDecoderWorkerTimeout=setTimeout((()=>{this._handleInitDecoderWorkerTimeout(bt.initDecoderWorkerTimeout)}),1e3*this._opt.initDecoderWorkerTimeout)}_clearInitDecoderWorkerTimeout(){this.initDecoderWorkerTimeout&&(clearTimeout(this.initDecoderWorkerTimeout),this.initDecoderWorkerTimeout=null)}debugLog(e){if(this._opt.debug&&this.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s1?t-1:0),s=1;s1?t-1:0),s=1;s{if(this.isDestroyed())return t("player is destroyed");this.debugLog("JbPro","resetPlayer()");const i=this._getOriginalOpt();this._resetPlayer(i).then((()=>{this.debugLog("JbPro","resetPlayer() success"),e()})).catch((e=>{this.debugWarn("JbPro","resetPlayer() error",e.toString(),e),t(e)}))}))}}return f_.ERROR=bt,f_.EVENTS=yt,window.JessibucaPro=f_,window.JbPro=f_,window.WebPlayerPro=f_,f_})); diff --git a/demo/public/pro/js/jessibuca-pro-multi-demo.js b/demo/public/pro/js/jessibuca-pro-multi-demo.js index 70b44708..8579b34c 100644 --- a/demo/public/pro/js/jessibuca-pro-multi-demo.js +++ b/demo/public/pro/js/jessibuca-pro-multi-demo.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["jessibuca-multi"]=t(e.crypto$1)}(this,(function(t){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=s(t);class o{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(){s.off(e,r);for(var o=arguments.length,a=new Array(o),n=0;n1?i-1:0),r=1;r{delete i[e]})),void delete this.e;const s=i[e],r=[];if(s&&t)for(let e=0,i=s.length;e1?i-1:0),r=1;r1?i-1:0),r=1;r1?s-1:0),o=1;o32&&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 s=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-s;return this._current_word<<=s,this._current_word_bits_left-=s,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)}}const Vr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Hr=Vr,Jr=Vr;function qr(e){let{profile:t,sampleRate:i,channel:s}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|s<<3])}function Kr(e){return Yr(e)&&e[1]===Cs}function Yr(e){return e[0]>>4===Pt}function Qr(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 Xr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return 1024*t/e}const Zr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function eo(e){let t=new Uint8Array(e),i=null,s=0,r=0,o=0,a=null;if(s=r=t[0]>>>3,o=(7&t[0])<<1|t[1]>>>7,o<0||o>=Zr.length)return void console.error("Flv: AAC invalid sampling frequency index!");let n=Zr[o],l=(120&t[1])>>>3;if(l<0||l>=8)return void console.log("Flv: AAC invalid channel configuration");5===s&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let d=Nr.navigator.userAgent.toLowerCase();return-1!==d.indexOf("firefox")?o>=6?(s=5,i=new Array(4),a=o-3):(s=2,i=new Array(2),a=o):-1!==d.indexOf("android")?(s=2,i=new Array(2),a=o):(s=5,a=o,i=new Array(4),o>=6?a=o-3:1===l&&(s=2,i=new Array(2),a=o)),i[0]=s<<3,i[0]|=(15&o)>>>1,i[1]=(15&o)<<7,i[1]|=(15&l)<<3,5===s&&(i[1]|=(15&a)>>>1,i[2]=(1&a)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:n,channelCount:l,objectType:s,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+r}}class to{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,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}read_golomb(){let e;for(e=0;0==this.read(1)&&!this.iserro;e++);return(1<=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(8&e[i+1])>>>3,r=(6&e[i+1])>>>1,o=1&e[i+1],a=(192&e[i+2])>>>6,n=(60&e[i+2])>>>2,l=(1&e[i+2])<<2|(192&e[i+3])>>>6,d=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+d>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let h=1===o?7:9,c=d-h;i+=h;let u=this.findNextSyncwordOffset(i+c);if(this.current_syncword_offset_=u,0!==s&&1!==s||0!==r)continue;let p=e.subarray(i,i+c);t={},t.audio_object_type=a+1,t.sampling_freq_index=n,t.sampling_frequency=Hr[n],t.channel_config=l,t.data=p}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class no{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let s=0;s<=t;s++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let s=this.current_syncword_offset_,r=(31&t[s+1])<<8|t[s+2];if(s+3+r>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let o=new $r(t.subarray(s+3,s+3+r)),a=null;if(o.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(s+3+r),o.destroy();continue}a=e}else{let e=o.readBool();if(e&&o.readBool()){console.error("audioMuxVersionA is Not Supported"),o.destroy();break}if(e&&this.getLATMValue(o),!o.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),o.destroy();break}if(0!==o.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),o.destroy();break}if(0!==o.readBits(4)){console.error("more than 2 numProgram Not Supported"),o.destroy();break}if(0!==o.readBits(3)){console.error("more than 2 numLayer Not Supported"),o.destroy();break}let t=e?this.getLATMValue(o):0,i=o.readBits(5);t-=5;let s=o.readBits(4);t-=4;let r=o.readBits(4);t-=4,o.readBits(3),t-=3,t>0&&o.readBits(t);let n=o.readBits(3);if(0!==n){console.error(`frameLengthType = ${n}. Only frameLengthType = 0 Supported`),o.destroy();break}o.readByte();let l=o.readBool();if(l)if(e)this.getLATMValue(o);else{let e=0;for(;;){e<<=8;let t=o.readBool();if(e+=o.readByte(),!t)break}console.log(e)}o.readBool()&&o.readByte(),a={},a.audio_object_type=i,a.sampling_freq_index=s,a.sampling_frequency=Hr[a.sampling_freq_index],a.channel_config=r,a.other_data_present=l}let n=0;for(;;){let e=o.readByte();if(n+=e,255!==e)break}let l=new Uint8Array(n);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function ho(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return[];const i=e.length,s=[];let r,o=0;for(;o+t>>=8),o+=t,r){if(o+r>i)break;s.push(e.subarray(o,o+r)),o+=r}return s}function co(e,t){const i=e.length;let s=t?2:1,r=0,o=0,a="";for(;255===e[s];)r+=255,s++;for(r+=e[s++];255===e[s];)o+=255,s++;if(o+=e[s++],5===r&&i>s+16)for(let t=0;t<16;t++)a+=e[s].toString(16),s++;return{payload:e.subarray(s),type:r,size:o,uuid:a}}function uo(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 s=new Uint8Array(t+4);return s.set(i,0),s.set(e,4),s}function po(){}function fo(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let s=0;for(;!t&&s0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),s=t[0].replace("data:","").replace(";base64","");let r=i.length,o=new Uint8Array(r);for(;r--;)o[r]=i.charCodeAt(r);return new File([o],"file",{type:s})}function yo(){return(new Date).getTime()}function Ao(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function bo(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{bo(e,i,t[i])})),e.style[t]=i,e}function vo(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const s=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(s):s}function _o(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function wo(e){let t=0,i=_o();return s=>{if(!Oo(s))return;t+=s;const r=_o(),o=r-i;o>=1e3&&(e(t/o*1e3),i=r,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 So='"9-1-2024"',Eo=!1;function To(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function ko(){return!(To()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))}function Lo(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}function Co(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function xo(){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 s in i)if(i[s]){let i="";if("IE"===s){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"===s){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(s="360");const t=e.match(/chrome\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Firefox"===s){const t=e.match(/firefox\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Opera"===s){const t=e.match(/opera\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Safari"===s){const t=e.match(/version\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Edge"===s){const t=e.match(/edge\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("QQBrowser"===s){const t=e.match(/qqbrowser\/([\d.]+)/);t&&t.length>1&&(i=t[1])}t.type=s,t.version=parseInt(i)}return t}function Do(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function Ro(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function Io(e,t){if(0===arguments.length)return null;var i,s=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 r={y:i.getFullYear(),m:i.getMonth()+1,d:i.getDate(),h:i.getHours(),i:i.getMinutes(),s:i.getSeconds(),a:i.getDay()},o=s.replace(/{(y|m|d|h|i|s|a)+}/g,((e,t)=>{var i=r[t];return"a"===t?["一","二","三","四","五","六","日"][i-1]:(e.length>0&&i<10&&(i="0"+i),i||0)}));return o}function Po(){return"VideoFrame"in window}function Bo(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function Mo(){return"xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function Fo(e,t){let i,s,r=!1;return function o(){for(var a=arguments.length,n=new Array(a),l=0;l{r=!1,i&&(o.apply(s,i),i=null,s=null)}),t)}}function Uo(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 s=parseFloat(e);i=Math.floor(Math.log(s)/Math.log(1024));var r=s/Math.pow(1024,i);return(r=r.toFixed(2))+t[i]}function Oo(e){return"[object Number]"===Object.prototype.toString.call(e)}function No(){let e=!1;return"MediaSource"in Nr&&Nr.MediaSource&&(Nr.MediaSource.isTypeSupported(wi)||Nr.MediaSource.isTypeSupported(Si)||Nr.MediaSource.isTypeSupported(Ei)||Nr.MediaSource.isTypeSupported(Ti)||Nr.MediaSource.isTypeSupported(ki))&&(e=!0),e}function jo(){const e=xo();return"chrome"===e.type.toLowerCase()&&e.version>=107}function Go(){let e=!1;return"MediaStreamTrackGenerator"in window&&(e=!0),e}function Wo(){let e=!1;return"MediaStream"in window&&(e=!0),e}function zo(e,t){let i=window.URL.createObjectURL(t),s=window.document.createElement("a");s.download=e,s.href=i;let r=window.document.createEvent("MouseEvents");r.initEvent("click",!0,!0),s.dispatchEvent(r),setTimeout((()=>{window.URL.revokeObjectURL(i)}),Do()?1e3:0)}function $o(e){return null==e}function Vo(e){return!0===e||!1===e}function Ho(e){return!$o(e)}function Jo(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||{}),s=Object.assign(t.text,e.text||{}),r=Object.assign(t.rect,e.rect||{}),o=Object.assign(t.line,e.line||{});return t=Object.assign(t,e,{image:i,text:s,rect:r,line:o}),t}function qo(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 Ko(e,t){return new Promise(((i,s)=>{let r=Jo(t);if(!r.image.src&&!r.text.content)return i(e);let o=document.createElement("canvas");o.width=t.width,o.height=t.height;let a=o.getContext("2d");a.imageSmoothingEnabled=!0,a.imageSmoothingEnabled&&(a.imageSmoothingQuality="high");let n=0,l=0;Oo(r.left)?n=r.left:Oo(r.right)&&(n=o.width-r.right),Oo(r.top)?l=r.top:Oo(r.bottom)&&(l=o.height-r.bottom);const d=new Image;d.src=e,d.onload=()=>{if(a.drawImage(d,0,0),r.image&&r.image.src){const e=new Image;e.src=r.image.src,e.setAttribute("crossOrigin","Anonymous"),e.onload=()=>{n-=r.image.width,a.drawImage(e,n,l,r.image.width,r.image.height),i(o.toDataURL(t.format,t.quality))},e.onerror=e=>{s()}}else r.text&&r.text.content&&(a.font=r.text.fontSize+"px 宋体",a.fillStyle=r.text.color,a.textAlign="right",a.fillText(r.text.content,n,l),i(o.toDataURL(t.format,t.quality)))},d.onerror=e=>{s(e)}}))}function Yo(e){var t,i=0;if(0===e.length)return i;for(t=0;t{if(!t.copyright)return i(e);let r=document.createElement("canvas");r.width=t.width,r.height=t.height;let o=r.getContext("2d");o.imageSmoothingEnabled=!0,o.imageSmoothingEnabled&&(o.imageSmoothingQuality="high");const a=new Image;a.src=e,a.onload=()=>{o.drawImage(a,0,0);const e=Yo(t.copyright),s=o.getImageData(0,0,r.width,r.height);!function(e,t){for(var i=e.data,s=0,r=0;r<32;r++){var o=t>>r&1,a=254&i[s]|o;i[s]=a,s+=4}}(s,e),o.putImageData(s,0,0),i(r.toDataURL(t.format,t.quality))},a.onerror=e=>{s(e)}}))}function Xo(e){var t;if(e>-1){var i=Math.floor(e/3600),s=Math.floor(e/60)%60,r=e%60;t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",(r=Math.round(r))<10&&(t+="0"),t+=r.toFixed(0)}return t}function Zo(e,t){let i="";if(e>-1){const s=Math.floor(e/60)%60;let r=e%60;r=Math.round(r),i=s<10?"0"+s+":":s+":",r<10&&(i+="0"),i+=r,$o(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function ea(e){let t="";if(e>-1){const i=Math.floor(e/60/60)%60;let s=Math.floor(e/60)%60,r=e%60;s=Math.round(s),t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",r<10&&(t+="0"),t+=r}return t}function ta(e,t){const i=Math.floor(t/60)%60,s=Math.floor(t%60);return new Date(e).setHours(i,s,0,0)}function ia(e,t){const i=Math.floor(t/60/60)%60,s=Math.floor(t/60)%60,r=t%60;return new Date(e).setHours(i,s,r,0)}function sa(e){return(""+e).length}function ra(e){return e&&0===Object.keys(e).length}function oa(e){return!ra(e)}function aa(e){return"string"==typeof e}const na=()=>{const e=window.navigator.userAgent;return/MicroMessenger/i.test(e)},la=()=>{const e=window.navigator.userAgent;return/Chrome/i.test(e)};function da(e){const t=e||window.event;return t.target||t.srcElement}function ha(){return Co()&&function(){const e=navigator.userAgent.toLowerCase();return/macintosh|mac os x/i.test(e)}()}function ca(e){return"function"==typeof e}function ua(e){if(To()){let t=0,i=0;if(1===e.touches.length){let s=e.touches[0];t=s.clientX,i=s.clientY}return{posX:t,posY:i}}let t=0,i=0;const s=e||window.event;return s.pageX||s.pageY?(t=s.pageX,i=s.pageY):(s.clientX||s.clientY)&&(t=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft,i=e.clientY+document.documentElement.scrollTop+document.body.scrollTop),{posX:t,posY:i}}function pa(){let e=document.createElement("video"),t=e.canPlayType("application/vnd.apple.mpegurl");return e=null,t}function fa(e){let t=xa(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)&&xa(e.demuxUseWorker);return!!(xa(t)&&e.useMSE&&e.mseDecodeAudio&&xa(e.demuxUseWorker))||(!!(xa(t)&&e.useWCS&&e.wcsDecodeAudio)||t)}function ma(e){let t=null,i=31&e[0];return i!==Ot&&i!==Nt||(t=Rt),t||(i=(126&e[0])>>1,i!==Zt&&i!==ti&&i!==si||(t=It)),t}function ga(e){e.close()}function ya(e){e.close()}function Aa(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function ba(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 va(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],s=null,r=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,r=2)}if(i)for(let o=r;o=1e3){e[o-1].ts-i.ts<1e3&&(s=o+1)}}}return s}function _a(e){for(var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(t),s=new Uint8Array(i.length),r=0;r>4===xs&&e[1]===Cs}function Ca(e){return!0===e||"true"===e}function xa(e){return!0!==e&&"true"!==e}function Da(e,t,i){e&&(e.dataset?e.dataset[t]=i:e.setAttribute("data-"+t,i))}function Ra(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}function Ia(e,t){e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t))}function Pa(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function Ba(){return/iphone/i.test(navigator.userAgent)}function Ma(){return window.performance&&window.performance.memory?window.performance.memory:null}function Fa(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}}function Ua(e){return e.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function Oa(){let e=!1;return"requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e=!0),e}function Na(){let e=!1;return"PressureObserver"in window&&(e=!0),e}function ja(e,t){const i=ho(e.slice(5));let s=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===Jt||i===Kt||i===Qt)||xa(t)&&i===jt)&&(s=!0)})),s}function Ga(){let e={down:"mousedown",move:"mousemove",up:"mouseup",click:"click"};return To()&&(e={down:"touchstart",move:"touchmove",up:"touchend",click:"click"}),e}class Wa{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,s)));e.addEventListener(t,i,s);const r=()=>{ca(e.removeEventListener)&&e.removeEventListener(t,i,s)};return this.destroys.push(r),r}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}var za=1e-6,$a="undefined"!=typeof Float32Array?Float32Array:Array;function Va(){var e=new $a(16);return $a!=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 Ha(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 Ja,qa=function(e,t,i,s,r,o,a){var n=1/(t-i),l=1/(s-r),d=1/(o-a);return e[0]=-2*n,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)*n,e[13]=(r+s)*l,e[14]=(a+o)*d,e[15]=1,e};function Ka(e,t,i){var s=new $a(3);return s[0]=e,s[1]=t,s[2]=i,s}Ja=new $a(3),$a!=Float32Array&&(Ja[0]=0,Ja[1]=0,Ja[2]=0);class Ya{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,this.gl=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,s=i.createShader(e);return i.shaderSource(s,t),i.compileShader(s),i.getShaderParameter(s,i.COMPILE_STATUS)?s:(console.log("An error occurred compiling the shaders: "+i.getShaderInfoLog(s)),i.deleteShader(s),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 s=[];s=s.concat([0,1],[1,1],[1,0],[0,0]);const r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(s),e.STATIC_DRAW);const o=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,o);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{positions:i,position:t,texPosition:r,indices:o}}_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,s,r,o){let a=2*e/r-1,n=2*(o-t-s)/o-1,l=2*(e+i)/r-1,d=2*(o-t)/o-1;return[a,n,l,n,l,d,a,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,s,r){const o=this.gl;this._clear(),o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._ytexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,t,0,o.LUMINANCE,o.UNSIGNED_BYTE,i),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this._utexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,s),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this._vtexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,r),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}renderYUV(e,t,i){let s=i.slice(0,e*t),r=i.slice(e*t,e*t*5/4),o=i.slice(e*t*5/4,e*t*3/2);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,s),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,o),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}drawDom(e,t,i,s,r){const o=this.gl;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._rgbatexture),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,r),this._buffers.positions=this._calRect(i,s,r.width,r.height,e,t),this._drawScene(e,t,!1)}}const Qa=1,Xa=2,Za=4;class en{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.isDestroyed=!1,this._initPipeline().then((e=>{this.isDestroyed||(this.pipeline=e,this.matrixGroupInfo=this._initMatrixGroupInfo(),this.matrixGroupInfo&&(this.hasInited=!0))}))}destroy(){this.isDestroyed=!1,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 s=new Float32Array([0,1,1,1,1,0,0,0]),r=e.createBuffer({size:s.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(r,0,s);const o=new Uint16Array([0,1,2,0,2,3]),a=e.createBuffer({size:o.byteLength,usage:window.GPUBufferUsage.INDEX|window.GPUBufferUsage.COPY_DST});return e.queue.writeBuffer(a,0,o),{positionBuffer:i,texpositionBuffer:r,indexBuffer:a}}_initPipeline(){return new Promise(((e,t)=>{const i=this.gpu.device,s=this.gpu.format,r={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 pixelType: i32;\n @group(1) @binding(2) var yTexture: texture_2d;\n @group(1) @binding(3) var uTexture: texture_2d;\n @group(1) @binding(4) var vTexture: texture_2d;\n @group(1) @binding(5) var uvTexture: texture_2d;\n @group(1) @binding(6) var rgbaTexture: 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 if(pixelType == 1){\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 } else if (pixelType == 2) {\n\n var y : f32= textureSample(yTexture, mySampler, vTexturePosition).r;\n var u : f32 = textureSample(uvTexture, mySampler, vTexturePosition).r;\n var v : f32 = textureSample(uvTexture, mySampler, vTexturePosition).g;\n\n return vec4(y, u, v, 1.0)*YUV2RGB;\n } else {\n\n return textureSample(rgbaTexture, mySampler, vTexturePosition);\n }\n\n }\n\n "}),entryPoint:"main",targets:[{format:s}]},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}};i.createRenderPipelineAsync(r).then((t=>{e(t)})).catch((e=>{t(e)}))}))}_initMatrixGroupInfo(){if(!this.gpu)return null;const e=this.gpu.device,t=this.pipeline,i=Va();qa(i,-1,1,-1,1,.1,100);const s=Va();Ha(s);const r=Va();!function(e,t,i,s){var r,o,a,n,l,d,h,c,u,p,f=t[0],m=t[1],g=t[2],y=s[0],A=s[1],b=s[2],v=i[0],_=i[1],w=i[2];Math.abs(f-v)Jo(e)));this.configList=i,this._updateDom()}_resizeDomForVideo(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;let t=e.width,i=e.height;const s=this.player._opt,r=this.player.getShowVideoRect();let o=r.height,a=r.width;const n=s.rotate;let l=(a-t)/2,d=(o-i)/2;270!==n&&90!==n||(t=e.height,i=e.width);const h=a/t,c=o/i;let u=h>c?c:h;s.isResize||h!==c&&(u=h+","+c),s.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===s.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===s.mirrorRotate?p+=" rotateY(180deg)":"vertical"===s.mirrorRotate&&(p+=" rotateX(180deg)"),this.scale=-1!==(""+u).indexOf(",")?h:u,this.shadowRootInnerDom.style.transform=p,this.shadowRootInnerDom.style.left=l+"px",this.shadowRootInnerDom.style.top=d+"px",this.shadowRootInnerDom.style.width=e.width+"px",this.shadowRootInnerDom.style.height=e.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,i=this.player.getShowVideoRect();let s=i.width,r=i.height,o=e.width,a=e.height;const n=t.rotate;let l=(s-o)/2,d=(r-a)/2;270!==n&&90!==n||(o=e.height,a=e.width);const h=s/o,c=r/a;let u=h>c?c:h;t.isResize||h!==c&&(u=h+","+c),t.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===t.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===t.mirrorRotate?p+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(p+=" 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=p,this.shadowRootInnerDom.style.left=l+"px",this.shadowRootInnerDom.style.top=d+"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),i=this.player.getShowVideoRect();let s=i.width,r=i.height,o=this.player.getControlHeight();const a=e.width/e.height,n=t[0]/t[1];if(a>n){const t=n*e.height/e.width;this.shadowRootInnerDom.style.width=100*t+"%",this.shadowRootInnerDom.style.height=`calc(100% - ${o}px)`,this.shadowRootInnerDom.style.padding=`0 ${(s-s*t)/2}px`}else{const t=e.width/n/e.height;this.shadowRootInnerDom.style.width="100%",this.shadowRootInnerDom.style.height=`calc(${100*t}% - ${o}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,Ho(e.left)&&(Oo(e.left)?t.style.left=e.left+"px":t.style.left=e.left),Ho(e.right)&&(Oo(e.right)?t.style.right=e.right+"px":t.style.right=e.right),Ho(e.top)&&(Oo(e.top)?t.style.top=e.top+"px":t.style.top=e.top),Ho(e.bottom)&&(Oo(e.bottom)?t.style.bottom=e.bottom+"px":t.style.bottom=e.bottom),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 s=e.polygon.color,r=e.polygon.lineWidth;if(i=i.sort(((e,t)=>(e.index||0)-(t.index||0))),e.polygon.fill){const s=document.createElement("div");s.style.position="absolute",s.style.width="100%",s.style.height="100%";const r="polygon("+i.map((e=>`${e.x}px ${e.y}px`)).join(", ")+")";s.style.clipPath=r,s.style.backgroundColor=e.polygon.fill,e.polygon.fillOpacity&&(s.style.opacity=e.polygon.fillOpacity),t.appendChild(s)}i.forEach(((e,o)=>{const a=document.createElement("div");if(o===i.length-1){const o=i[0],n={x1:e.x,y1:e.y,x2:o.x,y2:o.y,color:s,lineWidth:r};return this.settingLine(a,n),void t.appendChild(a)}const n=i[o+1],l={x1:e.x,y1:e.y,x2:n.x,y2:n.y,color:s,lineWidth:r};this.settingLine(a,l),t.appendChild(a)}))}this.isDynamic&&(this.shadowRootDynamicDom=t),this.shadowRootInnerDom.appendChild(t)}}))}settingLine(e,t){const i=t.x1,s=t.y1,r=t.x2,o=t.y2;var a=Math.sqrt((i-r)**2+(s-o)**2),n=180*Math.atan2(o-s,r-i)/Math.PI;e.style.backgroundColor=t.color,e.style.width=a+"px",e.style.height=t.lineWidth+"px",e.style.position="absolute",e.style.top=s+"px",e.style.left=i+"px",e.style.transform="rotate("+n+"deg)",e.style.transformOrigin="0 0"}remove(){this._removeDom()}_removeDom(){this.shadowRootInnerDom&&(this.shadowRootInnerDom.innerHTML="")}}class sn extends o{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){Ho(e.encTypeCode)&&(this.videoInfo.encType=Ct[e.encTypeCode],this.videoInfo.encTypeCode=e.encTypeCode),Ho(e.encType)&&(this.videoInfo.encType=e.encType),Ho(e.width)&&(this.videoInfo.width=e.width),Ho(e.height)&&(this.videoInfo.height=e.height),Ho(this.videoInfo.encType)&&Ho(this.videoInfo.height)&&Ho(this.videoInfo.width)&&!this.init&&(this.player.emit(yt.videoInfo,this.videoInfo),this.init=!0)}getVideoInfo(){return this.videoInfo}clearView(){this.tempContentList=[],this.tempAiContentList=[]}resize(){if(this.player.debugLog("CommonVideo","resize()"),"default"===this.player._opt.aspectRatio||To()?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.debugLog("CommonVideo","_resizeRatio()");const e=this.player._opt.aspectRatio.split(":").map(Number),t=this.player.getShowVideoRect();let i=t.width,s=t.height,r=this.player.getControlHeight();const o=this.videoInfo,a=o.width/o.height,n=e[0]/e[1];if(this.getType()===H&&(this.$videoElement.style.left="0",this.$videoElement.style.top="0",this.$videoElement.style.transform="none"),this.getType()===J&&this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit="fill"),a>n){const e=n*o.height/o.width;this.$videoElement.style.width=100*e+"%",this.$videoElement.style.height=`calc(100% - ${r}px)`,this.$videoElement.style.padding=`0 ${(i-i*e)/2}px`}else{const e=o.width/n/o.height;this.$videoElement.style.width="100%",this.$videoElement.style.height=`calc(${100*e}% - ${r}px)`,this.$videoElement.style.padding=(s-s*e)/2+"px 0"}}play(){}pause(){}setRate(e){}getType(){return""}getCanvasType(){return""}getCurrentTime(){return 0}getStreamFps(){return this.streamFps}isPlaying(){return!0}isVideoPlaying(){return this.isPlaying()}getPlaybackQuality(){return null}setStreamFps(e){this.player.debugLog("CommonVideo","setStreamFps",e),this.streamFps=e}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempContentList=e,this.doAddContentToWatermark()}addAiContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempAiContentList=e,this.doAddAiContentToWatermark()}doAddContentToWatermark(){if(this.tempContentList.length>0){this.contentWatermark||(this.contentWatermark=new tn(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 tn(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}getReadyStateInited(){return!0}screenshotByCurrentWatermark(){}initCanvasViewSize(){}bindMediaStream(){}}var rn="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0;function on(e,t,i){var s=new XMLHttpRequest;s.open("GET",e),s.responseType="blob",s.onload=function(){dn(s.response,t,i)},s.onerror=function(){console.error("could not download file")},s.send()}function an(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function nn(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 ln=rn.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),dn="object"!=typeof window||window!==rn?function(){}:"download"in HTMLAnchorElement.prototype&&!ln?function(e,t,i){var s=rn.URL||rn.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?an(r.href)?on(e,t,i):nn(r,r.target="_blank"):nn(r)):(r.href=s.createObjectURL(e),setTimeout((function(){s.revokeObjectURL(r.href)}),4e4),setTimeout((function(){nn(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(an(e))on(e,t,i);else{var s=document.createElement("a");s.href=e,s.target="_blank",setTimeout((function(){nn(s)}))}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,s){if((s=s||open("","_blank"))&&(s.document.title=s.document.body.innerText="downloading..."),"string"==typeof e)return on(e,t,i);var r="application/octet-stream"===e.type,o=/constructor/i.test(rn.HTMLElement)||rn.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||r&&o||ln)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),s?s.location.href=e:location=e,s=null},n.readAsDataURL(e)}else{var l=rn.URL||rn.webkitURL,d=l.createObjectURL(e);s?s.location=d:location.href=d,s=null,setTimeout((function(){l.revokeObjectURL(d)}),4e4)}};function hn(e){return new Promise(((t,i)=>{navigator.gpu?navigator.gpu.requestAdapter().then((s=>{s?s.requestDevice().then((r=>{if(r){const o=e.getContext("webgpu");if(o){const e=navigator.gpu.getPreferredCanvasFormat();o.configure({device:r,format:e,alphaMode:"opaque"}),t({adapter:s,device:r,context:o,format:e})}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!!")}))}class cn{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 s=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(s,"\n varying highp vec2 uv;\n uniform sampler2D texture;\n void main(void) {\n gl_FragColor = texture2D(texture, uv);\n }\n "),t.compileShader(s),!t.getShaderParameter(s,t.COMPILE_STATUS))throw t.getShaderInfoLog(s);const r=t.createProgram();if(t.attachShader(r,i),t.attachShader(r,s),t.linkProgram(r),!t.getProgramParameter(r,t.LINK_STATUS))throw t.getProgramInfoLog(r);t.useProgram(r);const o=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),t.STATIC_DRAW);const a=t.getAttribLocation(r,"xy");t.vertexAttribPointer(a,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(a);const n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n),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=r,this.buffer=o,this.vertexShader=i,this.fragmentShader=s,this.texture=n}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,this.gl=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 un extends sn{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.isWcsWebgpu=!1,this.bitmaprenderer=null,this.renderType=null,this.proxyDestroyList=[],this._initCanvasRender()}destroy(){super.destroy(),this.proxyDestroyList.length>0&&(this.proxyDestroyList.forEach((e=>{e&&e()})),this.proxyDestroyList=[]),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.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height),this.context2D=null),this.renderType=null,this.isWebglContextLost=!1,this.isWcsWebgpu=!1,this.isWcsWebgl2=!1,this.videoInfo={width:"",height:"",encType:""},this.$videoElement.width=0,this.$videoElement.height=0,this.player.$container.removeChild(this.$videoElement),this.$videoElement=null,this.init=!1,this.off()}_initContext2D(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.context2D=this.$videoElement.getContext("2d",e)}_initContextGl(){if(this.player.events,this.contextGl=fo(this.$videoElement),!this.contextGl)throw this.player.debugError("CommonCanvasLoader","_initContextGl() createContextGL error"),new Error("CommonCanvasLoader and _initContextGl createContextGL error");this._bindContextGlEvents(),this.webglRender=new Ya(this.contextGl,this.player._opt.openWebglAlignment)}_initContextGl2(){if(this.contextGl=mo(this.$videoElement),this.contextGl){this._bindContextGlEvents(2);try{this.webglRender=new cn(this.$videoElement,this.contextGl)}catch(e){this.player.debugError("CommonCanvasLoader",`create webgl2Render error is ${e} and next use context2d.draw render`),this.contextGl=null,this.webglRender=null,this._initContext2D()}}else this.player.debugError("CommonCanvasLoader","_initContextGl2() createContextGL2 error")}_bindContextGlEvents(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const{proxy:t}=this.player.events,i=t(this.$videoElement,"webglcontextlost",(t=>{t.preventDefault(),this.player.debugError("canvasVideo","webglcontextlost error",t),this.isWebglContextLost=!0,this.webglRender&&(this.player.debugLog("CommonCanvasLoader","webglcontextlost error and destroy webglRender"),this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.player.debugLog("CommonCanvasLoader","webglcontextlost error and destroy webglRectRender"),this.webglRectRender.destroy(),this.webglRectRender=null),this.contextGl=null,setTimeout((()=>{if(this.player.debugLog("CommonCanvasLoader",`createContextGL() version ${e}`),1===e?this.contextGl=fo(this.$videoElement):2===e&&(this.contextGl=mo(this.$videoElement)),this.player.debugLog("CommonCanvasLoader","createContextGL success"),this.contextGl&&this.contextGl.getContextAttributes){const t=this.contextGl.getContextAttributes();t&&t.stencil?(1===e?this.webglRender=new Ya(this.contextGl,this.player._opt.openWebglAlignment):2===e&&(this.webglRender=new cn(this.$videoElement,this.contextGl)),this.isWebglContextLost=!1,this.player.debugLog("CommonCanvasLoader","webglcontextlost error reset and getContextAttributes().stencil is true")):(this.player.debugError("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(vt.webglContextLostError))}else this.player.debugError("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(vt.webglContextLostError)}),500)})),s=t(this.$videoElement,"webglcontextrestored",(e=>{e.preventDefault(),this.player.debugLog("CommonCanvasLoader","webglcontextrestored ",e)}));this.proxyDestroyList.push(i,s)}_initContextGPU(){hn(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new en(e),this.player.debugLog("CommonCanvasLoader","webGPURender init success")):(this.player.debugWarn("CommonCanvasLoader","webGPURender init failed because context is null and next use webgl render"),this.renderType=ui,this._initContextGl()))})).catch((e=>{this.player.isDestroyedOrClosed()||(this.player.debugWarn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=ui,this._initContextGl())}))}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}screenshot(e,t,i,s){e=e||yo(),s=s||Tt.download;let r=.92;!es[t]&&Tt[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=es[t]||es.png,a=this.$videoElement.toDataURL(o,r);if(s===Tt.base64)return a;{const t=go(a);if(s===Tt.blob)return t;if(s===Tt.download){const i=o.split("/")[1];dn(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||yo(),e.format=e.format?es[e.format]:es.png,e.quality=Number(e.quality)||.92,e.type=e.type||Tt.download;const s=this.$videoElement.toDataURL(e.format,e.quality);Ko(s,e).then((i=>{if(e.type===Tt.base64)t(s);else{const s=go(i);if(e.type===Tt.blob)t(s);else if(e.type===Tt.download){t();const i=e.format.split("/")[1];dn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(aa(e)){(e=(e={filename:e})||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||yo(),e.format=e.format?es[e.format]:es.png,e.quality=Number(e.quality)||.92,e.type=e.type||Tt.download;const s=this.$videoElement.toDataURL(e.format,e.quality);Qo(s,e).then((i=>{if(e.type===Tt.base64)t(s);else{const s=go(i);if(e.type===Tt.blob)t(s);else if(e.type===Tt.download){t();const i=e.format.split("/")[1];dn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}}))}screenshotByCurrentWatermark(e){}render(){}clearView(){super.clearView()}play(){}pause(){}_resize(){this.player.debugLog("canvasVideo","_resize()");const e=this.player._opt,t=this.player.getShowVideoRect();let i=t.width,s=t.height,r=this.$videoElement.width,o=this.$videoElement.height;const a=e.rotate;let n=(i-r)/2,l=(s-o)/2;270!==a&&90!==a||(r=this.$videoElement.height,o=this.$videoElement.width);const d=i/r,h=s/o;let c=d>h?h:d;xa(e.isResize)&&d!==h&&(c=d+","+h),e.isFullResize&&(c=d>h?d:h);let u="scale("+c+")";"none"===e.mirrorRotate&&a&&(u+=" rotate("+a+"deg)"),"level"===e.mirrorRotate?u+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(u+=" 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=u,this.$videoElement.style.left=n+"px",this.$videoElement.style.top=l+"px"}initFps(){}setStreamFps(e){}getStreamFps(){return 25}getType(){return H}getCanvasType(){let e=this.renderType===fi?fi:ui;return this.isWcsWebgl2?e=pi:this.isWcsWebgpu&&(e=fi),e}}class pn extends un{constructor(e){super(e),this.TAG_NAME="CanvasVideo",this.yuvList=[],this.tempTextCanvas=null,this.tempTextCanvasCtx=null,this.player.debugLog("CanvasVideo","init")}async 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.debugLog("CanvasVideoLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=ci,this.player._opt.useWebGPU?hn(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new en(e),this.isWcsWebgpu=!0,this.player.debugLog(this.TAG_NAME,"webGPURender init success")):(this.player.debugWarn(this.TAG_NAME,"webGPURender init failed because context is null and next use webgl render"),this._initWebglRenderForWCS()))})).catch((()=>{this.player.isDestroyedOrClosed()||(this.player.debugWarn(this.TAG_NAME,`createWebGPUContext error is ${e} and next use webgl render`),this._initWebglRenderForWCS())})):this._initWebglRenderForWCS()):this.player._opt.useMSE&&this.player._opt.mseUseCanvasRender?(this.renderType=gi,this._initContext2D()):this.player.isOldHls()&&this.player._opt.useCanvasRender?(this.renderType=yi,this._initContext2D()):this.player.isWebrtcH264()&&this.player._opt.webrtcUseCanvasRender?(this.renderType=Ai,this._initContext2D()):this._supportOffscreen()?(this.renderType=mi,this._bindOffscreen()):this.player._opt.useWebGPU?(this.renderType=fi,this._initContextGPU()):(this.renderType=ui,this._initContextGl())}_initWebglRenderForWCS(){this.player._opt.wcsUseWebgl2Render&&Fa()?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()}_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!==gi){const t={ts:e.ts||0,fps:!0};this.player.updateStats(t)}switch(this.renderType){case mi:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case ui:case fi:if(this.isWebglContextLost)return void this.player.debugWarn("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=yo());const i=yo();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=yo());const i=yo();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=yo());const t=yo();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(yt.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(yt.aiImageDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debugLog("CanvasVideoLoader",`doRender() and ai image detect result type is ${t.type} and drop`)}if(this.renderType===fi)try{if(!this.webGPURender)return void this.player.debugWarn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debugError("CanvasVideoLoader",`doRender webgpu render and error: ${e.toString()}`)}else if(this.renderType===ui)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debugError("CanvasVideoLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}break;case ci:if(this.webGPURender)this.webGPURender.render(e.videoFrame),ga(e.videoFrame);else if(this.webglRender)this.webglRender.render(e.videoFrame),ga(e.videoFrame);else if(this.context2D)if(ca(e.videoFrame.createImageBitmap))try{e.videoFrame.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),ga(e.videoFrame)}))}catch(e){}else this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),ga(e.videoFrame);else this.player.debugWarn("CanvasVideoLoader","doRender() and webcodecs context is lost");break;case gi:case yi:case Ai:this.context2D.drawImage(e.$video,0,0,this.$videoElement.width,this.$videoElement.height)}let t=e.ts||0;this.renderType===gi&&(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 mi:(function(e,t){const i=document.createElement("canvas");i.width=e,i.height=t;const s=window.createImageBitmap(i,0,0,e,t);return i.width=0,i.height=0,s})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case ui:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case fi:this.webGPURender.clear();break;case ci:this.webGPURender?this.webGPURender.clear():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 gi:case yi:case Ai: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(e){let{ctx:t,list:i}=e;t.save(),(i||[]).forEach((e=>{"text"===e.type?(t.font=`${e.fontSize||12}px Arial`,t.fillStyle=e.color||"green",t.fillText(e.text,e.x,e.y)):"rect"===e.type&&(t.strokeStyle=e.color||"green",t.lineWidth=e.lineWidth||2,t.strokeRect(e.x,e.y,e.width,e.height))})),t.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 r=e.width,o=e.height,a=(s=e.color||"#008000",[parseInt(s.substring(1,3),16)/255,parseInt(s.substring(3,5),16)/255,parseInt(s.substring(5,7),16)/255,1]),n=e.lineWidth||4;if(!r||!o)return;this.webglRectRender.drawBox({x:t,y:i,width:r,height:o,lineColor:a,lineWidth:n,canvasWidth:this.$videoElement.width,canvasHeight:this.$videoElement.height})}else if("text"===e.type){const s=e.text||"";if(!s)return;const r=e.fontSize||20,o=e.color||"#008000";this.tempTextCanvas||this._initTempTextCanvas(),this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvasCtx.font=`${r}px Arial`,this.tempTextCanvasCtx.fillStyle=o,this.tempTextCanvasCtx.textBaseline="top",this.tempTextCanvasCtx.fillText(s,0,0),this.webglRender.drawDom(this.$videoElement.width,this.$videoElement.height,t,i,this.tempTextCanvas)}var s}))}}class fn extends sn{constructor(e){super(),this.player=e,this.TAG_NAME="Video";const t=document.createElement("video");t.muted=!0,t.disablePictureInPicture=!0,Lo()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.$videoElement=t,this.$canvasElement=null,this.canvasContext=null,this.mediaStream=null,this.vwriter=null,this.awriter=null,this.trackGenerator=null,this.audioTrackGenerator=null,this.fixChromeVideoFlashBug(),this.fixMobileAutoFullscreen(),this.resize(),this.eventListenList=[],this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.progressProxyDestroy=null,this.checkVideoCanplayTimeout=null,this.visibilityChangePlayTimeout=null,this.pauseDelayTimeout=null,this.replayTimeout=null,this.detectAndFixStuckPlaybackStartTime=null;const i=Oa();this.supportVideoFrameCallbackHandle=null;const{proxy:s}=this.player.events,r=s(this.$videoElement,"canplay",(()=>{this.player.debugLog("Video","canplay"),this.player.isDestroyedOrClosed()||(this.canplayReceived=!0,this._delayPlay?(this.clearCheckVideoCanplayTimeout(),this._play(),Oa()?this.supportVideoFrameCallbackHandle||(this.player.debugLog("Video","support requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.debugWarn("Video","not support requestVideoFrameCallback and use timeupdate event to update stats")):this.$videoElement.paused&&(this.player.isMSEPlaybackRateChangePause?(this.player.debugLog("Video",`canplay and video is paused and isMSEPlaybackRateChangePause is ${this.player.isMSEPlaybackRateChangePause} so next try to play`),this.player.isMSEPlaybackRateChangePause=!1,this._play()):this.player.isMSECurrentMoreThanBufferedPause?(this.player.debugLog("Video",`canplay and video is paused and isMSECurrentMoreThanBufferedPause is ${this.player.isMSECurrentMoreThanBufferedPause} so next try to play`),this.player.isMSECurrentMoreThanBufferedPause=!1,this._play()):(this.player.debugWarn("Video","canplay and video is paused and try to play"),this._play())))})),o=s(this.$videoElement,"waiting",(()=>{this.player.debugLog("Video","waiting")})),a=s(this.$videoElement,"loadedmetadata",(()=>{this.player.debugLog("Video","loadedmetadata")})),n=s(this.$videoElement,"timeupdate",(t=>{if(!this.player.isDestroyedOrClosed()){if(xa(i)){const t=parseInt(1e3*this.getCurrentTime(),10);if(e.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc())this.player.emit(yt.timeUpdate,t),e.handleRender(),e.updateStats({fps:!0,ts:t,dts:t}),this.player.updateCurrentPts(t);else if(Ca(this.player._opt.useMSE)&&xa(this.player._opt.mseUseCanvasRender))if(this.player.mseDecoder){let e=parseInt(1e3*this.getCurrentTime(),10)+(this.player.mseDecoder.firstRenderTime||0);this.player.updateCurrentPts(e)}else if(this.player._opt.mseDecoderUseWorker){let e=parseInt(1e3*this.getCurrentTime(),10)+(this.player._mseWorkerData.firstRenderTime||0);this.player.updateCurrentPts(e)}this.doAddContentToWatermark()}this.player.isMseDecoderUseWorker()&&(this.player.decoderWorker.updateVideoTimestamp(this.getCurrentTime()),this._handleUpdatePlaybackRate())}})),l=s(this.$videoElement,"error",(e=>{if(!this.$videoElement.error)return void this.player.debugError(this.TAG_NAME,"on error",e);let t={};if(this.player.isUseMSE()&&(t=this.player.getMseMineType()),this.player.debugError("Video","Error Code "+this.$videoElement.error.code+" "+cr[this.$videoElement.error.code]+"; Details: "+this.$videoElement.error.message+"; Video Info: "+JSON.stringify(this.videoInfo)+"; Mse Mine Type: "+t.video+"; "),this.player.isUseMSE()){this.$videoElement.error.code;const e=this.$videoElement.error.message;-1!==e.indexOf(ur)&&(this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc=!0),-1!==e.indexOf(pr)&&(this.player.isMSEAudioDecoderError=!0)}this.player.isHlsCanVideoPlay()})),d=s(this.$videoElement,"stalled",(()=>{this._detectAndFixStuckPlayback(!0)}));if(this.progressProxyDestroy=s(this.$videoElement,"progress",(()=>{this._detectAndFixStuckPlayback()})),this.eventListenList.push(r,o,n,l,a,d),this.player.isUseMSE()){const e=s(this.$videoElement,hs,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"ratechange and video is paused and sent isMSEPlaybackRateChangePause true"),this.player.isMSEPlaybackRateChangePause=!0)}));this.eventListenList.push(e),this.player.on(yt.visibilityChange,(e=>{e&&(this.visibilityChangePlayTimeout=setTimeout((()=>{if(this.clearVisibilityChangePlayTimeout(),this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getBufferMaxDelayTime()&&(this.player.debugLog(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.player.debugLog("Video","init")}async destroy(){if(super.destroy(),this.clearCheckVideoCanplayTimeout(),this.clearReplayTimeout(),this.clearVisibilityChangePlayTimeout(),this.clearPauseDelayTimeout(),this._cancelVideoFrameCallback(),this._removeProgressProxyDestroy(),this.eventListenList.length&&(this.eventListenList.forEach((e=>{e()})),this.eventListenList=[]),this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="none",e.style.transform="none"}if(this.$canvasElement&&(this.$canvasElement.height=0,this.$canvasElement.width=0,this.$canvasElement=null),this.canvasContext=null,this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),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.audioTrackGenerator&&(this.audioTrackGenerator.stop(),this.audioTrackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.awriter&&(await this.awriter.close(),this.awriter=null),this._delayPlay=!1,this.mediaStream&&(this.mediaStream.getTracks().forEach((e=>e.stop())),this.mediaStream=null),this.off(),this.player.debugLog("Video","destroy")}_createScreenShotCanvas(){const e=document.createElement("canvas");this.$canvasElement=e,this.canvasContext=e.getContext("2d"),this.canvasContext.imageSmoothingEnabled=!0,this.canvasContext.imageSmoothingEnabled&&(this.canvasContext.imageSmoothingQuality="high")}bindMediaStream(){if(this.player.canVideoTrackWritter()&&Go()&&Wo()&&!this.mediaStream){this.player.debugLog(this.TAG_NAME,"bindMediaStream"),this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),this.player.useVideoPlayAudio()&&(this.audioTrackGenerator=new MediaStreamTrackGenerator({kind:"audio"}),this.awriter=this.audioTrackGenerator.writable.getWriter());const e=[this.trackGenerator];this.audioTrackGenerator&&e.push(this.audioTrackGenerator),this.mediaStream=new MediaStream(e),this.$videoElement.srcObject=this.mediaStream,this.vwriter=this.trackGenerator.writable.getWriter()}}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog("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=yo(),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(yt.timeUpdate,e),xa(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(yt.timeUpdate,i),xa(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.videoInfo.encTypeCode||this.player.isOldHls()||(e.encTypeCode=xt),this.updateVideoInfo(e)}this.player.updateStats({fps:!0,ts:i,dts:i}),this.player.updateCurrentPts(i),this.doAddContentToWatermark()}else if(Ca(this.player._opt.useMSE)&&xa(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=Do(),t=Lo();(e||t)&&(this.player.debugLog("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"))}_detectAndFixStuckPlayback(e){const t=this.$videoElement,i=t.buffered,s=t.readyState;if(this.player.debugLog(this.TAG_NAME,`_detectAndFixStuckPlayback() and isStalled is ${e} ,canplayReceived is ${this.canplayReceived} ,videoReadyState is ${s} and bufferedLength is ${i.length} and startTime is ${i.length>0?i.start(0):"null"} and currentTime is ${t.currentTime}`),e||xa(this.canplayReceived)||s<2){if(i.length>0&&t.currentTime=1e3*this.player._opt.mseWaitVideoCanplayTimeout&&(this.player.debugWarn(this.TAG_NAME,`_detectAndFixStuckPlayback() and video is stuck and currentTime is ${t.currentTime} , diff is ${e} and timeout`),this.player.emit(vt.mseWaitVideoCanplayTimeout,e))}}else this._removeProgressProxyDestroy()}_removeProgressProxyDestroy(){this.progressProxyDestroy&&(this.player.debugLog(this.TAG_NAME,"_removeProgressProxyDestroy()"),this.progressProxyDestroy(),this.progressProxyDestroy=null),this.detectAndFixStuckPlaybackStartTime=null}_isNeedAddBackDropFilter(){const e=xo().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.debugLog("Video",`play and readyState: ${e}`),0===e)return this.player.debugLog("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()&&xa(this.isPlaying())){const e=this._getBufferStore();this.player.debugWarn("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.debugLog("Video","_play success"),this.isPlaying()?(this.player.emit(yt.removeLoadingBgImage),this.isRetryPlayingTimes=0,this.isRetryPlaying=!1):this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100)})).catch((e=>{this.player.isDestroyedOrClosed()?this.player.debugLog("Video","_play error and player is isDestroyedOrClosed and return"):(this.player.debugLog("Video",`_play error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debugError("Video","_play error",e),this.isRetryPlaying=!1,this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100))}))}_replay(){if(!this.isPlaying()&&xa(this.player.isDestroyedOrClosed())&&xa(this.isRetryPlaying)){if(this.isRetryPlaying=!0,this.isRetryPlayingTimes>=3){let e="";return void(this.player.isWebrtcH264()?(e=`_replay(webrtc H264) then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error`,this.player.debugError("Video",e),this.player.emitError(vt.videoElementPlayingFailedForWebrtc,e)):(e=`_replay then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error to use canvas render`,this.player.debugError("Video",e),this.player.emitError(vt.videoElementPlayingFailed,e)))}this.player.debugWarn("Video",`_play then but not playing and retry play and isRetryPlayingTimes is ${this.isRetryPlayingTimes}`),this._play(),this.isRetryPlayingTimes++}else this.player.debugLog("Video",`_replay() and isPlaying is ${this.isPlaying()} and isRetryPlaying is ${this.isRetryPlaying} and isDestroyedOrClosed is ${this.player.isDestroyedOrClosed()} and return;`)}pause(e){this.player.debugLog(this.TAG_NAME,"pause and isNow is "+e),this.isPlaying()&&(e?(this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()):this.pauseDelayTimeout=setTimeout((()=>{this.clearPauseDelayTimeout(),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,s){if(!this._canScreenshot())return this.player.debugWarn("Video",`screenshot failed, video is not ready and stats is ${this._getVideoReadyState()}`),null;e=e||yo(),s=s||Tt.download;let r=.92;!es[t]&&Tt[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=this.$videoElement;this.$canvasElement||this._createScreenShotCanvas();let a=this.$canvasElement;a.width=o.videoWidth,a.height=o.videoHeight,this.canvasContext.drawImage(o,0,0,a.width,a.height);const n=es[t]||es.png,l=a.toDataURL(n,r);if(this.canvasContext.clearRect(0,0,a.width,a.height),a.width=0,a.height=0,s===Tt.base64)return l;{const t=go(l);if(s===Tt.blob)return t;if(s===Tt.download){const i=n.split("/")[1];dn(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{if(aa(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debugWarn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||yo(),e.format=e.format?es[e.format]:es.png,e.quality=Number(e.quality)||.92,e.type=e.type||Tt.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,Ko(o,e).then((i=>{if(e.type===Tt.base64)t(o);else{const s=go(i);if(e.type===Tt.blob)t(s);else if(e.type===Tt.download){t();const i=e.format.split("/")[1];dn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(aa(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debugWarn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||yo(),e.format=e.format?es[e.format]:es.png,e.quality=Number(e.quality)||.92,e.type=e.type||Tt.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,Qo(o,e).then((i=>{if(e.type===Tt.base64)t(o);else{const s=go(i);if(e.type===Tt.blob)t(s);else if(e.type===Tt.download){t();const i=e.format.split("/")[1];dn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotByCurrentWatermark(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.debugWarn("Video","render() error, video is paused and readyState is "+e),4===e&&xa(this.isRenderRetryPlaying)){if(this.isRenderRetryPlaying=!0,this.isRenderRetryPlayingTimes>3){const t="render() error, video is paused and readyState is "+e+", retry times is "+this.isRenderRetryPlayingTimes+", emit error and use canvas render";return this.player.debugError("Video",t),void this.player.emitError(vt.videoElementPlayingFailed,t)}this.$videoElement.play().then((()=>{this.isRenderRetryPlayingTimes=0,this.isRenderRetryPlaying=!1,this.player.debugLog("Video","render() video is paused and replay success")})).catch((e=>{this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes++,this.player.debugLog("Video",`_play error render() error, video is paused and replay error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debugError("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),ga(e.videoFrame);else if(e.output){let s=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=yo());const t=yo();t-this.prevAiFaceDetectTime>this.player._opt.aiFaceDetectInterval&&(s=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=yo());const t=yo();t-this.prevAiObjectDetectTime>this.player._opt.aiObjectDetectInterval&&(s=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=yo());const t=yo();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.debugLog("Video","render() and ai occlusion detect result is true"),this.player.emit(yt.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(yt.aiImageDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debugLog("Video",`render() and ai image detect result type is ${t.type} and drop`)}try{const r=(t=s,i={format:"I420",codedWidth:this.videoInfo.width,codedHeight:this.videoInfo.height,timestamp:1e3*e.ts},new VideoFrame(t,i));this.vwriter.write(r),ga(r)}catch(e){this.player.debugError("Video","render error",e),this.player.emitError(vt.wasmUseVideoRenderError,`code is ${e.code} and message is ${e.message}`)}}this.player.updateCurrentPts(e.ts||0),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}else this.player.debugWarn("Video","render and this.vwriter is null");var t,i}_resize(){this.player.debugLog("Video","_resize()");const e=this.player._opt,t=e.rotate,i=this.player.getShowVideoRect();let s=i.width,r=i.height;this.$videoElement.width=s,this.$videoElement.height=r,this.$videoElement.style.width=s+"px",this.$videoElement.style.height=r+"px",270!==t&&90!==t||(this.$videoElement.width=r,this.$videoElement.height=s,this.$videoElement.style.width=r+"px",this.$videoElement.style.height=s+"px");let o=(s-this.$videoElement.width)/2,a=(r-this.$videoElement.height)/2,n="contain";xa(e.isResize)&&(n="fill"),e.isFullResize&&(n="none");let l="";"none"===e.mirrorRotate&&t&&(l+=" rotate("+t+"deg)"),"level"===e.mirrorRotate?l+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(l+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit=n),this.$videoElement.style.transform=l,this.$videoElement.style.padding="0",this.$videoElement.style.left=o+"px",this.$videoElement.style.top=a+"px"}getType(){return J}getCurrentTime(){return this.$videoElement.currentTime}isPlaying(){return this.$videoElement&&xa(this.$videoElement.paused)&&xa(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}isVideoPlaying(){return this.isPlaying()}_canScreenshot(){return this.$videoElement&&this.$videoElement.readyState>=1}getPlaybackQuality(){let e=null;if(this.$videoElement){if(ca(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:yo()};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)}clearReplayTimeout(){this.replayTimeout&&(clearTimeout(this.replayTimeout),this.replayTimeout=null)}clearVisibilityChangePlayTimeout(){this.visibilityChangePlayTimeout&&(clearTimeout(this.visibilityChangePlayTimeout),this.visibilityChangePlayTimeout=null)}clearPauseDelayTimeout(){this.pauseDelayTimeout&&(clearTimeout(this.pauseDelayTimeout),this.pauseDelayTimeout=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,t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),r>o)this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debugWarn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(vt.mediaSourceBufferedIsZeroError,"video.buffered is empty");if(s>1){const t=this._getPlaybackRate(i-s);e.playbackRate!==t&&(this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${t} `),e.playbackRate=t)}}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?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,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debugWarn(this.TAG_NAME,`checkVideoSourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debugWarn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}getBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}getReadyStateInited(){return this._getVideoReadyState()>=1}}class mn extends un{constructor(e){super(e),this.TAG_NAME="CanvasPlaybackLoader",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(yt.playbackPause,(e=>{e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()})),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){this._stopSync(),this.clear(),this._firstTimestamp=null,this.playing=!1,this.playbackRate=1,this.fps=1,this.preFps=1,this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}_initCanvasRender(){this.player._opt.useWCS?(this.renderType=ci,Fa()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useWebGPU?(this.renderType=fi,this._initContextGPU()):(this.renderType=ui,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),ga(e);else if(ca(e.createImageBitmap))try{e.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),ga(e)}))}catch(e){}else this.context2D.drawImage(e,0,0,this.$videoElement.width,this.$videoElement.height),ga(e);else if(this.getCanvasType()===ui)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debugError(this.TAG_NAME,`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}else if(this.getCanvasType()===fi)try{if(!this.webGPURender)return void this.player.debugWarn(this.TAG_NAME,"doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debugError(this.TAG_NAME,`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.debugLog(this.TAG_NAME,"initFps, has calc fps"):(this.preFps=Ao(this.player.playback.fps,1,100),this.fps=this.preFps)}setFps(e){e!==this.fps?(e>100&&this.player.debugWarn(this.TAG_NAME,"setFps max",e),e<0&&this.player.debugWarn(this.TAG_NAME,"setFps min",e),this.fps=Ao(e,1,100),this.player.debugLog(this.TAG_NAME,`setFps ${this.preFps} -> ${this.fps}`),this.player.playback.isUseFpsRender&&this._sync()):this.player.debugLog(this.TAG_NAME,`setFps, same fps ${e}`)}setStreamFps(e){this.player.debugLog(this.TAG_NAME,"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.debugWarn(this.TAG_NAME,`buffer size is ${this.bufferSize}`),this._doPlay()),this.bufferList.push(t),!this._hasCalcFps){const e=va(this.bufferList);null!==e&&e!==this.preFps&&(this.player.debugLog(this.TAG_NAME,`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.debugLog(this.TAG_NAME,"rate is",t),t<=1?this.setFps(this.preFps):(this.setFps(this.fps+Math.floor(t*this.playbackRate)),this.player.debugWarn(this.TAG_NAME,"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&&ga(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 gn{constructor(e){return new(gn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE?e.mseUseCanvasRender?pn:fn:e.isHls&&xa(e.supportHls265)||e.isWebrtc&&xa(e.isWebrtcH265)?e.useCanvasRender?pn:fn:e.isAliyunRtc?fn:e.useWCS?e.playType===w?mn:!e.useOffscreen&&e.wcsUseVideoRender?fn:pn:e.playType===w?mn:e.wasmUseVideoRender&&!e.useOffscreen?fn:pn}}class yn extends o{constructor(e){super(),this.bufferList=[],this.player=e,this.$audio=null,this.scriptNode=null,this.workletProcessorNode=null,this.workletWorkerCloseTimeout=null,this.hasInitScriptNode=!1,this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:Mr}),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._prevVolume=null,this.playing=!1,this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1,this.hasAudio=!1,this.audioResumeStateTimeout=null,this.audioContextContextResumeLock=!1}async destroy(){return this.closeAudio(),this.resetInit(),this.clearAudioResumeStateTimeout(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.disconnect(),this.scriptNode.onaudioprocess=po,this.scriptNode=null),await this._destroyWorklet(),this.workletProcessorNode&&(this.workletProcessorNode.disconnect(),this.workletProcessorNode.port.onmessage=po,this.workletProcessorNode=null),this.audioBufferSourceNode&&(this.audioBufferSourceNode.stop(),this.audioBufferSourceNode=null),this.mediaStreamAudioDestinationNode&&(this.mediaStreamAudioDestinationNode.disconnect(),this.mediaStreamAudioDestinationNode=null),this.hasInitScriptNode=!1,this._prevVolume=null,this.audioContextContextResumeLock=!1,this.off(),!0}_destroyWorklet(){return new Promise(((e,t)=>{this.workletProcessorNode?(this.workletProcessorNode.port.postMessage({type:"destroy"}),this.workletWorkerCloseTimeout=setTimeout((()=>{this.player.debugLog(this.TAG_NAME,"send close and wait 10ms destroy directly"),this.workletWorkerCloseTimeout&&(clearTimeout(this.workletWorkerCloseTimeout),this.workletWorkerCloseTimeout=null),e()}),10)):e()}))}resetInit(){this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1}getAudioInfo(){return this.audioInfo}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encTypeCode=e.encTypeCode,this.audioInfo.encType=Ut[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(yt.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value||this.isStateSuspended()}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){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=Ao(e,0,1),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(yt.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(yt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(yt.mute,!0),this.gainNode.gain.value=e,this.player.emit(yt.volumechange,this.player.volume),this.player.emit(yt.volume,this.player.volume),this._prevVolume=e))}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){if(e&&this.isStateSuspended()){if(this.audioContextContextResumeLock)return;this.audioContextContextResumeLock=!0,this.audioContext.resume().then((()=>{this.player.emit(yt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})})).finally((()=>{this.audioContextContextResumeLock=!1})),this.audioResumeStateTimeout=setTimeout((()=>{this.clearAudioResumeStateTimeout(),this.audioContextContextResumeLock=!1,this.isStateSuspended()&&this.player.emit(yt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})}),1e3)}}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 An{constructor(e,t,i,s){this.player=e,this.audio=t,this.channel=i,this.bufferSize=s}destroy(){this.buffer=null,this.channel=null}extract(e,t){let i=this.provide(t);for(let t=0;t=a){try{for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:0;const s=2*(t=t||0);i>=0||(i=(e.length-s)/2);const r=2*i;this.ensureCapacity(i+this._frameCount);const o=this.endIndex;this.vector.set(e.subarray(s,s+r),o),this._frameCount+=i}putBuffer(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]: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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=2*t,s=this.startIndex;e.set(this._vector.subarray(s,s+i)),this.receive(t)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=this.startIndex+2*t,r=2*i;e.set(this._vector.subarray(s,s+r))}ensureCapacity(){const e=parseInt(2*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0));if(this._vector.length0&&void 0!==arguments[0]?arguments[0]:0;this.ensureCapacity(this._frameCount+e)}rewind(){this._position>0&&(this._vector.set(this._vector.subarray(this.startIndex,this.endIndex)),this._position=0)}}class vn{constructor(e){e?(this._inputBuffer=new bn,this._outputBuffer=new bn):this._inputBuffer=this._outputBuffer=null}destroy(){this.clear(),this._outputBuffer&&(this._outputBuffer.destroy(),this._outputBuffer=null),this._inputBuffer&&(this._inputBuffer.destroy(),this._inputBuffer=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 _n extends vn{constructor(e){super(e),this.reset(),this._rate=1}destroy(){super.destroy()}set rate(e){this._rate=e}reset(){this.slopeCount=0,this.prevSampleL=0,this.prevSampleR=0}clone(){const e=new _n;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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e)return 0;const t=this._inputBuffer.vector,i=this._inputBuffer.startIndex,s=this._outputBuffer.vector,r=this._outputBuffer.endIndex;let o=0,a=0;for(;this.slopeCount<1;)s[r+2*a]=(1-this.slopeCount)*this.prevSampleL+this.slopeCount*t[i],s[r+2*a+1]=(1-this.slopeCount)*this.prevSampleR+this.slopeCount*t[i+1],a+=1,this.slopeCount+=this._rate;if(this.slopeCount-=1,1!==e)e:for(;;){for(;this.slopeCount>1;)if(this.slopeCount-=1,o+=1,o>=e-1)break e;const n=i+2*o;s[r+2*a]=(1-this.slopeCount)*t[n]+this.slopeCount*t[n+2],s[r+2*a+1]=(1-this.slopeCount)*t[n+1]+this.slopeCount*t[n+3],a+=1,this.slopeCount+=this._rate}return this.prevSampleL=t[i+2*e-2],this.prevSampleR=t[i+2*e-1],a}}const wn=function(){};class Sn extends class{constructor(e){this._pipe=e}destroy(){}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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;for(;this.outputBuffer.frameCount2&&void 0!==arguments[2]?arguments[2]:wn;super(t),this.callback=i,this.sourceSound=e,this.historyBufferSize=22050,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}destroy(){this.clear(),this.sourceSound.destroy(),this.sourceSound=null,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}get position(){return this._position}set position(e){if(e>this._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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]: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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.fillOutputBuffer(this.outputBufferPosition+t);const i=Math.min(t,this.outputBuffer.frameCount-this.outputBufferPosition);this.outputBuffer.extract(e,this.outputBufferPosition,i);const s=this.outputBufferPosition+i;return this.outputBufferPosition=Math.min(this.historyBufferSize,s),this.outputBuffer.receive(Math.max(s-this.historyBufferSize,0)),this._position+=i,i}handleSampleData(e){this.extract(e.data,4096)}clear(){super.clear(),this.outputBufferPosition=0}}const En=[[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]],Tn=-10/1.5;class kn extends vn{constructor(e){super(e),this._quickSeek=!0,this.midBufferDirty=!1,this.midBuffer=null,this.refMidBuffer=null,this.overlapLength=0,this.autoSeqSetting=!0,this.autoSeekSetting=!0,this._tempo=1,this.setParameters(44100,0,0,8)}destroy(){this.clear(),super.destroy()}clear(){super.clear(),this.clearMidBuffer(),this.refMidBuffer=null}clearMidBuffer(){this.midBufferDirty&&(this.midBufferDirty=!1),this.midBuffer=null}setParameters(e,t,i,s){e>0&&(this.sampleRate=e),s>0&&(this.overlapMs=s),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(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;e=this.sampleRate*t/1e3,e=e<16?16:e,e-=e%8,this.overlapLength=e,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+Tn*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 kn;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,s=0;for(this.preCalculateCorrelationReferenceStereo(),e=0,t=Number.MIN_VALUE;st&&(t=i,e=s);return e}seekBestOverlapPositionStereoQuick(){let e,t,i,s,r,o=0;for(this.preCalculateCorrelationReferenceStereo(),t=Number.MIN_VALUE,e=0,s=0,r=0;o<4;o+=1){let a=0;for(;En[o][a]&&(r=s+En[o][a],!(r>=this.seekLength));)i=this.calculateCrossCorrelationStereo(2*r,this.refMidBuffer),i>t&&(t=i,e=r),a+=1;s=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 s=this._inputBuffer.startIndex+2*(e+this.seekWindowLength-this.overlapLength);this.midBuffer.set(this._inputBuffer.vector.subarray(s,s+2*this.overlapLength)),this.skipFract+=this.nominalSkip,i=Math.floor(this.skipFract),this.skipFract-=i,this._inputBuffer.receive(i)}}}const Ln=function(e,t){return(e>t?e-t:t-e)>1e-10};class Cn{constructor(){this.transposer=new _n(!1),this.stretch=new kn(!1),this._inputBuffer=new bn,this._intermediateBuffer=new bn,this._outputBuffer=new bn,this._rate=0,this._tempo=0,this.virtualPitch=1,this.virtualRate=1,this.virtualTempo=1,this.calculateEffectiveRateAndTempo()}destroy(){this.clear(),this._inputBuffer.destroy(),this._intermediateBuffer.destroy(),this._outputBuffer.destroy(),this._inputBuffer=null,this._intermediateBuffer=null,this._outputBuffer=null}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,Ln(this._tempo,e)&&(this.stretch.tempo=this._tempo),Ln(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 xn{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 Sn(i,this.soundTouch)}destroy(){this.filter&&(this.filter.destroy(),this.filter=null),this.soundTouch&&(this.soundTouch.destroy(),this.soundTouch=null)}setRate(e){e!==this.soundTouch.rate&&(this.soundTouch.tempo=e)}provide(e){let t=new Float32Array(2*e),i=this.filter.extract(t,e),s=new Float32Array(i),r=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=Rs,this.player.debugLog("AudioContext","destroy"),!0}isAudioPlaying(){return this.$audio&&xa(this.$audio.paused)&&xa(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.debugLog("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.debugLog("AudioContext",`play and readyState: ${e}`),!(0!==e||na()&&Do()))return this.player.debugWarn("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.debugLog("AudioContext","_audioElementPlay success"),setTimeout((()=>{this.isAudioPlaying()||(this.player.debugWarn("AudioContext","play failed and retry play"),this._audioElementPlay())}),100),this.isAudioPlaying()&&(this.player.debugLog("AudioContext","play success and remove document click event listener"),document.removeEventListener("click",this._audioElementPlay.bind(this)))})).catch((e=>{this.player.debugError("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===Is}getBufferListDuration(){return this.bufferList.length*this.oneBufferDuration}isMoreThanMinBufferDuration(){return this.getBufferListDuration()>=100*this.playbackRate}initProcessor(){this.processor=new An(this.player,this,this.audioInfo.channels,this.audioBufferSize),this.rateProcessor=new xn(this.player,this,this.processor)}getAutoAudioEngineType(){let e=this.player._opt.audioEngine||Rs;const t=()=>{e=na()&&Lo()?Is:(Do()&&this.player._opt.supportLockScreenPlayAudio||Aa()&&this.supportAudioWorklet(),Rs)};return this.player._opt.audioEngine?this.player._opt.audioEngine===Ds&&Aa()&&this.supportAudioWorklet()?e=Rs:this.player._opt.audioEngine===Is?e=Is:this.player._opt.audioEngine===Rs?e=Rs:t():t(),e}getAudioBufferSizeByType(){const e=this.engineType;this.player._opt.hasVideo;const t=this.player._opt.weiXinInAndroidAudioBufferSize;return e===Ds?1024:e===Is?t||4800:1024}supportAudioWorklet(){return this.audioContext&&this.audioContext.audioWorklet&&"function"==typeof this.audioContext.audioWorklet.addModule}initScriptNode(){this.playing=!0,this.hasInitScriptNode||(this.initProcessor(),this.engineType===Ds?this.initWorkletScriptNode():this.engineType===Is?this.initIntervalScriptNode():this.engineType===Rs&&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||xa(this.playing)||this.isMute)return void(this.playing&&xa(this.isMute)&&this.player.debugLog("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 s=t[0][0],r=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.debugLog("AudioContext","initWorkletScriptNode() player is destroyed");if(!this.audioContext)return void this.player.debugWarn("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.debugError("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.debugError("AudioContext","workletProcessorNode is null")})})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(this.workletUrl),this.workletUrl=null,this.clearWorkletUrlTimeout=null}),oe)}tierDownToProcessScript(){this.player.debugLog("AudioContext","tierDownToProcessScript"),this.engineType=Rs,this.audioBufferSize=this.getAudioBufferSizeByType(),this.initProcessScriptNode(),this.audioElementPlay()}handleScriptNodeCallback(e,t){let i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t=t||po;let r=e.length;s&&(i=e,r=this.audioBufferSize);const o=this.audioInfo.channels;if(this.playing&&this.isMoreThanMinBufferDuration()){if(this.player._opt,this.player.openSyncAudioAndVideo()&&Ca(this.player.visibility)){this.calcPlaybackRateBySync();const r=this.player.getAudioSyncVideoDiff();if(r>this.player._opt.syncAudioAndVideoDiff){const a=this.player.getCurrentVideoAndAudio();return this.player.debugWarn("AudioContext",`audioSyncVideoOption more than diff :${r},\n and video is ${a.video} ,\n and audio is ${a.audio} , waiting and bufferList is ${this.bufferList.length}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t()}}let a=this._provide(r);if(0===a.size)return xa(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debugWarn("AudioContext",`bufferList size is ${this.bufferList.length} outputBufferLength is ${r},and bufferItem.size is 0, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t();a&&a.ts&&(this.player.audioTimestamp=a.ts),s?i.port.postMessage({message:"data",buffer:a}):this.fillScriptNodeOutputBuffer(e,o,a),t()}else 0===this.bufferList.length&&this.playing&&xa(this.isMute)&&xa(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debugWarn("AudioContext",`bufferList size is 0 and outputBufferLength is ${r}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),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),s=e.getChannelData(1);i?0===i.size?(t.fill(0),s.fill(0)):(t.set(i.left),s.set(i.right)):(t.fill(0),s.fill(0))}}play(e,t){this.isMute||(this.hasInitScriptNode?(this.hasAudio=!0,this.player.latestAudioTimestamp=t,this.bufferList.push({buffer:e,ts:t}),xa(this.player.openSyncAudioAndVideo())&&this.calcPlaybackRateByBuffer()):this.player.debugWarn("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.debugWarn("AudioContext",`bufferList length ${this.bufferList.length} more than ${e}, and drop`),void this.clear();const t=this.player.getAudioSyncVideoDiff();if(this.getEngineType()===Is){if(t<-this.player._opt.syncAudioAndVideoDiff){this.player.debugWarn("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.debugLog("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.debugLog("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.debugLog("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 s=Math.floor(t/this.oneBufferDuration),r=Math.floor(i/this.oneBufferDuration);if(this.bufferList.length>r)return this.player.debugWarn("AudioContext",`bufferList length ${this.bufferList.length} more than ${r}, and drop`),void this.clear();this.getEngineType()!==Is&&(this.bufferList.length>s?(e=this.defaultPlaybackRate+.2,this.player.debugLog("AudioContext",`bufferList length ${this.bufferList.length} more than ${s}, speed up, playbackRate is ${e}`)):this.bufferList.length0?this.player.emit(yt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(yt.mute,!0),this.$video.volume=e,this.player.emit(yt.volumechange,this.player.volume),this.player.emit(yt.volume,this.player.volume),this._prevVolume=e))}clear(){}play(e,t){const i=this.player.video.awriter;if(i)if(e.close)try{i.write(e),ya(e)}catch(e){this.player.debugError("Video","play audio error",e)}else try{const s=function(e,t){const i={...t,format:"f32-planar",data:new Float32Array(0)};if(i.numberOfFrames=e[0].length,1===e.length)i.data=new Float32Array(e[0]);else if(2===e.length){const t=new Float32Array(e[0].length+e[1].length);t.set(e[0],0),t.set(e[1],e[0].length),i.data=t}return new AudioData(i)}(e,{sampleRate:Mr,numberOfChannels:this.audioInfo.channels,timestamp:1e3*t});i.write(s),ya(s)}catch(e){this.player.debugError("Video","play audio error",e)}else this.player.debugWarn("Audio","play and this.awriter is null")}pause(){}resume(){}getEngineType(){return"audio"}isPlaybackRateSpeed(){return!1}setRate(){}initScriptNode(){}initScriptNodeDelay(){}audioEnabled(){this.mute(!1)}getAudioBufferSize(){return 2048}}class In extends Dn{constructor(e){super(e),this.delayTimeout=null,this.player.on(yt.playbackPause,(e=>{this.listenPlaybackPause(e)})),this.player.debugLog("AudioPlaybackContext","init")}async destroy(){return this.delayTimeout&&(clearTimeout(this.delayTimeout),this.delayTimeout=null),await super.destroy(),this.player.debugLog("AudioPlaybackLoader","destroy"),!0}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.debugLog("AudioPlaybackContext","setRate",e),this.defaultPlaybackRate=e,this.updatePlaybackRate(e))}}class Pn extends Dn{constructor(e){super(e),this.TAG_NAME="AudioPlayerLoader",this.isAudioPlayer=!0,this.player.debugLog(this.TAG_NAME,"init")}async destroy(){return await super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy"),!0}play(e,t){xa(this.playing)||super.play(e,t)}pause(){this.player.debugLog(this.TAG_NAME,"pause"),this.playing=!1,this.clear()}resume(){this.player.debugLog(this.TAG_NAME,"resume"),this.playing=!0}}class Bn extends o{constructor(e){super(),this.TAG_NAME="AudioWebrtcPlayerLoader",this.$video=new Audio,this.player=e,this.init=!1,this._prevVolume=null,this.eventsDestroy=[],this._handleDocumentClickPlay=this._handleClickPlay.bind(this),this._initAudioEvents(),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){return this.resetInit(),this.off(),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this._prevVolume=null,this.$video&&(this.$video.pause(),this.$video.srcObject=null,this.$video=null),this.player.debugLog(this.TAG_NAME,"destroy"),!0}_initAudioEvents(){const{proxy:e}=this.player.events,t=e(this.$video,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t})}));this.eventsDestroy.push(t)}resetInit(){this.init=!1}_handleClickPlay(){this.$video&&(this.$video.play(),document.removeEventListener("click",this._handleDocumentClickPlay))}bindStream(e){this.$video.srcObject=e,this.$video.volume=1,this.$video.play().catch((e=>{this.player.debugWarn(this.TAG_NAME,"audio play error",e),document.addEventListener("click",this._handleDocumentClickPlay)}))}getEngineType(){return"audio"}get isPlaying(){return!0}get volume(){return Ca(this.$video.muted)?0:this.$video.volume}get isMute(){return 0===this.$video.volume||Ca(this.$video.muted)}mute(e){this.setVolume(e?0:this.player.lastVolume||.5)}setVolume(e){e=parseFloat(e),isNaN(e)||null===this.$video||(this.$video.muted&&(this.$video.muted=!1),e=Ao(e,0,1),Do()&&(this.$video.muted=0===e),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(yt.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(yt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(yt.mute,!0),this.$video.volume=e,this.player.emit(yt.volumechange,this.player.volume),this.player.emit(yt.volume,this.player.volume),this._prevVolume=e))}pause(){}resume(){}audioEnabled(){this.mute(!1)}}class Mn{constructor(e){return new(Mn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.playType===w?e.useMSE&&e.mseDecodeAudio?Rn:In:e.playType===_?e.isWebrtc?Bn:Pn:e.isHls&&xa(e.supportHls265)||e.isWebrtc&&xa(e.isWebrtcH265)||e.useMSE&&e.mseDecodeAudio||e.isAliyunRtc||e.useWCS&&e.wcsDecodeAudio||e.useWasm&&e.wasmPlayAudioUseVideoRender?Rn:Dn}}class Fn extends o{constructor(e){super(),this.player=e,this.playing=!1,this._requestAbort=!1,this._status=lr,this.writableStream=null,this.abortController=new AbortController,this.streamRate=wo((t=>{e.emit(yt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("FetchStream","init")}async destroy(){return this.abort(),await this._closeWritableStream(),this.off(),this._status=lr,this.streamRate=null,this.stopStreamRateInterval(),this.player.debugLog("FetchStream","destroy"),!0}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}async _closeWritableStream(){if(this.writableStream&&xa(this.writableStream.locked))try{await this.writableStream.close(),this.writableStream=null,this.player.debugLog("FetchStream","close writableStream success")}catch(e){this.player.debugLog("FetchStream","destroy and writableStream.close()",e)}}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player._times.streamStart=yo();const s=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,s).then((e=>{if(this._requestAbort)return this._status=lr,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return this.player.debugError("FetchStream",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),this.abort(),void this.emit(vt.fetchError,`fetch response status is ${e.status} and ok is ${e.ok}`);if(this.emit(yt.streamSuccess),this.startStreamRateInterval(),"undefined"!=typeof WritableStream)this.player.debugLog("FetchStream","use WritableStream() to read stream"),this.writableStream=new WritableStream({write:e=>this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debugLog("FetchStream","writableStream.write() and this.abortController.signal.aborted so return"),void(this._status=hr)):Ca(this._requestAbort)?(this.player.debugLog("FetchStream","writableStream.write() and this._requestAbort is true so return"),this._status=hr,void this.abort()):"string"!=typeof e?(this._status=dr,this.streamRate&&this.streamRate(e.byteLength),i.dispatch(e)):void this.player.debugWarn("FetchStream",`writableStream.write() and value is "${e}" string so return`),close:()=>{this._status=hr,i.close(),this.emit(yt.streamEnd,"fetch done")},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debugLog("FetchStream","writableStream.abort() and this.abortController.signal.aborted so return"),void(this._status=hr);i.close();const t=e.toString();-1===t.indexOf(_s)&&-1===t.indexOf(ws)&&e.name!==Ss&&(this.abort(),this.emit(vt.fetchError,e))}}),e.body.pipeTo(this.writableStream).catch((e=>{"AbortError"!==e.name&&this.player.debugLog("FetchStream","res.body.pipeTo() error",e.name,e.toString())}));else{this.player.debugLog("FetchStream","not support WritableStream and use getReader() to read stream");const t=e.body.getReader(),s=()=>{t.read().then((e=>{let{done:t,value:r}=e;return t?(this._status=hr,i.close(),void this.emit(yt.streamEnd,"fetch done")):this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debugLog("FetchStream","reader.read() and this.abortController.signal.aborted so return"),void(this._status=hr)):Ca(this._requestAbort)?(this.player.debugLog("FetchStream","reader.read() and this._requestAbort is true so return"),this._status=hr,void this.abort()):void("string"!=typeof r?(this._status=dr,this.streamRate&&this.streamRate(r.byteLength),i.dispatch(r),s()):this.player.debugWarn("FetchStream",`reader.read() and value is "${r}" string so return`))})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debugLog("FetchStream","reader.read().catch() and this.abortController.signal.aborted so return"),void(this._status=hr);i.close();const t=e.toString();-1===t.indexOf(_s)&&-1===t.indexOf(ws)&&e.name!==Ss&&(this.abort(),this.emit(vt.fetchError,e))}))};s()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(vt.fetchError,e))}))}abort(){if(this._requestAbort=!0,this.abortController)try{this.abortController.abort(),this.abortController=null,this.player.debugLog("FetchStream","abortController.abort() success")}catch(e){this.abortController=null,this.player.debugLog("FetchStream","abortController.abort() error",e)}}getStreamType(){return p}}class Un extends o{constructor(e){super(),this.TAG_NAME="FetchWorkerLoader",this.player=e,this.playing=!1,this.fetchWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.destroyResolve=null,this.decoderWorkerCloseTimeout=null,this.streamRate=wo((t=>{e.emit(yt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initFetchWorker(),e.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.fetchWorker?(this.player.debugLog(this.TAG_NAME,"send destroy"),this.fetchWorker.postMessage({cmd:st}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn(this.TAG_NAME,"send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)):(this._destroy(),setTimeout((()=>{e()}),0))}))}_destroy(){this.off(),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._stopStreamRateInterval(),this.streamRate=null,this.fetchWorker&&(this.fetchWorker.terminate(),this.fetchWorker.onmessage=null,this.fetchWorker=null),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.player.debugLog(this.TAG_NAME,"destroy")}_initFetchWorker(){const e=Ua(function(){function e(e){return!0===e||"true"===e}const t="The user aborted a request",i="AbortError",s="AbortError",r="fetch",o="destroy",a="destroyEnd",n="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(){var e;this.abort(),this.writableStream&&(!1===(e=this.writableStream.locked)||"false"===e)&&this.writableStream.close().catch((e=>{})),this.writableStream=null,this._status=c}fetchStream(r){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=Object.assign({signal:this.abortController.signal},{headers:o.headers||{}});fetch(r,a).then((r=>{if(this._requestAbort)return this._status=c,void r.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(r))return this.abort(),void postMessage({cmd:l,message:`fetch response status is ${r.status} and ok is ${r.ok}`});if(postMessage({cmd:h}),"undefined"!=typeof WritableStream)this.writableStream=new WritableStream({write:t=>{if(!(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted))return e(this._requestAbort)?(this._status=p,void this.abort()):void("string"!=typeof t&&(this._status=u,postMessage({cmd:n,buffer:t},[t.buffer])));this._status=p},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 r=e.toString();-1===r.indexOf(t)&&-1===r.indexOf(i)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}}),r.body.pipeTo(this.writableStream).catch((e=>{}));else{const o=r.body.getReader(),a=()=>{o.read().then((t=>{let{done:i,value:s}=t;return i?(this._status=p,void postMessage({cmd:d})):this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?void(this._status=p):e(this._requestAbort)?(this._status=p,void this.abort()):void("string"!=typeof s&&(this._status=u,postMessage({cmd:n,buffer:s},[s.buffer]),a()))})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=p);const r=e.toString();-1===r.indexOf(t)&&-1===r.indexOf(i)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}))};a()}})).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.abortController)try{this.abortController.abort(),this.abortController=null}catch(e){this.abortController=null}}};self.onmessage=t=>{const i=t.data;switch(i.cmd){case r:f.isChrome=e(i.isChrome),f.fetchStream(i.url,JSON.parse(i.options));break;case o:f.destroy(),f=null,postMessage({cmd:a})}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),oe),s.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case ot:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case lt:this.emit(yt.streamSuccess),this._startStreamRateInterval();break;case nt:t.close(),this.emit(yt.streamEnd,"fetch done");break;case at:t.close(),this.emit(vt.fetchError,i.message);break;case rt:this._destroy()}},this.fetchWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player._times.streamStart=yo(),this.fetchWorker.postMessage({cmd:it,url:e,isChrome:la(),options:JSON.stringify(t)})}getStreamType(){return p}}class On extends o{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=_t,this.wsUrl=null,this.requestAbort=!1,this.socketDestroyFnList=[],this.streamRate=wo((t=>{e.emit(yt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("WebsocketStream","init")}async destroy(){this._closeWebSocket(),this.stopStreamRateInterval(),this.wsUrl=null,this.off(),this.player.debugLog("WebsocketStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebSocket(e){const t=this.player,{events:{proxy:i},demux:s}=t,r=e.protocols||[];this.socket=new WebSocket(this.wsUrl,r),this.socket.binaryType="arraybuffer";const o=i(this.socket,"open",(()=>{this.player.debugLog("WebsocketStream","socket open"),this.socketStatus=wt,this.emit(yt.streamSuccess),this.player.emit(yt.websocketOpen),this.startStreamRateInterval()})),a=i(this.socket,"message",(e=>{"string"!=typeof e.data?(this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)):this.player.debugWarn("WebsocketStream",`websocket handle message message is "${e.data}" string so return`)})),n=i(this.socket,"close",(e=>{if(!this.player.isDestroyedOrClosed())return Ca(this.requestAbort)?(this.requestAbort=!1,void this.player.debugLog("WebsocketStream","socket close and requestAbort is true")):void(this.socketStatus!==Et?(this.player.debugLog("WebsocketStream",`socket close and code is ${e.code}`),1006===e.code&&this.player.debugError("WebsocketStream",`socket close abnormally and code is ${e.code}`),s.close(),this.socketStatus=St,this.player.emit(yt.websocketClose,e.code),this.emit(yt.streamEnd,e.code)):this.player.debugLog("WebsocketStream","socket close and status is error, so return"))})),l=i(this.socket,"error",(e=>{if(this.player.isDestroyedOrClosed())return;if(Ca(this.requestAbort))return this.requestAbort=!1,void this.player.debugLog("WebsocketStream","socket close and requestAbort is true");this.player.debugError("WebsocketStream","socket error",e),this.socketStatus=Et;const t=e.isTrusted?"websocket user aborted":"websocket error";this.emit(vt.websocketError,t),s.close(),this.player.debugLog("WebsocketStream","socket error:",t)}));this.socketDestroyFnList.push(o,a,n,l)}_closeWebSocket(){!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState?this.socket&&this.player.debugLog("WebsocketStream",`_closeWebSocket() socket is null or socket status is ${this.socket&&this.socket.readyState}`):(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socketDestroyFnList.forEach((e=>e())),this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.socketStatus=_t,this.streamRate=null}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debugWarn("WebsocketStream","websocket handle message demux is null so return")}fetchStream(e,t){this.player._times.streamStart=yo(),this.wsUrl=e,this._createWebSocket(t)}sendMessage(e){this.socket?this.socketStatus===wt?this.socket.send(e):this.player.debugError("WebsocketStream",`websocket send message error and socket status is ${this.socketStatus}`):this.player.debugError("WebsocketStream","websocket send message socket is null")}getStreamType(){return m}}class Nn extends o{constructor(e){super(),this.player=e,this.TAG_NAME="WebsocketWorkerLoader",this.wsUrl=null,this.socketStatus=_t,this.websocketWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.destroyResolve=null,this.decoderWorkerCloseTimeout=null,this.streamRate=wo((t=>{e.emit(yt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initWebsocketWorker(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.websocketWorker?(this.player.debugLog(this.TAG_NAME,"send destroy"),this._closeWebSocket(),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn(this.TAG_NAME,"send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),e()}),2e3)):(this._destroy(),e())}))}_destroy(){this.off(),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._stopStreamRateInterval(),this.streamRate=null,this.websocketWorker&&(this.websocketWorker.terminate(),this.websocketWorker.onmessage=null,this.websocketWorker=null),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.wsUrl=null,this.player.debugLog(this.TAG_NAME,"destroy")}_initWebsocketWorker(){const e=Ua(function(){function e(e){return!0===e||"true"===e}const t={fetch:"fetch",sendMessage:"sendMessage",destroy:"destroy",destroyEnd:"destroyEnd",buffer:"buffer",websocketError:"websocketError",websocketClose:"websocketClose",websocketOpen:"websocketOpen"};let i=new class{constructor(){this.socket=null,this.wsUrl=null,this.requestAbort=!1}destroy(){!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState||(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socket.onopen=null,this.socket.onclose=null,this.socket.onerror=null,this.socket.onmessage=null,this.socket=null}fetchStream(e,t){this.wsUrl=e,this._createWebSocket(t)}sendMessage(e){this.socket&&1===this.socket.readyState&&this.socket.send(e)}_createWebSocket(e){const t=e.protocols||[];this.socket=new WebSocket(this.wsUrl,t),this.socket.binaryType="arraybuffer",this.socket.onopen=this._handleWebsocketOpen.bind(this),this.socket.onclose=this._handleWebsocketClose.bind(this),this.socket.onerror=this._handleWebsocketError.bind(this),this.socket.onmessage=this._handleWebsocketMessage.bind(this)}_handleWebsocketOpen(){postMessage({cmd:t.websocketOpen})}_handleWebsocketClose(i){e(this.requestAbort)?this.requestAbort=!1:postMessage({cmd:t.websocketClose,code:i.code})}_handleWebsocketError(i){e(this.requestAbort)?this.requestAbort=!1:postMessage({cmd:t.websocketError,isTrusted:i.isTrusted})}_handleWebsocketMessage(e){if("string"==typeof e.data)return;const i=new Uint8Array(e.data);postMessage({cmd:t.buffer,buffer:i},[i.buffer])}};self.onmessage=e=>{const s=e.data;switch(s.cmd){case t.fetch:i.fetchStream(s.url,s.options);break;case t.destroy:i.destroy(),i=null,postMessage({cmd:t.destroyEnd});break;case t.send:i.sendMessage(s.message)}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),oe),s.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case pt:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case gt:this.player.debugLog(this.TAG_NAME,"socket open"),this.socketStatus=wt,this.emit(yt.streamSuccess),this.player.emit(yt.websocketOpen),this._startStreamRateInterval();break;case mt:if(this.player.isDestroyedOrClosed())return;if(this.socketStatus===Et)return void this.player.debugLog(this.TAG_NAME,"socket close and status is error, so return");this.player.debugLog(this.TAG_NAME,`socket close and code is ${i.code}`),1006===i.code&&this.player.debugError(this.TAG_NAME,`socket close abnormally and code is ${i.code}`),t.close(),this.socketStatus=St,this.player.emit(yt.websocketClose,i.code),this.emit(yt.streamEnd,i.code);break;case ft:if(this.player.isDestroyedOrClosed())return;this.player.debugError(this.TAG_NAME,"socket error"),this.socketStatus=Et;const e=i.isTrusted?"websocket user aborted":"websocket error";this.emit(vt.websocketError,e),t.close(),this.player.debugLog(this.TAG_NAME,"socket error:",e);break;case ut:this._destroy()}},this.websocketWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_closeWebSocket(){this.websocketWorker&&this.websocketWorker.postMessage({cmd:ct})}fetchStream(e,t){this.player._times.streamStart=yo(),this.wsUrl=e,this.websocketWorker&&this.websocketWorker.postMessage({cmd:dt,url:e,options:t})}sendMessage(e){this.websocketWorker&&this.websocketWorker.postMessage({cmd:ht,message:e})}getStreamType(){return m}}class jn extends o{constructor(e){super(),this.player=e,e.debugLog("HlsStream","init")}async destroy(){return this.off(),this.player.debugLog("HlsStream","destroy"),!0}fetchStream(e){const{hlsDecoder:t,debug:i}=this.player;this.player._times.streamStart=yo(),t.loadSource(e).then((()=>{this.player.debugLog("HlsStream","loadSource success"),this.emit(yt.streamSuccess)})).catch((e=>{this.emit(vt.hlsError,e)}))}getStreamType(){return f}}class Gn extends o{constructor(e){super(),this.player=e,this.webrctUrl=null,e.debugLog("WebrtcStream","init")}async destroy(){return this.webrctUrl=null,this.off(),this.player.debugLog("WebrtcStream","destroy"),!0}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{webrtc:i,debug:s}=this.player;if(this.player._times.streamStart=yo(),this.webrctUrl=e.replace("webrtc:",window.location.protocol),this.player.isWebrtcForM7S()&&-1===this.webrctUrl.indexOf("/webrtc/play")){const t=new URL(this.webrctUrl),i="/webrtc/play"+t.pathname;this.webrctUrl=t.origin+i+t.search,this.player.debugLog("WebrtcStream",`original url is ${e}, and new url is: ${this.webrctUrl}`)}i.loadSource(this.webrctUrl,t).then((()=>{this.player.debugLog("WebrtcStream","loadSource success"),this.emit(yt.streamSuccess)})).catch((e=>{this.player.debugError("WebrtcStream","loadSource error",e),this.emit(vt.webrtcError,e)}))}getStreamType(){return g}}class Wn extends o{constructor(e){super(),this.player=e,this.transport=null,this.wtUrl=null,this.streamRate=wo((t=>{e.emit(yt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("WebTransportLoader","init")}async destroy(){return this.abort(),this.off(),this.player.debugLog("WebTransportLoader","destroy"),!0}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:s}=e;try{this.transport=new WebTransport(this.wtUrl),this.transport.ready.then((()=>{this.emit(yt.streamSuccess),this.startStreamRateInterval(),this.transport.createBidirectionalStream().then((e=>{e.readable.pipeTo(new WritableStream(s.input))}))})).catch((e=>{this.player.debugWarn("WebTransportLoader","_createWebTransport-ready",e)}))}catch(e){this.player.debugWarn("WebTransportLoader","_createWebTransport",e)}}fetchStream(e){this.player._times.streamStart=yo(),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 y}}class zn extends o{constructor(e){super(),this.player=e,this.workUrl=null,e.debugLog("WorkerStream","init")}async destroy(){return this.workUrl=null,this.off(),this.player.debugLog("WorkerStream","destroy"),!0}sendMessage(e){this.player.decoderWorker.workerSendMessage(e)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.workUrl=e,this.player._times.streamStart=yo(),this.player.decoderWorker.workerFetchStream(e,t)}getStreamType(){const e=this.player._opt.protocol;return A+" "+(e===n?p:m)}}class $n extends o{constructor(e){super(),this.TAG_NAME="AliyunRtcLoader",this.player=e,e.debugLog(this.TAG_NAME,"init")}async destroy(){return this.off(),this.player.debugLog(this.TAG_NAME,"destroy"),!0}fetchStream(e){const{aliyunRtcDecoder:t}=this.player;this.player._times.streamStart=yo(),t.loadSource(e).then((()=>{this.player.debugLog(this.TAG_NAME,"loadSource success"),this.emit(yt.streamSuccess)})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource error",e),this.emit(vt.aliyunRtcError,e)}))}getStreamType(){return b}}class Vn{constructor(e){return new(Vn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){const{protocol:t,useWasm:i,playType:s,useWCS:r,useMSE:o,demuxUseWorker:u,mainThreadFetchUseWorker:p}=e;return t===n?s===_?zn:s===v?i&&!fa(e)||u?zn:p?Un:Fn:r||o?u?zn:p?Un:Fn:zn:t===a?s===_?zn:s===v?i&&!fa(e)||u?zn:p?Nn:On:r||o?u?zn:p?Nn:On:zn:t===l?jn:t===d?Gn:t===h?Wn:t===c?$n:void 0}}var Hn=Wr((function(e){function t(e,r){if(!e)throw"First parameter is required.";r=new i(e,r=r||{type:"video"});var o=this;function a(t){t&&(r.initCallback=function(){t(),t=r.initCallback=null});var i=new s(e,r);(p=new i(e,r)).record(),u("recording"),r.disableLogs||console.log("Initialized recorderType:",p.constructor.name,"for output-type:",r.type)}function n(e){if(e=e||function(){},p){if("paused"===o.state)return o.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===o.state||r.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',o.state),r.disableLogs||console.log("Stopped recording "+r.type+" stream."),"gif"!==r.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]&&(o[e]=p[e])}));var i=p.blob;if(!i){if(!t)throw"Recording failed.";p.blob=i=t}if(i&&!r.disableLogs&&console.log(i.type,"->",y(i.size)),e){var s;try{s=h.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(o,s):e(s)}r.autoWriteToDisk&&d((function(e){var t={};t[r.type+"Blob"]=e,x.Store(t)}))}else"function"==typeof e.call?e.call(o,""):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 r.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 s=new FileReader;s.readAsDataURL(i),s.onload=function(t){e(t.target.result)}}else{var o=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);o.onmessage=function(t){e(t.data)},o.postMessage(i)}}function c(e){e=e||0,"paused"!==o.state?"stopped"!==o.state&&(e>=o.recordingDuration?n(o.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){o&&(o.state=e,"function"==typeof o.onStateChanged.call?o.onStateChanged.call(o,e):o.onStateChanged(e))}var p,f='It seems that recorder is destroyed or "startRecording" is not invoked for '+r.type+" recorder.";function m(){!0!==r.disableLogs&&console.warn(f)}var g={startRecording:function(t){return r.disableLogs||console.log("RecordRTC version: ",o.version),t&&(r=new i(e,t)),r.disableLogs||console.log("started recording "+r.type+" stream."),p?(p.clearRecordedData(),p.record(),u("recording"),o.recordingDuration&&c(),o):(a((function(){o.recordingDuration&&c()})),o)},stopRecording:n,pauseRecording:function(){p?"recording"===o.state?(u("paused"),p.pause(),r.disableLogs||console.log("Paused recording.")):r.disableLogs||console.warn("Unable to pause the recording. Recording state: ",o.state):m()},resumeRecording:function(){p?"paused"===o.state?(u("recording"),p.resume(),r.disableLogs||console.log("Resumed recording.")):r.disableLogs||console.warn("Unable to resume the recording. Recording state: ",o.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return o.recordingDuration=e,o.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){o.onRecordingStopped=e}}},clearRecordedData:function(){p?(p.clearRecordedData(),r.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(r.type,e):m()},setAdvertisementArray:function(e){r.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),f=!u&&!c&&!!navigator.webkitGetUserMedia||b()||-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 g=window.MediaStream;function y(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 s=t.split(".");t=s[0],i=s[1]}var r=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,r);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,r);var o=document.createElement("a");o.href=h.createObjectURL(e),o.download=r,o.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(o),"function"==typeof o.click?o.click():(o.target="_blank",o.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),h.revokeObjectURL(o.href)}function b(){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 v(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===g&&"undefined"!=typeof webkitMediaStream&&(g=webkitMediaStream),void 0!==g&&void 0===g.prototype.stop&&(g.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),t.invokeSaveAsDialog=A,t.getTracks=v,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,s=new EBML.Decoder,r=EBML.tools,o=new FileReader;o.onload=function(e){s.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var o=r.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([o,a],{type:"video/webm"});t(n)},o.readAsArrayBuffer(e)},t.bytesToSize=y,t.isElectron=b;var w={};function S(){if(p||m||c)return!0;var e,t,i=navigator.userAgent,s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10);return(f||u)&&(e=i.indexOf("Chrome"),s=i.substring(e+7)),-1!==(t=s.indexOf(";"))&&(s=s.substring(0,t)),-1!==(t=s.indexOf(" "))&&(s=s.substring(0,t)),r=parseInt(""+s,10),isNaN(r)&&(s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10)),r>=49}function E(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 s;if(v(e,"video").length&&v(e,"audio").length)navigator.mozGetUserMedia?(s=new g).addTrack(v(e,"audio")[0]):s=new g(v(e,"audio")),e=s;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 r,o=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return r&&r.mimeType?r.mimeType:e.mimeType||"video/webm"}function l(){o=[],r=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return o},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],o=[];var s=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",s),r&&(r=null),f&&!S()&&(s="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&s.mimeType&&(MediaRecorder.isTypeSupported(s.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType),s.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{r=new MediaRecorder(e,s),t.mimeType=s.mimeType}catch(t){r=new MediaRecorder(e)}s.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in r&&!1===r.canRecordMimeType(s.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType)),r.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+y(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:n(s)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(o.push(e.data),a(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)});t.ondataavailable(r)}},r.onstart=function(){d.push("started")},r.onpause=function(){d.push("paused")},r.onresume=function(){d.push("resumed")},r.onstop=function(){d.push("stopped")},r.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 (",s.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&&r&&"inactive"===r.state)return delete t.timeslice,void r.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==r.state&&"stopped"!==r.state&&r.stop())},"number"==typeof t.timeSlice?(a(),r.start(t.timeSlice)):r.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,r&&(this.recordingCallback=e,"recording"===r.state&&r.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(o,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){r&&"recording"===r.state&&r.pause()},this.resume=function(){r&&"paused"===r.state&&r.resume()},this.clearRecordedData=function(){r&&"recording"===r.state&&i.stop(l),l()},this.getInternalRecorder=function(){return r},this.blob=null,this.getState=function(){return r&&r.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function s(){if(r&&!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(s,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function T(e,i){if(!v(e,"audio").length)throw"Your stream has no audio tracks.";var s,r=this,o=[],a=[],n=!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,s=e.numberOfAudioChannels,r=e.leftBuffers.slice(0),o=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,l=e.desiredSampRate;function d(e,t,i){var s=Math.round(e.length*(t/i)),r=[],o=Number((e.length-1)/(s-1));r[0]=e[0];for(var a=1;a96e3)&&(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 b=!1;function _(){o=[],a=[],l=0,S=!1,n=!1,b=!1,f=null,r.leftchannel=o,r.rightchannel=a,r.numberOfAudioChannels=d,r.desiredSampRate=c,r.sampleRate=A,r.recordingLength=l,E={left:[],right:[],recordingLength:0}}function w(){s&&(s.onaudioprocess=null,s.disconnect(),s=null),m&&(m.disconnect(),m=null),_()}this.pause=function(){b=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();b=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,n&&this.stop(w),w()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var S=!1;s.onaudioprocess=function(e){if(!b)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),s.disconnect(),n=!1),n){S||(S=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),h=new Float32Array(t);if(o.push(h),2===d){var c=e.inputBuffer.getChannelData(1),p=new Float32Array(c);a.push(p)}l+=y,r.recordingLength=l,void 0!==i.timeSlice&&(E.recordingLength+=y,E.left.push(h),2===d&&E.right.push(p))}else m&&(m.disconnect(),m=null)},f.createMediaStreamDestination?s.connect(f.createMediaStreamDestination()):s.connect(f.destination),this.leftchannel=o,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=A,r.recordingLength=l;var E={left:[],right:[],recordingLength:0};function T(){n&&"function"==typeof i.ondataavailable&&void 0!==i.timeSlice&&(E.left.length?(p({desiredSampRate:c,sampleRate:A,numberOfAudioChannels:d,internalInterleavedLength:E.recordingLength,leftBuffers:E.left,rightBuffers:1===d?[]:E.right},(function(e,t){var s=new Blob([t],{type:"audio/wav"});i.ondataavailable(s),setTimeout(T,i.timeSlice)})),E={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 s,r,o,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&l&&l[2]&&(n=parseInt(l[2],10)),a&&n<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)s=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";s=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(o=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in s?e=s.captureStream(25):"mozCaptureStream"in s?e=s.mozCaptureStream(25):"webkitCaptureStream"in s&&(e=s.webkitCaptureStream(25));try{var a=new g;a.addTrack(v(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(r=new E(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 s=p.frames.length;p.frames.forEach((function(e,i){var r=s-i;t.disableLogs||console.log(r+"/"+s+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(r,s);var o=e.image.toDataURL("image/webp",1);p.frames[i].image=o})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){o=!1;var s=this;i&&r?r.stop(e):this.getWebPImages((function(){p.compile((function(i){t.disableLogs||console.log("Recording finished!"),s.blob=i,s.blob.forEach&&(s.blob=new Blob([],{type:"video/webm"})),e&&e(s.blob),p.frames=[]}))}))};var d=!1;function h(){p.frames=[],o=!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:(s=document.createElement("canvas"),r=s.getContext("2d"),s.width=e.width,s.height=e.height,r.drawImage(e,0,0),s),duration:i}),void(o&&setTimeout(c,t.frameInterval))}var s,r;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}),o&&setTimeout(c,t.frameInterval)}})}this.pause=function(){d=!0,r instanceof E&&r.pause()},this.resume=function(){d=!1,r instanceof E?r.resume():o||this.record()},this.clearRecordedData=function(){o&&this.stop(h),h()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),p=new C.Video(100)}function L(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-l;return t?o?(l=(new Date).getTime(),setTimeout(i,100)):(l=(new Date).getTime(),n.paused&&n.play(),c.drawImage(n,0,0,h.width,h.height),d.frames.push({duration:t,image:h.toDataURL("image/webp")}),void(r||setTimeout(i,e,e))):setTimeout(i,e,e)}function s(e,t,i,s,r){var o=document.createElement("canvas");o.width=h.width,o.height=h.height;var a=o.getContext("2d"),n=[],l=-1===t,d=t&&t>0&&t<=e.length?t:e.length,c=0,u=0,p=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),m=i&&i>=0&&i<=1?i:0,g=s&&s>=0&&s<=1?s:0,y=!1;!function(e){var t=-1,i=e.length;!function s(){++t!==i?setTimeout((function(){e.functionToLoop(s,t)}),1):e.callback()}()}({length:d,functionToLoop:function(t,i){var s,r,o,d=function(){!y&&o-s<=o*g||(l&&(y=!0),n.push(e[i])),t()};if(y)d();else{var A=new Image;A.onload=function(){a.drawImage(A,0,0,h.width,h.height);var e=a.getImageData(0,0,h.width,h.height);s=0,r=e.data.length,o=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({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 s(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*o[0].width:o[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),r.height=o[0].height*n}else r.width=a.width||360,r.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),o.forEach((function(e,t){u(e,t)})),setTimeout(c,a.frameInterval)}}function u(e,t){if(!s){var i=0,r=0,a=e.width,n=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&&(n=e.stream.height),o.drawImage(e,i,r,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(o,i,r,a,n,t)}}function p(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function f(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=p(e);t.stream=e,i.push(t)}}))}void 0!==n?h.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(h.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){c()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var s=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var r=p(t);r.stream=t,i.push(r),s.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var o=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),o.connect(a.audioDestination),s.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(s)}))},this.releaseStreams=function(){i=[],s=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,o.clearRect(0,0,r.width,r.height),r.stream&&(r.stream.stop(),r.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),f(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){s=!1;var t=function(){var e;f(),"captureStream"in r?e=r.captureStream():"mozCaptureStream"in r?e=r.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),r.stream=t,t}(),i=function(){h.AudioContextConstructor||(h.AudioContextConstructor=new h.AudioContext);a.audioContext=h.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.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=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.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,s,r=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 r;i=new R(e,t.elementClass||"multi-streams-mixer"),(r=[],e.forEach((function(e){v(e,"video").forEach((function(e){r.push(e)}))})),r).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()),(s=new E(i.getMixedStream(),t)).record()},this.stop=function(e){s&&s.stop((function(t){r.blob=t,e(t),r.clearRecordedData()}))},this.pause=function(){s&&s.pause()},this.resume=function(){s&&s.resume()},this.clearRecordedData=function(){s&&(s.clearRecordedData(),s=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(r){if(!r)throw"First parameter is required.";r instanceof Array||(r=[r]),e.concat(r),s&&i&&(i.appendStreams(r),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,s,r;function o(){return new ReadableStream({start:function(s){var r=document.createElement("canvas"),o=document.createElement("video"),a=!0;o.srcObject=e,o.muted=!0,o.height=t.height,o.width=t.width,o.volume=0,o.onplaying=function(){r.width=t.width,r.height=t.height;var e=r.getContext("2d"),n=1e3/t.frameRate,l=setInterval((function(){if(i&&(clearInterval(l),s.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(o,0,0),"closed"!==s._controlledReadableStream.state)try{s.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},o.play()}})}function a(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){a(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."),(s=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),s.addEventListener("message",(function(e){"READY"===e.data?(s.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),o().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):s.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(r||n.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(){n=[],r=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){s?(s.addEventListener("message",(function(t){null===t.data&&(s.terminate(),s=null,e&&e())})),s.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],r=!1,this.blob=null},this.blob=null}t.DiskStorage=x,t.GifRecorder=D,t.MultiStreamRecorder=I,t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var s=this;s.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{s.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{s.recordRTC.stopRecording((function(i){s.blob=s.recordRTC.getBlob(),s.blob&&s.blob.size?e(i):t("Empty blob.",s.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{s.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{s.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{s.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(s.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(s.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(s.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(s.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(s.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},t.WebAssemblyRecorder=P}));class Jn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseSPS(e){let t=Jn._ebsp2rbsp(e),i=new $r(t);i.readByte();let s=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let o=Jn.getProfileString(s),a=Jn.getLevelString(r),n=1,l=420,d=[0,420,422,444],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)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(l=d[n]),h=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],_=s[e-1]):255===e&&(v=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(),E=t,T=2*e,w=E/T}}let k=1;1===v&&1===_||(k=v/_);let L=0,C=0;if(0===n)L=1,C=2-m;else{L=3===n?1:2,C=(1===n?2:1)*(2-m)}let x=16*(p+1),D=16*(f+1)*(2-m);x-=(g+y)*L,D-=(A+b)*C;let R=Math.ceil(x*k);return i.destroy(),i=null,{profile_string:o,level_string:a,bit_depth:h,ref_frames:u,chroma_format:l,chroma_format_string:Jn.getChromaFormatString(l),frame_rate:{fixed:S,fps:w,fps_den:T,fps_num:E},sar_ratio:{width:v,height:_},codec_size:{width:x,height:D},present_size:{width:R,height:D}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let s=t[e].toString(16);s.length<2&&(s="0"+s),i+=s}let s=Jn._ebsp2rbsp(e),r=new $r(s);r.readByte();let o=r.readByte();r.readByte();let a=r.readByte();r.readUEG();let n=Jn.getProfileString(o),l=Jn.getLevelString(a),d=1,h=420,c=[0,420,422,444],u=8,p=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(d=r.readUEG(),3===d&&r.readBits(1),d<=3&&(h=c[d]),u=r.readUEG()+8,p=r.readUEG()+8,r.readBits(1),r.readBool())){let e=3!==d?8:12;for(let t=0;t0&&e<16?(S=t[e-1],E=i[e-1]):255===e&&(S=r.readByte()<<8|r.readByte(),E=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);k=r.readBool(),L=t,C=2*e,T=L/C}}let x=1;1===S&&1===E||(x=S/E);let D=0,R=0;if(0===d)D=1,R=2-A;else{D=3===d?1:2,R=(1===d?2:1)*(2-A)}let I=16*(g+1),P=16*(y+1)*(2-A);I-=(b+v)*D,P-=(_+w)*R;let B=Math.ceil(I*x);return r.destroy(),r=null,{codec_mimetype:i,profile_idc:o,level_idc:a,profile_string:n,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:Jn.getChromaFormatString(h),frame_rate:{fixed:k,fps:T,fps_den:C,fps_num:L},sar_ratio:{width:S,height:E},codec_size:{width:I,height:P},present_size:{width:B,height:P}}}static _skipScalingList(e,t){let i=8,s=8,r=0;for(let o=0;o=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,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}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]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.sps,4),t.sps=s}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.pps,4),t.pps=s}return t}function Yn(e){let{sps:t,pps:i}=e,s=8+t.byteLength+1+2+i.byteLength,r=!1;const o=Jn.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(r=!0,s+=4);let a=new Uint8Array(s);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let n=t.byteLength;a[6]=n>>>8,a[7]=255&n;let l=8;a.set(t,8),l+=n,a[l]=1;let d=i.byteLength;a[l+1]=d>>>8,a[l+2]=255&d,a.set(i,l+3),l+=3+d,r&&(a[l]=252|o.chroma_format_idc,a[l+1]=248|o.bit_depth_luma-8,a[l+2]=248|o.bit_depth_chroma-8,a[l+3]=0,l+=4);const h=[23,0,0,0,0],c=new Uint8Array(h.length+a.byteLength);return c.set(h,0),c.set(a,h.length),c}function Qn(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function Xn(e){return 31&e[0]}function Zn(e){return e===zt}function el(e){return!function(e){return e===Ot||e===Nt}(e)&&!Zn(e)}function tl(e){return e===jt}class il{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H264 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=31&e[i],r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,s>=Ht||0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class sl{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const rl=e=>{let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)},ol=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"}};class al{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseVPS(e){let t=al._ebsp2rbsp(e),i=new $r(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=al._ebsp2rbsp(e),i=new $r(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=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(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),w=[],S=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<=16?(B=t[e-1],M=s[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(U=i.readBits(32),O=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool()){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();F=r;let o=!0,a=1;r||(o=i.readBool());let n=!1;if(o?i.readUEG():n=i.readBool(),n||(a=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 s=e[22],r=e.slice(23);for(let e=0;e0)for(let t=i;t<8;t++)e.read(2);s.sub_layer_profile_space=[],s.sub_layer_tier_flag=[],s.sub_layer_profile_idc=[],s.sub_layer_profile_compatibility_flag=[],s.sub_layer_progressive_source_flag=[],s.sub_layer_interlaced_source_flag=[],s.sub_layer_non_packed_constraint_flag=[],s.sub_layer_frame_only_constraint_flag=[],s.sub_layer_level_idc=[];for(let t=0;t{let t=rl(e),i=new $r(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()}})(t),a=(e=>{let t=rl(e),i=new $r(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=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(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),w=[],S=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(B=t[e-1],M=s[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&&(s+=i.readUEG(),r+=i.readUEG(),o+=i.readUEG(),a+=i.readUEG()),i.readBool()&&(U=i.readBits(32),O=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();F=r;let o=!1,a=1;r||(o=i.readBool());let n=!1;if(o?i.readSEG():n=i.readBool(),n||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=rl(e),i=new $r(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 s=i.readBool(),r=i.readBool(),o=1;return r&&s?o=0:r?o=3:s&&(o=2),{parallelismType:o}})(i);r=Object.assign(r,o,a,n);let l=23+(5+t.byteLength)+(5+s.byteLength)+(5+i.byteLength),d=new Uint8Array(l);d[0]=1,d[1]=(3&r.general_profile_space)<<6|(r.general_tier_flag?1:0)<<5|31&r.general_profile_idc,d[2]=r.general_profile_compatibility_flags_1||0,d[3]=r.general_profile_compatibility_flags_2||0,d[4]=r.general_profile_compatibility_flags_3||0,d[5]=r.general_profile_compatibility_flags_4||0,d[6]=r.general_constraint_indicator_flags_1||0,d[7]=r.general_constraint_indicator_flags_2||0,d[8]=r.general_constraint_indicator_flags_3||0,d[9]=r.general_constraint_indicator_flags_4||0,d[10]=r.general_constraint_indicator_flags_5||0,d[11]=r.general_constraint_indicator_flags_6||0,d[12]=60,d[13]=240|(3840&r.min_spatial_segmentation_idc)>>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|Zt,d[24]=0,d[25]=1,d[26]=(65280&t.byteLength)>>8,d[27]=(255&t.byteLength)>>0,d.set(t,28),d[23+(5+t.byteLength)+0]=128|ti,d[23+(5+t.byteLength)+1]=0,d[23+(5+t.byteLength)+2]=1,d[23+(5+t.byteLength)+3]=(65280&s.byteLength)>>8,d[23+(5+t.byteLength)+4]=(255&s.byteLength)>>0,d.set(s,23+(5+t.byteLength)+5),d[23+(5+t.byteLength+5+s.byteLength)+0]=128|si,d[23+(5+t.byteLength+5+s.byteLength)+1]=0,d[23+(5+t.byteLength+5+s.byteLength)+2]=1,d[23+(5+t.byteLength+5+s.byteLength)+3]=(65280&i.byteLength)>>8,d[23+(5+t.byteLength+5+s.byteLength)+4]=(255&i.byteLength)>>0,d.set(i,23+(5+t.byteLength+5+s.byteLength)+5);const h=[28,0,0,0,0],c=new Uint8Array(h.length+d.byteLength);return c.set(h,0),c.set(d,h.length),c}function cl(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function ul(e){return(126&e[0])>>1}function pl(e){return!function(e){return e>=32&&e<=40}(e)}function fl(e){return e>=16&&e<=21}class ml{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H265 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=e[i]>>1&63,r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class gl{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}class yl extends o{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===xt}get isH265(){return this.codecId===Dt}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,s){}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 s=e.slice(5);if(this.codecId=t,this.metaInfo.avcc=s,t===xt)i=Kn(s);else if(t===Dt){i=function(e){let t=23;const i=e[t];if((63&i)!==Zt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and vpsTag is ${i}`),{};t+=2,t+=1;const s=e[t+1]|e[t]<<8;t+=2;const r=e.slice(t,t+s);t+=s;const o=e[t];if((63&o)!==ti)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and sps tag is ${o}`),{};t+=2,t+=1;const a=e[t+1]|e[t]<<8;t+=2;const n=e.slice(t,t+a);t+=a;const l=e[t];if((63&l)!==si)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([a>>>24&255,a>>>16&255,a>>>8&255,255&a]),u=new Uint8Array([d>>>24&255,d>>>16&255,d>>>8&255,255&d]),p=new Uint8Array([s>>>24&255,s>>>16&255,s>>>8&255,255&s]),f=new Uint8Array(a+4);f.set(c,0),f.set(n,4);const m=new Uint8Array(d+4);m.set(u,0),m.set(h,4);const g=new Uint8Array(s+4);return g.set(p,0),g.set(r,4),{sps:f,pps:m,vps:g}}(s);const t=nl(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 s=null;t===Pt?(s=function(e){let t={},i=new to(e);return i.read(16),t.object_type=io(i),t.sample_rate=so(i,t),t.chan_config=i.read(4),t.chan_config{r.onload=function(e){i.decode(this.result).forEach((function(e){t.read(e)})),t.stop();const r=s.makeMetadataSeekable(t.metadatas,t.duration,t.cues),a=this.result.slice(t.metadataSize),n=new Blob([r,a],{type:"video/webm"});o(n)},r.readAsArrayBuffer(e)}))}startRecord(){const e={type:"video",mimeType:"video/webm;codecs=h264",timeSlice:1e3,onTimeStamp:e=>{this.player&&this.player.debugLog("RecorderRTC","record timestamp :"+e),null===this._startRecordingTimestamp&&(this._startRecordingTimestamp=e),this._recordingTimestamp=(e-this._startRecordingTimestamp)/1e3},ondataavailable:e=>{this.totalByteLength+=e.size,this.player&&this.player.debugLog("RecorderRTC","ondataavailable",e.size)},disableLogs:!this.player._opt.debug};try{let t=null;if(this.player.getRenderType()===H)t=this.player.video.$videoElement.captureStream(25),this.player.debugLog(this.TAG_NAME,"startRecord and render type is canvas and use captureStream");else if(this.player.video.mediaStream)t=this.player.video.mediaStream,this.player.debugLog(this.TAG_NAME,"startRecord and video mediaStream");else{if(xa(this._startCanvasRender()))return void this.player.emitError(yt.recordCreateError,"startCanvasRender error");this.player.isOldHls()||this.player._opt.useMSE||this.player._opt.useWCS?t=this.canvasElement.captureStream(25):this.player.isWebrtcH264()?t=this.player.webrtc.videoStream:this.player.isAliyunRtc()&&(t=this.canvasElement.captureStream(25)),this.player.debugLog(this.TAG_NAME,"startRecord and use local canvas render video and captureStream")}if(!t)return this.player.debugError("RecorderRTC","startRecord error and can not create stream"),void this.player.emitError(yt.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 i=e.getAudioTracks()[0];i&&i.enabled&&t.addTrack(i)}}this.recorder=Hn(t,e)}catch(e){return this.player.debugError("RecorderRTC","startRecord error",e),void this.player.emitError(yt.recordCreateError,e)}this.recorder&&(this._isRecording=!0,this.player.emit(yt.recording,!0),this.recorder.startRecording(),this.player.debugLog("RecorderRTC","start recording"),this.player.emit(yt.recordStart),this.startRecordingInterval())}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(yt.recordingTimestamp,this._recordingTimestamp)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:kt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{this.recorder&&this._isRecording||s("recorder is not ready"),t&&this.setFileName(t),this.recorder.stopRecording((()=>{this.player.debugLog("RecorderRTC","stop recording");const t=(this.fileName||yo())+"."+E;if(this.player._opt.recordWebMSupportSeek);else{if(e===Lt){const e=this.recorder.getBlob();i(e),this.player.emit(yt.recordBlob,e)}else i(),this.recorder.save(t);this.player.emit(yt.recordEnd),this._reset(),this.player.emit(yt.recording,!1)}}))}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.recorder||!this._isRecording)return e();this.recorder.stopRecording((()=>{this._reset(),this.player.emit(yt.recording,!1),this.player.emit(yt.recordCancel),e()}))}))}getToTalByteLength(){return this.totalByteLength}getTotalDuration(){return this.recordTime}getType(){return E}initMetaData(){}_startCanvasRender(){return this._initCanvasRender(),this.canvasElement?(Oa()?(this.player.debugLog(this.TAG_NAME,"use video frame callback"),this.supportVideoFrameCallbackHandle=this.player.video.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):(this.player.debugLog(this.TAG_NAME,"use setInterval"),this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.canvasElementCtx&&this.canvasElementCtx.drawImage(this.player.video.$videoElement,0,0,this.canvasElement.width,this.canvasElement.height)}),40)),!0):(this.player.debugError(this.TAG_NAME,"canvasElement is null"),!1)}_initCanvasRender(){const e=this.player.getVideoInfo();!this.canvasElement&&e&&(this.canvasElement=document.createElement("canvas"),this.canvasElementCtx=this.canvasElement.getContext("2d"),e.width&&e.height&&(this.canvasElement.width=e.width,this.canvasElement.height=e.height))}_removeCanvasRender(){this.canvasElementCtx&&(this.canvasElementCtx.clearRect(0,0,this.canvasElement.width,this.canvasElement.height),this.canvasElementCtx=null),this.canvasElement&&(this.canvasElement.width=0,this.canvasElement.height=0,this.canvasElement=null)}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_stopSupportVideoFrameCallback(){this.supportVideoFrameCallbackHandle&&this.player.video.$videoElement&&(this.player.video.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null)}videoFrameCallback(){this.player.isDestroyedOrClosed()?this.player.debugLog(this.TAG_NAME,"videoFrameCallback() player is destroyed"):(this.canvasElementCtx&&this.canvasElementCtx.drawImage(this.player.video.$videoElement,0,0,this.canvasElement.width,this.canvasElement.height),this.supportVideoFrameCallbackHandle=this.player.video.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)))}}class bl{static init(){bl.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 bl.types)bl.types.hasOwnProperty(e)&&(bl.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=bl.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,s=Array.prototype.slice.call(arguments,1),r=s.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 o=8;for(let e=0;e=Math.pow(2,32)-1?(o=16,a=new Uint8Array(i+o),a.set(new Uint8Array([0,0,0,1]),0),a.set(bl.types.mdat,4),a.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)):(a=new Uint8Array(i+o),a[0]=i+8>>>24&255,a[1]=i+8>>>16&255,a[2]=i+8>>>8&255,a[3]=i+8&255,a.set(bl.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 bl.box(bl.types.trak,bl.tkhd(e),bl.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return"video"===e.type?bl.box(bl.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,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0])):"audio"===e.type?bl.box(bl.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,1,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])):void 0}static edts(e,t){return bl.box(bl.types.edts,bl.elst(e,t))}static elst(e,t){let i=0;for(let s=0;s>>24&255,i>>>16&255,i>>>8&255,255&i,255,255,255,255,0,1,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s,0,0,0,0,0,1,0,0]))}static mdia(e){return bl.box(bl.types.mdia,bl.mdhd(e),bl.hdlr(e),bl.minf(e))}static mdhd(e){let t=e.timescale/e.refSampleDuration,i=t*e.duration/e.timescale;return bl.box(bl.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="audio"===e.type?bl.constants.HDLR_AUDIO:bl.constants.HDLR_VIDEO,bl.box(bl.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?bl.box(bl.types.smhd,bl.constants.SMHD):bl.box(bl.types.vmhd,bl.constants.VMHD),bl.box(bl.types.minf,t,bl.dinf(),bl.stbl(e))}static dinf(){return bl.box(bl.types.dinf,bl.box(bl.types.dref,bl.constants.DREF))}static stbl(e){let t=e.samples,i=[{No:1,num:0,sampleDelte:1,chunkNo:1,duration:t[0].duration}],s=[t[0].duration],r=t.length;for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+8*t);r.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]),s),s+=8;return bl.box(bl.types.stts,r)}static stss(e){let t=[],i=e.length;for(let s=0;s>>24&255,s>>>16&255,s>>>8&255,255&s]),o=r.byteLength,a=new Uint8Array(o+4*s);a.set(r,0);for(let e=0;e>>24&255,t[e]>>>16&255,t[e]>>>8&255,255&t[e]]),o),o+=4;return bl.box(bl.types.stss,a)}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]),s=i.byteLength,r=new Uint8Array(s+12*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t,o>>>24&255,o>>>16&255,o>>>8&255,255&o,a>>>24&255,a>>>16&255,a>>>8&255,255&a]),s),s+=12}return bl.box(bl.types.stsc,r)}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]),s=i.byteLength,r=new Uint8Array(s+4*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t]),s),s+=4}return bl.box(bl.types.stsz,r)}static stco(e,t){let i=t[0].chunkOffset;return bl.box(bl.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?bl.box(bl.types.stsd,bl.constants.STSD_PREFIX,bl.mp3(e)):bl.box(bl.types.stsd,bl.constants.STSD_PREFIX,bl.mp4a(e)):"avc"===e.videoType?bl.box(bl.types.stsd,bl.constants.STSD_PREFIX,bl.avc1(e)):bl.box(bl.types.stsd,bl.constants.STSD_PREFIX,bl.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.sampleRate,s=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 bl.box(bl.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.sampleRate,s=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 bl.box(bl.types.mp4a,s,bl.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=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 bl.box(bl.types.esds,s)}static avc1(e){let t=e.avcc,i=e.codecWidth,s=e.codecHeight,r=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,s>>>8&255,255&s,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 bl.box(bl.types.avc1,r,bl.box(bl.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 bl.box(bl.types.hvc1,r,bl.box(bl.types.hvcC,t))}static mvex(e){return bl.box(bl.types.mvex,bl.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 bl.box(bl.types.trex,i)}static moof(e,t){return bl.box(bl.types.moof,bl.mfhd(e.sequenceNumber),bl.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 bl.box(bl.types.mfhd,t)}static traf(e,t){let i=e.id,s=bl.box(bl.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=bl.box(bl.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=bl.sdtp(e),a=bl.trun(e,o.byteLength+16+16+8+16+8+8);return bl.box(bl.types.traf,s,r,a,o)}static sdtp(e){let t=e.samples||[],i=t.length,s=new Uint8Array(4+i);for(let e=0;e>>24&255,s>>>16&255,s>>>8&255,255&s,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,s>>>24&255,s>>>16&255,s>>>8&255,255&s,r.isLeading<<2|r.dependsOn,r.isDependedOn<<6|r.hasRedundancy<<4|r.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12+16*e)}return bl.box(bl.types.trun,o)}static mdat(e){return bl.box(bl.types.mdat,e)}}bl.init();class vl extends yl{constructor(e){super(e),this.TAG_NAME="recorderMP4",this._reset(),e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this._reset(),this.player.debugLog(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(){this._isRecording=!0,this.player.emit(yt.recording,!0),this.player.debugLog(this.TAG_NAME,"start recording"),this.player.emit(yt.recordStart),this._startRecordingInterval()}_startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(yt.recordingTimestamp,this.getTotalDuration())}),1e3)}_formatFmp4Track(e,t,i,s){return{id:1,sequenceNumber:++this.sequenceNumber,size:e.byteLength,dts:i,cts:s,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,s){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,s)}handleAddAudioTrack(e,t){}_handleAddFmp4Track(e){if(!this.isRecording)return void this.player.debugError(this.TAG_NAME,"_handleAddFmp4Track, isRecording is false ");if((null===this.sps||null===this.pps)&&this.isH264)return void this.player.debugError(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.debugError(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 s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}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 s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}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 S}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:kt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debugError(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r={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},o={id:2,type:"audio",sequenceNumber:this.audioBufferList.length,samples:this.audioBufferList,...this.audioMetaInfo},a=[r];o.samples.length>0&&a.push(o),this.player.debugLog(this.TAG_NAME,`trackList length is ${a.length}`);const n=bl.generateInitSegment({timescale:1e3,duration:this.totalDuration},a,this.totalByteLength+this.totalAudioByteLength);this.player.debugLog(this.TAG_NAME,"stop recording");const l=new Blob([n],{type:"application/octet-stream"});if(e===Lt)i(l),this.player.emit(yt.recordBlob,l);else{i();zo((this.fileName||yo())+"."+S,l)}this._reset(),this.player.emit(yt.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(yt.recording,!1),this.player.emit(yt.recordCancel),e()}))}_getBufferTs(e){}}function _l(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=new s((0|e.byteLength)+(0|t.byteLength));return i.set(e,0),i.set(t,0|e.byteLength),i}),new s)}function wl(e){if((e=e.replace(/\s/g,"")).length%2!=0)return console.error("hexStringToUint8Array: invalid hexString length, must be even and bexString length is: ",e.length),null;const t=new Uint8Array(e.length/2);for(let i=0;i{this.player.emit(yt.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,We,i)}_setStartTime(e){null===this.startTime&&this._isRecording&&(this.startTime=e,this.player.debugLog(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 s=this._createFlvPacket(e,t,i),r=this._createFlvTag(s);this.totalByteLength+=r.byteLength,this.bufferList.push(r)}_createFlvTag(e){let t=11+e.header.length,i=new Uint8Array(t+4);i[0]=e.header.type;let s=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,s.setUint32(t,t),i.set(e.payload.subarray(0,e.header.length),11),i}_createFlvPacket(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return{header:{length:e?e.length:0,timestamp:i,type:t},payload:e}}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:kt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debugError(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r=new Uint8Array([70,76,86,1,0,0,0,0,9,0,0,0,0]);this.hasVideo&&(r[4]|=1),this.hasAudio&&(r[4]|=4);let o=[r];if(this.flvMetaData){const e=this._createFlvPacket(this.flvMetaData,$e),t=this._createFlvTag(e);o.push(t)}if(this.videoSequenceHeader){const e=this._createFlvPacket(this.videoSequenceHeader,ze),t=this._createFlvTag(e);o.push(t)}if(this.aacSequenceHeader){const e=this._createFlvPacket(this.aacSequenceHeader,We),t=this._createFlvTag(e);o.push(t)}const a=function(e){const t=e[0].constructor;return e.reduce(((e,i)=>{const s=new t((0|e.byteLength)+(0|i.byteLength));return s.set(e,0),s.set(i,0|e.byteLength),s}),new t)}(o.concat(this.bufferList));this.player.debugLog(this.TAG_NAME,"stop recording");const n=new Blob([a],{type:"application/octet-stream"});if(e===Lt)i(n),this.player.emit(yt.recordBlob,n);else{i();zo((this.fileName||yo())+"."+T,n)}this._reset(),this.player.emit(yt.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(yt.recording,!1),this.player.emit(yt.recordCancel),e()}))}getTotalDuration(){let e=0;return null!==this.startTime&&null!==this.currentTime&&(e=this.currentTime-this.startTime),Math.round(e/1e3)}getType(){return T}getToTalByteLength(){return this.totalByteLength}}const El={init:0,findFirstStartCode:1,findSecondStartCode:2};class Tl extends o{constructor(e){super(),this.player=e,this.isDestroyed=!1,this.reset()}destroy(){this.isDestroyed=!1,this.off(),this.reset()}reset(){this.stats=El.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==El.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=El.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==El.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=El.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==El.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=El.findFirstStartCode}}}}class kl extends yl{constructor(e){super(e),this.TAG_NAME="recorderWasmMP4",this._reset(),this.wasmMp4Recorder=null,this.mp3Demuxer=null,e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.mp3Demuxer&&(this.mp3Demuxer.destroy(),this.mp3Demuxer=null),this._reset(),this.player.debugLog(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 S}isWasmMp4(){return!0}getTotalDuration(){return this.totalDuration/1e3}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}startRecord(){const e=this.player,t=this.player.getAudioInfo(),i=this.player.getVideoInfo(),s={};if(this.codecId){const e={type:this.codecId,width:i.width,height:i.height,extraData:this.metaInfo.avcc};s.video=e,this.hasVideo=!0}if(t.encTypeCode){const e={type:t.encTypeCode,sampleRate:t.sampleRate,channels:t.channels,extraData:this.audioMetaInfo.extraData,depth:t.depth};this.audioCodeId=t.encTypeCode,s.audio=e,this.hasAudio=!0}this.wasmMp4Recorder=new window.JessibucaProMp4Recorder({debug:e._opt.debug,debugLevel:e._opt.debugLevel,debugUuid:e._opt.debugUuid,decoder:e._opt.wasmMp4RecorderDecoder}),this.wasmMp4Recorder.on("recordingTimestamp",(e=>{this._recordingTimestamp=e/1e3})),this.wasmMp4Recorder.startRecord(s).then((()=>{this._isRecording=!0,this.player.emit(yt.recording,!0),this.player.debugLog(this.TAG_NAME,"start recording"),this.player.emit(yt.recordStart),this.startRecordingInterval()})).catch((e=>{this.player.debugError(this.TAG_NAME,"startRecord error",e),this.player.emitError(yt.recordCreateError,e)}))}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(yt.recordingTimestamp,this.recordTime)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:kt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>this.isRecording?0===this.totalDuration?(this.player.debugError(this.TAG_NAME,"stop recording fail, totalDuration is 0 "),s("stop recording fail, totalDuration is 0 ")):(t&&this.setFileName(t),void this.wasmMp4Recorder.stopRecord().then((t=>{if(e===Lt)i(t),this.player.emit(yt.recordBlob,t);else{i();zo((this.fileName||yo())+"."+S,t)}})).catch((e=>{this.player.debugError(this.TAG_NAME,"stopRecord error",e),s(e)})).finally((()=>{this._reset(),this.player.emit(yt.recording,!1)}))):(this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false "))))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording||0===this.totalDuration)return e();this.wasmMp4Recorder.stopRecord().then((t=>{e()})).catch((e=>{this.player.debugError(this.TAG_NAME,"stopRecord error",e),t(e)})).finally((()=>{this._reset(),this.player.emit(yt.recording,!1),this.player.emit(yt.recordCancel)}))}))}handleAddAudioTrack(e,t){this.audioCodeId===Mt?(this.mp3Demuxer||(this.mp3Demuxer=new Tl(this.player),this.mp3Demuxer.on("data",((e,t)=>{this._handleAddAudioTrack(e,t)}))),this.mp3Demuxer.dispatch(e,t)):this._handleAddAudioTrack(e,t)}_handleAddAudioTrack(e,t){xa(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,s){xa(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:s})}}class Ll{constructor(e){return new(Ll.getLoaderFactory(e,e._opt))(e)}static getLoaderFactory(e,t){if(e.isOldHls()||e.isWebrtcH264()||e.isAliyunRtc())return Al;if(t.recordType===S){if(t.useWasm||t.useMSE||t.useWCS)return window.JessibucaProMp4Recorder&&t.mp4RecordUseWasm?kl:vl}else if(t.recordType===T)return Sl;return Al}}function Cl(e,t,i){let s=e;if(t+i=128){t.push(String.fromCharCode(65535&e)),s+=2;continue}}}else if(i[s]<240){if(Cl(i,s,2)){let e=(15&i[s])<<12|(63&i[s+1])<<6|63&i[s+2];if(e>=2048&&55296!=(63488&e)){t.push(String.fromCharCode(65535&e)),s+=3;continue}}}else if(i[s]<248&&Cl(i,s,3)){let e=(7&i[s])<<18|(63&i[s+1])<<12|(63&i[s+2])<<6|63&i[s+3];if(e>65536&&e<1114112){e-=65536,t.push(String.fromCharCode(e>>>10|55296)),t.push(String.fromCharCode(1023&e|56320)),s+=4;continue}}t.push(String.fromCharCode(65533)),++s}return t.join("")}let Dl=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}();class Rl{static parseScriptData(e,t,i){let s={};try{let r=Rl.parseValue(e,t,i),o=Rl.parseValue(e,t+r.size,i-r.size);s[r.data]=o.data}catch(e){console.error("AMF",e.toString())}return s}static parseObject(e,t,i){let s=Rl.parseString(e,t,i),r=Rl.parseValue(e,t+s.size,i-s.size),o=r.objectEnd;return{data:{name:s.data,value:r.data},size:s.size+r.size,objectEnd:o}}static parseVariable(e,t,i){return Rl.parseObject(e,t,i)}static parseString(e,t,i){let s,r=new DataView(e,t,i).getUint16(0,!Dl);return s=r>0?xl(new Uint8Array(e,t+2,r)):"",{data:s,size:2+r}}static parseLongString(e,t,i){let s,r=new DataView(e,t,i).getUint32(0,!Dl);return s=r>0?xl(new Uint8Array(e,t+4,r)):"",{data:s,size:4+r}}static parseDate(e,t,i){let s=new DataView(e,t,i),r=s.getFloat64(0,!Dl);return r+=60*s.getInt16(8,!Dl)*1e3,{data:new Date(r),size:10}}static parseValue(e,t,i){let s,r=new DataView(e,t,i),o=1,a=r.getUint8(0),n=!1;try{switch(a){case 0:s=r.getFloat64(1,!Dl),o+=8;break;case 1:s=!!r.getUint8(1),o+=1;break;case 2:{let r=Rl.parseString(e,t+1,i-1);s=r.data,o+=r.size;break}case 3:{s={};let a=0;for(9==(16777215&r.getUint32(i-4,!Dl))&&(a=3);o{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),oe)}this.decoderWorker=new Worker(t),this._initDecoderWorker(),this._listenPlaybackEvents(),e.debugLog("decoderWorker",`init and decoder url is ${t}`),e.on(yt.visibilityChange,(()=>{this.updateWorkConfig({key:"visibility",value:e.visibility})}))}destroy(){return new Promise(((e,t)=>{if(this.player.loaded)if(this.player.debugLog("decoderWorker","has loaded and post message to destroy"),this.decoderWorker){const t={};this.player.isMseDecoderUseWorker()&&(t.isVideoInited=this.player.isMseVideoStateInited()),this.decoderWorker.postMessage({cmd:Ke,options:t}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn("decoderWorker","send close but not response and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)}else this.player.debugWarn("decoderWorker","has loaded but decoderWorker is null and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0);else this.player.debugLog("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.debugLog("decoderWorker","destroy"),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.isDestroyed=!0}_listenPlaybackEvents(){this.player.isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender()&&(this.player.debugLog(this.TAG_NAME,"listenPlaybackEvents"),this.player.on(yt.playbackPause,(e=>{this.updatePlaybackIsPause(e)})))}_initDecoderWorker(){this.player,this.decoderWorker.onerror=e=>{const t=e.filename||"",i=e.message||"",s=t&&(-1!==t.indexOf(".wasm")||-1!==t.indexOf("wasm://"));s&&-1!==i.indexOf(fr)?this.player.debugLog("decoderWorker",`onerror and ignore filename: ${t},message: ${i}`,e):(this.player.debugError("decoderWorker",`onerror filename: ${t},message: ${i}`,e),s?this.player.emitError(vt.decoderWorkerWasmError,`filename: ${t},message: ${i}`):this.player.emitError(vt.decoderWorkerInitError,`filename: ${t},message: ${i}`))},this.decoderWorker.onmessageerror=e=>{this.player.debugError("decoderWorker","onmessageerror",e)},this.decoderWorker.onmessage=e=>{const t=e.data;switch(t.cmd){case le:this.player.debugLog("decoderWorker","onmessage:",le),this.decoderWorker&&this._initWork(),this.player.loaded||this.player.emit(yt.load),this.player.emit(yt.decoderWorkerInit);break;case ge:this.player.debugLog("decoderWorker","onmessage:",ge,t.code),this.player._times.decodeStart||(this.player._times.decodeStart=yo()),this.player.video.updateVideoInfo({encTypeCode:t.code});break;case ye:this.player.debugLog("decoderWorker","onmessage:",ye,t.codecId),this.player.recorder&&this.player.recorder.initMetaData(t.buffer,t.codecId),this.player.video.updateVideoInfo({encTypeCode:t.codecId});break;case pe:this.player.debugLog("decoderWorker","onmessage:",pe,t.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:t.code});break;case me:this.player.debugLog("decoderWorker","onmessage:",me),this.player.recorder&&this.player.recorder.initAudioAacExtraData(t.buffer);break;case de:if(this.player.debugLog("decoderWorker","onmessage:",de,`width:${t.w},height:${t.h}`),$o(t.w)||$o(t.h))return void this.player.emitError(vt.videoInfoError,`video width ${t.w} or height ${t.h} is empty`);if(this.player.video.bindMediaStream(),this.player.video.updateVideoInfo({width:t.w,height:t.h}),!this.player._opt.openWebglAlignment&&t.w/2%4!=0&&this.player.getRenderType()===H)return void this.player.emitError(vt.webglAlignmentError);this.player.video.initCanvasViewSize(),this.player._opt.playType===w&&(this.player.video.initFps(),this.player.video.initVideoDelay());break;case ue:if(this.player.debugLog("decoderWorker","onmessage:",ue,`channels:${t.channels},sampleRate:${t.sampleRate}`),t.channels>2)return void this.player.emitError(vt.audioChannelError,`audio channel is ${t.channels}, max is 2`);this.player.audio&&(this.player.audio.updateAudioInfo(t),this.player._opt.playType===v?this.player.audio.initScriptNode():this.player._opt.playType===w&&this.player.audio.initScriptNodeDelay());break;case he:if(!this.player.video)return void this.player.debugWarn("decoderWorker","onmessage render but video is null");if(this.player.isPlayer()){if(xa(this.player.video.getHasInit()))return void this.player.debugWarn("decoderWorker","onmessage render but video has not init");this.player.video.render(t),this.player.handleRender(),this.player.emit(yt.timeUpdate,t.ts),this.player.updateStats({dfps:!0,buf:t.delay}),this.player._times.videoStart||(this.player._times.videoStart=yo(),this.player.handlePlayToRenderTimes())}else this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),xa(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData(t):this.player.video.render$2(t)):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender&&this.player.video.pushData(t));break;case Ae:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.handleAddNaluTrack(t.buffer,t.isIFrame,t.ts,t.cts);break;case fe:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.isWasmMp4()&&this.player.recorder.handleAddAudioTrack(t.buffer,t.ts);break;case be:const{webcodecsDecoder:e,mseDecoder:i}=this.player;this.player.updateStats({buf:t.delay});const s=new Uint8Array(t.payload);this.player._opt.useWCS&&!this.player._opt.useOffscreen?e.decodeVideo(s,t.ts,t.isIFrame,t.cts):this.player._opt.useMSE&&i.decodeVideo(s,t.ts,t.isIFrame,t.cts);break;case ve:if(this.player._opt.useMSE){const e=new Uint8Array(t.payload);this.player.mseDecoder.decodeAudio(e,t.ts,t.cts)}break;case ce:if(!this.player.audio)return void this.player.debugWarn("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===v||this.player._opt.playType===w&&(xa(this.player.playbackPause)||this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender))&&this.player.audio.play(t.buffer,t.ts));break;case _e:if(t.type===yt.streamSuccess)this.player.stream?this.player.stream.emit(yt.streamSuccess):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream success but stream is null");else if(t.type===yt.streamRate)this.player.emit(yt.kBps,(t.value/1024).toFixed(2));else if(t.type===yt.streamEnd)this.player?(t.value===m&&this.player.emit(yt.websocketClose,t.msg),this.player.stream?this.player.stream.emit(yt.streamEnd,t.msg):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream end but player.stream is null")):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream end but player is null");else if(t.type===yt.streamEndInner)this.player.updateStreamEndInner();else if(t.type===vt.websocketError)this.player&&this.player.stream?this.player.stream.emit(vt.websocketError,t.value):this.player.debugWarn("decoderWorker","onmessage and workerFetch response websocket error but stream is null");else if(t.type===vt.fetchError)this.player&&this.player.stream?this.player.stream.emit(vt.fetchError,t.value):this.player.debugWarn("decoderWorker","onmessage and workerFetch response fetch error but stream is null");else if(t.type===yt.streamAbps)this.player.updateStats({abps:t.value});else if(t.type===yt.streamVbps)this.player._times.demuxStart||(this.player._times.demuxStart=yo()),this.player.updateStats({vbps:t.value});else if(t.type===yt.streamDts)this.player.updateStats({dts:t.value});else if(t.type===yt.netBuf)this.player.updateStats({netBuf:t.value});else if(t.type===yt.networkDelayTimeout)this.player.emit(yt.networkDelayTimeout,t.value);else if(t.type===yt.streamStats){const e=JSON.parse(t.value);this.player.updateStats({workerStats:e})}else t.type===yt.websocketOpen&&this.player.emit(yt.websocketOpen);break;case we:this.player&&(this.player.videoIframeIntervalTs=t.value);break;case Se:this.player&&this.player.updateStats({isDropping:!0});break;case Fe:this.player.decoderCheckFirstIFrame();break;case Te:this.player&&this.player.video&&this.player.video.setStreamFps(t.value);break;case Ce:this.player.emitError(vt.simdH264DecodeVideoWidthIsTooLarge,t.value);break;case ke:this.player.emitError(vt.wasmWidthOrHeightChange,t.value);break;case Le:this.player.emitError(vt.simdDecodeError);break;case Ee:this.player.debugLog("decoderWorker","onmessage:",Ee),this.player.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload();break;case xe:this.player.debugLog("decoderWorker","onmessage:",xe),this._destroy();break;case De:this.player&&this.player.pushTempStream(t.buffer);break;case Re:this.player&&this.player.emitVideoSei({ts:t.ts,data:new Uint8Array(t.buffer)});break;case Ie:if(this.player){if(this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addMetaData(e)}const e=Il(new Uint8Array(t.buffer));e&&e.onMetaData&&this.player.updateMetaData(e.onMetaData)}break;case Pe:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addAACSequenceHeader(e,t.ts)}break;case Be:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addVideoSequenceHeader(e,t.ts)}break;case Me:if(this.player&&this.player.isRecordTypeFlv()&&this.player.recording){const e=new Uint8Array(t.buffer);t.type===Ge?this.player.recorder.addVideo(e,t.ts):t.type===je&&this.player.recorder.addAudio(e,t.ts)}break;case Ue:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Ue),this.player.video.$videoElement.srcObject=t.mseHandle);break;case Oe:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Oe,t.value),this.player._mseWorkerData.firstRenderTime=Number(t.value));break;case Ne:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Ne,t.value,t.msg),this.player.emitError(t.value,t.msg));break;default:this.player[t.cmd]&&this.player[t.cmd](t)}}}_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||Mr,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,isSm4CryptoH265V2:this.player._opt.isSm4CryptoH265V2,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:la(),isFirefox:Co(),supportMSEDecodeHevc:No(),isDropSameTimestampGop:this.player._opt.isDropSameTimestampGop,mseDecodeAudio:this.player._opt.mseDecodeAudio,wcsDecodeAudio:this.player._opt.wcsDecodeAudio,nakedFlowH265DemuxUseNew:this.player._opt.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:this.player._opt.mseDecoderUseWorker,mseAutoCleanupMinBackwardDuration:this.player._opt.mseAutoCleanupMinBackwardDuration,mseAutoCleanupMaxBackwardDuration:this.player._opt.mseAutoCleanupMaxBackwardDuration,mseCorrectTimeDuration:this.player._opt.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:this.player._opt.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:this.player._opt.nakedFlowDemuxUseNew,nakedFlowFps:this.player._opt.nakedFlowFps,checkStreamEnd:this.player._opt.checkStreamEnd};this.decoderWorker.postMessage({cmd:Ve,opt:JSON.stringify(e)}),this.player._opt.cryptoKey&&this.player._opt.cryptoKey.byteLength>0&&this.player._opt.cryptoIV&&this.player._opt.cryptoIV.byteLength>0&&(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===v?this.player.isUseHls265()?this._decodeVideoNoDelay(e,t,i):this._decodeVideo(e,t,i):this.player._opt.playType===w&&(this.player.isPlaybackOnlyDecodeIFrame()?i&&(this.player.debugLog("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 s={type:Ge,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:He,buffer:e,options:s},[e.buffer])}_decodeVideoNoDelay(e,t,i){this.decoderWorker.postMessage({cmd:qe,buffer:e,ts:Math.max(t,0),isIFrame:i},[e.buffer])}decodeAudio(e,t){this.player._opt.playType===v?this.player._opt.useWCS||this.player._opt.useMSE||this.player.isUseHls265()?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t):this.player._opt.playType===w&&(this.player.isPlaybackOnlyDecodeIFrame()||(1===this.player.video.rate?this._decodeAudio(e,t):this._decodeAudioNoDelay(e,t)))}_decodeAudio(e,t){const i={type:je,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:He,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:Je,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker&&this.decoderWorker.postMessage({cmd:Ye,key:e.key,value:e.value})}workerFetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{_opt:i}=this.player;let s=[];t.protocols&&(s=t.protocols,delete t.protocols);const r={protocol:i.protocol,isFlv:i.isFlv,isFmp4:i.isFmp4,isMpeg4:i.isMpeg4,isNakedFlow:i.isNakedFlow,isTs:i.isTs,options:t};this.decoderWorker.postMessage({cmd:Xe,url:e,protocols:s,opt:JSON.stringify(r)})}clearWorkBuffer(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.decoderWorker.postMessage({cmd:Qe,needClear:e})}workerSendMessage(e){this.decoderWorker.postMessage({cmd:Ze,message:e})}updateVideoTimestamp(e){this.decoderWorker.postMessage({cmd:et,message:e})}updatePlaybackIsPause(e){this.decoderWorker.postMessage({cmd:tt,isPause:e})}}var Bl,Ml="application/json, text/javascript",Fl="text/html",Ul=/^(?:text|application)\/xml/i,Ol=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nl=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,jl=/^\s*$/,Gl={},Wl={},zl="",$l={type:"GET",beforeSend:Vl,success:Vl,error:Vl,complete:Vl,context:null,xhr:function(){return new window.XMLHttpRequest},accepts:{json:Ml,xml:"application/xml, text/xml",html:Fl,text:"text/plain","*":"*/".concat("*")},crossDomain:!1,timeout:0,username:null,password:null,processData:!0,promise:Vl,contentType:"application/x-www-form-urlencoded; charset=UTF-8"};function Vl(){}var Hl=function(e,t){"object"==typeof e&&(t=e,e=void 0);var i=ed({},t=t||{});for(var s in $l)void 0===i[s]&&(i[s]=$l[s]);try{var r={},o=new Promise((function(e,t){r.resolve=e,r.reject=t}));o.resolve=r.resolve,o.reject=r.reject,i.promise=o}catch(e){i.promise={resolve:Vl,reject:Vl}}var a=Nl.exec(window.location.href.toLowerCase())||[];i.url=((e||i.url||window.location.href)+"").replace(/#.*$/,"").replace(/^\/\//,a[1]+"//");var n=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=Ql(i.url,d)}return function(e){var t,i=e.jsonpCallback||"jsonp"+sd(),s=window.document.createElement("script"),r={abort:function(){i in window&&(window[i]=Vl)}},o=window.document.getElementsByTagName("head")[0]||window.document.documentElement;function a(i){window.clearTimeout(t),r.abort(),Kl(i.type,r,i.type,e),n()}s.onerror=function(e){a(e)},window[i]=function(i){window.clearTimeout(t),Jl(i,r,e),n()},Xl(e),s.src=e.url.replace(/=\?/,"="+i),s.src=Ql(s.src,"_="+(new Date).getTime()),s.async=!0,e.scriptCharset&&(s.charset=e.scriptCharset);o.insertBefore(s,o.firstChild),e.timeout>0&&(t=window.setTimeout((function(){r.abort(),Kl("timeout",r,"timeout",e),n()}),e.timeout));function n(){s.clearAttributes?s.clearAttributes():s.onload=s.onreadystatechange=s.onerror=null,s.parentNode&&s.parentNode.removeChild(s),s=null,delete window[i]}return e.promise.abort=function(){r.abort()},e.promise.xhr=r,e.promise}(i)}Xl(i);var h=i.accepts[l]||i.accepts["*"],c={};/^([\w-]+:)\/\//.test(i.url)?RegExp.$1:window.location.protocol;var u,p=$l.xhr();i.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest"),i.ifModified&&(Gl[n]&&(c["If-Modified-Since"]=Gl[n]),Wl[n]&&(c["If-None-Match"]=Wl[n])),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(n)?n.replace(m,"$1_="+sd()):n+(/\?/.test(n)?"&":"?")+"_="+sd()}i.headers=ed(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(zl=p.getAllResponseHeaders(),i.ifModified){var s=Yl("Last-Modified");s&&(Gl[n]=s),(s=Yl("etag"))&&(Wl[n]=s)}l=l||function(e){return e&&(e===Fl?"html":e===Ml?"json":Ul.test(e)&&"xml")||"text"}(p.getResponseHeader("content-type")),e=p.responseText;try{"xml"===l?e=p.responseXML:"json"===l&&(e=jl.test(e)?null:JSON.parse(e))}catch(e){t=e}t?Kl(t,"parseerror",p,i):Jl(e,p,i)}else Kl(null,"error",p,i)}};var g=!("async"in i)||i.async;if(p.open(i.type,i.url,g,i.username,i.password),i.xhrFields)for(var y in i.xhrFields)p[y]=i.xhrFields[y];for(var y in i.mimeType&&p.overrideMimeType&&p.overrideMimeType(i.mimeType),i.headers)void 0!==i.headers[y]&&p.setRequestHeader(y,i.headers[y]+"");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=Vl,p.abort(),Kl(null,"timeout",p,i)}),i.timeout)),p.send(i.data?i.data:null),i.promise.abort=function(){p.abort()},i.promise)};function Jl(e,t,i){var s=i.context,r="success";i.success.call(s,e,r,t),i.promise.resolve(e,r,t),ql(r,t,i)}function ql(e,t,i){var s=i.context;i.complete.call(s,t,e)}function Kl(e,t,i,s){var r=s.context;s.error.call(r,i,t,e),s.promise.reject(i,t,e),ql(t,i,s)}function Yl(e){var t;if(!Bl){for(Bl={};t=Ol.exec(zl);)Bl[t[1].toLowerCase()]=t[2];t=Bl[e.toLowerCase()]}return null===t?null:t}function Ql(e,t){return(e+"&"+t).replace(/[&?]{1,2}/,"?")}function Xl(e){!td(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))},Zl(i,e,t),i.join("&").replace("%20","+")}(e.data)),!e.data||e.type&&"GET"!==e.type.toUpperCase()||(e.url=Ql(e.url,e.data))}function Zl(e,t,i,s){var r=function(e){return"[object Array]"===Object.prototype.toString.call(e)}(t);for(var o in t){var a=t[o];s&&(o=i?s:s+"["+(r?"":o)+"]"),!s&&r?e.add(a.name,a.value):(i?r(a):td(a))?Zl(e,a,i,o):e.add(o,a)}}function ed(e){for(var t=Array.prototype.slice,i=t.call(arguments,1),s=0,r=i.length;s255)return!1;return!0}function ad(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(!od(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(rd(e.length)&&od(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function nd(e){return new Uint8Array(e)}function ld(e,t,i,s,r){null==s&&null==r||(e=e.slice?e.slice(s,r):Array.prototype.slice.call(e,s,r)),t.set(e,i)}Hl.get=function(e,t,i,s){return id(t)&&(s=s||i,i=t,t=void 0),Hl({url:e,data:t,success:i,dataType:s})},Hl.post=function(e,t,i,s){return id(t)&&(s=s||i,i=t,t=void 0),Hl({type:"POST",url:e,data:t,success:i,dataType:s})},Hl.getJSON=function(e,t,i){return id(t)&&(i=t,t=void 0),Hl({url:e,data:t,success:i,dataType:"json"})},Hl.ajaxSetup=function(e,t){return t?ed(ed(e,$l),t):ed($l,e)};var dd={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&s<224?(t.push(String.fromCharCode((31&s)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&s)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},hd=function(){var e="0123456789abcdef";return{toBytes:function(e){for(var t=[],i=0;i>4]+e[15&r])}return i.join("")}}}(),cd={16:10,24:12,32:14},ud=[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],pd=[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],fd=[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],md=[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],gd=[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],yd=[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],Ad=[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],bd=[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],vd=[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],_d=[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],wd=[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],Sd=[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],Ed=[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],Td=[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],kd=[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 Ld(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=o[t],this._Kd[e-i][t%4]=o[t];for(var a,n=0,l=r;l>16&255]<<24^pd[a>>8&255]<<16^pd[255&a]<<8^pd[a>>24&255]^ud[n]<<24,n+=1,8!=r)for(t=1;t>8&255]<<8^pd[a>>16&255]<<16^pd[a>>24&255]<<24;for(t=r/2+1;t>2,h=l%4,this._Ke[d][h]=o[t],this._Kd[e-d][h]=o[t++],l++}for(var d=1;d>24&255]^Ed[a>>16&255]^Td[a>>8&255]^kd[255&a]},Cd.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],s=Ld(e),r=0;r<4;r++)s[r]^=this._Ke[0][r];for(var o=1;o>24&255]^gd[s[(r+1)%4]>>16&255]^yd[s[(r+2)%4]>>8&255]^Ad[255&s[(r+3)%4]]^this._Ke[o][r];s=i.slice()}var a,n=nd(16);for(r=0;r<4;r++)a=this._Ke[t][r],n[4*r]=255&(pd[s[r]>>24&255]^a>>24),n[4*r+1]=255&(pd[s[(r+1)%4]>>16&255]^a>>16),n[4*r+2]=255&(pd[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(pd[255&s[(r+3)%4]]^a);return n},Cd.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],s=Ld(e),r=0;r<4;r++)s[r]^=this._Kd[0][r];for(var o=1;o>24&255]^vd[s[(r+3)%4]>>16&255]^_d[s[(r+2)%4]>>8&255]^wd[255&s[(r+1)%4]]^this._Kd[o][r];s=i.slice()}var a,n=nd(16);for(r=0;r<4;r++)a=this._Kd[t][r],n[4*r]=255&(fd[s[r]>>24&255]^a>>24),n[4*r+1]=255&(fd[s[(r+3)%4]>>16&255]^a>>16),n[4*r+2]=255&(fd[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(fd[255&s[(r+1)%4]]^a);return n};var xd=function(e){if(!(this instanceof xd))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Cd(e)};xd.prototype.encrypt=function(e){if((e=ad(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=nd(e.length),i=nd(16),s=0;sNumber.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)},Pd.prototype.setBytes=function(e){if(16!=(e=ad(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Pd.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Bd=function(e,t){if(!(this instanceof Bd))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Pd||(t=new Pd(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Cd(e)};Bd.prototype.encrypt=function(e){for(var t=ad(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,s=0;s>>2]>>>24-o%4*8&255;t[s+o>>>2]|=a<<24-(s+o)%4*8}else for(var n=0;n>>2]=i[n>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,i=this.sigBytes;t[i>>>2]&=4294967295<<32-i%4*8,t.length=e.ceil(i/4)},clone:function(){var e=l.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],i=0;i>>2]>>>24-r%4*8&255;s.push((o>>>4).toString(16)),s.push((15&o).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new d.init(i,t/2)}},u=h.Latin1={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>24-r%4*8&255;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new d.init(i,t)}},p=h.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},f=n.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new d.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var i,s=this._data,r=s.words,o=s.sigBytes,a=this.blockSize,n=o/(4*a),l=(n=t?e.ceil(n):e.max((0|n)-this._minBufferSize,0))*a,h=e.min(4*l,o);if(l){for(var c=0;c>>2]|=e[r]<<24-r%4*8;t.call(this,s,i)}else t.apply(this,arguments)};s.prototype=e}}(),i.lib.WordArray)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(){var e=i,t=e.lib.WordArray,s=e.enc;function r(e){return e<<8&4278255360|e>>>8&16711935}s.Utf16=s.Utf16BE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>16-r%4*8&65535;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var i=e.length,s=[],r=0;r>>1]|=e.charCodeAt(r)<<16-r%2*16;return t.create(s,2*i)}},s.Utf16LE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],o=0;o>>2]>>>16-o%4*8&65535);s.push(String.fromCharCode(a))}return s.join("")},parse:function(e){for(var i=e.length,s=[],o=0;o>>1]|=r(e.charCodeAt(o)<<16-o%2*16);return t.create(s,2*i)}}}(),i.enc.Utf16)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(){var e=i,t=e.lib.WordArray;function s(e,i,s){for(var r=[],o=0,a=0;a>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64={stringify:function(e){var t=e.words,i=e.sigBytes,s=this._map;e.clamp();for(var r=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,n=0;n<4&&o+.75*n>>6*(3-n)&63));var l=s.charAt(64);if(l)for(;r.length%4;)r.push(l);return r.join("")},parse:function(e){var t=e.length,i=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var o=0;o>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var i=e.words,s=e.sigBytes,r=t?this._safe_map:this._map;e.clamp();for(var o=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(i[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|i[a+2>>>2]>>>24-(a+2)%4*8&255,l=0;l<4&&a+.75*l>>6*(3-l)&63));var d=r.charAt(64);if(d)for(;o.length%4;)o.push(d);return o.join("")},parse:function(e,t){void 0===t&&(t=!0);var i=e.length,r=t?this._safe_map:this._map,o=this._reverseMap;if(!o){o=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(r<<24|r>>>8)}var o=this._hash.words,a=e[t+0],l=e[t+1],p=e[t+2],f=e[t+3],m=e[t+4],g=e[t+5],y=e[t+6],A=e[t+7],b=e[t+8],v=e[t+9],_=e[t+10],w=e[t+11],S=e[t+12],E=e[t+13],T=e[t+14],k=e[t+15],L=o[0],C=o[1],x=o[2],D=o[3];L=d(L,C,x,D,a,7,n[0]),D=d(D,L,C,x,l,12,n[1]),x=d(x,D,L,C,p,17,n[2]),C=d(C,x,D,L,f,22,n[3]),L=d(L,C,x,D,m,7,n[4]),D=d(D,L,C,x,g,12,n[5]),x=d(x,D,L,C,y,17,n[6]),C=d(C,x,D,L,A,22,n[7]),L=d(L,C,x,D,b,7,n[8]),D=d(D,L,C,x,v,12,n[9]),x=d(x,D,L,C,_,17,n[10]),C=d(C,x,D,L,w,22,n[11]),L=d(L,C,x,D,S,7,n[12]),D=d(D,L,C,x,E,12,n[13]),x=d(x,D,L,C,T,17,n[14]),L=h(L,C=d(C,x,D,L,k,22,n[15]),x,D,l,5,n[16]),D=h(D,L,C,x,y,9,n[17]),x=h(x,D,L,C,w,14,n[18]),C=h(C,x,D,L,a,20,n[19]),L=h(L,C,x,D,g,5,n[20]),D=h(D,L,C,x,_,9,n[21]),x=h(x,D,L,C,k,14,n[22]),C=h(C,x,D,L,m,20,n[23]),L=h(L,C,x,D,v,5,n[24]),D=h(D,L,C,x,T,9,n[25]),x=h(x,D,L,C,f,14,n[26]),C=h(C,x,D,L,b,20,n[27]),L=h(L,C,x,D,E,5,n[28]),D=h(D,L,C,x,p,9,n[29]),x=h(x,D,L,C,A,14,n[30]),L=c(L,C=h(C,x,D,L,S,20,n[31]),x,D,g,4,n[32]),D=c(D,L,C,x,b,11,n[33]),x=c(x,D,L,C,w,16,n[34]),C=c(C,x,D,L,T,23,n[35]),L=c(L,C,x,D,l,4,n[36]),D=c(D,L,C,x,m,11,n[37]),x=c(x,D,L,C,A,16,n[38]),C=c(C,x,D,L,_,23,n[39]),L=c(L,C,x,D,E,4,n[40]),D=c(D,L,C,x,a,11,n[41]),x=c(x,D,L,C,f,16,n[42]),C=c(C,x,D,L,y,23,n[43]),L=c(L,C,x,D,v,4,n[44]),D=c(D,L,C,x,S,11,n[45]),x=c(x,D,L,C,k,16,n[46]),L=u(L,C=c(C,x,D,L,p,23,n[47]),x,D,a,6,n[48]),D=u(D,L,C,x,A,10,n[49]),x=u(x,D,L,C,T,15,n[50]),C=u(C,x,D,L,g,21,n[51]),L=u(L,C,x,D,S,6,n[52]),D=u(D,L,C,x,f,10,n[53]),x=u(x,D,L,C,_,15,n[54]),C=u(C,x,D,L,l,21,n[55]),L=u(L,C,x,D,b,6,n[56]),D=u(D,L,C,x,k,10,n[57]),x=u(x,D,L,C,y,15,n[58]),C=u(C,x,D,L,E,21,n[59]),L=u(L,C,x,D,m,6,n[60]),D=u(D,L,C,x,w,10,n[61]),x=u(x,D,L,C,p,15,n[62]),C=u(C,x,D,L,v,21,n[63]),o[0]=o[0]+L|0,o[1]=o[1]+C|0,o[2]=o[2]+x|0,o[3]=o[3]+D|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;i[r>>>5]|=128<<24-r%32;var o=e.floor(s/4294967296),a=s;i[15+(r+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),i[14+(r+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(i.length+1),this._process();for(var n=this._hash,l=n.words,d=0;d<4;d++){var h=l[d];l[d]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return n},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function d(e,t,i,s,r,o,a){var n=e+(t&i|~t&s)+r+a;return(n<>>32-o)+t}function h(e,t,i,s,r,o,a){var n=e+(t&s|i&~s)+r+a;return(n<>>32-o)+t}function c(e,t,i,s,r,o,a){var n=e+(t^i^s)+r+a;return(n<>>32-o)+t}function u(e,t,i,s,r,o,a){var n=e+(i^(t|~s))+r+a;return(n<>>32-o)+t}t.MD5=o._createHelper(l),t.HmacMD5=o._createHmacHelper(l)}(Math),i.MD5)})),Wr((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=Fd).lib,r=s.WordArray,o=s.Hasher,a=i.algo,n=[],l=a.SHA1=o.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],d=0;d<80;d++){if(d<16)n[d]=0|e[t+d];else{var h=n[d-3]^n[d-8]^n[d-14]^n[d-16];n[d]=h<<1|h>>>31}var c=(s<<5|s>>>27)+l+n[d];c+=d<20?1518500249+(r&o|~r&a):d<40?1859775393+(r^o^a):d<60?(r&o|r&a|o&a)-1894007588:(r^o^a)-899497514,l=a,a=o,o=r<<30|r>>>2,r=s,s=c}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+l|0},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=Math.floor(i/4294967296),t[15+(s+64>>>9<<4)]=i,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=o._createHelper(l),i.HmacSHA1=o._createHmacHelper(l),d.SHA1)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=[],l=[];!function(){function t(t){for(var i=e.sqrt(t),s=2;s<=i;s++)if(!(t%s))return!1;return!0}function i(e){return 4294967296*(e-(0|e))|0}for(var s=2,r=0;r<64;)t(s)&&(r<8&&(n[r]=i(e.pow(s,.5))),l[r]=i(e.pow(s,1/3)),r++),s++}();var d=[],h=a.SHA256=o.extend({_doReset:function(){this._hash=new r.init(n.slice(0))},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=0;p<64;p++){if(p<16)d[p]=0|e[t+p];else{var f=d[p-15],m=(f<<25|f>>>7)^(f<<14|f>>>18)^f>>>3,g=d[p-2],y=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;d[p]=m+d[p-7]+y+d[p-16]}var A=s&r^s&o^r&o,b=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),v=u+((n<<26|n>>>6)^(n<<21|n>>>11)^(n<<7|n>>>25))+(n&h^~n&c)+l[p]+d[p];u=c,c=h,h=n,n=a+v|0,a=o,o=r,r=s,s=v+(b+A)|0}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+n|0,i[5]=i[5]+h|0,i[6]=i[6]+c|0,i[7]=i[7]+u|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;return i[r>>>5]|=128<<24-r%32,i[14+(r+64>>>9<<4)]=e.floor(s/4294967296),i[15+(r+64>>>9<<4)]=s,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(h),t.HmacSHA256=o._createHmacHelper(h)}(Math),i.SHA256)})),Wr((function(e,t){var i,s,r,o,a,n;e.exports=(s=(i=n=Fd).lib.WordArray,r=i.algo,o=r.SHA256,a=r.SHA224=o.extend({_doReset:function(){this._hash=new s.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=o._createHelper(a),i.HmacSHA224=o._createHmacHelper(a),n.SHA224)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(){var e=i,t=e.lib.Hasher,s=e.x64,r=s.Word,o=s.WordArray,a=e.algo;function n(){return r.create.apply(r,arguments)}var l=[n(1116352408,3609767458),n(1899447441,602891725),n(3049323471,3964484399),n(3921009573,2173295548),n(961987163,4081628472),n(1508970993,3053834265),n(2453635748,2937671579),n(2870763221,3664609560),n(3624381080,2734883394),n(310598401,1164996542),n(607225278,1323610764),n(1426881987,3590304994),n(1925078388,4068182383),n(2162078206,991336113),n(2614888103,633803317),n(3248222580,3479774868),n(3835390401,2666613458),n(4022224774,944711139),n(264347078,2341262773),n(604807628,2007800933),n(770255983,1495990901),n(1249150122,1856431235),n(1555081692,3175218132),n(1996064986,2198950837),n(2554220882,3999719339),n(2821834349,766784016),n(2952996808,2566594879),n(3210313671,3203337956),n(3336571891,1034457026),n(3584528711,2466948901),n(113926993,3758326383),n(338241895,168717936),n(666307205,1188179964),n(773529912,1546045734),n(1294757372,1522805485),n(1396182291,2643833823),n(1695183700,2343527390),n(1986661051,1014477480),n(2177026350,1206759142),n(2456956037,344077627),n(2730485921,1290863460),n(2820302411,3158454273),n(3259730800,3505952657),n(3345764771,106217008),n(3516065817,3606008344),n(3600352804,1432725776),n(4094571909,1467031594),n(275423344,851169720),n(430227734,3100823752),n(506948616,1363258195),n(659060556,3750685593),n(883997877,3785050280),n(958139571,3318307427),n(1322822218,3812723403),n(1537002063,2003034995),n(1747873779,3602036899),n(1955562222,1575990012),n(2024104815,1125592928),n(2227730452,2716904306),n(2361852424,442776044),n(2428436474,593698344),n(2756734187,3733110249),n(3204031479,2999351573),n(3329325298,3815920427),n(3391569614,3928383900),n(3515267271,566280711),n(3940187606,3454069534),n(4118630271,4000239992),n(116418474,1914138554),n(174292421,2731055270),n(289380356,3203993006),n(460393269,320620315),n(685471733,587496836),n(852142971,1086792851),n(1017036298,365543100),n(1126000580,2618297676),n(1288033470,3409855158),n(1501505948,4234509866),n(1607167915,987167468),n(1816402316,1246189591)],d=[];!function(){for(var e=0;e<80;e++)d[e]=n()}();var h=a.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=s.high,f=s.low,m=r.high,g=r.low,y=o.high,A=o.low,b=a.high,v=a.low,_=n.high,w=n.low,S=h.high,E=h.low,T=c.high,k=c.low,L=u.high,C=u.low,x=p,D=f,R=m,I=g,P=y,B=A,M=b,F=v,U=_,O=w,N=S,j=E,G=T,W=k,z=L,$=C,V=0;V<80;V++){var H,J,q=d[V];if(V<16)J=q.high=0|e[t+2*V],H=q.low=0|e[t+2*V+1];else{var K=d[V-15],Y=K.high,Q=K.low,X=(Y>>>1|Q<<31)^(Y>>>8|Q<<24)^Y>>>7,Z=(Q>>>1|Y<<31)^(Q>>>8|Y<<24)^(Q>>>7|Y<<25),ee=d[V-2],te=ee.high,ie=ee.low,se=(te>>>19|ie<<13)^(te<<3|ie>>>29)^te>>>6,re=(ie>>>19|te<<13)^(ie<<3|te>>>29)^(ie>>>6|te<<26),oe=d[V-7],ae=oe.high,ne=oe.low,le=d[V-16],de=le.high,he=le.low;J=(J=(J=X+ae+((H=Z+ne)>>>0>>0?1:0))+se+((H+=re)>>>0>>0?1:0))+de+((H+=he)>>>0>>0?1:0),q.high=J,q.low=H}var ce,ue=U&N^~U&G,pe=O&j^~O&W,fe=x&R^x&P^R&P,me=D&I^D&B^I&B,ge=(x>>>28|D<<4)^(x<<30|D>>>2)^(x<<25|D>>>7),ye=(D>>>28|x<<4)^(D<<30|x>>>2)^(D<<25|x>>>7),Ae=(U>>>14|O<<18)^(U>>>18|O<<14)^(U<<23|O>>>9),be=(O>>>14|U<<18)^(O>>>18|U<<14)^(O<<23|U>>>9),ve=l[V],_e=ve.high,we=ve.low,Se=z+Ae+((ce=$+be)>>>0<$>>>0?1:0),Ee=ye+me;z=G,$=W,G=N,W=j,N=U,j=O,U=M+(Se=(Se=(Se=Se+ue+((ce+=pe)>>>0>>0?1:0))+_e+((ce+=we)>>>0>>0?1:0))+J+((ce+=H)>>>0>>0?1:0))+((O=F+ce|0)>>>0>>0?1:0)|0,M=P,F=B,P=R,B=I,R=x,I=D,x=Se+(ge+fe+(Ee>>>0>>0?1:0))+((D=ce+Ee|0)>>>0>>0?1:0)|0}f=s.low=f+D,s.high=p+x+(f>>>0>>0?1:0),g=r.low=g+I,r.high=m+R+(g>>>0>>0?1:0),A=o.low=A+B,o.high=y+P+(A>>>0>>0?1:0),v=a.low=v+F,a.high=b+M+(v>>>0>>0?1:0),w=n.low=w+O,n.high=_+U+(w>>>0>>0?1:0),E=h.low=E+j,h.high=S+N+(E>>>0>>0?1:0),k=c.low=k+W,c.high=T+G+(k>>>0>>0?1:0),C=u.low=C+$,u.high=L+z+(C>>>0<$>>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[30+(s+128>>>10<<5)]=Math.floor(i/4294967296),t[31+(s+128>>>10<<5)]=i,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(h),e.HmacSHA512=t._createHmacHelper(h)}(),i.SHA512)})),Wr((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=Fd).x64,r=s.Word,o=s.WordArray,a=i.algo,n=a.SHA512,l=a.SHA384=n.extend({_doReset:function(){this._hash=new o.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=n._createHelper(l),i.HmacSHA384=n._createHmacHelper(l),d.SHA384)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.x64.Word,n=t.algo,l=[],d=[],h=[];!function(){for(var e=1,t=0,i=0;i<24;i++){l[e+5*t]=(i+1)*(i+2)/2%64;var s=(2*e+3*t)%5;e=t%5,t=s}for(e=0;e<5;e++)for(t=0;t<5;t++)d[e+5*t]=t+(2*e+3*t)%5*5;for(var r=1,o=0;o<24;o++){for(var n=0,c=0,u=0;u<7;u++){if(1&r){var p=(1<>>24)|4278255360&(o<<24|o>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(C=i[r]).high^=a,C.low^=o}for(var n=0;n<24;n++){for(var u=0;u<5;u++){for(var p=0,f=0,m=0;m<5;m++)p^=(C=i[u+5*m]).high,f^=C.low;var g=c[u];g.high=p,g.low=f}for(u=0;u<5;u++){var y=c[(u+4)%5],A=c[(u+1)%5],b=A.high,v=A.low;for(p=y.high^(b<<1|v>>>31),f=y.low^(v<<1|b>>>31),m=0;m<5;m++)(C=i[u+5*m]).high^=p,C.low^=f}for(var _=1;_<25;_++){var w=(C=i[_]).high,S=C.low,E=l[_];E<32?(p=w<>>32-E,f=S<>>32-E):(p=S<>>64-E,f=w<>>64-E);var T=c[d[_]];T.high=p,T.low=f}var k=c[0],L=i[0];for(k.high=L.high,k.low=L.low,u=0;u<5;u++)for(m=0;m<5;m++){var C=i[_=u+5*m],x=c[_],D=c[(u+1)%5+5*m],R=c[(u+2)%5+5*m];C.high=x.high^~D.high&R.high,C.low=x.low^~D.low&R.low}C=i[0];var I=h[n];C.high^=I.high,C.low^=I.low}},_doFinalize:function(){var t=this._data,i=t.words;this._nDataBytes;var s=8*t.sigBytes,o=32*this.blockSize;i[s>>>5]|=1<<24-s%32,i[(e.ceil((s+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var a=this._state,n=this.cfg.outputLength/8,l=n/8,d=[],h=0;h>>24)|4278255360&(u<<24|u>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),d.push(p),d.push(u)}return new r.init(d,n)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),i=0;i<25;i++)t[i]=t[i].clone();return e}});t.SHA3=o._createHelper(u),t.HmacSHA3=o._createHmacHelper(u)}(Math),i.SHA3)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=r.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),l=r.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),d=r.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),h=r.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=r.create([0,1518500249,1859775393,2400959708,2840853838]),u=r.create([1352829926,1548603684,1836072691,2053994217,0]),p=a.RIPEMD160=o.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=0;i<16;i++){var s=t+i,r=e[s];e[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var o,a,p,v,_,w,S,E,T,k,L,C=this._hash.words,x=c.words,D=u.words,R=n.words,I=l.words,P=d.words,B=h.words;for(w=o=C[0],S=a=C[1],E=p=C[2],T=v=C[3],k=_=C[4],i=0;i<80;i+=1)L=o+e[t+R[i]]|0,L+=i<16?f(a,p,v)+x[0]:i<32?m(a,p,v)+x[1]:i<48?g(a,p,v)+x[2]:i<64?y(a,p,v)+x[3]:A(a,p,v)+x[4],L=(L=b(L|=0,P[i]))+_|0,o=_,_=v,v=b(p,10),p=a,a=L,L=w+e[t+I[i]]|0,L+=i<16?A(S,E,T)+D[0]:i<32?y(S,E,T)+D[1]:i<48?g(S,E,T)+D[2]:i<64?m(S,E,T)+D[3]:f(S,E,T)+D[4],L=(L=b(L|=0,B[i]))+k|0,w=k,k=T,T=b(E,10),E=S,S=L;L=C[1]+p+T|0,C[1]=C[2]+v+k|0,C[2]=C[3]+_+w|0,C[3]=C[4]+o+S|0,C[4]=C[0]+a+E|0,C[0]=L},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e.sigBytes=4*(t.length+1),this._process();for(var r=this._hash,o=r.words,a=0;a<5;a++){var n=o[a];o[a]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}return r},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function f(e,t,i){return e^t^i}function m(e,t,i){return e&t|~e&i}function g(e,t,i){return(e|~t)^i}function y(e,t,i){return e&i|t&~i}function A(e,t,i){return e^(t|~i)}function b(e,t){return e<>>32-t}t.RIPEMD160=o._createHelper(p),t.HmacRIPEMD160=o._createHmacHelper(p)}(),i.RIPEMD160)})),Wr((function(e,t){var i,s,r;e.exports=(s=(i=Fd).lib.Base,r=i.enc.Utf8,void(i.algo.HMAC=s.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=r.parse(t));var i=e.blockSize,s=4*i;t.sigBytes>s&&(t=e.finalize(t)),t.clamp();for(var o=this._oKey=t.clone(),a=this._iKey=t.clone(),n=o.words,l=a.words,d=0;d>>2];e.sigBytes-=t}};s.BlockCipher=h.extend({cfg:h.cfg.extend({mode:p,padding:f}),reset:function(){var e;h.reset.call(this);var t=this.cfg,i=t.iv,s=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=s.createEncryptor:(e=s.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,i&&i.words):(this._mode=e.call(s,this,i&&i.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=s.CipherParams=r.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),g=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,i=e.salt;return(i?o.create([1398893684,1701076831]).concat(i).concat(t):t).toString(l)},parse:function(e){var t,i=l.parse(e),s=i.words;return 1398893684==s[0]&&1701076831==s[1]&&(t=o.create(s.slice(2,4)),s.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:t})}},y=s.SerializableCipher=r.extend({cfg:r.extend({format:g}),encrypt:function(e,t,i,s){s=this.cfg.extend(s);var r=e.createEncryptor(i,s),o=r.finalize(t),a=r.cfg;return m.create({ciphertext:o,key:i,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:s.format})},decrypt:function(e,t,i,s){return s=this.cfg.extend(s),t=this._parse(t,s.format),e.createDecryptor(i,s).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),A=(t.kdf={}).OpenSSL={execute:function(e,t,i,s,r){if(s||(s=o.random(8)),r)a=d.create({keySize:t+i,hasher:r}).compute(e,s);else var a=d.create({keySize:t+i}).compute(e,s);var n=o.create(a.words.slice(t),4*i);return a.sigBytes=4*t,m.create({key:a,iv:n,salt:s})}},b=s.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:A}),encrypt:function(e,t,i,s){var r=(s=this.cfg.extend(s)).kdf.execute(i,e.keySize,e.ivSize,s.salt,s.hasher);s.iv=r.iv;var o=y.encrypt.call(this,e,t,r.key,s);return o.mixIn(r),o},decrypt:function(e,t,i,s){s=this.cfg.extend(s),t=this._parse(t,s.format);var r=s.kdf.execute(i,e.keySize,e.ivSize,t.salt,s.hasher);return s.iv=r.iv,y.decrypt.call(this,e,t,r.key,s)}})}())})),Wr((function(e,t){var i;e.exports=((i=Fd).mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,i,s){var r,o=this._iv;o?(r=o.slice(0),this._iv=void 0):r=this._prevBlock,s.encryptBlock(r,0);for(var a=0;a>24&255)){var t=e>>16&255,i=e>>8&255,s=255&e;255===t?(t=0,255===i?(i=0,255===s?s=0:++s):++i):++t,e=0,e+=t<<16,e+=i<<8,e+=s}else e+=1<<24;return e}function s(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var r=e.Encryptor=e.extend({processBlock:function(e,t){var i=this._cipher,r=i.blockSize,o=this._iv,a=this._counter;o&&(a=this._counter=o.slice(0),this._iv=void 0),s(a);var n=a.slice(0);i.encryptBlock(n,0);for(var l=0;l>>2]|=r<<24-o%4*8,e.sigBytes+=r},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)})),Wr((function(e,t){var i;e.exports=((i=Fd).pad.Iso10126={pad:function(e,t){var s=4*t,r=s-e.sigBytes%s;e.concat(i.lib.WordArray.random(r-1)).concat(i.lib.WordArray.create([r<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)})),Wr((function(e,t){var i;e.exports=((i=Fd).pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)})),Wr((function(e,t){var i;e.exports=((i=Fd).pad.ZeroPadding={pad:function(e,t){var i=4*t;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){var t=e.words,i=e.sigBytes-1;for(i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},i.pad.ZeroPadding)})),Wr((function(e,t){var i;e.exports=((i=Fd).pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(e){var t=i,s=t.lib.CipherParams,r=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(r)},parse:function(e){var t=r.parse(e);return s.create({ciphertext:t})}}}(),i.format.Hex)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo,r=[],o=[],a=[],n=[],l=[],d=[],h=[],c=[],u=[],p=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var i=0,s=0;for(t=0;t<256;t++){var f=s^s<<1^s<<2^s<<3^s<<4;f=f>>>8^255&f^99,r[i]=f,o[f]=i;var m=e[i],g=e[m],y=e[g],A=257*e[f]^16843008*f;a[i]=A<<24|A>>>8,n[i]=A<<16|A>>>16,l[i]=A<<8|A>>>24,d[i]=A,A=16843009*y^65537*g^257*m^16843008*i,h[f]=A<<24|A>>>8,c[f]=A<<16|A>>>16,u[f]=A<<8|A>>>24,p[f]=A,i?(i=m^e[e[e[y^m]]],s^=e[e[s]]):i=s=1}}();var f=[0,1,2,4,8,16,32,64,128,27,54],m=s.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,i=e.sigBytes/4,s=4*((this._nRounds=i+6)+1),o=this._keySchedule=[],a=0;a6&&a%i==4&&(d=r[d>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d]):(d=r[(d=d<<8|d>>>24)>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d],d^=f[a/i|0]<<24),o[a]=o[a-i]^d);for(var n=this._invKeySchedule=[],l=0;l>>24]]^c[r[d>>>16&255]]^u[r[d>>>8&255]]^p[r[255&d]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,n,l,d,r)},decryptBlock:function(e,t){var i=e[t+1];e[t+1]=e[t+3],e[t+3]=i,this._doCryptBlock(e,t,this._invKeySchedule,h,c,u,p,o),i=e[t+1],e[t+1]=e[t+3],e[t+3]=i},_doCryptBlock:function(e,t,i,s,r,o,a,n){for(var l=this._nRounds,d=e[t]^i[0],h=e[t+1]^i[1],c=e[t+2]^i[2],u=e[t+3]^i[3],p=4,f=1;f>>24]^r[h>>>16&255]^o[c>>>8&255]^a[255&u]^i[p++],g=s[h>>>24]^r[c>>>16&255]^o[u>>>8&255]^a[255&d]^i[p++],y=s[c>>>24]^r[u>>>16&255]^o[d>>>8&255]^a[255&h]^i[p++],A=s[u>>>24]^r[d>>>16&255]^o[h>>>8&255]^a[255&c]^i[p++];d=m,h=g,c=y,u=A}m=(n[d>>>24]<<24|n[h>>>16&255]<<16|n[c>>>8&255]<<8|n[255&u])^i[p++],g=(n[h>>>24]<<24|n[c>>>16&255]<<16|n[u>>>8&255]<<8|n[255&d])^i[p++],y=(n[c>>>24]<<24|n[u>>>16&255]<<16|n[d>>>8&255]<<8|n[255&h])^i[p++],A=(n[u>>>24]<<24|n[d>>>16&255]<<16|n[h>>>8&255]<<8|n[255&c])^i[p++],e[t]=m,e[t+1]=g,e[t+2]=y,e[t+3]=A},keySize:8});e.AES=t._createHelper(m)}(),i.AES)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(){var e=i,t=e.lib,s=t.WordArray,r=t.BlockCipher,o=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],n=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],d=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],h=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=o.DES=r.extend({_doReset:function(){for(var e=this._key.words,t=[],i=0;i<56;i++){var s=a[i]-1;t[i]=e[s>>>5]>>>31-s%32&1}for(var r=this._subKeys=[],o=0;o<16;o++){var d=r[o]=[],h=l[o];for(i=0;i<24;i++)d[i/6|0]|=t[(n[i]-1+h)%28]<<31-i%6,d[4+(i/6|0)]|=t[28+(n[i+24]-1+h)%28]<<31-i%6;for(d[0]=d[0]<<1|d[0]>>>31,i=1;i<7;i++)d[i]=d[i]>>>4*(i-1)+3;d[7]=d[7]<<5|d[7]>>>27}var c=this._invSubKeys=[];for(i=0;i<16;i++)c[i]=r[15-i]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,i){this._lBlock=e[t],this._rBlock=e[t+1],u.call(this,4,252645135),u.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),u.call(this,1,1431655765);for(var s=0;s<16;s++){for(var r=i[s],o=this._lBlock,a=this._rBlock,n=0,l=0;l<8;l++)n|=d[l][((a^r[l])&h[l])>>>0];this._lBlock=a,this._rBlock=o^n}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,u.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(e,t){var i=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=i,this._lBlock^=i<>>e^this._lBlock)&t;this._lBlock^=i,this._rBlock^=i<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),r=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=c.createEncryptor(s.create(t)),this._des2=c.createEncryptor(s.create(i)),this._des3=c.createEncryptor(s.create(r))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=r._createHelper(f)}(),i.TripleDES)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=s.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,i=e.sigBytes,s=this._S=[],r=0;r<256;r++)s[r]=r;r=0;for(var o=0;r<256;r++){var a=r%i,n=t[a>>>2]>>>24-a%4*8&255;o=(o+s[r]+n)%256;var l=s[r];s[r]=s[o],s[o]=l}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,i=this._j,s=0,r=0;r<4;r++){i=(i+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[i],e[i]=o,s|=e[(e[t]+e[i])%256]<<24-8*r}return this._i=t,this._j=i,s}e.RC4=t._createHelper(r);var a=s.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(a)}(),i.RC4)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,i=0;i<4;i++)e[i]=16711935&(e[i]<<8|e[i]>>>24)|4278255360&(e[i]<<24|e[i]>>>8);var s=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,i=0;i<4;i++)l.call(this);for(i=0;i<8;i++)r[i]^=s[i+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(r[0]^=d,r[1]^=c,r[2]^=h,r[3]^=u,r[4]^=d,r[5]^=c,r[6]^=h,r[7]^=u,i=0;i<4;i++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(n)}(),i.Rabbit)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var r=0;r<4;r++)l.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(s[0]^=d,s[1]^=c,s[2]^=h,s[3]^=u,s[4]^=d,s[5]^=c,s[6]^=h,s[7]^=u,r=0;r<4;r++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(n)}(),i.RabbitLegacy)})),Wr((function(e,t){var i;e.exports=(i=Fd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo;const r=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var n={pbox:[],sbox:[]};function l(e,t){let i=t>>24&255,s=t>>16&255,r=t>>8&255,o=255&t,a=e.sbox[0][i]+e.sbox[1][s];return a^=e.sbox[2][r],a+=e.sbox[3][o],a}function d(e,t,i){let s,o=t,a=i;for(let t=0;t1;--t)o^=e.pbox[t],a=l(e,o)^a,s=o,o=a,a=s;return s=o,o=a,a=s,a^=e.pbox[1],o^=e.pbox[0],{left:o,right:a}}function c(e,t,i){for(let t=0;t<4;t++){e.sbox[t]=[];for(let i=0;i<256;i++)e.sbox[t][i]=a[t][i]}let s=0;for(let a=0;a=i&&(s=0);let n=0,l=0,h=0;for(let t=0;t>>2]|=e[i]<<24-i%4*8;return Ud.lib.WordArray.create(t,e.length)}const jd=16,Gd=[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],Wd=[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 zd(e){const t=[];for(let i=0,s=e.length;i1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Vd(e){const t=[];for(let i=0,s=e.length;i>>6),t.push(128|63&s);else if(s<=55295||s>=57344&&s<=65535)t.push(224|s>>>12),t.push(128|s>>>6&63),t.push(128|63&s);else{if(!(s>=65536&&s<=1114111))throw t.push(s),new Error("input is not supported");i++,t.push(240|s>>>18&28),t.push(128|s>>>12&63),t.push(128|s>>>6&63),t.push(128|63&s)}}return t}function Hd(e){const t=[];for(let i=0,s=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("")}function Jd(e,t){const i=31&t;return e<>>32-i}function qd(e){return(255&Gd[e>>>24&255])<<24|(255&Gd[e>>>16&255])<<16|(255&Gd[e>>>8&255])<<8|255&Gd[255&e]}function Kd(e){return e^Jd(e,2)^Jd(e,10)^Jd(e,18)^Jd(e,24)}function Yd(e){return e^Jd(e,13)^Jd(e,23)}function Qd(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[4*t],r[1]=255&e[4*t+1],r[2]=255&e[4*t+2],r[3]=255&e[4*t+3],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];for(let e,t=0;t<32;t+=4)e=s[1]^s[2]^s[3]^i[t+0],s[0]^=Kd(qd(e)),e=s[2]^s[3]^s[0]^i[t+1],s[1]^=Kd(qd(e)),e=s[3]^s[0]^s[1]^i[t+2],s[2]^=Kd(qd(e)),e=s[0]^s[1]^s[2]^i[t+3],s[3]^=Kd(qd(e));for(let e=0;e<16;e+=4)t[e]=s[3-e/4]>>>24&255,t[e+1]=s[3-e/4]>>>16&255,t[e+2]=s[3-e/4]>>>8&255,t[e+3]=255&s[3-e/4]}function Xd(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[0+4*t],r[1]=255&e[1+4*t],r[2]=255&e[2+4*t],r[3]=255&e[3+4*t],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];s[0]^=2746333894,s[1]^=1453994832,s[2]^=1736282519,s[3]^=2993693404;for(let e,i=0;i<32;i+=4)e=s[1]^s[2]^s[3]^Wd[i+0],t[i+0]=s[0]^=Yd(qd(e)),e=s[2]^s[3]^s[0]^Wd[i+1],t[i+1]=s[1]^=Yd(qd(e)),e=s[3]^s[0]^s[1]^Wd[i+2],t[i+2]=s[2]^=Yd(qd(e)),e=s[0]^s[1]^s[2]^Wd[i+3],t[i+3]=s[3]^=Yd(qd(e));if(0===i)for(let e,i=0;i<16;i++)e=t[i],t[i]=t[31-i],t[31-i]=e}function Zd(e,t,i){let{padding:s="pkcs#7",mode:r,iv:o=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===r&&("string"==typeof o&&(o=zd(o)),16!==o.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=zd(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==i?Vd(e):zd(e):[...e],("pkcs#5"===s||"pkcs#7"===s)&&0!==i){const t=jd-e.length%jd;for(let i=0;i=jd;){const t=e.slice(c,c+16),s=new Array(16);if("cbc"===r)for(let e=0;ee.length&&s+r<=i.length?e.length-t:s+r>i.length&&t+r<=e.length?i.length-s:t+r<=e.length&&s+r<=i.length?r:i.length>24&255,e>>16&255,e>>8&255,255&e)}function dh(e,t){return t+3>>19)^(s<<23|s>>>9)}function uh(e,t){var i=new Array(36);i[0]=dh(t,0),i[1]=dh(t,4),i[2]=dh(t,8),i[3]=dh(t,12);for(var s=0;s<32;s++)i[s+4]=i[s]^ph(i[s+1]^i[s+2]^i[s+3]^e[s]);var r=new Array(4);for(s=35;s>=32;s--)r[35-s]=i[s];var o=function(e){for(var t=new Array(4*e.length),i=0;i>>30)^(s<<10|s>>>22)^(s<<18|s>>>14)^(s<<24|s>>>8)}function fh(e,t,i){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==i||null==i||i.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var s=hh(e),r=Math.ceil(i.length/16),o=new Array(i.length),a=t.slice(),n=0;ne)return this.preDelayTimestamp-e>1e3&&this.player.debugWarn("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===je)return this.pushLatestDelay;if(this.preDelayTimestamp&&this.preDelayTimestamp-e>1e3)return this.player.debugWarn("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,s=e-this.firstTimestamp;t=i>=s?i-s:s-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.debugLog("CommonDemux","initInterval() and is hls and support hls265 so return"):-1===this.player.getStreamType().indexOf(A)?this.player.isPlaybackCacheBeforeDecodeForFpsRender()?this.player.debugLog("CommonDemux","initInterval() and playback and playbackIsCacheBeforeDecodeForFpsRender is true so return"):(this.player.debugLog("CommonDemux","setInterval()"),this._loop(),this.stopId=setInterval((()=>{if(this.player.isDestroyedOrClosed())return;let e=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=e);const t=e-this.preLoopTimestamp;this.updateHistoryIntervalDiffTimeList(t),t>100&&this.player.debugWarn("CommonDemux",`loop demux diff time is ${t}`),this._loop(),this.preLoopTimestamp=(new Date).getTime()}),20)):this.player.debugLog("CommonDemux","initInterval() and is worker stream so return")}clearStopInterval(){this.stopId&&(clearInterval(this.stopId),this.stopId=null)}startPlaybackLoopInterval(){this.initPlaybackCacheLoop()}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.debugLog("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,s=this.player._opt.playType===v;if(this.bufferList.length){if(this.isPushDropping)return void this.player.debugWarn("CommonDemux",`_loop isPushDropping is true and bufferList length is ${this.bufferList.length}`);if(this.dropping){for(e=this.bufferList.shift(),this.player.debugWarn("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.debugLog("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.debugLog("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&&s)this.hasIframeInBufferList()?(this.player.debugWarn("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.debugWarn("CommonDemux",`_loop delay is ${this.delay} bufferList is ${this.bufferList}`);break}this.bufferList.shift(),this._doDecoderDecode(e)}}else-1!==this.delay&&this.player.debugLog("CommonDemux","loop() bufferList is empty and reset delay"),this.resetAllDelay()}_doDecode(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;const o=this.player;let a={ts:i,cts:r,type:t,isIFrame:!1};this.player.isPlayer()?(t===Ge&&o._opt.playType===v&&this.calcNetworkDelay(i),o._opt.useWCS&&!o._opt.useOffscreen||o._opt.useMSE?(t===Ge&&(a.isIFrame=s),this.pushBuffer(e,a)):t===Ge?o.decoderWorker&&o.decoderWorker.decodeVideo(e,i,s):t===je&&o._opt.hasAudio&&o.decoderWorker&&o.decoderWorker.decodeAudio(e,i)):this.player.isPlayback()&&(t===Ge&&(a.isIFrame=s),this.player.isPlaybackOnlyDecodeIFrame()?t===Ge&&s&&this.pushBuffer(e,a):this.player.isPlaybackCacheBeforeDecodeForFpsRender()||1===this.player.getPlaybackRate()?this.pushBuffer(e,a):this.pushBuffer(e,a,!1))}_doDecodeByHls(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=!1;if(t===je&&Kr(e)&&(this.player.debugLog("CommonDemux",`hls pushBuffer audio ts is ${i}, isAacCodecPacket is true`),o=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(t,i)}let a=!1;if(t===Ge&&s&&La(e)&&(this.player.debugLog("CommonDemux",`hls pushBuffer video ts is ${i}, isVideoSequenceHeader is true`),a=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(t,i)}this.player.recording&&xa(a)&&xa(o)&&this.handleRecording(e,t,i,s,r),t===Ge?this._doDecoderDecode({ts:i,cts:r,payload:e,type:Ge,isIFrame:s}):t===je&&this._doDecoderDecode({ts:i,payload:e,type:je})}_doDecodeByFmp4(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByTs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByPs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_decodeNext(e){const t=e.ts;if(0===this.bufferList.length)return;let i=this.bufferList[0];const s=i.ts-t,r=e.type===Ge&&i.type===je,o=e.type===Ge&&La(e.payload);(s<=20||r||o)&&(this.player.debugLog("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 ${s} and isVideoAndNextAudio is ${r} and isVideoSqeHeader is ${o}`),this.bufferList.shift(),this._doDecoderDecode(i))}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:s}=t;this.player.isPlayer()&&this.player.updateStats({buf:this.delay}),e.type===je?t._opt.hasAudio&&(t._opt.useMSE&&t._opt.mseDecodeAudio?s.decodeAudio(e.payload,e.ts):t._opt.useWCS&&t._opt.wcsDecodeAudio?i.decodeAudio(e.payload,e.ts):t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts)):e.type===Ge&&(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?s.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t.decoderWorker&&t.decoderWorker.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const s=this.player._opt.videoBuffer,r=this.player._opt.videoBufferDelay,o=this.player.isPlayer();if(t.type===je&&Kr(e)){if(this.player.debugLog("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:je})}else if(t.type===Ge&&t.isIFrame&&La(e)){if(this.player.debugLog("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:Ge,isIFrame:t.isIFrame,cts:t.cts})}else{if(this.player.recording&&this.handleRecording(e,t.type,t.ts,t.isIFrame,t.cts),o){if(t.type===Ge){if(this.preTimestampDuration>0){const e=t.ts-this.preTimestamp,i=this.preTimestampDuration+this.preTimestampDuration/2;e>=i&&this.player.debugLog("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${this.preTimestamp},\n diff is ${e} and preTsDuration is ${this.preTimestampDuration} and maxDiff is ${i}\n maybe trigger black screen or flower screen`)}if(null!==this.preTimestamp&&this.preTimestamp>=t.ts&&(this.player.debugWarn("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts} less than (or equal) preTs is ${this.preTimestamp} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${this.prevPayloadBufferSize}`),this.preTimestamp-t.ts>te&&(this.player.debugWarn("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()),this.player._opt.isDropSameTimestampGop&&xa(t.isIFrame)&&this.player.isDemuxDecodeFirstIIframeInit())){const e=this.hasIframeInBufferList(),t=xa(this.isPushDropping);return this.player.debugLog("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))}this.preTimestamp>0&&(this.preTimestampDuration=t.ts-this.preTimestamp),this.prevPayloadBufferSize=e.byteLength,this.preTimestamp=t.ts}if(this.player.isDemuxDecodeFirstIIframeInit()){let e=this.getDelayNotUpdateDelay(t.ts,t.type);this.pushLatestDelay=e;const i=r+s;this.player._opt.useMSE?this.delay>0&&e>i&&this.delay ${r+s}, bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):this.delay>0&&e>i&&this.delay ${r+s},bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()),this.isHistoryIntervalDiffTimeAllLarge()&&xa(this.player.visibility)&&(this.player._opt.useMSE?this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debugWarn("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.debugWarn("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()))}}i?t.type===je?this.bufferList.push({ts:t.ts,payload:e,type:je}):t.type===Ge&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:Ge,isIFrame:t.isIFrame}):t.type===Ge?this._doDecoderDecode({ts:t.ts,cts:t.cts,payload:e,type:Ge,isIFrame:t.isIFrame}):t.type===je&&this._doDecoderDecode({ts:t.ts,payload:e,type:je}),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&this.calcPlaybackStreamFps()}}calcPlaybackStreamFps(){if($o(this.playbackStreamVideoFps)||$o(this.playbackStreamAudioFps)){let e=this.playbackStreamVideoFps,t=this.playbackStreamAudioFps;if($o(this.playbackStreamVideoFps)&&(e=va(this.bufferList,Ge),e>0&&(this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),this.playbackStreamFps=t?e+t:e,xa(this.player._opt.hasAudio)&&(this.player.debugLog(this.TAG_NAME,"playbackCacheBeforeDecodeForFpsRender,_opt.hasAudio is false and set streamAudioFps is 0"),this.playbackStreamAudioFps=0),this.initPlaybackCacheLoop())),$o(this.playbackStreamAudioFps)&&(t=va(this.bufferList,je),t>0&&(this.playbackStreamAudioFps=t,this.playbackStreamFps=e?e+t:t,this.initPlaybackCacheLoop())),$o(this.playbackStreamVideoFps)&&$o(this.playbackStreamAudioFps)){const i=this.bufferList.map((e=>({type:e.type,ts:e.ts})));this.player.debugLog("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,s=i?60:40;this.bufferList.length>=s&&(this.player.debugWarn("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${this.bufferList.length} more than ${s}, 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=>Ca(e.isIFrame)&&e.type===Ge));if(this.isAllIframeInBufferList())for(let t=0;t=this.getNotDroppingDelayTs()){this.player.debugLog("CommonDemux",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} 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.debugLog("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(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.player.debugLog("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(),Ca(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=yo()):et?i-t:0;s>this.player._opt.networkDelay&&this.player._opt.playType===v&&(this.player.debugWarn("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 ${s}, _opt.networkDelay is ${this.player._opt.networkDelay}`),this.player.emit(yt.networkDelayTimeout,s)),this.player.updateStats({netBuf:s})}calcIframeIntervalTimestamp(e){if(null===this.preIframeTs)this.preIframeTs=e;else if(this.preIframeTs{t.type===Ge&&(e+=1)})),e}getAudioBufferLength(){let e=0;return this.bufferList.forEach((t=>{t.type===je&&(e+=1)})),e}hasIframeInBufferList(){return this.bufferList.some((e=>e.type===Ge&&e.isIFrame))}isAllIframeInBufferList(){const e=this.getVideoBufferLength();let t=0;return this.bufferList.forEach((e=>{e.type===Ge&&e.isIFrame&&(t+=1)})),e===t}getInputByteLength(){return 0}getIsStreamTsMoreThanLocal(){return this.isStreamTsMoreThanLocal}close(){}reset(){}findSei(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=4;Ho(this.nalUnitSize)&&(s=this.nalUnitSize);const r=ho(e.slice(5),s);if(xa(i)){const e=this.player.getVideoInfo();e&&e.encType&&(i=e.encType===It)}r.forEach((e=>{const s=i?e[0]>>>1&63:31&e[0],r=i&&(s===ni||s===ai),o=xa(i)&&s===zt;if(r||o){const s=co(e,i);this.player.emitVideoSei({ts:t,data:s.payload})}}))}handleRecording(e,t,i,s,r){if(this.player.isRecordTypeFlv()){const s=new Uint8Array(e);t===Ge?this.player.recorder.addVideo(s,i):t===je&&this.player.recorder.addAudio(s,i)}else if(this.player.isRecordTypeMp4()){const o=new Uint8Array(e);if(this.player.recorder.isWasmMp4()){if(t===Ge)this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r);else if(t===je){const t=new Uint8Array(e);this.player.recorder.handleAddAudioTrack(Yr(t)?t.slice(2):t.slice(1),i)}}else t===Ge&&this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r)}}updateNalUnitSize(e){const t=15&e[0];this.player.video.updateVideoInfo({encTypeCode:t});const i=t===Dt;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.debugLog(this.TAG_NAME,`demux() isVideoSequenceHeader is true and isHevc is ${i} and nalUnitSize is ${this.nalUnitSize}`)}cryptoPayload(e,t){let i=this.player,s=e;if(i._opt.isM7sCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();t.encTypeCode?s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),i=new Uint8Array(i);const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=e.slice(o+4+2,o+4+a);let r=new Md.ModeOfOperation.ctr(t,new Md.Counter(i));const n=r.decrypt(s);r=null,e.set(n,o+4+2)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===Dt):i.debugWarn(this.TAG_NAME,`videoInfo.encTypeCode is ${t.encTypeCode}`)}else i.debugError(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`);else if(i._opt.isSm4Crypto)if(i._opt.sm4CryptoKey){const t=this.player.video.getVideoInfo().encTypeCode===Dt,r=this.player._opt.isSm4CryptoH265V2;s=i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0?function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),i=new Uint8Array(i);const o=e.byteLength;let a=5;for(;ao)break;let l=e[a+4],d=!1,h=2;if(s?(r&&(h=3),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 s=fh(t,i,e.slice(a+4+h,a+4+n));e.set(s,a+4+h)}a=a+4+n}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t,r):function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=new Uint8Array(e.slice(0,5)),a=5;for(;ar){const t=new Uint8Array(o.length+e.length-a);t.set(o,0),t.set(e.slice(a),o.length),o=t;break}let d=e[a+4],h=!1,c=2;if(i?(s&&(c=3),d=d>>>1&63,h=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,h=1===d||5===d),h){const i=Zd(e.slice(a+4+c,a+4+l),t,0,{padding:"none",output:"array"});let s=i[i.length-1];if(s>0&&s<16){let e=!0;for(let t=1;t<=s;t++)if(i[i.length-t]!==s){e=!1;break}e&&i.splice(i.length-s,s)}const r=new Uint8Array(c);r.set(e.slice(a+4,a+4+c),0);const n=uo(_l(r,new Uint8Array(i))),d=new Uint8Array(o.length+n.length);d.set(o,0),d.set(n,o.length),o=d}else{const t=e.slice(a+4,a+4+l),i=new Uint8Array(o.length+4+t.length);i.set(o,0),i.set(n,o.length),i.set(t,o.length+4),o=i}a=a+4+l}return o}(e,i._opt.sm4CryptoKey,t,r)}else i._opt.sm4CryptoKey||i.debugError(this.TAG_NAME,"isSm4Crypto opt.sm4CryptoKey is null");else if(i._opt.isXorCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=th(e.slice(o+4,o+4+a),t,i);e.set(s,o+4)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===Dt)}else i.debugError(this.TAG_NAME,"isXorCrypto opt.xorCryptoKey is null");return s}cryptoPayloadAudio(e){let t=this.player;if(xa(t._opt.isCryptoAudio))return e;let i=e;if(t._opt.isM7sCrypto)if(t._opt.cryptoKey&&t._opt.cryptoKey.byteLength>0&&t._opt.cryptoIV&&t._opt.cryptoIV.byteLength>0){e[0]>>4===Pt&&(i=function(e,t,i){if(e.byteLength<=30)return e;const s=e.slice(32);let r=new Md.ModeOfOperation.ctr(t,new Md.Counter(i));const o=r.decrypt(s);return r=null,e.set(o,32),e}(e,t._opt.cryptoKey,t._opt.cryptoIV))}else t.debugError(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${t._opt.cryptoKey&&t._opt.cryptoKey.byteLength} or cryptoIV.length is ${t._opt.cryptoIV&&t._opt.cryptoIV.byteLength} null`);return i}_decodeEnhancedH265Video(e,t){const i=e[0],s=48&i,r=15&i,o=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),l="a"==String.fromCharCode(o[0]);if(r===yr){if(s===vr){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.debugLog(this.TAG_NAME,`demux() isVideoSequenceHeader(enhancedH265) is true and nalUnitSize is ${this.nalUnitSize}`),this._doDecode(e,Ge,0,!0,0)}}}else if(r===Ar){let i=e,r=0;const o=s===vr;if(o&&this.calcIframeIntervalTimestamp(t),l);else{n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,r=n[0];i=cl(e.slice(8),o),i=this.cryptoPayload(i,o),this._doDecode(i,Ge,t,o,r)}}else if(r===br){const i=s===vr,r=e.slice(5);i&&this.calcIframeIntervalTimestamp(t);let o=cl(r,i);o=this.cryptoPayload(o,i),this._doDecode(o,Ge,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}handlePlaybackPause(e){Ca(e)?this.clearStopInterval():this.startPlaybackLoopInterval()}}var gh=function(e,t,i,s){return new(i||(i=Promise))((function(r,o){function a(e){try{l(s.next(e))}catch(e){o(e)}}function n(e){try{l(s.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,n)}l((s=s.apply(e,t||[])).next())}))};const yh=Symbol(32),Ah=Symbol(16),bh=Symbol(8);class vh{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 gh(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var s;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(s=this.pull)||void 0===s||s.call(this,e)}))}))}readU32(){return this.read(yh)}readU16(){return this.read(Ah)}readU8(){return this.read(bh)}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 s=e=>t.length<(i=e);if("number"==typeof this.need){if(s(this.need))return;e=t.subarray(0,i)}else if(this.need===yh){if(s(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Ah){if(s(2))return;e=t[0]<<8|t[1]}else if(this.need===bh){if(s(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(s(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(s(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}}vh.U32=yh,vh.U16=Ah,vh.U8=bh;class _h extends mh{constructor(e){super(e),this.TAG_NAME="FlvDemux",this.input=new vh(this.demux()),e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.input&&(this.input.close(),this.input=null),this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){this.input?this.input.write(e):this.player&&this.player.debugWarn(this.TAG_NAME,"dispatch() this.input is null")}*demux(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),s=this.player;for(;;){if(!this.input)return;t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const o=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let a=i[0];const n=(yield o).slice();if(!s)return;switch(r){case We:if(s._opt.hasAudio&&(s.updateStats({abps:n.byteLength}),n.byteLength>0)){let e=this.cryptoPayloadAudio(n);this._doDecode(e,je,a)}break;case ze:if(s._opt.hasVideo&&n.length>=6){let e=a;s.updateStats({vbps:n.byteLength,dts:e}),s._times.demuxStart||(s._times.demuxStart=yo());const t=n[0];if(this._isEnhancedH265Header(t))this._decodeEnhancedH265Video(n,e);else{const e=15&t;let s=(t>>4&15)===Ns;const r=e===Dt,o=e===xt;if(xa(r||o))return void this.player.debugWarn(this.TAG_NAME,`demux() codecId is ${e} and ignore`);xa(s)&&Ca(ja(n,r))&&(this.player.debugLog(this.TAG_NAME,"demux() isIFrame is false and unit type is IDR and update to true"),s=!0),s&&(this.calcIframeIntervalTimestamp(a),null===this.nalUnitSize&&La(n)&&this.updateNalUnitSize(n)),i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let l=i[0],d=this.cryptoPayload(n,s);this._doDecode(d,Ge,a,s,l)}}else n.length<6&&s.debugWarn(this.TAG_NAME,`payload.length is ${n.length} less than 6 and ignore`);break;case $e:if(this.player.isRecordTypeFlv()){const e=new Uint8Array(n);this.player.recorder.addMetaData(e)}const e=Il(n);e&&e.onMetaData&&s.updateMetaData(e.onMetaData);break;default:s.debugLog(this.TAG_NAME,`demux() type is ${r}`)}}}close(){this.input&&(this.input.close(),this.input=null)}getInputByteLength(){let e=0;return this.input&&this.input.buffer&&(e=this.input.buffer.byteLength),e}}class wh extends mh{constructor(e){super(e),this.TAG_NAME="M7sDemux",e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){const t=this.player,i=new DataView(e),s=i.getUint8(0),r=i.getUint32(1,!1),o=new ArrayBuffer(4),a=new Uint32Array(o);switch(s){case je:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,s,r)}break;case Ge:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=yo()),i.byteLength>=11){const o=new Uint8Array(e,5);let n=r;t.updateStats({vbps:o.byteLength,dts:n});const l=o[0];if(this._isEnhancedH265Header(l))this._decodeEnhancedH265Video(o,r);else{const e=i.getUint8(5)>>4==1;e&&this.calcIframeIntervalTimestamp(r),a[0]=o[4],a[1]=o[3],a[2]=o[2],a[3]=0;let t=a[0],n=this.cryptoPayload(o,e);this._doDecode(n,s,r,e,t)}}else this.player.debugWarn(this.TAG_NAME,"dispatch","dv byteLength is",i.byteLength,"and return")}}}class Sh extends _h{constructor(e){super(e),e.debugLog("WebTransportDemux","init")}destroy(){this.player.debugLog("WebTransportDemux","destroy"),super.destroy()}}var Eh,Th=Wr((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),kh=(Eh=Th)&&Eh.__esModule&&Object.prototype.hasOwnProperty.call(Eh,"default")?Eh.default:Eh;class Lh{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>s,o=8-s;if(o>=e)return i&&(this.index+=e),r>>o-e;{i&&(this.index+=o);const s=e-o;return r<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}class Ch extends mh{constructor(e){super(e),kh(this,"TAG_NAME","NakedFlowDemux"),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.pendingUnits={},this.localDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,e.debugLog(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.pendingUnits={},this.localDts=0,this.localAudioDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){this.player;const t=new Uint8Array(e);if(this.player._opt.nakedFlowDemuxUseNew){const e=this.extractNALu$3(t);if(0===e.length)return void this.player.debugLog(this.TAG_NAME,"dispatch naluArray.length === 0");this.handleVideoFrames(e)}else 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,10),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,s=0,r=e.byteLength,o=0,a=[];for(;s1)for(let e=0;e{const t=Xn(e);t===Nt||t===Ot?this.handleVideoH264Nalu(e):el(t)&&s.push(e)})),1===s.length)this.handleVideoH264Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=Xn(e[0]);for(let i=1;i{this.handleVideoH264Nalu(e)}))}}else if(this.streamVideoType===It)if(this.player._opt.nakedFlowH265DemuxUseNew){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debugWarn(this.TAG_NAME,"handleVideoNalu","h265 naluList.length === 0");const s=[];if(i.forEach((e=>{const t=ul(e);t===si||t===ti||t===Zt?this.handleVideoH265Nalu(e):pl(t)&&s.push(e)})),1===s.length)this.handleVideoH265Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=ul(e[0]);for(let i=1;i{this.handleVideoH265Nalu(e)}))}}else{ul(t)===si?this.extractH265PPS(t):this.handleVideoH265Nalu(t)}else this.player.debugWarn(this.TAG_NAME," this.streamVideoType is null")}extractH264PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{Zn(Xn(e))?this.extractH264SEI(e):this.handleVideoH264Nalu(e)}))}extractH265PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{const t=ul(e);t===oi?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=Ft.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,s=(1&i[2])<<2|(192&i[3])>>6,r=new Uint8Array([175,0,e<<3|(14&t)>>1,(1&t)<<7|s<<3]);this.isSendAACSeqHeader=!0,this._doDecode(r,je,0,!1,0)}const s=this.getNaluAudioDts(),r=new Uint8Array(t.length+2);r.set([175,1],0),r.set(t,2),this._doDecode(r,je,s,!1,0)}handleAudioG711ANalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=Ft.ALAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([114],0),s.set(t,1),this._doDecode(s,je,i,!1,0)}handleAudioG711UNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=Ft.MULAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([130],0),s.set(t,1),this._doDecode(s,je,i,!1,0)}handleVideoH264Nalu(e){const t=Xn(e);switch(t){case Ot:this.sps=e;break;case Nt:this.pps=e}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Yn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Ge,t,!0,0),this.sps=null,this.pps=null}if(el(t)){this.player._times.demuxStart||(this.player._times.demuxStart=yo());const i=tl(t),s=this.getNaluDts(),r=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 s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,Ge,s,i,0)}else this.player.debugWarn(this.TAG_NAME,`handleVideoH264Nalu is avc seq head nalType is ${t}`)}else if(this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Yn({sps:this.sps,pps:this.pps});this._doDecode(e,Ge,0,!0,0),this.sps=null,this.pps=null}}handleVideoH264NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=yo());const i=this.getNaluDts(),s=Qn(e.reduce(((e,t)=>{const i=uo(e),s=uo(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,Ge,i,t,0)}else this.player.debugWarn(this.TAG_NAME,"handleVideoH264NaluList isSendSeqHeader is false")}handleVideoH265Nalu(e){const t=ul(e);switch(t){case Zt:this.vps=e;break;case ti:this.sps=e;break;case si:this.pps=e}if(this.isSendSeqHeader){if(this.vps&&this.sps&&this.pps){const e=hl({vps:this.vps,sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Ge,t,!0,0),this.vps=null,this.sps=null,this.pps=null}if(pl(t)){this.player._times.demuxStart||(this.player._times.demuxStart=yo());const i=fl(t),s=this.getNaluDts(),r=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 s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,Ge,s,i,0)}}else if(this.vps&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=hl({vps:this.vps,sps:this.sps,pps:this.pps});this._doDecode(e,Ge,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=yo());const i=this.getNaluDts(),s=cl(e.reduce(((e,t)=>{const i=uo(e),s=uo(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,Ge,i,t,0)}else this.player.debugWarn(this.TAG_NAME,"handleVideoH265NaluList isSendSeqHeader is false")}_preDoDecode(e,t,i,s,r){this.player.updateStats({vbps:e.byteLength,dts:i}),s&&this.calcIframeIntervalTimestamp(i),this._doDecode(e,Ge,i,s,r)}getInputByteLength(){let e=0;return this.lastBuf&&(e=this.lastBuf.byteLength),e}handleVideoFrames(e){if(!this.streamVideoType)for(let t of e)if(this.streamVideoType=ma(t),this.streamVideoType)break;this.streamVideoType?this.streamVideoType===Rt?this.handleVideoH264Frames(e):this.streamVideoType===It&&this.handleVideoH265Frames(e):this.player.debugWarn(this.TAG_NAME,"handleVideoFrames streamVideoType is null")}handleVideoH264Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=Xn(a);let n=!1,l=e===Wt;e!==Gt&&e!==Wt||(o=this.parseVideo264Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null,r=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Nt:this.pps=e;break;case Ot:this.sps=e;break;case zt:r=e}if(el(t)){const t=uo(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Yn({sps:this.sps,pps:this.pps});this._doDecode(e,Ge,0,!0,0),this.sps=null,this.pps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Yn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,Ge,t,!0,0),this.sps=null,this.pps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=yo());const e=this.getNaluDts(),t=Qn(s,i);if(this.player._opt.isEmitSEI&&r){const t=co(r,!1);this.player.emitVideoSei({ts:e,data:t.payload})}this._preDoDecode(t,Ge,e,i,0)}}}))}handleVideoH265Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=ul(a);let n=!1,l=fl(e);pl(e)&&(o=this.parseVideo265Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null,r=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case si:this.pps=e;break;case ti:this.sps=e;break;case Zt:this.vps=e;break;case ni:case ai:r=e}if(pl(t)){const t=uo(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps&&this.vps){this.isSendSeqHeader=!0;const e=hl({sps:this.sps,pps:this.pps,vps:this.vps});this._doDecode(e,Ge,0,!0,0),this.sps=null,this.pps=null,this.vps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps&&this.vps){const e=hl({sps:this.sps,pps:this.pps,vps:this.vps}),t=this.localDts;this._doDecode(e,Ge,t,!0,0),this.sps=null,this.pps=null,this.vps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=yo());const e=this.getNaluDts(),t=cl(s,i);if(this.player._opt.isEmitSEI&&r){const t=co(r,!0);this.player.emitVideoSei({ts:e,data:t.payload})}this._preDoDecode(t,Ge,e,i,0)}}}))}handleVideoH265Frames_1(e){e.forEach((e=>{this.handleVideoNalu(e)}))}parseVideo264Header(e){const t=new Lh(e);t.readUByte();return{isfms:0===t.readUEG(),sType:t.readUEG()}}parseVideo265Header(e){const t=new Lh(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}}class xh extends mh{constructor(e){super(e),this.player=e,e.debugLog("EmptyDemux","init")}destroy(){super.destroy(),this.player.debugLog("EmptyDemux","destroy")}}var Dh=Wr((function(e,t){var s,r,o,a=(s=new Date,r=4,o={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-s,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=r&&console.info("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=r&&console.warn("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=r&&console.error("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)}},o);a.getDurationString=function(e,t){var i;function s(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",s=0;s0&&(i+=","),i+="["+a.getDurationString(e.start(s))+","+a.getDurationString(e.end(s))+"]";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 s=new ArrayBuffer(i),r=new Uint8Array(this._buffer);new Uint8Array(s,0,r.length).set(r),this.buffer=s,this._byteLength=t}}},l.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}},l.BIG_ENDIAN=!1,l.LITTLE_ENDIAN=!0,l.prototype._byteLength=0,Object.defineProperty(l.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(l.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(l.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(l.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}}),l.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},l.prototype.isEof=function(){return this.position>=this._byteLength},l.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},l.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},l.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},l.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},l.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,l.memcpy=function(e,t,i,s,r){var o=new Uint8Array(e,t,r),a=new Uint8Array(i,s,r);o.set(a)},l.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},l.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},l.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;ir;s--,r++){var o=t[r];t[r]=t[s],t[s]=o}return e},l.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},l.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},l.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.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},l.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},l.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var h=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(h.prototype=new l(new ArrayBuffer,0,l.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},h.prototype.reduceBuffer=function(e,t,i){var s;return(s=new Uint8Array(i)).set(new Uint8Array(e,t,i)),s.buffer.fileStart=e.fileStart+t,s.buffer.usedBytes=0,s.buffer},h.prototype.insertBuffer=function(e){for(var t=!0,i=0;is.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<=s.fileStart||(e=this.reduceBuffer(e,0,s.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,r,o)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},h.prototype.logBufferLevel=function(e){var t,i,s,r,o,n=[],l="";for(s=0,r=0,t=0;t0&&(l+=o.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) ("+s+"/"+r+" bytes), continuous ranges: "+l)},h.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},h.prototype.findPosition=function(e,t,i){var s,r=null,o=-1;for(s=!0===e?0:this.bufferIndex;s=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+o),o):-1},h.prototype.findEndContiguousBuf=function(e){var t,i,s,r=void 0!==e?e:this.bufferIndex;if(i=this.buffers[r],this.buffers.length>r+1)for(t=r+1;t>3;return 31===s&&i.data.length>=2&&(s=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),s}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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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=c;var u={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"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){u.FullBox.prototype=new u.Box,u.ContainerBox.prototype=new u.Box,u.SampleEntry.prototype=new u.Box,u.TrackGroupTypeBox.prototype=new u.FullBox,u.BASIC_BOXES.forEach((function(e){u.createBoxCtor(e)})),u.FULL_BOXES.forEach((function(e){u.createFullBoxCtor(e)})),u.CONTAINER_BOXES.forEach((function(e){u.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){u.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){u.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,s){u.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=s},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){u.FullBox.call(this,e,t)},createBoxCtor:function(e,t){u.boxCodes.push(e),u[e+"Box"]=function(t){u.Box.call(this,e,t)},u[e+"Box"].prototype=new u.Box,t&&(u[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){u[e+"Box"]=function(t){u.FullBox.call(this,e,t)},u[e+"Box"].prototype=new u.FullBox,u[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:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):0!==d&&n+d>e.getEndPosition()?(e.seek(n),a.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):t?{code:u.OK,type:h,size:d,hdr_size:l,start:n}:(u[h+"Box"]?s=new u[h+"Box"](d):"uuid"!==h?(a.warn("BoxParser","Unknown box type: '"+h+"'"),(s=new u.Box(h,d)).has_unparsed_data=!0):u.UUIDBoxes[o]?s=new u.UUIDBoxes[o](d):(a.warn("BoxParser","Unknown uuid type: '"+o+"'"),(s=new u.Box(h,d)).uuid=o,s.has_unparsed_data=!0),s.hdr_size=l,s.start=n,s.write===u.Box.prototype.write&&"mdat"!==s.type&&(a.info("BoxParser","'"+c+"' box writing not yet implemented, keeping unparsed data in memory for later write"),s.parseDataAndRewind(e)),s.parse(e),(r=e.getPosition()-(s.start+s.size))<0?(a.warn("BoxParser","Parsing of box '"+c+"' did not read the entire indicated box data size (missing "+-r+" bytes), seeking forward"),e.seek(s.start+s.size)):r>0&&(a.error("BoxParser","Parsing of box '"+c+"' read "+r+" more bytes than the indicated box data size, seeking backwards"),0!==s.size&&e.seek(s.start+s.size)),{code:u.OK,box:s,size:s.size})},u.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)},u.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},u.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},u.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},u.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.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)},u.SAMPLE_ENTRY_TYPE_VISUAL="Visual",u.SAMPLE_ENTRY_TYPE_AUDIO="Audio",u.SAMPLE_ENTRY_TYPE_HINT="Hint",u.SAMPLE_ENTRY_TYPE_METADATA="Metadata",u.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",u.SAMPLE_ENTRY_TYPE_SYSTEM="System",u.SAMPLE_ENTRY_TYPE_TEXT="Text",u.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},u.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.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},u.SampleEntry.prototype.parseFooter=function(e){u.ContainerBox.prototype.parse.call(this,e)},u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_HINT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT),u.createMediaSampleEntryCtor(u.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)})),u.createMediaSampleEntryCtor(u.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)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT,"enct"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"encm"),u.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()})),u.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),u.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)})),u.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")})),u.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))})),u.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),u.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),u.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),u.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))})),u.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),u.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())})),u.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|s>>5&7})),u.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,s.bsid=r>>1&31,s.bsmod=(1&r)<<4|o>>4&15,s.acmod=o>>1&7,s.lfeon=1&o,s.num_dep_sub=a>>1&15,s.num_dep_sub>0&&(s.chan_loc=(1&a)<<8|e.readUint8())}})),u.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var s=e.readUint8(),r=Math.min(127&s,i.length-1);if(r?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[r]),128&s)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),u.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),u.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++})),u.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)))})),u.createBoxCtor("hvcC",(function(e){var t,i,s,r;this.configurationVersion=e.readUint8(),r=e.readUint8(),this.general_profile_space=r>>6,this.general_tier_flag=(32&r)>>5,this.general_profile_idc=31&r,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(),r=e.readUint8(),this.constantFrameRate=r>>6,this.numTemporalLayers=(13&r)>>3,this.temporalIdNested=(4&r)>>2,this.lengthSizeMinusOne=3&r,this.nalu_arrays=[];var o=e.readUint8();for(t=0;t>7,a.nalu_type=63&r;var n=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 s=0;s>7,this.axis=1&t})),u.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()))})),u.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&o)<<8|e.readUint8():a.property_index=127&o}}})),u.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,s.assignment_type=127&r,s.assignment_type){case 0:s.grouping_type=e.readString(4);break;case 1:s.grouping_type=e.readString(4),s.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:s.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),u.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),u.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),p.prototype.toString=function(){return"("+this.x+","+this.y+")"},u.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new p(e.readUint16(),e.readUint16()),this.display_primaries[1]=new p(e.readUint16(),e.readUint16()),this.display_primaries[2]=new p(e.readUint16(),e.readUint16()),this.white_point=new p(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),u.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()})),u.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()})),u.createFullBoxCtor("meta",(function(e){this.boxes=[],u.ContainerBox.prototype.parse.call(this,e)})),u.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),u.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),u.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),u.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()})),u.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),u.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),u.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(s))})),u.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),u.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),u.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(),s=0;s>7,this.num_leading_samples=127&t})),u.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=u.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))})),u.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),u.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),u.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.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[s]=t>>4&3,this.sample_is_depended_on[s]=t>>2&3,this.sample_has_redundancy[s]=3&t})),u.createFullBoxCtor("senc"),u.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,s.referenced_size=2147483647&r,s.subsegment_duration=e.readUint32(),r=e.readUint32(),s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}})),u.SingleItemTypeReferenceBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.SingleItemTypeReferenceBox.prototype=new u.Box,u.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&s}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=u.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))})),u.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),u.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&u.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&u.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&u.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&u.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&u.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),u.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(),s=0;s>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),u.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),u.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),u.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},u.createTrackGroupCtor("msrc"),u.TrackReferenceTypeBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.TrackReferenceTypeBox.prototype=new u.Box,u.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},u.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&u.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&u.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;i>7&1,this.block_pad_lsb=i>>6&1,this.block_little_endian=i>>5&1,this.block_reversed=i>>4&1,this.pad_unknown=i>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),u.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),u.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),u.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),u.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=u.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),u.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),u.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=u.parseHex16(e)})),u.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))})),u.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),u.createFullBoxCtor("vvcC",(function(e){var t,i,s={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<1){for(s.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,i=this.num_sublayers-2;i>=0;--i){var a=s.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++i)s.extract_bits(1);for(this.sublayer_level_idc=[],i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=u.decimalToHex(s,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var r=!1,o="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||r)&&(o="."+u.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+o,r=!0);t+=o}return t},u.vvc1SampleEntry.prototype.getCodec=u.vvi1SampleEntry.prototype.getCodec=function(){var e,t=u.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 s,r=[],o=0;for(o|=this.vvcC.ptl_frame_only_constraint<<7,o|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,r.push(o),o&&(s=e),o=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===s)i=".CA";else{i=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",n=0,l=0;for(e=0;e<=s;++e)for(n=n<<8|r[e],l+=8;l>=5;){i+=a[n>>l-5&31],n&=(1<<(l-=5))-1}l&&(i+=a[31&(n<<=5-l)])}}t+=i}return t},u.mp4aSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+u.decimalToHex(t)+(i?"."+i:"")}return e},u.stxtSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},u.vp08SampleEntry.prototype.getCodec=u.vp09SampleEntry.prototype.getCodec=function(){var e=u.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},u.av01SampleEntry.prototype.getCodec=function(){var e,t=u.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},u.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(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>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)},u.FullBox.prototype.writeHeader=function(e){this.size+=4,u.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},u.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))},u.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)},u.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},u.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)},u.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)},u.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&u.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&u.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&u.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&u.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof u.Box||t[i]instanceof u.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||u.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},u.boxEqual=function(e,t){if(!u.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},y.prototype.setExtractionOptions=function(e,t,i){var s=this.getTrackById(e);if(s){var r={};this.extractedTracks.push(r),r.id=e,r.user=t,r.trak=s,s.nextSample=0,r.nb_samples=1e3,r.samples=[],i&&i.nbSamples&&(r.nb_samples=i.nbSamples)}},y.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},y.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=u.parseOneBox(this.stream,false)).code===u.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)}},y.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))},y.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},y.prototype.getInfo=function(){var e,t,i,s,r,o,a={},n=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(n+1e3*this.moov.mvhd.creation_time),a.modified=new Date(n+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)&&(a.info("ISOFile","Sending fragmented data on track #"+s.id+" for samples ["+Math.max(0,i.nextSample-s.nb_samples)+","+(i.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(s.id,s.user,s.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),s.segmentStream=null,s!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+o.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(o.id,o.user,o.samples),o.samples=[],o!==this.extractedTracks[t]))break}}}},y.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},y.prototype.getBoxes=function(e,t){var i=[];return y._sweep.call(this,e,i,t),i},y._sweep=function(e,t,i){for(var s in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;y._sweep.call(this.boxes[s],e,t,i)}},y.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},y.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},y.prototype.releaseUsedSamples=function(e,t,i){var s=0,r=this.getTrackById(e);r.lastValidSample||(r.lastValidSample=0);for(var o=r.lastValidSample;oe*r.timescale){d=s-1;break}t&&r.is_sync&&(l=s)}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 o=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,n)+" and offset: "+o),{offset:o,time:e/n}},y.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},y.prototype.seek=function(e,t){var i,s,r,o=this.moov,n={offset:1/0,time:1/0};if(this.moov){for(r=0;rthis.getTrackDuration(i)||((s=this.seekTrack(e,t,i)).offset-1){a=l;break}switch(a){case"Visual":if(r.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),o.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 u.avcCBox;c.parse(new n(t.avcDecoderConfigRecord)),o.addBox(c)}else if(t.hevcDecoderConfigRecord){var p=new u.hvcCBox;p.parse(new n(t.hevcDecoderConfigRecord)),o.addBox(p)}break;case"Audio":r.add("smhd").set("balance",t.balance||0),o.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":r.add("hmhd");break;case"Subtitle":if(r.add("sthd"),"stpp"===t.type)o.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:r.add("nmhd")}t.description&&o.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){o.addBox(e)})),r.add("dinf").add("dref").addEntry((new u["url Box"]).set("flags",1));var f=r.add("stbl");return f.add("stsd").addEntry(o),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}},u.Box.prototype.computeSize=function(e){var t=e||new l;t.endianness=l.BIG_ENDIAN,this.write(t)},y.prototype.addSample=function(e,t,i){var s=i||{},r={},o=this.getTrackById(e);if(null!==o){r.number=o.samples.length,r.track_id=o.tkhd.track_id,r.timescale=o.mdia.mdhd.timescale,r.description_index=s.sample_description_index?s.sample_description_index-1:0,r.description=o.mdia.minf.stbl.stsd.entries[r.description_index],r.data=t,r.size=t.byteLength,r.alreadyRead=r.size,r.duration=s.duration||1,r.cts=s.cts||0,r.dts=s.dts||0,r.is_sync=s.is_sync||!1,r.is_leading=s.is_leading||0,r.depends_on=s.depends_on||0,r.is_depended_on=s.is_depended_on||0,r.has_redundancy=s.has_redundancy||0,r.degradation_priority=s.degradation_priority||0,r.offset=0,r.subsamples=s.subsamples,o.samples.push(r),o.samples_size+=r.size,o.samples_duration+=r.duration,void 0===o.first_dts&&(o.first_dts=s.dts),this.processSamples();var a=this.createSingleSampleMoof(r);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),r}},y.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new u.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var s=i.add("traf"),r=this.getTrackById(e.track_id);return s.add("tfhd").set("track_id",e.track_id).set("flags",u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),s.add("tfdt").set("baseMediaDecodeTime",e.dts-(r.first_dts||0)),s.add("trun").set("flags",u.TRUN_FLAGS_DATA_OFFSET|u.TRUN_FLAGS_DURATION|u.TRUN_FLAGS_SIZE|u.TRUN_FLAGS_FLAGS|u.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},y.prototype.lastMoofIndex=0,y.prototype.samplesDataSize=0,y.prototype.resetTables=function(){var e,t,i,s,r,o;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(l=r[a].grouping_type+"/0",(n=new d(r[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[l]||(t.sample_groups_info[l]=n))}else for(a=0;a=2&&(l=s[a].grouping_type+"/0",n=new d(s[a].grouping_type,0),e.sample_groups_info[l]||(e.sample_groups_info[l]=n))},y.setSampleGroupProperties=function(e,t,i,s){var r,o;for(r in t.sample_groups=[],s){var a;if(t.sample_groups[r]={},t.sample_groups[r].grouping_type=s[r].grouping_type,t.sample_groups[r].grouping_type_parameter=s[r].grouping_type_parameter,i>=s[r].last_sample_in_run&&(s[r].last_sample_in_run<0&&(s[r].last_sample_in_run=0),s[r].entry_index++,s[r].entry_index<=s[r].sbgp.entries.length-1&&(s[r].last_sample_in_run+=s[r].sbgp.entries[s[r].entry_index].sample_count)),s[r].entry_index<=s[r].sbgp.entries.length-1?t.sample_groups[r].group_description_index=s[r].sbgp.entries[s[r].entry_index].group_description_index:t.sample_groups[r].group_description_index=-1,0!==t.sample_groups[r].group_description_index)a=s[r].fragment_description?s[r].fragment_description:s[r].description,t.sample_groups[r].group_description_index>0?(o=t.sample_groups[r].group_description_index>65535?(t.sample_groups[r].group_description_index>>16)-1:t.sample_groups[r].group_description_index-1,a&&o>=0&&(t.sample_groups[r].description=a.entries[o])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[r].description=a.entries[a.default_group_description_index-1])}},y.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))},y.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=o.sample_counts[v]),t>0?(e.samples[t-1].duration=o.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,k.dts=e.samples[t-1].dts+e.samples[t-1].duration):k.dts=0,a?(t>=_&&(w++,_<0&&(_=0),_+=a.sample_counts[w]),k.cts=e.samples[t].dts+a.sample_offsets[w]):k.cts=k.dts,n?(t==n.sample_numbers[S]-1?(k.is_sync=!0,S++):(k.is_sync=!1,k.degradation_priority=0),d&&d.entries[E].sample_delta+T==t+1&&(k.subsamples=d.entries[E].subsamples,T+=d.entries[E].sample_delta,E++)):k.is_sync=!0,y.process_sdtp(e.mdia.minf.stbl.sdtp,k,k.number),k.degradation_priority=u?u.priority[t]:0,d&&d.entries[E].sample_delta+T==t&&(k.subsamples=d.entries[E].subsamples,T+=d.entries[E].sample_delta),(h.length>0||c.length>0)&&y.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)}},y.prototype.updateSampleLists=function(){var e,t,i,s,r,o,a,n,l,d,h,c,p,f,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&y.initSampleGroups(c,h,h.sbgps,c.mdia.minf.stbl.sgpds,h.sgpds),t=0;t0?f.dts=c.samples[c.samples.length-2].dts+c.samples[c.samples.length-2].duration:(h.tfdt?f.dts=h.tfdt.baseMediaDecodeTime:f.dts=0,c.first_traf_merged=!0),f.cts=f.dts,g.flags&u.TRUN_FLAGS_CTS_OFFSET&&(f.cts=f.dts+g.sample_composition_time_offset[i]),m=a,g.flags&u.TRUN_FLAGS_FLAGS?m=g.sample_flags[i]:0===i&&g.flags&u.TRUN_FLAGS_FIRST_FLAG&&(m=g.first_sample_flags),f.is_sync=!(m>>16&1),f.is_leading=m>>26&3,f.depends_on=m>>24&3,f.is_depended_on=m>>22&3,f.has_redundancy=m>>20&3,f.degradation_priority=65535&m;var A=!!(h.tfhd.flags&u.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(h.tfhd.flags&u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(g.flags&u.TRUN_FLAGS_DATA_OFFSET),_=0;_=A?h.tfhd.base_data_offset:b||0===t?d.start:n,f.offset=0===t&&0===i?v?_+g.data_offset:_:n,n=f.offset+f.size,(h.sbgps.length>0||h.sgpds.length>0||c.mdia.minf.stbl.sbgps.length>0||c.mdia.minf.stbl.sgpds.length>0)&&y.setSampleGroupProperties(c,f,f.number_in_traf,h.sample_groups_info)}}if(h.subs){c.has_fragment_subsamples=!0;var w=h.first_sample_index;for(t=0;t-1))return null;var o=(i=this.stream.buffers[r]).byteLength-(s.offset+s.alreadyRead-i.fileStart);if(s.size-s.alreadyRead<=o)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+(s.size-s.alreadyRead)+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,s.size-s.alreadyRead),i.usedBytes+=s.size-s.alreadyRead,this.stream.logBufferLevel(),s.alreadyRead=s.size,s;if(0===o)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+o+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,o),s.alreadyRead+=o,i.usedBytes+=o,this.stream.logBufferLevel()}},y.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.description=null,delete i.degradation_priority,delete i.depends_on,delete i.description_index,delete i.has_redundancy,delete i.is_depended_on,delete i.is_leading,delete i.is_sync,delete i.moof_number,delete i.number_in_traf,delete i.timescale,delete i.cts,delete i.dts,delete i.offset,delete i.size,delete i.track_id,delete i.duration,i.alreadyRead=0,i.size):0},y.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},y.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},y.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=o.ipro.protections[o.iinf.item_infos[e].protection_index-1]),o.iinf.item_infos[e].item_type?i.type=o.iinf.item_infos[e].item_type:i.type="mime",i.content_type=o.iinf.item_infos[e].content_type,i.content_encoding=o.iinf.item_infos[e].content_encoding;if(o.grpl)for(e=0;e0&&u.property_index-1-1))return null;var n=(t=this.stream.buffers[o]).byteLength-(r.offset+r.alreadyRead-t.fileStart);if(!(r.length-r.alreadyRead<=n))return a.debug("ISOFile","Getting item #"+e+" extent #"+s+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+n+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,n),r.alreadyRead+=n,i.alreadyRead+=n,t.usedBytes+=n,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+s+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+(r.length-r.alreadyRead)+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,r.length-r.alreadyRead),t.usedBytes+=r.length-r.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=r.length-r.alreadyRead,r.alreadyRead=r.length}}return i.alreadyRead===i.size?i:null},y.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(s)}return t},y.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},u.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)},u.FullBox.prototype.printHeader=function(e){this.size+=4,u.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},u.Box.prototype.print=function(e){this.printHeader(e)},u.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)},u.tkhdBox.prototype.print=function(e){u.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 A={createFile:function(e,t){var i=void 0===e||e,s=new y(t);return s.discardMdatData=!i,s}};t.createFile=A.createFile}));function Rh(e){return e.reduce(((e,t)=>256*e+t))}function Ih(e){const t=[101,103,119,99],i=e.length-28,s=e.slice(i,i+t.length);return t.every(((e,t)=>e===s[t]))}Dh.Log,Dh.MP4BoxStream,Dh.DataStream,Dh.MultiBufferStream,Dh.MPEG4DescriptorParser,Dh.BoxParser,Dh.XMLSubtitlein4Parser,Dh.Textin4Parser,Dh.ISOFile,Dh.createFile;class Ph{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 s=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(s instanceof Error)return console.error(s.message),this.d=!0,e;this.A=!0,this.u=i[1],Ih(t)&&this.c++,WebAssembly.instantiate(i[2],s).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 Bh extends mh{constructor(e){super(e),this.TAG_NAME="Fmp4Loader",this.player=e,this.mp4Box=Dh.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 Ph),this._listenMp4Box(),e.debugLog(this.TAG_NAME,"init")}destroy(){this.mp4Box&&(this.mp4Box.stop(),this.mp4Box.flush(),this.mp4Box.destroy(),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.debugLog(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.debugLog(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.debugLog(this.TAG_NAME,"seqHeader",e),this._doDecodeByFmp4(e,Ge,0,!0,0)),this.mp4Box.setExtractionOptions(t.id)}if(i&&this.player._opt.hasAudio){this.audioTrackId=i.id;const e=i.audio||{},t=Jr.indexOf(e.sample_rate),s=i.codec.replace("mp4a.40.","");this.mp4Box.setExtractionOptions(i.id);const r={profile:parseInt(s,10),sampleRate:t,channel:e.channel_count},o=qr(r);this.player.debugLog(this.TAG_NAME,"aacADTSHeader",o,"config",r),this._doDecodeByFmp4(o,je,0,!1,0)}this.mp4Box.start()}onError(e){this.player.debugError(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,s=1e3*e.cts/e.timescale;e.duration,e.timescale,this.player.updateStats({vbps:t.byteLength,dts:s}),i&&this.calcIframeIntervalTimestamp(s);let r=null;r=this.isHevc?cl(t,i):Qn(t,i);let o=this.cryptoPayload(r,i);this._doDecodeByFmp4(o,Ge,s,i,0)}this.mp4Box.removeUsedSamples(e)}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 s=new Uint8Array(t.byteLength+2);s.set([175,1],0),s.set(t,2),this._doDecodeByFmp4(s,je,i,!1,0)}this.mp4Box.removeUsedSamples(e)}}else this.player.debugWarn(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 Dh.DataStream(void 0,0,Dh.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 s=new Uint8Array(t.buffer,8),r=new Uint8Array(i.length+s.length);return r.set(i,0),r.set(s,i.length),r}return null}dispatch(e){let t=new Uint8Array(e);this.transportDescarmber&&(t=this.transportDescarmber.transport(t)),t.buffer.fileStart=this.offset,this.offset+=t.byteLength,this.mp4Box.appendBuffer(t.buffer)}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=yo()+".fmp4",i.click(),URL.revokeObjectURL(t)}getInputByteLength(){let e=0;return this.mp4Box&&(e=this.mp4Box.getAllocatedSampleDataSize()),e}}class Mh extends mh{constructor(e){super(e),kh(this,"LOG_NAME","Mpeg4Loader"),this.player=e,this.player.debugLog(this.LOG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.LOG_NAME,"destroy")}}function Fh(){for(var e=arguments.length,t=new Array(e),i=0;ie+t.byteLength),0));let r=0;return t.forEach((e=>{s.set(e,r),r+=e.byteLength})),s}const Uh=3,Oh=4,Nh=6,jh=15,Gh=17,Wh=129,zh=135,$h=21,Vh=134,Hh=27,Jh=36;class qh{constructor(){this.slices=[],this.total_length=0,this.expected_length=0,this.random_access_indicator=0}}class Kh{constructor(){this.pid=null,this.data=null,this.stream_type=null,this.random_access_indicator=null}}class Yh{constructor(){this.pid=null,this.stream_id=null,this.len=null,this.data=null,this.pts=null,this.nearest_pts=null,this.dts=null}}const Qh=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];class Xh{constructor(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}isComplete(){let e=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,t=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&e&&t}isSeekable(){return!0===this.hasKeyframesIndex}getNearestKeyframe(e){if(null==this.keyframesIndex)return null;let t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}}_search(e,t){let i=0,s=e.length-1,r=0,o=0,a=s;for(t=e[r]&&t=6?(s=5,t=new Array(4),a=r-3):(s=2,t=new Array(2),a=r):-1!==n.indexOf("android")?(s=2,t=new Array(2),a=r):(s=5,a=r,t=new Array(4),r>=6?a=r-3:1===o&&(s=2,t=new Array(2),a=r)),t[0]=s<<3,t[0]|=(15&r)>>>1,t[1]=(15&r)<<7,t[1]|=(15&o)<<3,5===s&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Qh[r],this.sampling_index=r,this.channel_count=o,this.object_type=s,this.original_object_type=i,this.codec_mimetype="mp4a.40."+s,this.original_codec_mimetype="mp4a.40."+i}}class ec extends mh{constructor(e){super(e),this.player=e,this.TAG_NAME="TsLoader",this.first_parse_=!0,this.tsPacketSize=0,this.syncOffset=0,this.pmt_=null,this.config_=null,this.media_info_=new Xh,this.timescale_=90,this.duration_=0,this.pat_={version_number:0,network_pid:0,program_map_pid:{}},this.current_program_=null,this.current_pmt_pid_=-1,this.program_pmt_map_={},this.pes_slice_queues_={},this.section_slice_queues_={},this.video_metadata_={vps:null,sps:null,pps:null,details:null},this.audio_metadata_={codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},this.last_pcr_=null,this.last_pcr_base_=NaN,this.timestamp_offset_=0,this.audio_last_sample_pts_=void 0,this.aac_last_incomplete_data_=null,this.has_video_=!1,this.has_audio_=!1,this.video_init_segment_dispatched_=!1,this.audio_init_segment_dispatched_=!1,this.video_metadata_changed_=!1,this.audio_metadata_changed_=!1,this.loas_previous_frame=null,this.video_track_={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this.audio_track_={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._remainingPacketData=null,this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.media_info_=null,this.pes_slice_queues_=null,this.section_slice_queues_=null,this.video_metadata_=null,this.audio_metadata_=null,this.aac_last_incomplete_data_=null,this.video_track_=null,this.audio_track_=null,this._remainingPacketData=null,super.destroy()}probe(e){let t=new Uint8Array(e),i=-1,s=188;if(t.byteLength<=3*s)return{needMoreData:!0};for(;-1===i;){let e=Math.min(1e3,t.byteLength-3*s);for(let r=0;r=4&&(i-=4),{match:!0,consumed:0,ts_packet_size:s,sync_offset:i})}_initPmt(){return{program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}}dispatch(e){let t=new Uint8Array(e);this._remainingPacketData&&(t=Fh(this._remainingPacketData,t),this._remainingPacketData=null);let i=t.buffer;const s=this.parseChunks(i);s?this._remainingPacketData=t.subarray(s):t.length>>6;i[1];let o=(31&i[1])<<8|i[2],a=(48&i[3])>>>4,n=15&i[3],l=!(!this.pmt_||this.pmt_.pcr_pid!==o),d={},h=4;if(2==a||3==a){let e=i[4];if(e>0&&(l||3==a)){if(d.discontinuity_indicator=(128&i[5])>>>7,d.random_access_indicator=(64&i[5])>>>6,d.elementary_stream_priority_indicator=(32&i[5])>>>5,(16&i[5])>>>4){let e=300*this._getPcrBase(i)+((1&i[10])<<8|i[11]);this.last_pcr_=e}}if(2==a||5+e===188){t+=188,204===this.tsPacketSize&&(t+=16);continue}h=5+e}if(1==a||3==a)if(0===o||o===this.current_pmt_pid_||null!=this.pmt_&&this.pmt_.pid_stream_type[o]===Vh){let i=188-h;this.handleSectionSlice(e,t+h,i,{pid:o,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}else if(null!=this.pmt_&&null!=this.pmt_.pid_stream_type[o]){let i=188-h,s=this.pmt_.pid_stream_type[o];o!==this.pmt_.common_pids.h264&&o!==this.pmt_.common_pids.h265&&o!==this.pmt_.common_pids.adts_aac&&o!==this.pmt_.common_pids.loas_aac&&o!==this.pmt_.common_pids.ac3&&o!==this.pmt_.common_pids.eac3&&o!==this.pmt_.common_pids.opus&&o!==this.pmt_.common_pids.mp3&&!0!==this.pmt_.pes_private_data_pids[o]&&!0!==this.pmt_.timed_id3_pids[o]&&!0!==this.pmt_.synchronous_klv_pids[o]&&!0!==this.pmt_.asynchronous_klv_pids[o]||this.handlePESSlice(e,t+h,i,{pid:o,stream_type:s,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}t+=188,204===this.tsPacketSize&&(t+=16)}return this.dispatchAudioVideoMediaSegment(),t}handleSectionSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=this.section_slice_queues_[s.pid];if(s.payload_unit_start_indicator){let a=r[0];if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t+1,Math.min(i,a));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):this.clearSlices(o,s)}for(let n=1+a;n=o.expected_length&&this.clearSlices(o,s),n+=l.byteLength}}else if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t,Math.min(i,o.expected_length-o.total_length));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):o.total_length>=o.expected_length&&this.clearSlices(o,s)}}handlePESSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=r[0]<<16|r[1]<<8|r[2];r[3];let a=r[4]<<8|r[5];if(s.payload_unit_start_indicator){if(1!==o)return void this.player.debugWarn(this.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${o}`);let e=this.pes_slice_queues_[s.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?this.emitPESSlices(e,s):this.clearSlices(e,s)),this.pes_slice_queues_[s.pid]=new qh,this.pes_slice_queues_[s.pid].random_access_indicator=s.random_access_indicator}if(null==this.pes_slice_queues_[s.pid])return;let n=this.pes_slice_queues_[s.pid];n.slices.push(r),s.payload_unit_start_indicator&&(n.expected_length=0===a?0:a+6),n.total_length+=r.byteLength,n.expected_length>0&&n.expected_length===n.total_length?this.emitPESSlices(n,s):n.expected_length>0&&n.expected_length>>6,n=t[8];2!==a&&3!==a||(i=this._getTimestamp(t,9),o=3===a?this._getTimestamp(t,14):i);let l,d=9+n;if(0!==r){if(r<3+n)return void this.player.debugWarn(this.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");l=r-3-n}else l=t.byteLength-d;let h=t.subarray(d,d+l);switch(e.stream_type){case Uh:case Oh:this.parseMP3Payload(h,i);break;case Nh:this.pmt_.common_pids.opus===e.pid?this.parseOpusPayload(h,i):this.pmt_.common_pids.ac3===e.pid?this.parseAC3Payload(h,i):this.pmt_.common_pids.eac3===e.pid?this.parseEAC3Payload(h,i):this.pmt_.asynchronous_klv_pids[e.pid]?this.parseAsynchronousKLVMetadataPayload(h,e.pid,s):this.pmt_.smpte2038_pids[e.pid]?this.parseSMPTE2038MetadataPayload(h,i,o,e.pid,s):this.parsePESPrivateDataPayload(h,i,o,e.pid,s);break;case jh:this.parseADTSAACPayload(h,i);break;case Gh:this.parseLOASAACPayload(h,i);break;case Wh:this.parseAC3Payload(h,i);break;case zh:this.parseEAC3Payload(h,i);break;case $h:this.pmt_.timed_id3_pids[e.pid]?this.parseTimedID3MetadataPayload(h,i,o,e.pid,s):this.pmt_.synchronous_klv_pids[e.pid]&&this.parseSynchronousKLVMetadataPayload(h,i,o,e.pid,s);break;case Hh:this.parseH264Payload(h,i,o,e.random_access_indicator);break;case Jh:this.parseH265Payload(h,i,o,e.random_access_indicator)}}else if((188===s||191===s||240===s||241===s||255===s||242===s||248===s)&&e.stream_type===Nh){let i,o=6;i=0!==r?r:t.byteLength-o;let a=t.subarray(o,o+i);this.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,s)}}else this.player.debugError(this.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${i}`)}parsePAT(e){let t=e[0];if(0!==t)return void Log.e(this.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let i=(15&e[1])<<8|e[2];e[3],e[4];let s=(62&e[5])>>>1,r=1&e[5],o=e[6];e[7];let a=null;if(1===r&&0===o)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=s;else if(a=this.pat_,null==a)return;let n=i-5-4,l=-1,d=-1;for(let t=8;t<8+n;t+=4){let i=e[t]<<8|e[t+1],s=(31&e[t+2])<<8|e[t+3];0===i?a.network_pid=s:(a.program_pmt_pid[i]=s,-1===l&&(l=i),-1===d&&(d=s))}1===r&&0===o&&(null==this.pat_&&this.player.debugLog(this.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),this.pat_=a,this.current_program_=l,this.current_pmt_pid_=d)}parsePMT(e){let t=e[0];if(2!==t)return void this.player.debugError(this.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let i,s=(15&e[1])<<8|e[2],r=e[3]<<8|e[4],o=(62&e[5])>>>1,a=1&e[5],n=e[6];if(e[7],1===a&&0===n)i=this._initPmt(),i.program_number=r,i.version_number=o,this.program_pmt_map_[r]=i;else if(i=this.program_pmt_map_[r],null==i)return;i.pcr_pid=(31&e[8])<<8|e[9];let l=(15&e[10])<<8|e[11],d=12+l,h=s-9-l-4;for(let t=d;t0){for(let s=t+5;s0)for(let s=t+5;s1&&(this.player.debugWarn(this.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new ao(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame());){i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:je};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseLOASAACPayload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;if(this.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+this.aac_last_incomplete_data_.byteLength);t.set(this.aac_last_incomplete_data_,0),t.set(e,this.aac_last_incomplete_data_.byteLength),e=t}let i,s;if(null!=t&&(s=t/this.timescale_),"aac"===this.audio_metadata_.codec){if(null==t&&null!=this.audio_last_sample_pts_)i=1024/this.audio_metadata_.sampling_frequency*1e3,s=this.audio_last_sample_pts_+i;else if(null==t)return void this.player.debugWarn(this.TAG_NAME,"AAC: Unknown pts");if(this.aac_last_incomplete_data_&&this.audio_last_sample_pts_){i=1024/this.audio_metadata_.sampling_frequency*1e3;let e=this.audio_last_sample_pts_+i;Math.abs(e-s)>1&&(this.player.debugWarn(this.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new no(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame($o(this.loas_previous_frame)?void 0:this.loas_previous_frame));){this.loas_previous_frame=a,i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:je};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseAC3Payload(e,t){}parseEAC3Payload(e,t){}parseOpusPayload(e,t){}parseMP3Payload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;let i=[44100,48e3,32e3,0],s=[22050,24e3,16e3,0],r=[11025,12e3,8e3,0],o=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let n=(12&e[2])>>>2,l=3!==(e[3]>>>6&3)?2:1,d=0,h=34;switch(o){case 0:d=r[n];break;case 2:d=s[n];break;case 3:d=i[n]}switch(a){case 1:h=34;break;case 2:h=33;break;case 3:h=32}const c={};c.object_type=h,c.sample_rate=d,c.channel_count=l,c.data=e;const u={codec:"mp3",data:c};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"mp3",object_type:h,sample_rate:d,channel_count:l},this.dispatchAudioInitSegment(u)):this.detectAudioMetadataChange(u)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(u));let p={payload:e,length:e.byteLength,pts:t/this.timescale_,dts:t/this.timescale_,type:je};this.audio_track_.samples.push(p),this.audio_track_.length+=e.byteLength}detectAudioMetadataChange(e){if(e.codec!==this.audio_metadata_.codec)return this.player.debugLog(this.TAG_NAME,`Audio: Audio Codecs changed from ${this.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===this.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==this.audio_metadata_.audio_object_type)return this.player.debugLog(this.TAG_NAME,`AAC: AudioObjectType changed from ${this.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==this.audio_metadata_.sampling_freq_index)return this.player.debugLog(this.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${this.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==this.audio_metadata_.channel_config)return this.player.debugLog(this.TAG_NAME,`AAC: Channel configuration changed from ${this.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===this.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==this.audio_metadata_.sampling_frequency)return this.player.debugLog(this.TAG_NAME,`AC3: Sampling Frequency changed from ${this.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==this.audio_metadata_.bit_stream_identification)return this.player.debugLog(this.TAG_NAME,`AC3: Bit Stream Identification changed from ${this.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==this.audio_metadata_.bit_stream_mode)return this.player.debugLog(this.TAG_NAME,`AC3: BitStream Mode changed from ${this.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==this.audio_metadata_.channel_mode)return this.player.debugLog(this.TAG_NAME,`AC3: Channel Mode changed from ${this.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==this.audio_metadata_.low_frequency_effects_channel_on)return this.player.debugLog(this.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${this.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===this.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debugLog(this.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debugLog(this.TAG_NAME,`Opus: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===this.audio_metadata_.codec){const t=e.data;if(t.object_type!==this.audio_metadata_.object_type)return this.player.debugLog(this.TAG_NAME,`MP3: AudioObjectType changed from ${this.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debugLog(this.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debugLog(this.TAG_NAME,`MP3: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1}dispatchAudioInitSegment(e){let t={type:"audio"};t.id=this.audio_track_.id,t.timescale=1e3,t.duration=this.duration_;let i="";if("aac"===this.audio_metadata_.codec){let s="aac"===e.codec?e.data:null,r=new Zh(s);t.audioSampleRate=r.sampling_rate,t.audioSampleRateIndex=r.sampling_index,t.channelCount=r.channel_count,t.codec=r.codec_mimetype,t.originalCodec=r.original_codec_mimetype,t.config=r.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale,i=Pt;const o=qr({profile:this.player._opt.mseDecodeAudio?r.object_type:r.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});console.error("aacADTSHeader",`profile: ${r.object_type}, sampleRate: ${t.audioSampleRateIndex}, channel: ${t.channelCount}`),this._doDecodeByTs(o,je,0,!1,0)}else"ac-3"===this.audio_metadata_.codec||"ec-3"===this.audio_metadata_.codec||"opus"===this.audio_metadata_.codec||"mp3"===this.audio_metadata_.codec&&(t.audioSampleRate=this.audio_metadata_.sample_rate,t.channelCount=this.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0,i=Mt);0==this.audio_init_segment_dispatched_&&this.player.debugLog(this.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),this.audio_init_segment_dispatched_=!0,this.video_metadata_changed_=!1;let s=this.media_info_;s.hasAudio=!0,s.audioCodec=t.originalCodec,s.audioSampleRate=t.audioSampleRate,s.audioChannelCount=t.channelCount,s.hasVideo&&s.videoCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.audioCodec}"`,i&&this.player.audio.updateAudioInfo({encTypeCode:i,channels:t.channelCount,sampleRate:t.audioSampleRate})}dispatchPESPrivateDataDescriptor(e,t,i){}parsePESPrivateDataPayload(e,t,i,s,r){let o=new Yh;if(o.pid=s,o.stream_id=r,o.len=e.byteLength,o.data=e,null!=t){let e=Math.floor(t/this.timescale_);o.pts=e}else o.nearest_pts=this.getNearestTimestampMilliseconds();if(null!=i){let e=Math.floor(i/this.timescale_);o.dts=e}}parseTimedID3MetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`Timed ID3 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseSynchronousKLVMetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`Synchronous KLV Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseAsynchronousKLVMetadataPayload(e,t,i){this.player.debugLog(this.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${i}`)}parseSMPTE2038MetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`SMPTE 2038 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}getNearestTimestampMilliseconds(){if(null!=this.audio_last_sample_pts_)return Math.floor(this.audio_last_sample_pts_);if(null!=this.last_pcr_){return Math.floor(this.last_pcr_/300/this.timescale_)}}_preDoDecode(){const e=this.video_track_,t=this.audio_track_;let i=e.samples;t.samples.length>0&&(i=e.samples.concat(t.samples),i=i.sort(((e,t)=>e.dts-t.dts))),i.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===Ge?this._doDecodeVideo({...e,payload:t}):e.type===je&&this._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?cl(t,e.isIFrame):Qn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength}),e.isIFrame&&this.calcIframeIntervalTimestamp(e.dts);let s=this.cryptoPayload(i,e.isIFrame);this._doDecodeByTs(s,Ge,e.dts,e.isIFrame,e.cts)}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=this.cryptoPayloadAudio(t);this._doDecodeByTs(i,je,e.dts,!1,0)}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}_getPcrBase(e){let t=33554432*e[6]+131072*e[7]+512*e[8]+2*e[9]+(128&e[10])/128+this.timestamp_offset_;return t+4294967296>>3&3,r=(6&t[1])>>1,o=(240&t[2])>>>4,a=(12&t[2])>>>2,n=3!==(t[3]>>>6&3)?2:1,l=0,d=0;switch(s){case 0:l=rc[a];break;case 2:l=sc[a];break;case 3:l=ic[a]}switch(r){case 1:o{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(vt.webcodecsAudioInitTimeout)}),1e3)),void ga(e)):void(this.player.isPlayer()?(this.player.updateStats({dfps:!0}),this.player._times.videoStart||(this.player._times.videoStart=yo(),this.player.handlePlayToRenderTimes()),this.player.video.render({videoFrame:e,ts:e.timestamp}),this.player.handleRender()):this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),xa(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})):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender&&this.player.video.pushData({videoFrame:e,ts:e.timestamp})));ga(e)}handleError(e){this.player.debugError(this.TAG_NAME,"VideoDecoder handleError:",e.code,e);const t=e.toString();-1!==t.indexOf(gs)?this.player.emitError(vt.webcodecsUnsupportedConfigurationError,t):-1!==t.indexOf(ys)||-1!==t.indexOf(As)||-1!==t.indexOf(bs)?this.player.emitError(vt.webcodecsDecodeError,t):-1!==t.indexOf(vs)&&this.player.emitError(vt.webcodecsH265NotSupport,t)}handleDecodeAudio(e){this.player&&(this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"decodeVideo() player is destroyed"):this.player.isPlayer()?this.player.audio.play(e,e.timestamp):this.player.isPlayback())}handleErrorAudio(e){this.player.debugError(this.TAG_NAME,"AudioDecoder handleError:",e.code,e)}decodeVideo(e,t,i,s){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debugWarn(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.debugWarn(this.TAG_NAME,"VideoDecoder isDecodeStateClosed true");if(i&&0===e[1]){const t=15&e[0];let i={};if(t===xt){i=Kn(e.slice(5))}else t===Dt&&(i=nl(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debugWarn(this.TAG_NAME,`decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(vt.wcsWidthOrHeightChange,`width ${s.width}->${s.height} height ${i.codecWidth}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(La(e))return void this.player.debugLog(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debugWarn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let s=!1,r=(new Date).getTime();this.prevTimestamp||(this.prevTimestamp=r,s=!0);const o=r-this.prevTimestamp;this.decodeDiffTimestamp=o,o>500&&!s&&this.player.isPlayer()&&this.player.debugWarn(this.TAG_NAME,"decodeVideo diff time is ",o);const a=e.slice(5),n=new EncodedVideoChunk({data:a,timestamp:t,type:i?bi:vi});this.player.emit(yt.timeUpdate,t);try{this.decoder.decode(n)}catch(e){this.player.debugError(this.TAG_NAME,"VideoDecoder",e);const t=e.toString();(-1!==t.indexOf(fs)||-1!==t.indexOf(ms))&&this.player.emitError(vt.webcodecsDecodeError,t)}this.prevTimestamp=(new Date).getTime()}else this.player.debugLog(this.TAG_NAME,"VideoDecoder first frame is not iFrame");else if(i&&e[1]===Cs){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===Dt&&!jo()){const e=xo();return this.player.debugWarn(this.TAG_NAME,"WebcodecsDecoder not support hevc decode",e.type,e.version),void this.player.emitError(vt.webcodecsH265NotSupport)}this.player._times.decodeStart||(this.player._times.decodeStart=yo());let i=null,s=null;const r=e.slice(5);if(t===xt?(s=Kn(r),i={codec:s.codec,description:r}):t===Dt&&(s=ll(r),i={codec:s.codec,description:r}),!i||i&&!i.codec||s&&0===s.codecWidth&&0===s.codecHeight)return this.player.debugWarn(this.TAG_NAME,"decodeVideo and webcodecs configure is",JSON.stringify(i)),void this.player.emitError(vt.webcodecsDecodeConfigureError,"configure or configure.code is null");i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth,this.isInitInfo||(this.player.debugLog(this.TAG_NAME,`updateVideoInfo: ${s.codecWidth},${s.codecHeight}`),this.player.video.updateVideoInfo({width:s.codecWidth,height:s.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,t),this.player.video.bindMediaStream(),this.player.debugLog(this.TAG_NAME,`decoder.configure() and codec is ${i.codec}`);try{i.optimizeForLatency=!0,i.hardwareAcceleration="prefer-hardware",this.decoder.configure(i),this.hasInit=!0}catch(e){this.player.debugError(this.TAG_NAME,"configure error",e.code,e);const t=e.toString();-1!==t.indexOf(vs)?this.player.emitError(vt.webcodecsH265NotSupport,t):this.player.emitError(vt.webcodecsDecodeConfigureError,t)}}else this.player.debugWarn(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.debugWarn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(this.hasAudioInit){if(Kr(e))return void this.player.debugLog(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.debugWarn(this.TAG_NAME,"AudioDecoder isDecodeStateClosed true");const i=this.isAAC?e.slice(2):e.slice(1),s=i.length/this.player.audio.audioInfo.sampleRate*1e3,r=new EncodedAudioChunk({type:"key",data:i,timestamp:t,duration:parseInt(s,10)});try{this.decoderAudio.decode(r)}catch(e){this.player.debugError(this.TAG_NAME,"AudioDecoder",e),e.toString()}}}else{const t=e[0]>>4,i=e[0]>>1&1,s=t===Mt,r=t===Pt,o=t===Bt;let a="";a=r?i?16:8:0===i?8:16;const n={codec:"",numberOfChannels:"",sampleRate:""};let l=null;if(r||s){let t=null;if(Kr(e)){const i=e.slice(2);t=eo(i),t&&(n.codec=t.originalCodec,n.numberOfChannels=t.channelCount,n.sampleRate=t.sampleRate),l=i,this.isAAC=r}else s&&(t=lc(e),t&&(n.codec=Br,n.numberOfChannels=t.channelCount,n.sampleRate=t.samplingRate))}else n.codec=o?Pr:Ir,n.numberOfChannels=1,n.sampleRate=8e3;if(n.codec&&n.numberOfChannels&&n.sampleRate){this.isAudioInitInfo||(this.player.audio.updateAudioInfo({encTypeCode:t,channels:n.numberOfChannels,sampleRate:n.sampleRate,depth:a}),this.isAudioInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&l&&this.player.recorder.initAudioAacExtraData(l),this.player.debugLog(this.TAG_NAME,`decoderAudio.configure() and codec is ${n.codec}`);try{this.decoderAudio.configure(n),this._clearAudioSourceBufferCheckTimeout(),this.hasAudioInit=!0,null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(vt.webcodecsAudioNoDataTimeout)}),1e3))}catch(e){this.player.debugError(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 hc={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 cc=Object.keys(hc).reduce(((e,t)=>(e[t]=`\n \n ${hc[t]?`${hc[t]}`:""}\n`,e)),{});function uc(e,t){let i=!1;return e.forEach((e=>{i||e.startTimestamp<=t&&e.endTimestamp>t&&(i=!0)})),i}function pc(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;const s=e.length,r=t.length,o=Math.max(s,r),a=2e3,n=Math.ceil(o/a);let l=0,d=0;function h(){let r="",o="";for(let i=0;i\n ${i.title}\n \n `);const a=t[d];a&&(o+=`\n
    ${a.title}
    \n `),d+=1}r&&i.$playbackTimeListOne.insertAdjacentHTML("beforeend",r),o&&i.$playbackTimeListSecond.insertAdjacentHTML("beforeend",o),l+=1,l0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){const r=s%60==0;let o=!1;i&&(o=uc(e,ta(i,s))),t.push({title:Zo(s),timestamp:s,dataType:"min",hasRecord:o,isStart:r})}return t}(e);pc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0})}return e}(),t)}function mc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){let r=60*s,o=r%1800==0,a=!1;i&&(a=uc(e,ia(i,r))),t.push({title:ea(r),timestamp:r,dataType:"second",hasRecord:a,isStart:o});let n=60*s+30;o=n%1800==0,i&&(a=uc(e,ia(i,n))),t.push({title:ea(n),timestamp:n,dataType:"second",hasRecord:a,isStart:o})}return t}(e);pc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00",s=t+":30";t<10&&(i="0"+i,s="0"+s),e.push({title:i,hour:t,min:0,second:0}),e.push({title:s,hour:t,min:30,second:0})}return e}(),t)}function gc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<144;s++)for(let r=0;r<60;r++){let o=10*r+600*s,a=o%600==0,n=!1;i&&(n=uc(e,ia(i,o))),t.push({title:ea(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);pc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0});for(let s=1;s<6;s++){let r=s+"0";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0})}}return e}(),t)}function yc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<288;s++)for(let r=0;r<60;r++){let o=5*r+300*s,a=o%300==0,n=!1;i&&(n=uc(e,ia(i,o))),t.push({title:ea(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);pc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0}),e.push({title:i.replace(":00",":05"),hour:t,min:5,second:0});for(let s=1;s<6;s++){let r=s+"0",o=s+"5";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0}),e.push({title:i.replace(":00",":"+o),hour:t,min:10*s+5,second:0})}}return e}(),t)}function Ac(e){const t=Math.floor(e/3600),i=Math.floor((e-3600*t)/60),s=Math.floor(e-3600*t-60*i);return(t>0?[t,i,s]:[i,s]).map((e=>e<10?`0${e}`:String(e))).join(":")}function bc(e,t,i){const s=e.$playbackProgress,{left:r}=s.getBoundingClientRect(),o=Ao((To()?i.touches[0].clientX:i.pageX)-r,0,s.clientWidth),a=parseInt(o/s.clientWidth*t,10);return{second:a,time:Ac(a),width:o,percentage:Ao(o/s.clientWidth,0,1)}}function vc(e,t){return e.classList.add(t)}function _c(e,t){return e.classList.remove(t)}function wc(e,t){return e.classList.contains(t)}function Sc(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function Ec(e,t,i){return e&&e.style&&Ho(t)&&(e.style[t]=i),e}function Tc(e,t){return e.composedPath&&e.composedPath().indexOf(t)>-1}function kc(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}var Lc=(e,t)=>{const{events:{proxy:i}}=e;let s=null,r=null,o=null,a=null;if(e._opt.listenWindowResizeAuoResize){s=document.createElement("object"),r=`jb-pro-object-${Sa()}`,s.setAttribute("aria-hidden","true"),s.setAttribute("tabindex",-1),s.setAttribute("id",r),s.type="text/html",s.data="about:blank",bo(s,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"}),o=e.width,a=e.height;const t=Fo((()=>{e.width===o&&e.height===a||(o=e.width,a=e.height,e.emit(yt.resize))}),500);i(s,"load",(()=>{i(s.contentDocument.defaultView,"resize",(()=>{t()}))})),e.$container.appendChild(s)}e.on(yt.destroy,(()=>{if(s)try{if(!kc(s)){const t=e.$container.querySelector(`#${r}`);t&&e.$container&&e.$container.removeChild(t)}}catch(e){}d&&(clearInterval(d),d=null),h=null,c=null,u=0,s=null,r=null,o=null,a=null})),e.on(yt.volumechange,(()=>{!function(e){if(0===e)bo(t.$volumeOn,"display","none"),bo(t.$volumeOff,"display","flex"),bo(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=vo(t.$volumePanel,"height")||60,s=vo(t.$volumeHandle,"height"),r=i-(i-s)*e-s;bo(t.$volumeHandle,"top",`${r}px`),bo(t.$volumeOn,"display","flex"),bo(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(yt.loading,(i=>{t.isInitPlayer=!1,bo(t.$loading,"display",i?"flex":"none"),(xa(e._opt.backgroundLoadingShow)&&Ca(i)||xa(i))&&bo(t.$poster,"display","none"),i&&(bo(t.$playBig,"display","none"),bo(t.$tipsMessage,"display","none"),t.extendBtnList.forEach((e=>{e.createdMoment===Ur&&(e.$iconWrap&&bo(e.$iconWrap,"display","flex"),e.$activeIconWrap&&bo(e.$activeIconWrap,"display","none"))}))),i||e._opt.extendDomConfig.showAfterLoading&&t.$extendDom&&bo(t.$extendDom,"display","block"),i||e.getRenderType()===H&&xa(e._opt.useMSE)&&n()})),e.on(yt.removeLoadingBgImage,(()=>{n()}));const n=()=>{t.$loadingBgImage&&t.$loadingBg&&t.$loadingBgImage.src&&(e.debugLog("Control","remove loading bg image"),t.$loadingBgImage.width=0,t.$loadingBgImage.height=0,t.$loadingBgImage.src="",bo(t.$loadingBg,"display","none"))},l=t=>{da(t)===e.$container&&(e.fullscreen,f(),e._opt.androidMobileFullscreenRotate&&To()&&(e.fullscreen?(e.$container.classList.add("jb-pro-fullscreen-android-rotate"),e.setRotate(270)):(e.$container.classList.remove("jb-pro-fullscreen-android-rotate"),e.setRotate(0)),p()))};let d=null,h=null,c=null,u=0;const p=()=>{h=e.rect,h.width=parseInt(h.width,10),h.height=parseInt(h.height,10),u=0,d=setInterval((()=>{const t=zr.isFullscreen;c=e.rect,c.width=parseInt(c.width,10),c.height=parseInt(c.height,10);const i=screen.width,s=screen.height,r=c.width===h.width&&c.height===h.height,o=!t||i-c.width<10&&s-c.height<10;if(r&&o||u>=5)return d&&(clearInterval(d),d=null),void g((()=>{A()}));h=c,u++}),1e3)},f=i=>{if(xa(e.isPlaying()))return;let s=Vo(i)?i:e.fullscreen;bo(t.$fullscreenExit,"display",s?"flex":"none"),bo(t.$fullscreen,"display",s?"none":"flex")},m=()=>e._opt.playType===w&&e._opt.playbackConfig.showControl,g=i=>{To()&&t.$controls&&(e._opt.useWebFullScreen||e._opt.androidMobileFullscreenRotate)&&setTimeout((()=>{if(e.fullscreen){const i=e.getControlHeight();let s=e.height/2-e.width+i/2,r=e.height/2-i/2;if(t.$controls.style.transform=`translateX(${-s}px) translateY(-${r}px) rotate(-90deg)`,t.$zoomControls){const i=156,s=30,r=e.width/2+i/2-s/2;t.$zoomControls.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}if(t.$recording){const i=101,s=20,r=e.width/2+i/2-s/2;t.$recording.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}t.$ptzControl&&(t.$ptzControl.style.transform="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)"),t.$ptzControl&&(t.$ptzControl.style.transform="rotate(0)");i&&i()}),10)};try{zr.on("change",l),e.events.destroys.push((()=>{zr.off("change",l)}))}catch(e){}e.on(yt.webFullscreen,(e=>{To()&&(f(e),g((()=>{A()})))})),e.on(yt.recording,(()=>{e.playing&&(bo(t.$record,"display",e.recording?"none":"flex"),bo(t.$recordStop,"display",e.recording?"flex":"none"),(e._opt.hasControl||e._opt.isShowRecordingUI)&&(bo(t.$recording,"display",e.recording?"flex":"none"),xa(e.recording)&&t.$recordingTime&&(t.$recordingTime.innerHTML=Xo(0))))})),e.on(yt.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=Xo(e))})),e.on(yt.zooming,(()=>{e.playing&&(bo(t.$zoom,"display",e.zooming?"none":"flex"),bo(t.$zoomStop,"display",e.zooming?"flex":"none"),(e._opt.hasControl||e._opt.isShowZoomingUI)&&bo(t.$zoomControls,"display",e.zooming?"flex":"none"))})),e.on(yt.playing,(e=>{y(e)}));const y=i=>{i||e.isPlayFailedAndPaused&&xa(e._opt.playFailedAndPausedShowPlayBtn)?(bo(t.$play,"display","none"),bo(t.$playBig,"display","none")):(bo(t.$play,"display","flex"),bo(t.$playBig,"display","block")),bo(t.$pause,"display",i?"flex":"none"),bo(t.$screenshot,"display",i?"flex":"none"),bo(t.$record,"display",i?"flex":"none"),bo(t.$qualityMenu,"display",i?"flex":"none"),bo(t.$volume,"display",i?"flex":"none"),bo(t.$ptz,"display",i?"flex":"none"),bo(t.$zoom,"display",i?"flex":"none"),bo(t.$scaleMenu,"display",i?"flex":"none"),bo(t.$faceDetect,"display",i?"flex":"none"),bo(t.$objectDetect,"display",i?"flex":"none"),bo(t.$occlusionDetect,"display",i?"flex":"none"),bo(t.$controlHtml,"display",i?"flex":"none"),e.isPlayback()&&bo(t.$speedMenu,"display",i?"flex":"none"),f(),t.extendBtnList.forEach((e=>{e.createdMoment===Or&&(e.$iconWrap&&bo(e.$iconWrap,"display",i?"flex":"none"),e.$activeIconWrap&&bo(e.$activeIconWrap,"display","none"))})),e._opt.showPerformance?bo(t.$performanceActive,"display",i?"flex":"none"):(bo(t.$performance,"display",i?"flex":"none"),bo(t.$performanceActive,"display","none")),bo(t.$poster,"display","none"),bo(t.$ptzActive,"display","none"),bo(t.$recordStop,"display","none"),bo(t.$zoomStop,"display","none"),bo(t.$faceDetectActive,"display","none"),bo(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"}("")),bo(t.$zoomControls,"display","none"),bo(t.$recording,"display","none"),t.$ptzControl&&t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")),A(),i&&b()};e.on(yt.playbackPause,(e=>{y(!e)})),e.on(yt.kBps,(i=>{const s=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 s=parseFloat(e/8);i=Math.floor(Math.log(s)/Math.log(1024));let r=s/Math.pow(1024,i);return r=r.toFixed(2),r+(t[i]||t[0])}(i);t.kbpsShow=s,e._opt.showBandwidth&&(t.$speed&&(t.$speed.innerHTML=s),A())}));const A=()=>{if(m()&&e._opt.playbackConfig.controlType===X.normal){let i=t.controlsInnerRect.width-t.controlsLeftRect.width-t.controlsRightRect.width-t.controlsPlaybackBtnsRect.width;To()&&e.webFullscreen&&(i=t.controlsInnerRect.height-t.controlsLeftRect.height-t.controlsRightRect.height-t.controlsPlaybackBtnsRect.height),t.$playbackTimeInner.style.width=i+"px"}},b=()=>{if(!m()||e._opt.playbackConfig.controlType!==X.normal)return;const i=t.$playbackCurrentTime.style.left;let s=parseInt(i,10);const r=t.controlsPlaybackTimeInner.width;s=s-r/2>0?parseInt(s-r/2,10):0,t.$playbackTimeInner.scrollLeft=s};if(m()){const i=()=>{if(m()){let i=0;const s=e.playback&&e.playback.playingTimestamp;if(s){const r=new Date(s),o=r.getHours(),a=r.getMinutes(),n=r.getSeconds();e.playback.is60Min?i=60*o+a:e.playback.is30Min?i=2*(60*o+a)+parseInt(n/30,10):e.playback.is10Min?i=6*(60*o+a)+parseInt(n/10,10):e.playback.is5Min?i=12*(60*o+a)+parseInt(n/5,10):e.playback.is1Min&&(i=60*(60*o+a)+parseInt(n,10)),t.$playbackCurrentTime.style.left=i+"px"}}},s=e=>{t.$playbackNarrow.classList.remove("disabled"),t.$playbackExpand.classList.remove("disabled"),e===Pi&&t.$playbackNarrow.classList.add("disabled"),e===Fi&&t.$playbackExpand.classList.add("disabled")};e.on(yt.playbackTime,(s=>{if(e._opt.playbackConfig.controlType===X.normal)t.$playbackCurrentTimeText&&(t.$playbackCurrentTimeText.innerText=Io(s,"{h}:{i}:{s}")),i();else if(e._opt.playbackConfig.controlType===X.simple){const i=(r=s,o=e.playback.totalDuration,Ao(r/o,0,1));t.$playbackProgressPlayed.style.width=100*i+"%",t.$playbackProgressIndicator.style.left=`calc(${100*i}% - 7px)`,t.$playbackProgressTime.innerText=`${Ac(s)} / ${Ac(e.playback.totalDuration)}`}var r,o})),e.on(yt.playbackPrecision,((r,o)=>{m()&&e._opt.playbackConfig.controlType===X.normal&&(t.$playbackTimeScroll.classList.remove(Ui.oneHour,Ui.halfHour,Ui.fiveMin,Ui.tenMin),t.$playbackTimeScroll.classList.add(Ui[r]),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="",r){case Pi:fc(o,t);break;case Bi:mc(o,t);break;case Mi:gc(o,t);break;case Fi:yc(o,t)}i(),e._opt.playbackConfig.showPrecisionBtn&&s(r),b()}),16))})),e.on(yt.resize,(()=>{g((()=>{A()}))})),e.on(yt.playbackTimeScroll,(()=>{b()})),A()}if(e._opt.operateBtns.quality&&e._opt.qualityConfig.length>0){e.on(yt.streamQualityChange,(e=>{i(e)}));const i=e=>{t.$qualityText.innerText=e,t.$qualityMenuItems.forEach((t=>{const i=t.dataset.quality;t.classList.remove("jb-pro-quality-menu-item-active"),i===e&&t.classList.add("jb-pro-quality-menu-item-active")}))};(()=>{const i=e._opt.qualityConfig||[];let s="";i.forEach((e=>{s+=`\n
    ${e}
    \n `})),s&&(t.$qualityMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$qualityMenuItems",{value:e.$container.querySelectorAll(".jb-pro-quality-menu-item")}))})(),e.streamQuality&&i(e.streamQuality)}if(e._opt.operateBtns.scale&&e._opt.scaleConfig.length>0){e.on(yt.viewResizeChange,(e=>{i(e)}));const i=i=>{const s=e._opt.scaleConfig[i];t.$scaleText.innerText=s,t.$scaleMenuItems.forEach((e=>{const t=e.dataset.scale;e.classList.remove("jb-pro-scale-menu-item-active"),Bo(t)===Bo(i)&&e.classList.add("jb-pro-scale-menu-item-active")}))};(()=>{const i=e._opt.scaleConfig||[];let s="";i.forEach(((e,t)=>{s+=`\n
    ${e}
    \n `})),s&&(t.$scaleMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$scaleMenuItems",{value:e.$container.querySelectorAll(".jb-pro-scale-menu-item")}))})(),i(e.scaleType)}if(e.isPlayback()&&e._opt.playbackConfig.showRateBtn&&e._opt.playbackConfig.rateConfig.length>0){e.on(yt.playbackRateChange,(e=>{i(e)}));const i=i=>{const s=e._opt.playbackConfig.rateConfig.find((e=>Bo(e.value)===Bo(i)));s&&(t.$speedText.innerText=s.label,t.$speedMenuItems.forEach((e=>{const t=e.dataset.speed;e.classList.remove("jb-pro-speed-menu-item-active"),Bo(t)===Bo(i)&&e.classList.add("jb-pro-speed-menu-item-active")})))};(()=>{const i=e._opt.playbackConfig.rateConfig;let s="";i.forEach(((e,t)=>{s+=`\n
    ${e.label}
    \n `})),s&&(t.$speedMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$speedMenuItems",{value:e.$container.querySelectorAll(".jb-pro-speed-menu-item")}))})();const s=e.playback?e.playback.playbackRate:1;i(s)}e.on(yt.stats,(function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e._opt.showPerformance){bo(t.$performancePanel,"display","block"),t.$performancePanel.innerHTML="";const s=So,r=Ma(),o=e.getCpuLevel(),a=Ho(o)&&-1!==o?`${nr[o]}`:"",n=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 g=e.getRecordingDuration(),y=e.getRecordingByteLength();const A=e.isAudioPlaybackRateSpeed(),b=e.videoIframeIntervalTs;g=Xo(g),y=Uo(y);const v=e.isPlayback()?"录播":"直播";let _=i.isDropping;const w=e._opt.useMSE&&e._opt.mseDecodeAudio,S=e.control?e.control.kbpsShow:"0 KB/s",E=e.getVideoPlaybackQuality(),T=e._serverInfo||"",k=`\n
    \n 播放器版本 ${s}\n
    \n ${T?`\n
    \n 服务器信息 ${T}\n
    \n `:""}\n ${e._opt.isMulti?`\n
    \n UUid ${e._opt.debugUuid}\n
    \n `:""}\n ${e.isInMulti()?`\n
    \n 窗口下标 ${e._opt.multiIndex}\n
    \n `:""}\n ${r?`\n
    \n 内存大小限制 ${Uo(r.jsHeapSizeLimit)}\n
    \n
    \n 可使用的内存 ${Uo(r.totalJSHeapSize)}\n
    \n
    \n 已使用的内存 ${Uo(r.usedJSHeapSize)}\n
    \n `:""}\n ${a?`\n
    \n CPU压力情况 ${a}\n
    \n `:""}\n\n ${r&&r.usedJSHeapSize>r.totalJSHeapSize?'\n
    \n 可能内存泄漏 是}\n
    \n ':""}\n\n
    \n 播放模式 ${v}\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 解封装模式 ${F[p]}\n
    \n
    \n 解码模式 ${u}\n
    \n
    \n 渲染组件 ${h}\n
    \n ${h===H?`\n
    \n 渲染引擎 ${c}\n
    \n `:""}\n
    \n 网络请求组件 ${f}\n
    \n
    \n 视频格式 ${n.encType||"-"}\n
    \n
    \n 视频(宽x高) ${n.width||"-"}x${n.height||"-"}\n
    \n ${e.isPlayer()?`\n
    \n 视频GOP(ms) ${b||"-"}\n
    \n `:""}\n
    \n 音频格式 ${Ft[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 视频录制时间 ${g}\n
    \n
    \n 视频录制大小 ${y}\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.streamBuffer}\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.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()&&E?`\n
    \n Video已渲染帧 ${E.renderedVideoFrames}\n
    \n
    \n Video已丢弃帧 ${E.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()&&xa(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 网速 ${S}\n
    \n
    \n 播放时长(s) ${Xo(i.pTs)}\n
    \n
    \n `;t.$performancePanel.insertAdjacentHTML("beforeend",k)}else t.$performancePanel.innerHTML="",bo(t.$performancePanel,"display","none")})),e.on(yt.togglePerformancePanel,(e=>{bo(t.$performance,"display",e?"none":"flex"),bo(t.$performanceActive,"display",e?"flex":"none")})),e.on(yt.faceDetectActive,(e=>{bo(t.$faceDetect,"display",e?"none":"flex"),bo(t.$faceDetectActive,"display",e?"flex":"none")})),e.on(yt.objectDetectActive,(e=>{bo(t.$objectDetect,"display",e?"none":"flex"),bo(t.$objectDetectActive,"display",e?"flex":"none")})),e.on(yt.occlusionDetectActive,(e=>{bo(t.$occlusionDetect,"display",e?"none":"flex"),bo(t.$occlusionDetectActive,"display",e?"flex":"none")}))};function Cc(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===i&&s.firstChild?s.insertBefore(r,s.firstChild):s.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}Cc('@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@-webkit-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}}@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}}.jb-pro-container video::-webkit-media-controls{display:none!important}.jb-pro-container .jb-pro-icon{cursor:pointer;width:16px;height:16px;display:inline-block}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-ptz-controls.show-vertical{right:43px}.jb-pro-container .jb-pro-ptz-controls.show-vertical .jb-pro-ptz-btns{left:0;top:156px}.jb-pro-container .jb-pro-ptz-controls.show-level{right:163px}.jb-pro-container .jb-pro-ptz-controls.show-level .jb-pro-ptz-btns{min-height:156px;left:144px;top:0;display:flex;flex-direction:column;justify-content:center}.jb-pro-container .jb-pro-ptz-controls.jb-pro-ptz-controls-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-up{transform:rotate(-90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left{transform:rotate(180deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-down{transform:rotate(90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-up{transform:rotate(-135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-up{transform:rotate(-45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-down{transform:rotate(135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-down{transform:rotate(45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-control{position:absolute;left:53px;top:53px;width:50px;height:50px;background:#fff;border-radius:50%;transition:left .3s,top .3s}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left{left:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-up{top:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right{left:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-down{top:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-up{top:39px;left:39px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-down{left:39px;top:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-up{top:39px;left:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-down{top:67px;left:67px}.jb-pro-container .jb-pro-ptz-icon{position:relative}.jb-pro-container .jb-pro-ptz-icon:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-btns{display:block;position:absolute;left:0;top:156px;width:156px;box-sizing:border-box;padding:0 30px}.jb-pro-container .jb-pro-ptz-btns .jb-pro-ptz-btn{display:flex;justify-content:space-between}.jb-pro-container .jb-pro-ptz-expand .jb-pro-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%}.jb-pro-container .jb-pro-ptz-expand:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-narrow .jb-pro-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}.jb-pro-container .jb-pro-ptz-narrow:hover .jb-pro-ptz-narrow-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAJ1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v7X19ckk9ihAAAACnRSTlMA9+NCAsuKJsRiPv/2GwAAAJlJREFUGNNjYAAC5gxFoTYDBijw1FoFBIumQHjsUavAYGkBmGu0CgqUwRqlYNyFIO2Fq+BAnIGBJQrBXerAwLkKCUxgYELmKjBYIXMXM2Qhc5cxdCFzVzBoIXMXMYAcsRsMdgEdgs4FKT4DBqdAitGMQrMIzRkojlRB9wKaB9G8z+CMGjgshjCuMCjoWNxRAxYt2KGRYgJiAQAnZcjElaB/xwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-aperture-far .jb-pro-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}.jb-pro-container .jb-pro-ptz-aperture-far:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-aperture-near .jb-pro-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}.jb-pro-container .jb-pro-ptz-aperture-near:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-focus-far .jb-pro-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}.jb-pro-container .jb-pro-ptz-focus-far:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-focus-near .jb-pro-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}.jb-pro-container .jb-pro-ptz-focus-near:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-cruise-play .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJWSURBVHgBtZe/b9pAFMefbSYWMjCjdOtmYEYqXVC3umMlBFRiT7qxkexITcdKSDUSYna2iqX+E/DG6LCQgcETUiR+5Pv8I3Kc+McF5ysZ3x2++9x79/zuLFEG9Xq9s/1+r8my/AnVJq4z/2LZfB0Oh1tFUQxd1+208aQ0GAa7kCTpMgRJk4kJXk+nU5NEoe12W8PM/wrAotIx2Z+w3MkE7XQ6Q3S4otNlY5zPUZdL7wiMBUsRIK/fDeWvhQ92XS0HrQia83cCsqoIyMug8gQ9Ho/DpF7FYpEajQa9VTBoyIZxWeEfv6IndSqVSjQYDKhcLtNqtaLtdkuigmGSZVn/XKiqqr9wqyZ1YEtbrRZVKhX3zvX1ei0Eh7Ufa7Xan8C9VRIUg9lyQZfzO19VOOugkBpAgaXRtnq97oLZ5ZvNJm0YQkBZ8m63E7YyKl5ntrrf77vlJCF/qzLlKLZ4NBqRpmmuF2LBlLOyBFYBchDKlIeWyyWNx+PUtS2Qtx+eJA6i2WzmQtMEA+8KnA+73a6N+jkJil1pGAbN5/PMfRBIZsGn3+LFvSABMYiBgpnJgZEeFHQD4EzQrOsWI4N/nrY2uPg/eeefV8WvAKfALOsWJ3jzA++rcqjhB25OXAd244nA62AjV4LGxWLhIBk/oPiF8pc9mUy+BZVnyQEzueEZUb5yjyvhBiX6BCw2YTGvdZNyAkYPZsprT/rgO/K2vDcdQQH7jes7gPcv/kvqyCcKbEVX6PxVAG76QWPGPZAIDcEZqGECTQyokpe9wp8VfNqzyA2L9M+KRzm19l1i6ZQBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-play:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ5SURBVHgBtZe7buJAFIYPjsVFAok3wBUlYcUDLNvQISUSDVVCA0IUYZ8gmzcgBeIiJLwdFau8QToaQKygovI20CJBARKX/Y/jICPAF3B+yRpjZvzNOWfOzLGLLKrZbAaXy+WdKIq32+1WcrlcQe0vZb1e/8XvQT6ff7fyLpdZh0qlEr+5uXne7XZxMpciCIKMSfzGBBSyCwVMAqxpEXYEhzdeAJYtQ2u12h2aJq4gXadSLpf7aQptNBoPm81GJofEsc5ms9/0zwT9j3K5HHUSyEJ4ovV6vXkSyjHEyvxDXyCAHxGy4hEUq+4JjWQ02O/30xV65rTbQ9lKNEWjEYFAgFKpFMViMbpQnOfFPRSKWxnldrtVaDqdpnA4THalefMDinx8sDOYrY7H45RIJOy6PMibjch3F24AJEmSeo3HY+p2u7RYLEzHwNqogOUcpSvFrk4mk5Zcjry9FZCX1+46qj5dzvEOhUKGfQVyWAyPRCLqojsnEYtohpiSE5rP59TpdEhRFMN+Itw7Q3DpGq1WKxqNRurF90YC75+gnXszulBsVbvdpl6vZwpkwasDNWVw9r3BWlu5Op1OVdBkMrEzTD11RO1exmUJytb0+30aDodkV7DyjT2rBpNrG8zg3WwQW9ZqtS4CatASt/sVhAC/GA3glWk1bqcEo+TPwm0P5QeYySt9jRS9UQe54vF4fqEZkMNCdXivrw4PoJlMZoad5IeDYE7F+0KhcPC+syVotVotIQ5PdLm4CD8CGkJZfAIhzlw3SWRdM+T9q9frLbHnTnUwrfBZfPCiecQG8v3MBHj/HvAm4/P55HMwW1C9tG8a/RmsGH1CnNJ/17UakVMOx7kAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-cruise-pause .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHySURBVHgBxZc7bsJAEIbHdprQJAU1ckln3FM4J4jTIkSMRB9uQDhBlBPECIk2yQ1MSeeIxg0KZQoKKpSCR/4xtsXTNmA7v2ThHe/ut7M7O7sIFEOGYdzO5/OSJEn3KGp4ZDy33ucxP6vVqo86H71ez47qT4iCLZfLJ0EQmhuQKNlo89rtdk06FVqtVjV49kZrr86RicG2TdMcx4LWarUWGjzT5Rqjn7tdsJAi8Ch4C4op1TGl75S8GKwCPOWC6FsRNDKAL5SOZER30HcAhbFFEUFTLBapXC5v2fL5/J7tiOCXofHLlVfikRhRrSqVChUKBXIchyaTiWtrNBruYLjM9jB5jlmup4vFQqMYyuVydKE03vsuVBTFR8pIcFD317REGQlRXBJ5PSl+iktCskgZC57eZA5l/Q/Uy4lTykjYq1++p5EHb1LC9rRdKA7dT8pO64yERG/SmVM8m81OqW7yckr8Ztv2r6Io1whnLawF59fhcLiVY0ejkWsfDAYUJfRfB+snOE85J2KRvym9RGF2Op06vwRbhg9YHgmlIz7E235B2vwC1x1VVdl7jZLT3nVF2q0BsJUg+ODFTDpU0wP3PfC5a2wB+BD7CuqLgws/TQQYn7cyxYfxfdc6ViEUujMAHUlER4cKHfhbATvPjBUG8/UH1xXJDxHoYGQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-pause:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAH/SURBVHgBxVY7bsJAEJ01CAkJKUhUULmiDSnpoKYINyBuQIgi3AA4QZQKIQq4QaChhhuQCxAXSERUSDSIb944axSS+CPA5kn27o7X+2Z2dz6CXKDT6URXq1UqGAw+Hg6HDB4V4qj8rAsh9N1uN9rv971KpTJ2Wk84kW2322csVv1BYr+gEGMo8Foul7uWc6w+NJvNjKIoHXRVOgMg74K8AXLdFWm73a7BujpdDh3rZH8TCw8JLYlPSFutVh7NG10feigUetA0bcEDxZTiDFU0L+QN1M1mc1z7SBoIBGrkcGkSiQQlk8kTWSQS+SP7D3CzJ76c3A/yi61kodOP6XSaYrEYzWYzWi6XhiybzVI8HjfGLLeDNGxoWpohF8C50CXgwMK+r0gNCuQTENnyitQgRT4BQSOlyFvrKsRdCapC/uPuFqR0G1IZExfkH94NSzkHkk+Ap4wNUiTqPvmH74gUDoe7dOYWr9dr13M5sfNxBnjQ7/dXuVwuDGHG7ieOr9Pp9CTGzudzQz6ZTMgJ2FFtMBh8HvMpx0Ro/UEeBQq2slgsatw/uoxMsBp5A64WG+bgxE9LpVIPpUWDrgv7csUE4nEdlWCNPCC0JJXEF5Wg8MchHs11CWpCVvZVkBfckksyrneHVnMEuQRXitiqPBS4lwpEJYmORkc7Qju0IzPxBZ2t+3mW/JtqAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKgSURBVHgBtZe/jtpAEMYH28WJioIa+URDF8MTkAalO6cH4YIiFbk8QXS8QO6oUlCAkGjDtTRHJBoa4nQ0KBZdJApoEAV/Mp9jkAF7bXPcJ5ndtdf725nZWdYxiijDMBKr1SqhKIqKNpdms9mcRxkjFqZTsVjMy7J8x1WdL9WjC6D97Xb73G63m0HjxULAvnI1T+FlMfxBBPeEwoW73Q6we7pcViwWe8+utwKhDFQZ+IOrGr1eAH9ksOkLdSz8Rd5xu1RzBmfdFkvupwz8dmUgBENeYNAZtFQqGVwY9DZSnTVi6+Decrn8h0JYWSgUKJfLHdrL5ZKm0ykNBgOazWbCd9nNt3CzgoZjpUohlEqlKJPJHN3DJHRdp16vR51Ox/ddTiVkw70NlSTp7rRDMpmkWq1G4/HYvmANSpHghXg8To1Gw/M5W1oGVEZD07TvXNy4O8Btw+GQFouFbV06nabRaGRbhbaf8AzvTiYTr8c32Wz2p8KrSuMgJ7x6IEa4AIuivau9tNlsNGm9XqsBY9gxhOvCCi728wa7OCHhRzQAZl2pVGyXRZEoBAoFCDGs1+v2QooiUfpIHE+LBEL+VatVezVfDcp/whYJhAWBVHFvCEFCfz8op6cpORuxJRokajz98tSRae+97OJnUS/RanQLkwNQ4FrzsA2yyU0Gf/br2e12A90LlwYAkS5Pdrm/wRs+/rh1ChAshuV7wTqAQoTAarVat6gorll8YWvzXBXmbdTUcY3/sK/L+4ppmnPeF/9SCGsvAXIsH8+gDthkMFyepyuJgS0GHh3w5NNOzO0zeMHVD/R64BMDP53d93vBORW+0GVnpvmpS0NBXXDDSacwR9K5kxaPok+NUJ8VDlzlQucJvKNj63G2/U3/E78fZqx/rk0w4ggu8jUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAK2SURBVHgBtVa9jtpAEB58/EqArqCBBqehorgTVDQxPVJOiD5QAEJUeYLjniBcgRACKeQJQsQDBBoqkIigookraC1BwT+ZcQBBsNd7Ovgk2LV3vd/M7PyZgBPlclnc7XZPFovFv91uRZPJdL9fktfr9W987udyuRbPWSajDUgm3d3dPSOhBMaQUaAXu93eSKVSCryVtFQqPaBWXznJNMlR8zo3aa1W+7zZbIo4vYd3QBCEQjqdfjEkrVarzyhlAa4EvOt6JpNJ6ZJWKpUnHH7A9VHMZrNfLkjJO9Ecv3Aqwg2A1osevFs4vCQP5SF0Op3g9XrPflar1egzut9vCNVHzPS3j8EkcCAcDkMgELh4PxqNoNvtwmw20/tUXC6XSRyLqqZ7LS80CgaDqiY8IEESiQSIoqi7B53qE40qqVYsolTgdrshEokAeh9IkgRGIDPTPhJYC8SD4eg3k52RQNQi7XQ66txms+kepEUcjUah2Wxqrq9Wq6h5Pp8/4CUzD1osFuqPFwfnIsE1IBKbyDqANIzFYhCPx+EtYPmCGQxAppJlGQaDAVwLaFlBgRtAx7T/SNGNZWCg1WqpoeP3+4EX0+kUJpOJNiEqKWA49HGusA6gwPd4PMCLXq+nu4bpsK+6LVV9YMDlcqnkPKD7JyF1oFD+PSSHV9ZB4/EYQqEQGGE4HEK73dZdR+Ua6nh4gWXtD3AkfCL3+XzHZ4pfyrekIQnHApr2A2oqn4YM1TvDWkr3xbozPVAxJ0KaH1MRFllSvQG3gYztz7FtOct/mLqorZDhulD2BVzWJKW2kTZckVjBnviM8IKUQBtQ40ck/w7vAIUhnvGYz+cvwpHZbGNHkcQMwtXGnICs9YrCF/Q2GHb4e3IJBxLgo44ACsY6afbT4XDUWd09N+kpqOhTDT55Jf9/Z0b4C/UJLQCcLGi1AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIjSURBVHgBtZe9UsJAEMc3l1Q0WvAA2NEp1MyInVbGnoE8AVrSqW+gT2CY4QGwpTEFNcaOEqksKKiYcYYP/xsSJoRwx8f5n7nRu9u73+7lbu8waAc5jnM6m81sIcQlqhcoOZTTsHvAZT6fv5um2XZdd6Caz1DBMNm9YRgPMYhKHhx8brVaHu0LrVQqNjx/2wOWlAtnn9MiT4VWq9VHDHii4zXAPFdJsPGPwK1gIwHk7/dC+sXgAsBjroioFZsmpznCuHKLxeIxqqwirdVqvGmcbaOy2SyVSqW1tuFwGJTRaES7CEGd8TJbXOEo4YkjG8BQ27ZT+7rdLrXbbSUcx4+P3oOIVQ4Wr0Cj0aBMJiO1Q6Q1PvsirFzSkeKVqNfrKjM+8xeCybRMbUcrn88HRSasqs2R5kijisWitB+reiKm0+mhaS5VvMwqCdIs1WYKoJZljUmj+NwqobS8D7Wp1+tJ+5EPvkWYD33SIE4S/X5faoOHgCdC+jsdKc5GnJUUGiNIzwrpbjwh76tOpxMAJ5OJyjTwKp7wP/CnvM06LeFzdPwNd4AFihL+Chom/U86/HmiAr4CGOR4M2r0fX9cKBR+8e816deg2WzeRJW15ABPXvgxRXoVPFfiDWbSAhF7iJiXvUyagMmHmZlmGYK/aXn7HPSNAWui3AH4s9EnG8ibiy94DL6l3W8jL3zvetsMpNCEAw4cKGPCc9r8WeGj/YuBMlikP+yn3EGZYjlWAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAI5SURBVHgBxZZLjtpAEIbLjUFih8QFnBUrJCIOEHOCROIACStALBhOMMwJMlkgBCyYnCDMCUJWrJCQYB+zBwkJFiBe+QvZyEz86IEezSc1dj/w76pyV5dGEnS73cR6vf4SiUQ+HY9HE0MJu5GmaSNcFrvd7hn3vXK5bIU9TwsTw8Oqh8PhzhGRoIf1tSBxX9F2u12FVfVXiL3ksVgs1khWtNVqfcfljm7HgtW5l1Zrbyh4Fo7FYh8LhcLCGRDu2U6nc69YkDG22+0v98DZ0mazaQgh/tLbUUOMHy9E8eH8treDJ8lkkgzDuBibz+c0m81otVqRBAu4+QO7WecerDSDBB3RbDbrOTcej2kwGFAIvNc5dPVTTLHpv9INpNNpyufzBEsC1yF81dOVf8KslCHIEy4SjUYjIxDLDDoGKYAtDrNW13VT7Pf7azOOJ6lUKnAeySLB7jVIIezmMAS9A/igxIIUwns3VBQ+HpFCLMsKnGcjhX0CKLF2MpnQcrkMXIPzuX+KKax9phthtw6Hw7BlVqVSGel25wntqqy02WxOFnLj+xB6/HNTwmdXTqdTGTHmfKA7lhKSxAOCbPr9g90n82X6AcGfTgVxUTngtKlD+J4UAw/2S6VSzulfJAe8SZ3fiNRiQbTgHvgvI0H4Gxb9IAVwTexVmHmmQbiCD1suHy26En7xaDSa86p/A4ttrpuIT3ohpLcTxw/tAWJ9vzUaSWCLm3DXZzS+z7hELFzYjX/i8fiTu9T04x9LgQk+PbvDKQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALxSURBVHgBtVYrrBpBFJ0FFAqBqCIrUXRBk5QaUleewBBIlwSDoW1CUlzz0CSlaJJHA8FgqMBg4CWIKkpRuEfQCDAYAvSeYYfsLgss6fYkk5ndmXvP/c1HYjaQTqdjbrf7PQ0VarLWgBW1Cdput3tutVrdW7qka5OZTEZ1uVwfaBhj9jDf7/ePzWazwe4hVFVVPhwOT3cQnRFLkvS20WjMzRMuCzKFyH7/AxkAg18oQp/ME24LsgENfcwBkJfvQqHQejqd/jr905HJGpnMHIYW3iHGp5AS2df/QabpfiKHfCdCVCN1qh1hv9/PIpEIi0ajLBgMskAgcDZfKBTMYjJVL8+nh7MeS/8ioFiQbDYbtlgseA/lXq+Xt9lsxrrdLkulUmw8Hp/poLB+JC+rkpa7FysiKEokEpyo3+/zBiIrr2EU1kKmWCxariMvsy46IRJWZFBSLpf5GApgvZUSYLlcstFoxMfwHnKQN4Mi+cYdDoe/IGpmslKpxJV0Oh223W7ZLcTjcb6uVqtxLxFayJtkfSga2Sycy+X4YnhlBzAQhGI9euTRqnhAaNjkKA5Unl0yALlD0SC0Au12m/fIvx5nRxsEYV2lUrHMgxmiYMwGwmiE1qzDrSiKSv0r8QMxF2Wdz+fZer3mhXAJCP9gMOCGAiBJJpM8h6jqXq9nWO+hLfGH9ohiVoTFIEbxwFqECMoQInwLy4V3mEMe0SB7YWtMJJzoVK7fLnkgKg65BVBM8Bj5gjHwDORoGNfrdUMu9SDnfl7d+HqAEArFCYNQYoxtAODfJSIBimTWpV2Swxt8PLwiRAgjGrwXuEVGmBNXw6MxP5KXMWYTCKs4U+2COH6g59tCu6uG7A7AYxteCcypVU+EmgVZbcJxkO4HcmplIEQuMcGOTz8nyT6T7on4Npw0mMBzgDnkqUZWNfyzWujQM/FB79lVQh2xeudbZ0VE36mvipzdRagjjtFtnSBlr9nxuS9uGCidk1HPdFp1xcvsGv4CcbeEIeSIw9MAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAM0SURBVHgBtVa/SyNREJ7dBLVQELU4bdwrtFJOUCxsXEG0Ue4OK6tLKhEb/QsO/4LzChVtvGvE0sPOxtiYJuFyJBBICtOlSSAQCEnIj5tvyC676ybZYPLB4y373ptv5puZt6uQB1xeXup+v/9zs9lc4qHxK621VFAUJYbRaDSeDw4O7rvZUroQBXw+3zcm0ckbMkx8enh4+It6IWQijYlueiByI95g4oxzQXW+OD8/X1JV9e87yACNbbxeXV0dOxcUJxnn6okfx6l/OOHcnr0hhIzsFcg06jNa8obwbErKOfs+CDIhUdUbxrhJiGrknAW8HB4bGyNN02h+fp6mp6dpcnLStj46OkpbW1vOY1q5XJZ8iqTX19dPnYpkZmZGSObm5qharVI+n5cZ5ENDQzKy2SxFIhFaW1ujTCZDqVTKaabA+z4qrdy9uhHB0PLyskSTSCRkVCoV16gRLfYODw/T7e2tOOQE5zKocmRf3Mggzd7eHvEtQnd3dxSNRl3JgGKxaEaE6HEO553gOllXuQ3W3ch2d3fFyMvLS1siKxYXF0XWh4cHOYfzUMgKpE1t3Y026LouhxCVF8DBhYUFcz9m5HF7e9u5VUOV2pp8dnaWpqamPJMBKysrEh2kNRAOh2VG/q14c7XhILzb3993zYMT2IOCcTo4MTEhkqKgrPCx1gGePxgv6vW6EKJYNjc3qVQqSSG0A+RPJpPiKACS1dVVaQ9UdSwWs+33c6n+47ZYchqKx+NCvLOzI80NiWAMEkFyeM75lx5FdFhD4SCXIEJluxRbTLm4uDjmcv3RLgIYgrfILZBOpymXy0m+UImIDLLCATyHQiFbLq1gB/90bHwrcNPAILwGAaREcz8+Pso6CNsRGZDGx0eS8xXqRgh5DYkgIwZuFQPdyGACfwJ+PHGhnHKUOnkEetS4U72Co/uNWdoC3yovUVqBiD1EZW4fGRk5MwkBjjKIBRoAarXa12AwWLARIpdY4McC9RcnR0dHZjPabhosMOkG9S9S2/8MMLDfRKhljawjoYU4wNXby79OgavxJwrEyFlPhBZinasYH+pPPOMaNL4wMJphJZ553Bt/Zp3wHwTYnvHjbDCuAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANOSURBVHgBtVc9TCJBFB52r7jYyCXWnhcbO1aru8RErjGXWBxX2BijGG1svNhJo56VhQU2ViQsgdDQYEFDc5rQ0BDoaMgRGhoKaMhdCHDve+6QZVhgMfglm9mdn/e9v3kz6xEusL+/79c0bcvj8fjpc8V6gCY9VXqK3W73MZFIpN3I80wj03X9il79wh2q/X7fJAXvTdNszkQaDAZXaHF0BrIRcvLKERE/OQ3qYwh/06shXg8vRPl8PlEqlZ4nktoIV8QcgBxwItbfitBOvL6+XioWi2XZp8kXIryaN6FNdpSM8spvthRWUmPaJ25vb4vV1VVRqVSGBCwtLYm1tTUeW1hY4KfVak2hFe+J+B+5+QkfnL2Hh4fI1KAq/OLiQlxeXorl5WWxsbEhNjc3RbvdFrVajVvMkcTlclmk02nRaDTGETfJ1Z+wlTxWLP84zQoEAkwEodlslh+QqZDWY36hUGByp3m9Xu88Ho+HNaokfidCCAIh2kgkMlYQAOtyuZy4vb1lBW9ubnidCioa37klkw0nQrgWgpLJJMfXDUAOBbEO66GAAkOS+tSRk5MTXgjr4FIAMXULrIObz87O1CHv8fHxR03thXAkDhbahezt7TlpzkA8sc7uUngIQIhUgNRr70AWQsu7u7uBEPTBdaqboQTcCIUgXL4DUBzjTrHVDcP4BmVlR6fTYVLg9PSU9yC2CIghEG7HHIC2GluJOGYyGR6DYiDCGEKD/iErNS2sU238QnH9rGqDopDP5zm+EIJ3aL6zs8NEUAKCQSiVwxp4BFaHQqGRwkJoRqPRkEZ7tCjGAAJQHED28PDAVkirsX1kUcAc7FEXWc5c7+iQTltnpyMgHNYgUSSZBL5BhqTBHkVMAZnxKsijMbQ6Vf+/FFe/mFLs6/X6IJZ20t3dXXb34uIihwFuTqVSI3Mt0nPia3LtpVLot461V0FWLiiBZwzMWCx2xOSy5+DgIEya/BRvA1xfvlKxr+JjUBwola/Fy81u7iDCX5JwiJSPHNJm3sQWoTnUp06a57XFIrxW+0dug8guutM8EvEHpxPIJRDDH6qFA2UmrSSrg0SO5HJLjhDdUxue+bLtQG7QqR8ggVvC4beCFHumRMSxVJxEJvEfnFm91YrgD/sAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANwSURBVHgBtZa/SyNBFMffboJaKAS10SZ7hXqFegGbCyjmUPTAH3eHlZWmULG6u/Kqi/9BLEQRIdoKigf2l1Q2ChGtBLmtFAQloPgL1HvfRyZuJhuzBvOFzezOj/eZee/NZAzyoMXFxYjf7+99enqK8GNxlZVtyhiGYXOZ5vo/MzMzW17sGaVgPp/vN2DkTbZpmqs8wfloNJqh10AZZjEs8QpYAfzx8TE6Ozub9AQFkGf7l55dWLbYTmxqamruRehbAl8CG5UEOvTNmWSmekHCVAgIJVgB9eHHD1bJSTPp7NXe3k68Hejg4CBvdF1dHTU0NFBVVRVdXl7S/f09nZ+fl2BS4Pb29geXMXyIe5eXlxM6FMaHh4dpY2ODGhsbybIsamlpyUFQog/geE5PT2l3d5eurq6KgTPc7x22kpGN5T+3Xl1dXdTa2ipGDw8P5bm7uyvoB3hTU5P0t22b9vb2ZFIu+smxjSOmEbfW2tpaAcJgMpkUQ25ACG4+Ojqi7e1tqq6uprGxMRmvi8P1BaXJLyE34MjIiBja2dmhzs5O8iLAMUGMw3h4yCkOobDYs+YHfXAkEpGBWJ1KJMTUqzAObh4cHNSbAisrK0FTrw0Gg5I4GKiEBAmHwwUzV2pubpZJOV0KD0EIkS6TlxxwViALMcvx8fGcEdQhKzs6OvIGYxLIcEwIxuFSvEP19fXSjpzQ5RsdHf3M5XtV8fDwIFDs0f7+frq+vpYtAjAMwu3oA/X09MgqEcf9/X1pQ/wBQhuyPZ1O56/SNOO+oaGhMAM+6rM5Ozuj4+NjiS+M4B2ZGQqFBHRyckLd3d2USqWor6+Pbm5uZAySqa2tjdbX1+VbU2Z6evoX3JumIoIBHA6ATUxMyCl1cXEhQOxD1ON9c3NT9qjufl2K5a+pqdliA4liHWEc7kOiwMXOvYpvwJA02KOILwS3FoGuoTTlWDKMJJUQ4qwfDmoyAwMDkkiYIBIOsS2iJH7k7MW1JPu3VpbUyYWVw91u4oWtcjyjOSi0tLQU54bvVBnh+vKJry82PnKHAydFDI1UATFwTgHzoIgtZvPW4Cxw1VlX0YtZFhjT6wvOXrgBK+ZnjcqXimHMrbHUZXuSV43kCpE3IUTzvPfjr75s61pYWAgx/Ctndy9/WlxaCsKPzZs+xc8Ww9IvwZT+A8hTw5fcMmXrAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-arrow{cursor:pointer;position:absolute;width:0;height:0}.jb-pro-container .jb-pro-ptz-arrow-up{left:71px;top:15px;border:7px solid transparent;border-bottom:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right{top:71px;right:15px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left{left:15px;top:71px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-down{left:71px;bottom:15px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-up{transform:rotate(45deg);left:32px;top:33px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-up{transform:rotate(-45deg);right:32px;top:33px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-down{transform:rotate(45deg);left:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-down{transform:rotate(-45deg);right:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-loading-bg{display:none}.jb-pro-container .jb-pro-loading-bg,.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-play-big{position:absolute;display:none;height:100%;width:100%;z-index:11;background:rgba(0,0,0,.4)}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==")}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-recording .jb-pro-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;-webkit-animation:magentaPulse 1s linear infinite;animation:magentaPulse 1s linear infinite}.jb-pro-container .jb-pro-recording .jb-pro-recording-time{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-recording .jb-pro-recording-stop{height:100%}.jb-pro-container .jb-pro-recording .jb-pro-icon-recordStop{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-zoom-controls .jb-pro-icon{vertical-align:top}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-narrow{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-tips{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-expand,.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-stop2{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jb-pro-container .jb-pro-controls{background-color:#161616;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:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container .jb-pro-controls.jb-pro-controls-small{height:30px;padding-left:8px;padding-right:8px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-controls-item{padding:0 5px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-icon{width:14px;height:14px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-menu-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-quality-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-scale-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-speed-icon-text{font-size:12px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-quality-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-scale-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-speed-menu-item{font-size:12px;text-align:center;width:40px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel-wrap{width:40px}.jb-pro-container .jb-pro-controls .jb-pro-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen-exit,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-microphone-close,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-pause,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-play,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-quality-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record-stop,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-scale-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-screenshot,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-template-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-volume,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom-stop{display:none}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed{padding:0}.jb-pro-container .jb-pro-controls .jb-pro-controls-item-html{position:relative;display:none;justify-content:center}.jb-pro-container .jb-pro-controls .jb-pro-playback-control-time{position:relative;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-icon-mute{z-index:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom{display:flex;justify-content:space-between;height:100%}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-left,.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-right{display:flex;align-items:center}.jb-pro-container.jb-pro-controls-show .jb-pro-controls{opacity:1;visibility:visible}.jb-pro-container.jb-pro-controls-show-auto-hide .jb-pro-controls{opacity:.8;visibility:visible;display:none}.jb-pro-container.jb-pro-hide-cursor *{cursor:none!important}.jb-pro-container .jb-pro-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%;-webkit-animation-name:rotation;animation-name:rotation;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEzMzMzHx8fMzMzMzMzOzs7MzMz4IlKVAAAABnRSTlMA6xIU1hVqIuOVAAAAMUlEQVQ4y2NgGFYgLS3RAEQziQFZoxKjEqMSaBJpEAkgIw1ZQlBQRAEs4QhkDeIMDgAWx1gMHyIL4wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEz///////////////////////+3ygHaAAAABnRSTlMA7OgSFBXMmAA4AAAAM0lEQVQ4y2NgGFYgLS3JAUQzi6WlJY5KjEqMSqBJpEEkgIw0ZAklJSUDsISikpLQIM7gAJjhWp6XcaOxAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAHlBMVEVHcEzGxsbMzMzMzMzLy8vMzMzMzMzNzc3MzMzMzMxEZ/aQAAAACXRSTlMADPKKKeBxlV6neZ4mAAAArUlEQVQ4y2NgGDZgJhpowCURAJeYpIQENJEkCgWRgCeShAGyjfgl2EqwS7BFToZJiLg4ICTEImdOh0pwRM6cDJcIjpw5E6aDFeh8B5gECBCUYAkKCoMbNXNSOlyCgUEQ4apJJmxIEkjOVWFgxi4RgEsikGQJnEYp4pLA6VxUDyJLIAUJcRLIwY7qXKSIQvOHWCQODzKIleBPPjgTHM4kijNR48oGkajiYUMykwMAAfmZhUjBISQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMA8gyMLeRw1x2DBpWGN2QDAAAAt0lEQVQ4y2NgGDbgDBpIwCVRAJc4KIgEZM4EwCU2KSEBHySJCcg29iBJGCBLgHUs24FdYlnNYZiESksDXKJALebMaagES8yZw3CJypgzZ2A6WIHOd4BJgABMgh2XBEtpaBjcqDMHs+ESDFyLEK46aMGGkEB2rgQDJ3aJAFwSUSRL4DQKp+VHcTkXxYMoEkhBQpwEcrCjSCBHFJo/1GIO408MOJMPzgSHM4niTNS4skENqnjYkMzkAEgzyFpeX6L3AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAG1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxi4XDRAAAACHRSTlMAf3WqJmy+7azWNnMAAADNSURBVDjLxZQ9E4IwDIaLfMzCOTDSOz07OjLir5CR0dmJFVHIzzZtnMzbOzcyZHnuaXpJWmO2ji4GhpAzzZeQzw8FKCj1pMHss9OgpwsGOS0YGOcVUMPsfBVkmJoVCBJW0FFB6SFIaMKAlRGDnEiDkuM00lP3SmL6H5QSh+iIr9ZWVWntUV9Z4qWbHAWrhcUYNLC4Wwm3xb1r2mOQYoVn2EKFAVb81KHiQQq6L3vSUoMBUmSzgCKbVeiL3eTp3Odf8H1sxRAZZNZt/Vt8AHcPQbiQQVF+AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzKysrMzMzMzMzMzMzMzMzMzMzMzMzMzMzNzc3MzMz8gU00AAAACnRSTlMAL0jMZKt96hGJsSKv1QAAAJ9JREFUOMvN078KQFAYBfCbJEw2q6SUyWxTnsJT2JTJ6D38Gb6n5PpT6BwbuaNfTnz3fEp9fZwAP7czD0MsGCzBYJcEYsGwBEHQQRB0EII1CMAWdAOzyJUvJ4jyDVyZVHKGpj9guEI2IuhaDFadYnCkIm9I+kPgn8t+kI7kOsT72HcwQnJR9Gofy8DrwwtHK8pLzdeALg5fNb6cdJ1fOjOGYrl5CLFcggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAL0TQf2frEaZYt8E+idL4AAAAnUlEQVQ4y2NgoDdgUcAuzr4Hh4TaGQHsBp3BLsG+BoeE2hnsEkCDsEqADMIqATIImwTYICwSEIPQJFhnBjKInUGSUA2CSPCcOcIwB1ki5xRM4iiDDrKEzQlsEuUF2CVY0jbgkDhjMLQkEkj0IM4gQQ1EHMHOOXMiakRpTiQQtXgTA+7kgzvB4UyiuBM17myAM+Pgzmq4MyfO7EwjAAAEf+BAxqI/agAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-face:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTP///////////////////////////////////////////////w2imYoAAAAMdFJOUwBAgBvfrFmcw4wrbtGliFoAAAD2SURBVDjLY2AYRkAJCAygbEZBQUEBKJvpDBDAODpA9kGYxEGgKphuIaBuhASqyYzESjBu79yIVWIP0NoCLBIsR4WZJY5gkYiZACRqFJAlGMG8EyAmK1hMGdkp7M4gkus4RrCwBIApFwwJmwlgqsYAQ6IAIrEAwygHHEaxngJbfhRDgg0sxHoMM7Z0AmC+RAPsJ4S5NE5gid8VoHg8sgHTDh/PzM60HkzLc44bgKMf3RKuMwoQ+dNIgswJDAycUDPYjhgwMCsjxYcJLA6AMYISUTkBMLsaUCVqEqAcngPEJx+SJJDSLii1HySU2lHyByi1Kwy9LA4AqflRBKNSA88AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTBCT2xKV2hGY2hKW2xGW2xGW2xGW2xKX3BGX3BKW23povfoAAAAKdFJOUwBAgRybs9hZLG6hrV9tAAAA80lEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTgmZiFViFtBaBywSbEuFmcWWYZGIUgASXgrIEoxg3lIQkxUspozsFJZkEMmxBCNY2MD2MqRhSFgpgCkvAwwJBxwSbAk4jGJZAbZ8KYYEO8S5yzFjSysA5kt0s5YKc6guwxK/baB4XDYB045Vi4pCyrMwLa9aYgCOfgc0cY5VEGurViIJMhcAlULNYF9mwMCsjBQfZrA4AMYISkRVBcDsCkCV8CqAcrgWEJ98SJJASrug1L6QUGpHyR+g1K4w9LI4ALk0RHtSETFcAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTHzD63zE6n7H7H3F7H3F633G63zF7H3G7H3F7H3F68TinBIAAAAKdFJOUwBAgR+Z31ipwW4yAjb9AAAA+UlEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTmmZiFViFtBaBywSrMuFmSWWYpGoUgASXgrIEowgHtsKEJMDLKaM7BSWYLCaJRjBwloAploxJKwUwJSXAYYE2KUMVRgSrAFgKhTDKPbFIJJ5OYYEG1iIfRlmbGkVwHyJBlhWCDNrrMASvxageFw6AdOOqKCklrQuTMuzlhiAo98BTZx5FcTarJXIgglApVBr2ZYaMDArI8WHKSwOgDGCElFZBTC7GlAlvBKgHK4FxCcfkiSQ0i4otS8klNpR8gcotSsMvSwOAIs+RIlIrewIAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-occlusion{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusion:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-zoomStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAqUExURUdwTBKV2hGW2xKW2xKW2xKW2xGV3BGW2xGW3BGX2xKW3BKW2xCX2xKW2yDN61kAAAANdFJOUwCAVKxm3T/DmhrxKw97YQBGAAABaklEQVQ4y2NgIA6wGqCLMCqAqV4HdIm9F0Ek22UMM9hiG4AkVzQDA+cmx+YyJJnDlw8wMNQaNpfevbu0QgxJgrN3JQPD3VvhjU57kESnOZqvvXuJgcEXxVFMEkDt1w11gZYwoVgue3d5SzaQSgCydZG1TMkBU8vBuq9guBcqNBNDgj0GQrMEb0CVYEmA2ViANRQZ795tQPZduADciXcVUNSthGu4hGrAJawagBIXsWoAClzGqgEocRWrBqDIrQNQDTPRXZ8A0cB41wBNQgGiQfbubTQJAagGDB0GIA0OsnevbkCTCADiu4J374ahW34JqAEIbiXMRJOAgkvMKJYgJBx6717AKiF4F4eOu+jxgQCXGHBIKPDgkBC8JYCURJDtQHYWN4oEcvpZiyR+C9lZtkgSKKG1CyGOGrxItleixjrcLFBWRAYcMIkG9NQMiY67N7AlcxAQwMwA6SBxM2xZQ3jtVRPsRQ83sg8ACMIUxzzE8wsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-close{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-narrow{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-expand{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABvJJREFUaEPVWWmIXEUQrnqzZseYxGM9QBNF4hrJEDfzqieuAY/gFRXPyMYbzUHwQBQUzx+KeBAJKhrRqEhEQWMU75AYXREPlunu3bjxIDGraIwiuJpFkL26pMK84eXtm3lvZieGFAzsTtf1VVd3V9Ug7OOE+7j/0BAAnZ2d2UmTJl2cyWTaAOBA+TDzgYjYDAB/y4eZ5fNjc3Pze7NmzfqlUYEbFwBr7TUAcAEzXwAA2bROIeKnzrkNALBeKWXTysXx1QXAGHMVANwEACePxzgzjyLi057nrczn81vr0VUTAGOMRPtmRDy7HmOVZBDxL+fcyr6+vgc7OjqGatGdGoC19hZmfrKC8t9LafEWAGzLZDL9g4OD/S0tLYM7d+6cyszTPM+biojy97kAcGoFPV8ODw8vbG9v354WRCoAxpiXAUDyPUrvAcAqIno/rUHhs9aeCQALmflyAJgUlkXEf5xzp6U9G4kAjDHcKMejeqy1xzDz/QBwXYyNViL6ISkwVQEYY74AgLkRJcuJ6M4kxbWsW2sfZua7ozJNTU1HtLW1/VFNV0UAxpjlAHBHWNg590ChUJCINZyKxeLpnud1RhSvmzJlyiWtra2DFS+AuAW5bQDg3cja60QkObvHSGstj588fGVi5heVUktqAqC1Xh+5Kj8nolP2mOchxd3d3ec55z6I2JpPROvj7I9JodIj9UqIebNz7qJCodD3fwAQG8aYhwDgnpC99UQ0Py2ALyMv7DIiWvV/OS921qxZk5k+ffon4fcCEZf4vv9i1I/ddkBrfSUivhpiMkSkanXeWnsFAFwCADNHR0fX1nPwYzJhAxGdkwTgJUQM38l1Rd8Y8yYAXFoytoOIjqo1CFrriQDwCyIeEsh6nndsPp//KayrvANbt25tHhgY+AsA9i8x/JvNZqfmcrn+Wo1bazuZ+fRAjogSH8w4G8YYOYtSOAZ0GxE9EQvAGCMRk8gF9BYRLajVeeFvIIDdrnOpt3zfnxcLwFr7CDPfFdqupfl8/oW9CUBsa63/DKXRz0R0TCUAzzDzDcGic25WoVDYvLcBGGPk/i+X7wMDA/vNmzdvJPCrnJvW2leZ+cpggZknKKWGqwGw1l7IzOcg4swoX/gMyNbH6HnO9/3XkgJkjFkLAOVUzmQyM2bPnr1lDABjjJTE58sCM/cppaanUK4BgJL44taZebtSalqSrDHmpXC1ysynKKU+j9uBj5hZ6nShLiJqT1Jurd3MzLkkvgrrfxPRwUmyxpinAODmSqkdTqE3mPmy0g70K6VakpQXi8X7Pc9bCgBHJvHGrEsjtCxJLlpqDw8PTwt3bGEAzzNzuerLZrMt9bwB4lCjrtHSLbQaEa8NgGaz2cm5XO6fuDPwGADcHjrE7UqprqQIxa03EoC1to+Zjy3ZGZN25R3QWt+IiCtDDt1JRNLU1EyNAqC1PgERvws58DYRSY1VpjKA3t7eaUNDQz+Xtybm1UuLpFEAjDFyRp4N2a1cSsTlLgCkaqyjwBoIQMrnRYH+0dHR/Jw5c3pid6B0YO5GxIdDV1ZdPbC19nLn3GOIOAUA1hLR4rS7F/B1dXUd39TUJEOFQ+U7RNzo+/5ZUT3RfsBHRGloZCgrtIOZlVLqt1odGC+/1noVIsoVHdAiIpJHbTcaU+ZqrR9BxHJRtycnEZVAGmOkfVwXOo9bJk+efGLcdGIMAGvtYcz8FQCUSwlm7lBKvTHeqKaVN8ZsBIAz0qRybKMRc6VKDuZ83/82rRP18mmtH0TE+0LyHxNRUOKMUVuxU7LWlkuLQGpwcHDi3Llz/63XuSQ5Y8zjAHBrwMfM/cy8oFAoxFWzu9iSRou/xtQ5bUT0dZIzta5rrZ+XyUNYDhFv931/RTVdVQF0d3e3OufKtXdI0QIiklH6uKmnp+co59zycC8SOrzfAEBHtdRNbLaLxeIMz/O+H3N9Ia52zq1QSvXWg6Knp+f4kZGRRZ7nXc/Mh1fSgYhVQSQCEMW9vb1HDA0NyS0UHS/KLF+2+NNqeRp2rlgs5jOZjDgtL+wBEcdlEv0oIi4O9xnVQKQCIEZkTuN53uqgZ4iJmMxrPkTEbXL4AECaceldj3POtSLicVKayP9x0UZEGSY/6vv+V9ZaaVHXpAGRGkBgtFgsnpXJZK6Ly9l6Uqkkcy8RlUsY+S4tiJoBBE5qrU9CxKvlZ1YA2G3UkRJIr4wxnXPvKKXGnLG0IOoGEHZSnn5EvIiZTwKAowEgrh39U2orRJRDLxOJz9IAjdsJAHiGiORn3sb8Uh91ZNOmTQeMjIwcjYgHIeJvEyZM2JHL5Wr6+TSsMwoCEVf4vr+re2zIDqSJ5Hh5BAQzS9R/IiJpf3fRPgOg4jsx3sjsbfn/AH37LF5g3/BiAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-menu-icon-text,.jb-pro-container .jb-pro-quality-icon-text,.jb-pro-container .jb-pro-scale-icon-text,.jb-pro-container .jb-pro-speed-icon-text{font-size:14px;min-width:30px;height:20px;line-height:20px;cursor:pointer;text-align:center}.jb-pro-container .jb-pro-speed{box-sizing:border-box;text-align:center;font-size:14px;color:#fff;width:90px}.jb-pro-container .jb-pro-menu-list,.jb-pro-container .jb-pro-quality-menu-list,.jb-pro-container .jb-pro-scale-menu-list,.jb-pro-container .jb-pro-speed-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;overflow:hidden;width:-webkit-max-content;width:-moz-max-content;width:max-content}.jb-pro-container .jb-pro-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-speed-menu-shown{visibility:visible;opacity:1}.jb-pro-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}.jb-pro-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container .jb-pro-quality-menu{padding:8px 0}.jb-pro-container .jb-pro-menu-item,.jb-pro-container .jb-pro-quality-menu-item,.jb-pro-container .jb-pro-scale-menu-item,.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-menu-item:hover,.jb-pro-container .jb-pro-quality-menu-item:hover,.jb-pro-container .jb-pro-scale-menu-item:hover,.jb-pro-container .jb-pro-speed-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-menu-item:focus,.jb-pro-container .jb-pro-quality-menu-item:focus,.jb-pro-container .jb-pro-scale-menu-item:focus,.jb-pro-container .jb-pro-speed-menu-item:focus{outline:none}.jb-pro-container .jb-pro-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-speed-menu-item-active{color:#2298fc}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-volume-panel-wrap.jb-pro-volume-panel-wrap-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jb-pro-container .jb-pro-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jb-pro-container .jb-pro-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:before{bottom:-54px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-volume-panel-handle:after,.jb-pro-container .jb-pro-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-controls,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-controls{width:100vh}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-play-big:after,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading{flex-direction:row}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading-text,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading-text{transform:rotate(270deg)}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-contextmenus .jb-pro-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)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu a{color:#fff;text-decoration:none}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span{display:inline-block;padding:0 7px}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span.art-current,.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span:hover{color:var(--theme)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:hover{background-color:hsla(0,0%,100%,.1)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:last-child{border-bottom:none}.jb-pro-container.jb-pro-contextmenus-show .jb-pro-contextmenus{display:flex}.jb-pro-container .jb-pro-extend-dom{position:relative;width:100%;height:100%;display:none}.jb-pro-container-playback .jb-pro-controls{height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center{flex:1;display:flex;box-sizing:border-box;justify-content:space-between;font-size:12px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time{box-sizing:border-box;flex:1;position:relative;height:100%}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-inner{width:300px;height:100%;overflow-y:hidden;overflow-x:auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-current-time{position:absolute;left:0;top:0;height:15px;width:1px;background-color:red;text-align:center;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll{position:relative;width:1440px;margin:0 auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-hour{width:1440px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.half-hour{width:2880px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.ten-min{width:8640px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.five-min{width:17280px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-min{width:86400px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-list{position:relative;background-color:#ccc;height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-day{height:100%;overflow:hidden}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-one-wrap{height:8px;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-wrap{height:25px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-btns{display:flex;align-items:center}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one{float:left;width:1px;height:8px;margin:0;cursor:default;position:relative;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.active,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.active{background-color:orange;cursor:pointer}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.start,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.start{background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one:hover .jb-pro-playback-time-title-tips,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one:hover .jb-pro-playback-time-title-tips{visibility:visible;opacity:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips.jb-pro-playback-time-title-tips-left{transform:translateX(-100%)}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips .jb-pro-playback-time-title{display:inline-block;padding:2px 5px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child{border-left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child .jb-pro-playback-time-hour-text{left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:after,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:after{content:"";position:absolute;left:0;top:-8px;width:1px;height:14px;background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-text{position:absolute;left:-13px}.jb-pro-container-playback .jb-pro-playback-expand.disabled .jb-pro-icon-expand,.jb-pro-container-playback .jb-pro-playback-narrow.disabled .jb-pro-icon-narrow{cursor:no-drop}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback .jb-pro-control-progress-simple:hover{top:0;align-items:flex-start}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner{height:100%}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner .jb-pro-progress-indicator{transform:scale(1);visibility:visible}.jb-pro-container-playback .jb-pro-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:all .2s ease;background:hsla(0,0%,100%,.5)}.jb-pro-container-playback .jb-pro-progress-hover{display:none;width:0}.jb-pro-container-playback .jb-pro-progress-played{position:absolute;left:0;top:0;right:0;bottom:0;height:100%;width:0;background-color:orange}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback .jb-pro-progress-indicator .jb-pro-icon{width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container-playback .jb-pro-progress-indicator:hover{transform:scale(1.2)!important}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback.jb-pro-fullscreen-web .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-playback-time-inner{overflow-y:auto}.jb-pro-zoom-control{cursor:-webkit-grab;cursor:grab}.jb-pro-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}.jb-pro-performance-panel .jb-pro-performance-item{display:flex;align-items:center;margin-top:3px;color:#fff}.jb-pro-performance-panel .jb-pro-performance-item-block{height:10px}.jb-pro-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;z-index:10;display:none}.jb-pro-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%}.jb-pro-tips-message .jb-pro-tips-message-close{position:absolute;z-index:99999;right:0;top:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.jb-pro-tips-message .jb-pro-tips-message-close .jb-pro-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%}.jb-pro-tips-message .jb-pro-tips-message-content{overflow:auto;padding:35px;box-sizing:border-box;width:100%;height:100%;z-index:99999}.jb-pro-tips-message .jb-pro-tips-message-content .jb-pro-tips-message-content-item{font-size:14px;color:#fff;text-align:center;line-height:1.5}');class xc{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("jb-pro-controls-show-auto-hide"):e.$container.classList.add("jb-pro-controls-show");const i=e._opt,s=i.operateBtns,r=`\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
    ${cc.narrow}
    \n
    ${cc.expand}
    \n
    \n `:""}\n
    \n `;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
    `:""}\n
    \n \n
    \n ${i.loadingIcon?`\n
    \n ${cc.loading}\n
    ${i.loadingText}
    \n
    \n `:""}\n ${i.hasControl&&s.play?'
    ':""}\n ${i.hasControl&&s.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 ${i.ptzCruiseShow?'\n
    \n
    \n \n \n 巡航开\n \n
    \n
    \n \n \n 巡航关\n \n
    \n
    \n ':""}\n ${i.ptzFogShow?'\n
    \n
    \n \n \n 透雾开\n \n
    \n
    \n \n \n 透雾关\n \n
    \n
    \n ':""}\n\n ${i.ptzWiperShow?'\n
    \n
    \n \n \n 雨刷开\n \n
    \n
    \n \n \n 雨刷关\n \n
    \n
    \n ':""}\n
    \n
    \n `:""}\n ${i.hasVideo?`\n
    \n
    ${cc.narrow}
    \n
    电子放大
    \n
    ${cc.expand}
    \n
    ${cc.zoomStop}
    \n
    \n
    \n
    \n
    00:00:00
    \n
    ${cc.recordStop}
    \n
    \n `:""}\n\n ${i.hasControl?`\n
    \n
    \n
    \n ${i.showBandwidth?'
    ':""}\n
    \n
    ${i.controlHtml}
    \n
    \n ${i.playType===w&&i.playbackConfig.showControl&&i.playbackConfig.controlType===X.normal?r:""}\n ${i.playType===w&&i.playbackConfig.showControl&&i.playbackConfig.controlType===X.simple?'\n
    \n
    \n
    \n
    \n
    \n
    00:00
    \n
    \n
    \n ':""}\n
    \n ${i.playType===w&&i.playbackConfig.showRateBtn?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.close?`
    ${cc.close}
    `:""}\n ${s.logSave?`
    ${cc.logSave}
    `:""}\n ${s.performance?`
    ${cc.performance}
    ${cc.performanceActive}
    `:""}\n ${s.aiFace?`
    ${cc.face}
    ${cc.faceActive}
    `:""}\n ${s.aiObject?`
    ${cc.object}
    ${cc.objectActive}
    `:""}\n ${s.aiOcclusion?`
    ${cc.occlusion}
    ${cc.occlusionActive}
    `:""}\n ${s.quality?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.scale?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.audio?`\n
    \n
    \n ${cc.audio}\n ${cc.mute}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `:""}\n ${s.play?`
    ${cc.play}
    ${cc.pause}
    `:""}\n ${s.screenshot?`
    ${cc.screenshot}
    `:""}\n ${s.record?`
    ${cc.record}
    ${cc.recordStop}
    `:""}\n ${s.ptz?`
    ${cc.ptz}
    ${cc.ptzActive}
    `:""}\n ${s.zoom?`
    ${cc.zoom}
    ${cc.zoomStop}
    `:""}\n ${s.fullscreen?`
    ${cc.fullscreen}
    ${cc.fullscreenExit}
    `:""}\n
    \n
    \n
    \n `:""}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jb-pro-poster"),configurable:!0}),Object.defineProperty(t,"$loadingBg",{value:e.$container.querySelector(".jb-pro-loading-bg"),configurable:!0}),Object.defineProperty(t,"$loadingBgImage",{value:e.$container.querySelector(".jb-pro-loading-bg-image"),configurable:!0}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jb-pro-loading"),configurable:!0}),Object.defineProperty(t,"$loadingText",{value:e.$container.querySelector(".jb-pro-loading-text"),configurable:!0}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jb-pro-play"),configurable:!0}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jb-pro-play-big"),configurable:!0}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jb-pro-recording"),configurable:!0}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jb-pro-recording-time"),configurable:!0}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jb-pro-recording-stop"),configurable:!0}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jb-pro-pause"),configurable:!0}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jb-pro-controls"),configurable:!0}),Object.defineProperty(t,"$controlsInner",{value:e.$container.querySelector(".jb-pro-controls-bottom"),configurable:!0}),Object.defineProperty(t,"$controlsLeft",{value:e.$container.querySelector(".jb-pro-controls-left"),configurable:!0}),Object.defineProperty(t,"$controlsRight",{value:e.$container.querySelector(".jb-pro-controls-right"),configurable:!0}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jb-pro-volume"),configurable:!0}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jb-pro-volume-panel-wrap"),configurable:!0}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jb-pro-volume-panel-text"),configurable:!0}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jb-pro-volume-panel"),configurable:!0}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jb-pro-volume-panel-handle"),configurable:!0}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jb-pro-icon-audio"),configurable:!0}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jb-pro-icon-mute"),configurable:!0}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jb-pro-fullscreen"),configurable:!0}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jb-pro-fullscreen-exit"),configurable:!0}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jb-pro-record"),configurable:!0}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jb-pro-record-stop"),configurable:!0}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jb-pro-screenshot"),configurable:!0}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jb-pro-speed"),configurable:!0}),Object.defineProperty(t,"$controlHtml",{value:e.$container.querySelector(".jb-pro-controls-item-html"),configurable:!0}),Object.defineProperty(t,"$playbackTime",{value:e.$container.querySelector(".jb-pro-controls-playback-time"),configurable:!0}),Object.defineProperty(t,"$playbackTimeInner",{value:e.$container.querySelector(".jb-pro-controls-playback-time-inner"),configurable:!0}),Object.defineProperty(t,"$playbackTimeScroll",{value:e.$container.querySelector(".jb-pro-controls-playback-time-scroll"),configurable:!0}),Object.defineProperty(t,"$playbackTimeList",{value:e.$container.querySelector(".jb-pro-controls-playback-time-list"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListOne",{value:e.$container.querySelector(".jb-pro-playback-time-one-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListSecond",{value:e.$container.querySelector(".jb-pro-playback-time-second-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTime",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTimeText",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time-text"),configurable:!0}),Object.defineProperty(t,"$controlsPlaybackBtns",{value:e.$container.querySelector(".jb-pro-controls-playback-btns"),configurable:!0}),Object.defineProperty(t,"$playbackNarrow",{value:e.$container.querySelector(".jb-pro-playback-narrow"),configurable:!0}),Object.defineProperty(t,"$playbackExpand",{value:e.$container.querySelector(".jb-pro-playback-expand"),configurable:!0}),Object.defineProperty(t,"$ptz",{value:e.$container.querySelector(".jb-pro-ptz"),configurable:!0}),Object.defineProperty(t,"$ptzActive",{value:e.$container.querySelector(".jb-pro-ptz-active"),configurable:!0}),Object.defineProperty(t,"$ptzControl",{value:e.$container.querySelector(".jb-pro-ptz-controls"),configurable:!0}),Object.defineProperty(t,"$ptzBgActive",{value:e.$container.querySelector(".jb-pro-ptz-bg-active"),configurable:!0}),Object.defineProperty(t,"$ptzControlCircular",{value:e.$container.querySelector(".jb-pro-ptz-control"),configurable:!0}),Object.defineProperty(t,"$ptzArrows",{value:e.$container.querySelectorAll(".jb-pro-ptz-arrow"),configurable:!0}),Object.defineProperty(t,"$ptzExpand",{value:e.$container.querySelector(".jb-pro-ptz-expand"),configurable:!0}),Object.defineProperty(t,"$ptzNarrow",{value:e.$container.querySelector(".jb-pro-ptz-narrow"),configurable:!0}),Object.defineProperty(t,"$ptzApertureFar",{value:e.$container.querySelector(".jb-pro-ptz-aperture-far"),configurable:!0}),Object.defineProperty(t,"$ptzApertureNear",{value:e.$container.querySelector(".jb-pro-ptz-aperture-near"),configurable:!0}),Object.defineProperty(t,"$ptzFocusFar",{value:e.$container.querySelector(".jb-pro-ptz-focus-far"),configurable:!0}),Object.defineProperty(t,"$ptzFocusNear",{value:e.$container.querySelector(".jb-pro-ptz-focus-near"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePlay",{value:e.$container.querySelector(".jb-pro-ptz-cruise-play"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePause",{value:e.$container.querySelector(".jb-pro-ptz-cruise-pause"),configurable:!0}),Object.defineProperty(t,"$ptzFogOpen",{value:e.$container.querySelector(".jb-pro-ptz-fog-open"),configurable:!0}),Object.defineProperty(t,"$ptzFogClose",{value:e.$container.querySelector(".jb-pro-ptz-fog-close"),configurable:!0}),Object.defineProperty(t,"$ptzWiperOpen",{value:e.$container.querySelector(".jb-pro-ptz-wiper-open"),configurable:!0}),Object.defineProperty(t,"$ptzWiperClose",{value:e.$container.querySelector(".jb-pro-ptz-wiper-close"),configurable:!0}),Object.defineProperty(t,"$qualityText",{value:e.$container.querySelector(".jb-pro-quality-icon-text"),configurable:!0}),Object.defineProperty(t,"$qualityMenu",{value:e.$container.querySelector(".jb-pro-quality-menu"),configurable:!0}),Object.defineProperty(t,"$qualityMenuList",{value:e.$container.querySelector(".jb-pro-quality-menu-list"),configurable:!0}),Object.defineProperty(t,"$scaleText",{value:e.$container.querySelector(".jb-pro-scale-icon-text"),configurable:!0}),Object.defineProperty(t,"$scaleMenu",{value:e.$container.querySelector(".jb-pro-scale-menu"),configurable:!0}),Object.defineProperty(t,"$scaleMenuList",{value:e.$container.querySelector(".jb-pro-scale-menu-list"),configurable:!0}),Object.defineProperty(t,"$zoom",{value:e.$container.querySelector(".jb-pro-zoom"),configurable:!0}),Object.defineProperty(t,"$zoomStop",{value:e.$container.querySelector(".jb-pro-zoom-stop"),configurable:!0}),Object.defineProperty(t,"$zoomNarrow",{value:e.$container.querySelector(".jb-pro-zoom-narrow"),configurable:!0}),Object.defineProperty(t,"$zoomExpand",{value:e.$container.querySelector(".jb-pro-zoom-expand"),configurable:!0}),Object.defineProperty(t,"$zoomStop2",{value:e.$container.querySelector(".jb-pro-zoom-stop2"),configurable:!0}),Object.defineProperty(t,"$close",{value:e.$container.querySelector(".jb-pro-close"),configurable:!0}),Object.defineProperty(t,"$zoomControls",{value:e.$container.querySelector(".jb-pro-zoom-controls"),configurable:!0}),Object.defineProperty(t,"$performancePanel",{value:e.$container.querySelector(".jb-pro-performance-panel"),configurable:!0}),Object.defineProperty(t,"$performance",{value:e.$container.querySelector(".jb-pro-performance"),configurable:!0}),Object.defineProperty(t,"$performanceActive",{value:e.$container.querySelector(".jb-pro-performance-active"),configurable:!0}),Object.defineProperty(t,"$faceDetect",{value:e.$container.querySelector(".jb-pro-face"),configurable:!0}),Object.defineProperty(t,"$faceDetectActive",{value:e.$container.querySelector(".jb-pro-face-active"),configurable:!0}),Object.defineProperty(t,"$objectDetect",{value:e.$container.querySelector(".jb-pro-object"),configurable:!0}),Object.defineProperty(t,"$objectDetectActive",{value:e.$container.querySelector(".jb-pro-object-active"),configurable:!0}),Object.defineProperty(t,"$occlusionDetect",{value:e.$container.querySelector(".jb-pro-occlusion"),configurable:!0}),Object.defineProperty(t,"$occlusionDetectActive",{value:e.$container.querySelector(".jb-pro-occlusion-active"),configurable:!0}),Object.defineProperty(t,"$contextmenus",{value:e.$container.querySelector(".jb-pro-contextmenus"),configurable:!0}),Object.defineProperty(t,"$speedText",{value:e.$container.querySelector(".jb-pro-speed-icon-text"),configurable:!0}),Object.defineProperty(t,"$speedMenu",{value:e.$container.querySelector(".jb-pro-speed-menu"),configurable:!0}),Object.defineProperty(t,"$speedMenuList",{value:e.$container.querySelector(".jb-pro-speed-menu-list"),configurable:!0}),Object.defineProperty(t,"$logSave",{value:e.$container.querySelector(".jb-pro-logSave"),configurable:!0}),Object.defineProperty(t,"$playbackProgress",{value:e.$container.querySelector(".jb-pro-control-progress-simple"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTip",{value:e.$container.querySelector(".jb-pro-progress-tip"),configurable:!0}),Object.defineProperty(t,"$playbackProgressHover",{value:e.$container.querySelector(".jb-pro-progress-hover"),configurable:!0}),Object.defineProperty(t,"$playbackProgressPlayed",{value:e.$container.querySelector(".jb-pro-progress-played"),configurable:!0}),Object.defineProperty(t,"$playbackProgressIndicator",{value:e.$container.querySelector(".jb-pro-progress-indicator"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTime",{value:e.$container.querySelector(".jb-pro-playback-control-time"),configurable:!0}),Object.defineProperty(t,"$tipsMessage",{value:e.$container.querySelector(".jb-pro-tips-message"),configurable:!0}),Object.defineProperty(t,"$tipsMessageClose",{value:e.$container.querySelector(".jb-pro-tips-message-close"),configurable:!0}),Object.defineProperty(t,"$tipsMessageContent",{value:e.$container.querySelector(".jb-pro-tips-message-content"),configurable:!0})})(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&&t.$controls.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsInnerRect",{get:()=>t.$controlsInner&&t.$controlsInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsLeftRect",{get:()=>t.$controlsLeft&&t.$controlsLeft.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsRightRect",{get:()=>t.$controlsRight&&t.$controlsRight.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackTimeInner",{get:()=>t.$playbackTimeInner&&t.$playbackTimeInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackBtnsRect",{get:()=>t.$controlsPlaybackBtns&&t.$controlsPlaybackBtns.getBoundingClientRect()||{width:0},configurable:!0}),Lc(e,this),((e,t)=>{const{events:{proxy:i},debug:s}=e,r=e._opt,o=r.operateBtns;function a(e){const{bottom:i,height:s}=t.$volumePanel.getBoundingClientRect(),{height:r}=t.$volumeHandle.getBoundingClientRect();return Ao(i-e.y-r/2,0,s-r/2)/(s-r)}function n(i){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1,s&&!e.fullscreen&&e._opt.hasControl&&e._opt.controlAutoHide&&(t.isFocus?(bo(t.$controls,"display","block"),d()):(h(),bo(t.$controls,"display","none")))}if(ko()?i(window,["click","contextmenu"],(e=>{e.stopPropagation(),n(e)})):i(window,"click",(e=>{e.stopPropagation(),n(e,!0)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),o.play&&(i(t.$pause,"click",(t=>{r.playType===w&&r.playbackConfig.uiUsePlaybackPause?e.playbackPause=!0:ca(o.pauseFn)?o.pauseFn():e.pauseForControl()})),i(t.$play,"click",(t=>{r.playType===w&&e.playbackPause?e.playbackPause=!1:ca(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()})).catch((e=>{}))}))),i(t.$playBig,"click",(i=>{r.playType===w&&e.playbackPause?e.playbackPause=!1:t.isInitPlayer?e.emit(yt.clickInitPlayer):ca(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))})),o.screenshot&&i(t.$screenshot,"click",(t=>{t.stopPropagation(),ca(o.screenshotFn)?o.screenshotFn():e.video.screenshot()})),o.audio&&(ko()&&(i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jb-pro-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jb-pro-volume-panel-wrap-show")})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=a(t)})),i(t.$volumeHandle,"mousedown",(e=>{e.stopPropagation(),t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=a(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)}))),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),bo(t.$volumeOn,"display","none"),bo(t.$volumeOff,"display","block");const s=e.volume;e.volume=0,e._lastVolume=ko()?s:1})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),bo(t.$volumeOn,"display","block"),bo(t.$volumeOff,"display","none"),e.volume=ko()?e.lastVolume||.5:1}))),o.record&&(i(t.$record,"click",(t=>{t.stopPropagation(),ca(o.recordFn)?o.recordFn():e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),ca(o.recordStopFn)?o.recordStopFn():e.recording=!1}))),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),ca(o.recordStopFn)?o.recordStopFn():e.recording=!1})),o.fullscreen&&(i(t.$fullscreen,"click",(t=>{t.stopPropagation(),ca(o.fullscreenFn)?o.fullscreenFn():e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),ca(o.fullscreenExitFn)?o.fullscreenExitFn():e.fullscreen=!1}))),o.ptz){i(t.$ptz,"click",(e=>{e.stopPropagation(),bo(t.$ptzActive,"display","flex"),bo(t.$ptz,"display","none"),t.$ptzControl.classList.add("jb-pro-ptz-controls-show")})),i(t.$ptzActive,"click",(e=>{e.stopPropagation(),bo(t.$ptz,"display","flex"),bo(t.$ptzActive,"display","none"),t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")}));const c=Ga();if(t.$ptzArrows.forEach((s=>{if(r.ptzClickType===Y)i(s,"click",(i=>{i.stopPropagation();const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(yt.ptz,Pa(s)),setTimeout((()=>{t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),Ni.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(yt.ptz,ji)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let r=!1;i(s,c.down,(i=>{i.stopPropagation(),r=!0;const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(yt.ptz,Pa(s))}));const o=()=>{r=!1,t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),Ni.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(yt.ptz,ji)};i(s,c.up,(e=>{e.stopPropagation(),r&&o()})),i(window,c.up,(e=>{e.stopPropagation(),r&&o()}))}})),r.ptzZoomShow)if(r.ptzClickType===Y)i(t.$ptzExpand,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,Wi),setTimeout((()=>{e.emit(yt.ptz,ji)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzNarrow,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,zi),setTimeout((()=>{e.emit(yt.ptz,ji)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let u=!1,p=!1;i(t.$ptzExpand,c.down,(t=>{t.stopPropagation(),u=!0,e.emit(yt.ptz,Wi)})),i(t.$ptzNarrow,c.down,(t=>{t.stopPropagation(),p=!0,e.emit(yt.ptz,zi)}));const f=()=>{u=!1,p=!1,e.emit(yt.ptz,ji)};i(t.$ptzExpand,c.up,(e=>{e.stopPropagation(),u&&f()})),i(t.$ptzNarrow,c.up,(e=>{e.stopPropagation(),p&&f()})),i(window,c.up,(e=>{e.stopPropagation(),(u||p)&&f()}))}if(r.ptzApertureShow)if(r.ptzClickType===Y)i(t.$ptzApertureFar,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,$i),setTimeout((()=>{e.emit(yt.ptz,Gi)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzApertureNear,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,Vi),setTimeout((()=>{e.emit(yt.ptz,Gi)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let m=!1,g=!1;i(t.$ptzApertureFar,c.down,(t=>{t.stopPropagation(),m=!0,e.emit(yt.ptz,$i)})),i(t.$ptzApertureNear,c.down,(t=>{t.stopPropagation(),g=!0,e.emit(yt.ptz,Vi)}));const y=()=>{m=!1,g=!1,e.emit(yt.ptz,Gi)};i(t.$ptzApertureFar,c.up,(e=>{e.stopPropagation(),m&&y()})),i(t.$ptzApertureNear,c.up,(e=>{e.stopPropagation(),g&&y()})),i(window,c.up,(e=>{e.stopPropagation(),(m||g)&&y()}))}if(r.ptzFocusShow)if(r.ptzClickType===Y)i(t.$ptzFocusFar,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,Hi),setTimeout((()=>{e.emit(yt.ptz,Gi)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzFocusNear,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,Ji),setTimeout((()=>{e.emit(yt.ptz,Gi)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let A=!1,b=!1;i(t.$ptzFocusFar,c.down,(t=>{t.stopPropagation(),A=!0,e.emit(yt.ptz,Hi)})),i(t.$ptzFocusNear,c.down,(t=>{t.stopPropagation(),b=!0,e.emit(yt.ptz,Ji)}));const v=()=>{A=!1,b=!1,e.emit(yt.ptz,Gi)};i(t.$ptzFocusFar,c.up,(e=>{e.stopPropagation(),A&&v()})),i(t.$ptzFocusNear,c.up,(e=>{e.stopPropagation(),b&&v()})),i(window,c.up,(e=>{e.stopPropagation(),(A||b)&&v()}))}if(r.ptzCruiseShow&&(i(t.$ptzCruisePlay,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,qi)})),i(t.$ptzCruisePause,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,Ki)}))),r.ptzFogShow&&(i(t.$ptzFogOpen,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,Yi)})),i(t.$ptzFogClose,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,Qi)}))),r.ptzWiperShow&&(i(t.$ptzWiperOpen,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,Xi)})),i(t.$ptzWiperClose,"click",(t=>{t.stopPropagation(),e.emit(yt.ptz,Zi)}))),r.ptzSupportDraggable){function _(){t.isPtzControlDroging&&(t.isPtzControlDroging=!1,t.$ptzControl.style.cursor="grab",t.tempPtzPosition={x:0,y:0})}t.isPtzControlDroging=!1,t.tempPtzPosition={x:0,y:0},i(t.$ptzControl,c.down,(e=>{e.stopPropagation(),t.isPtzControlDroging=!0,t.$ptzControl.style.cursor="grabbing";const{posX:i,posY:s}=ua(e);t.tempPtzPosition={x:i,y:s}})),i(t.$ptzControl,c.move,(e=>{if(t.isPtzControlDroging){e.stopPropagation();const{posX:i,posY:s}=ua(e),r=t.tempPtzPosition.x-i,o=t.tempPtzPosition.y-s;t.$ptzControl.style.left=t.$ptzControl.offsetLeft-r+"px",t.$ptzControl.style.top=t.$ptzControl.offsetTop-o+"px",t.tempPtzPosition={x:i,y:s}}})),i(t.$ptzControl,c.up,(e=>{e.stopPropagation(),_()})),i(window,c.up,(e=>{e.stopPropagation(),_()}))}}o.performance&&(i(t.$performance,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!0)})),i(t.$performanceActive,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!1)}))),o.logSave&&i(t.$logSave,"click",(t=>{t.stopPropagation(),e.downloadMemoryLog()})),o.aiFace&&(i(t.$faceDetect,"click",(t=>{t.stopPropagation(),e.faceDetect(!0)})),i(t.$faceDetectActive,"click",(t=>{t.stopPropagation(),e.faceDetect(!1)}))),o.aiObject&&(i(t.$objectDetect,"click",(t=>{t.stopPropagation(),e.objectDetect(!0)})),i(t.$objectDetectActive,"click",(t=>{t.stopPropagation(),e.objectDetect(!1)}))),o.aiOcclusion&&(i(t.$occlusionDetect,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!0)})),i(t.$occlusionDetectActive,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!1)})));let l=null;const d=()=>{h(),l=setTimeout((()=>{bo(t.$controls,"display","none")}),1e3*e._opt.controlAutoHideDelayTime)},h=()=>{l&&(clearTimeout(l),l=null)};if(e._opt.hasControl&&e._opt.controlAutoHide&&ko()&&(i(e.$container,"mouseover",(()=>{e.fullscreen||(bo(t.$controls,"display","block"),d())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(bo(t.$controls,"display","block"),d()))})),i(e.$container,"mouseout",(()=>{h(),bo(t.$controls,"display","none")}))),e._opt.playType===w){let S=e._opt.playbackConfig.controlType;e._opt.playbackConfig.showRateBtn&&(i(t.$speedMenu,"mouseover",(()=>{t.$speedMenuList.classList.add("jb-pro-speed-menu-shown")})),i(t.$speedMenu,"mouseout",(()=>{t.$speedMenuList.classList.remove("jb-pro-speed-menu-shown")})),i(t.$speedMenuList,"click",(t=>{const i=da(t);if(i.matches("div.jb-pro-speed-menu-item")){const t=i.dataset;e.emit(yt.playbackPreRateChange,t.speed)}}))),S===X.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=da(t);i.matches("div.jb-pro-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()}))):S===X.simple&&(t.isDroging=!1,i(t.$playbackProgress,"click",(i=>{if(i.target!==t.$playbackProgressIndicator){let s=0,r=0;if(e.isInWebFullscreen())s=i.touches[0].clientY/e.height,r=s*e.playback.totalDuration;else{const o=bc(t,e.playback.totalDuration,i);s=o.percentage,r=o.second}e.playback&&e.playback.seek({time:r})}})),i(t.$playbackProgress,"mousemove",(i=>{bo(t.$playbackProgressTip,"display","block");const{width:s,time:r}=bc(t,e.playback.totalDuration,i);t.$playbackProgressTip.innerHTML=r;const o=t.$playbackProgressTip.clientWidth;s<=o/2?bo(t.$playbackProgressTip,"left",0):s>t.$playbackProgress.clientWidth-o/2?bo(t.$playbackProgressTip,"left",t.$playbackProgress-o+"px"):bo(t.$playbackProgressTip,"left",s-o/2+"px")})),i(t.$playbackProgress,"mouseout",(()=>{bo(t.$playbackProgressTip,"display","none")})),i(t.$playbackProgressIndicator,"mousedown",(e=>{t.isDroging=!0})),i(t.$playbackProgress,"mousemove",(i=>{if(t.isDroging){const{second:s,percentage:r}=bc(t,e.playback.totalDuration,i);e.playback&&e.playback.seek({time:s})}})),i(t.$playbackProgress,"mouseup",(e=>{t.isDroging&&(t.isDroging=!1)})))}o.quality&&(i(t.$qualityMenu,"mouseover",(()=>{t.$qualityMenuList.classList.add("jb-pro-quality-menu-shown")})),i(t.$qualityMenu,"mouseout",(()=>{t.$qualityMenuList.classList.remove("jb-pro-quality-menu-shown")})),i(t.$qualityMenuList,"click",(t=>{const i=da(t);if(i.matches("div.jb-pro-quality-menu-item")){const t=i.dataset;e.streamQuality=t.quality}}))),o.scale&&(i(t.$scaleMenu,"mouseover",(()=>{t.$scaleMenuList.classList.add("jb-pro-scale-menu-shown")})),i(t.$scaleMenu,"mouseout",(()=>{t.$scaleMenuList.classList.remove("jb-pro-scale-menu-shown")})),i(t.$scaleMenuList,"click",(t=>{const i=da(t);if(i.matches("div.jb-pro-scale-menu-item")){const t=i.dataset;e.setScaleMode(t.scale)}}))),o.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})),o.close&&i(t.$close,"click",(t=>{t.stopPropagation(),e.doDestroy()})),i(t.$tipsMessageClose,"click",(e=>{e.stopPropagation(),t.$tipsMessageContent.innerHTML="",bo(t.$tipsMessage,"display","none")}))})(e,this),e._opt.hotKey&&ko()&&((e,t)=>{const{events:{proxy:i}}=e;let s={};function r(e,t){s[e]?s[e].push(t):s[e]=[t]}t.keys=s,r(Di,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(Ri,(()=>{e.volume+=.05})),r(Ii,(()=>{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=s[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.btnIndex=0,this.initLoadingBackground(),oa(e._opt.loadingIconStyle)&&this.initLoadingIconStyle(e._opt.loadingIconStyle),oa(e._opt.ptzPositionConfig)&&this.updatePtzPosition(e._opt.ptzPositionConfig),e._opt.initShowPlayBtn&&(this.isInitPlayer=!0,this.showPlayBtn()),this.updateControlSize(),this.kbpsShow="0 KB/s",this.player.debugLog("Control","init")}destroy(){if(this.$performancePanel){this.$performancePanel.innerHTML="";if(!kc(this.$performancePanel)){const e=this.player.$container.querySelector(".jb-pro-performance-panel");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$performancePanel}if(this.$poster){if(!kc(this.$poster)){const e=this.player.$container.querySelector(".jb-pro-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$poster}if(this.$loading){if(!kc(this.$loading)){const e=this.player.$container.querySelector(".jb-pro-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loading}if(this.$loadingBg){if(!kc(this.$loadingBg)){const e=this.player.$container.querySelector(".jb-pro-loading-bg");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loadingBg}if(this.$controls){if(!kc(this.$controls)){const e=this.player.$container.querySelector(".jb-pro-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$controls}if(this.$playBig){if(!kc(this.$playBig)){const e=this.player.$container.querySelector(".jb-pro-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$playBig}if(this.$recording){if(!kc(this.$recording)){const e=this.player.$container.querySelector(".jb-pro-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$recording}if(this.$ptzControl){if(!kc(this.$ptzControl)){const e=this.player.$container.querySelector(".jb-pro-ptz-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$ptzControl}if(this.$zoomControls){if(!kc(this.$zoomControls)){const e=this.player.$container.querySelector(".jb-pro-zoom-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$zoomControls}if(this.$contextmenus){this.$contextmenus.innerHTML="";if(!kc(this.$contextmenus)){const e=this.player.$container.querySelector(".jb-pro-contextmenus");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$contextmenus}if(this.$tipsMessage){if(!kc(this.$tipsMessage)){const e=this.player.$container.querySelector(".jb-pro-tips-message");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$tipsMessage}if(this.$extendDom){if(!kc(this.$extendDom)){const e=this.player.$container.querySelector(".jb-pro-extend-dom");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$extendDom}try{delete this.$tipsMessageContent,delete this.$tipsMessageClose,delete this.$playbackProgressTime,delete this.$playbackProgressIndicator,delete this.$playbackProgressPlayed,delete this.$playbackProgressHover,delete this.$$playbackProgressTip,delete this.$playbackProgress,delete this.$logSave,delete this.$speedMenuList,delete this.$speedMenu,delete this.$speedText,delete this.$contextmenus,delete this.$occlusionDetectActive,delete this.$occlusionDetect,delete this.$objectDetectActive,delete this.$objectDetect,delete this.$faceDetectActive,delete this.$faceDetect,delete this.$performanceActive,delete this.$performance,delete this.$performancePanel,delete this.$zoomControls,delete this.$close,delete this.$zoomStop2,delete this.$zoomExpand,delete this.$zoomNarrow,delete this.$zoomStop,delete this.$zoom,delete this.$scaleMenuList,delete this.$scaleMenu,delete this.$scaleText,delete this.$qualityMenuList,delete this.$qualityMenu,delete this.$qualityText,delete this.$ptzWiperClose,delete this.$ptzWiperOpen,delete this.$ptzFogClose,delete this.$ptzFogOpen,delete this.$ptzCruisePause,delete this.$ptzCruisePlay,delete this.$ptzFocusNear,delete this.$ptzFocusFar,delete this.$ptzApertureNear,delete this.$ptzApertureFar,delete this.$ptzNarrow,delete this.$ptzExpand,delete this.$ptzArrows,delete this.$ptzControlCircular,delete this.$ptzBgActive,delete this.$ptzControl,delete this.$ptzActive,delete this.$ptz,delete this.$playbackExpand,delete this.$playbackNarrow,delete this.$controlsPlaybackBtns,delete this.$playbackCurrentTimeText,delete this.$playbackCurrentTime,delete this.$playbackTimeListSecond,delete this.$playbackTimeListOne,delete this.$playbackTimeList,delete this.$playbackTimeScroll,delete this.$playbackTimeInner,delete this.$playbackTime,delete this.$controlHtml,delete this.$speed,delete this.$screenshot,delete this.$recordStop,delete this.$record,delete this.$fullscreenExit,delete this.$fullscreen,delete this.$volumeOff,delete this.$volumeOn,delete this.$volumeHandle,delete this.$volumePanel,delete this.$volumePanelText,delete this.$volumePanelWrap,delete this.$volume,delete this.$controlsRight,delete this.$controlsLeft,delete this.$controlsInner,delete this.$controls,delete this.$pause,delete this.$recordingStop,delete this.$recordingTime,delete this.$recording,delete this.$playBig,delete this.$play,delete this.$loadingText,delete this.$loading,delete this.$loadingBgImage,delete this.$loadingBg,delete this.$poster,delete this.$extendDom,delete this.controlsRect,delete this.controlsInnerRect,delete this.controlsLeftRect,delete this.controlsRightRect,delete this.controlsPlaybackTimeInner,delete this.controlsPlaybackBtnsRect}catch(e){}this.keys=null,this.btnIndex=0,this.extendBtnList=[],this.kbpsShow="0 KB/s",this.player.$container&&(this.player.$container.classList.remove("jb-pro-controls-show-auto-hide"),this.player.$container.classList.remove("jb-pro-controls-show")),this.player.debugLog("Control","destroy")}getBtnIndex(){return this.btnIndex++}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,s=t/i,r=e.video.$videoElement.width/e.video.$videoElement.height;if(s>r){const s=(t-i*r)/2;e.$container.style.padding=`0 ${s}px`}else{const s=(i-t/r)/2;e.$container.style.padding=`${s}px 0`}}initLoadingBackground(){const e=this.player;e._opt.loadingBackground&&e._opt.loadingBackgroundWidth&&e._opt.loadingBackgroundHeight&&(e.debugLog("Control","initLoadingBackground()"),"default"===this.player._opt.aspectRatio||To()?e.getRenderType()===H?this._initLoadingBackgroundForCanvas():e.getRenderType()===J&&this._initLoadingBackgroundForVideo():this._initLoadingBackgroundForRatio(),Ec(this.$loadingBg,"display","block"),e._opt.loadingBackground="")}resizeLoadingBackground(){this.$loadingBgImage.src&&this.$loadingBgImage.width>0&&this.$loadingBgImage.height>0&&"none"!==vo(this.$loadingBg,"display",!1)&&("default"===this.player._opt.aspectRatio||To()?this.player.getRenderType()===H?this._initLoadingBackgroundForCanvas():this.player.getRenderType()===J&&this._initLoadingBackgroundForVideo():this._initLoadingBackgroundForRatio())}initLoadingIconStyle(e){const t=this.player.$container.querySelector(".jb-pro-icon-loading");t&&(e.width&&Ec(t,"width",`${e.width}px`),e.height&&Ec(t,"height",`${e.height}px`),e.background&&Ec(t,"backgroundImage",`url("${e.background}")`),!1===e.hasAnimation&&(Ec(t,"animationName","none"),Ec(t,"animationDuration",0),Ec(t,"animationTimingFunction","ease"),Ec(t,"animationIterationCount",1)))}_initLoadingBackgroundForRatio(){const e=this.player._opt.aspectRatio.split(":").map(Number),t=this.player.getShowVideoRect(),i=this.player.getControlHeight(),s=t.width,r=t.height,o=this.player._opt.loadingBackgroundWidth,a=this.player._opt.loadingBackgroundHeight,n=o/a,l=e[0]/e[1];if(this.player._opt.loadingBackground&&(this.$loadingBgImage.src=this.player._opt.loadingBackground),n>l){const e=l*a/o;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${i}px)`,this.$loadingBgImage.style.padding=`0 ${(s-s*e)/2}px`}else{const e=o/l/a;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${i}px)`,this.$loadingBgImage.style.padding=(r-r*e)/2+"px 0"}}_initLoadingBackgroundForCanvas(){const e=this.player,t=e._opt,i=e.getShowVideoRect(),s=i.height,r=i.width,o={width:this.player._opt.loadingBackgroundWidth,height:this.player._opt.loadingBackgroundHeight};let a=o.width,n=o.height;const l=t.rotate;let d=(r-a)/2,h=(s-n)/2;270!==l&&90!==l||(a=o.height,n=o.width);const c=r/a,u=s/n;let p=c>u?u:c;xa(t.isResize)&&c!==u&&(p=c+","+u),t.isFullResize&&(p=c>u?c:u);let f="scale("+p+")";"none"===t.mirrorRotate&&l&&(f+=" rotate("+l+"deg)"),"level"===t.mirrorRotate?f+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(f+=" rotateX(180deg)"),this.$loadingBgImage.width=o.width,this.$loadingBgImage.height=o.height,e._opt.loadingBackground&&(this.$loadingBgImage.src=e._opt.loadingBackground),this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.transform=f,this.$loadingBgImage.style.left=d+"px",this.$loadingBgImage.style.top=h+"px"}_initLoadingBackgroundForVideo(){const e=this.player,t=e._opt,i=e.getShowVideoRect(),s=i.width,r=i.height;let o=i.width,a=i.height;const n=t.rotate;270!==n&&90!==n||(o=r,a=s),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,e._opt.loadingBackground&&(this.$loadingBgImage.src=e._opt.loadingBackground);let l=(s-o)/2,d=(r-a)/2,h="contain";t.isResize||(h="fill"),t.isFullResize&&(h="none");let c="";"none"===t.mirrorRotate&&n&&(c+=" rotate("+n+"deg)"),"level"===t.mirrorRotate?c+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(c+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=h),this.$loadingBgImage.style.transform=c,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px"}_validateExtendBtn(e){let t=!0;if(e.name||(this.player.debugWarn("Control","extend button name is required"),t=!1),t){-1!==this.extendBtnList.findIndex((t=>t.name===e.name))&&(this.player.debugWarn("Control",`extend button name: ${e.name} is already exist`),t=!1)}return t&&(e.icon||(this.player.debugWarn("Control","extend button icon is required"),t=!1)),t}addExtendBtn(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Ea(Ps);if(e=Object.assign({},t,e),!this._validateExtendBtn(e))return;const i=e.name||"",s=this.$controlsRight,r=e.createdMoment||Or,o=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(s.children)[e.index];n?n.insertAdjacentHTML("beforebegin",a):Sc(s,a);const l=s.querySelector(`.jb-pro-controls-item-wrap-${i}`),d=e.icon?s.querySelector(`.jb-pro-icon-extend-${i}`):null,h=e.icon?s.querySelector(`.jb-pro-control-extend-${i}`):null,c=e.activeIcon?s.querySelector(`.jb-pro-icon-extend-${i}-active`):null,u=e.activeIcon?s.querySelector(`.jb-pro-control-extend-${i}-active`):null,{events:{proxy:p},debug:f}=this.player;e.icon&&(Ec(d,"background",`url(${e.icon}) no-repeat center`),Ec(d,"background-size","100% 100%"),Ec(h,"display",r===Fr?"flex":"none"),e.iconHover&&(p(d,"mouseover",(()=>{Ec(d,"background",`url(${e.iconHover}) no-repeat center`),Ec(d,"background-size","100% 100%")})),p(d,"mouseout",(()=>{Ec(d,"background",`url(${e.icon}) no-repeat center`),Ec(d,"background-size","100% 100%")})))),e.activeIcon&&(Ec(c,"background",`url(${e.activeIcon}) no-repeat center`),Ec(c,"background-size","100% 100%"),Ec(u,"display","none"),e.activeIconHover&&(p(c,"mouseover",(()=>{Ec(c,"background",`url(${e.activeIconHover}) no-repeat center`),Ec(c,"background-size","100% 100%")})),p(c,"mouseout",(()=>{Ec(c,"background",`url(${e.activeIcon}) no-repeat center`),Ec(c,"background-size","100% 100%")})))),e.click&&d&&p(d,"click",(t=>{t.preventDefault(),o&&(Ec(h,"display","none"),Ec(u,"display","flex")),this.player.isInMulti()?e.click.call(this.player,t,this.player._opt.multiIndex):e.click.call(this.player,t)})),e.activeClick&&c&&p(c,"click",(t=>{t.preventDefault(),Ec(h,"display","flex"),Ec(u,"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,createdMoment:r,$iconContainer:l,$iconWrap:h,$activeIconWrap:u})}toggleExtendBtn(e,t){const i=this.extendBtnList.find((t=>t.name===e));i&&i.$activeIconWrap&&i.$iconWrap&&(Vo(t)||(t="none"===vo(i.$activeIconWrap,"display",!1)),t?(Ec(i.$iconWrap,"display","none"),Ec(i.$activeIconWrap,"display","flex")):(Ec(i.$iconWrap,"display","flex"),Ec(i.$activeIconWrap,"display","none")))}getExtendBtnActive(e){const t=this.extendBtnList.find((t=>t.name===e));let i=!1;return t&&t.$activeIconWrap&&(i="none"!==vo(t.$activeIconWrap,"display",!1)),i}addExtendDom(e){if(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(".jb-pro-extend-dom"),configurable:!0}),e.showBeforePlay&&Ec(this.$extendDom,"display","block")}}toggleExtendDom(e){this.$extendDom&&(Vo(e)||(e="none"===vo(this.$extendDom,"display",!1)),Ec(this.$extendDom,"display",e?"block":"none"))}updateExtendDom(e){this.$extendDom&&(this.$extendDom.innerHTML=e)}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,s=this.$tipsMessageContent;if(i){const r=`\n
    ${e}
    \n ${t?`
    Error Type:${t}
    `:""}\n `;s.innerHTML=r,Ec(i,"display","block")}}hideTipsMessage(){const e=this.$tipsMessage,t=this.$tipsMessageContent;e&&(t.innerHTML="",Ec(e,"display","none"))}updatePtzPosition(e){const t=this.$ptzControl;if(oa(e)&&t){let i="auto";e.left&&(i=Number(e.left)===e.left?e.left+"px":e.left),Ec(t,"left",i);let s="auto";e.top&&(s=Number(e.top)===e.top?e.top+"px":e.top),Ec(t,"top",s);let r="auto";e.bottom&&(r=Number(e.bottom)===e.bottom?e.bottom+"px":e.bottom),Ec(t,"bottom",r);let o="auto";e.right&&(o=Number(e.right)===e.right?e.right+"px":e.right),Ec(t,"right",o)}}showPlayBtn(){Ec(this.$playBig,"display","block")}toggleBar(e){this.$controls&&(Vo(e)||(e="none"===vo(this.$controls,"display",!1)),Ec(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==vo(this.$controls,"display",!1)),e}toggleControlHtml(e){this.$controlHtml&&(Vo(e)||(e="none"===vo(this.$controlHtml,"display",!1)),Ec(this.$controlHtml,"display",e?"block":"none"))}getControlHtmlIsShow(){let e=!1;return this.$controlHtml&&(e="none"!==vo(this.$controlHtml,"display",!1)),e}getExtendDomIsShow(){let e=!1;return this.$extendDom&&(e="none"!==vo(this.$extendDom,"display",!1)),e}getExtendDom(){return this.$extendDom?this.$extendDom:null}getControlHtml(){return this.$controlHtml?this.$controlHtml:null}updateControlSize(){if(this.$controls){const e=this.player._opt.controlSize,t="jb-pro-controls-small";e===ee?xa(wc(this.$controls,t))&&vc(this.$controls,t):e===Z&&wc(this.$controls,t)&&_c(this.$controls,t)}}}Cc(".jb-pro-container{position:relative;width:100%;height:100%;overflow:hidden}.jb-pro-container.jb-pro-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}.jb-pro-container .jb-pro-loading-bg-for-ios{position:absolute;z-index:100;left:0;top:0;right:0;bottom:0;height:100%;width:100%;opacity:0;visibility:hidden;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jb-pro-container .jb-pro-loading-bg-for-ios.show{opacity:1;visibility:visible}");var Dc=e=>{const{_opt:t,events:{proxy:i}}=e;if(t.supportDblclickFullscreen&&i(e.$container,"dblclick",(t=>{const i=da(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),i(document,"visibilitychange",(()=>{e.visibility="visible"===document.visibilityState,e.debugLog("visibilitychange",document.visibilityState),t.hiddenAutoPause&&(e.debugLog("visibilitychange","hiddenAutoPause is true ",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),ko()&&i(document,["click","contextmenu"],(t=>{Tc(t,e.$container)?(Ca(e._opt.disableContextmenu)&&"contextmenu"===t.type&&t.preventDefault(),e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit(yt.focus)):(e.isInput=!1,e.isFocus=!1,e.emit(yt.blur))})),t.isCheckInView){const t=Fo((()=>{e.emit(yt.inView,function(e){const t=e.getBoundingClientRect(),i=window.innerHeight||document.documentElement.clientHeight,s=window.innerWidth||document.documentElement.clientWidth,r=t.top<=i&&t.top+t.height>=0,o=t.left<=s&&t.left+t.width>=0;return r&&o}(e.$container))}),200);i(window,"scroll",(()=>t()))}if(t.orientationChangeResize){const t=Fo((()=>{e.emit(yt.resize)}),500);i(window,"orientationchange",(()=>{t()})),screen&&screen.orientation&&screen.orientation.onchange&&i(screen.orientation,"change",(()=>{t()}))}};class Rc{static init(){Rc.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 Rc.types)Rc.types.hasOwnProperty(e)&&(Rc.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Rc.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,s=Array.prototype.slice.call(arguments,1),r=s.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 o=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 Rc.box(Rc.types.trak,Rc.tkhd(e),Rc.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return Rc.box(Rc.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,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return Rc.box(Rc.types.mdia,Rc.mdhd(e),Rc.hdlr(e),Rc.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return Rc.box(Rc.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?Rc.constants.HDLR_AUDIO:Rc.constants.HDLR_VIDEO,Rc.box(Rc.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Rc.box(Rc.types.smhd,Rc.constants.SMHD):Rc.box(Rc.types.vmhd,Rc.constants.VMHD),Rc.box(Rc.types.minf,t,Rc.dinf(),Rc.stbl(e))}static dinf(){return Rc.box(Rc.types.dinf,Rc.box(Rc.types.dref,Rc.constants.DREF))}static stbl(e){return Rc.box(Rc.types.stbl,Rc.stsd(e),Rc.box(Rc.types.stts,Rc.constants.STTS),Rc.box(Rc.types.stsc,Rc.constants.STSC),Rc.box(Rc.types.stsz,Rc.constants.STSZ),Rc.box(Rc.types.stco,Rc.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Rc.box(Rc.types.stsd,Rc.constants.STSD_PREFIX,Rc.mp3(e)):Rc.box(Rc.types.stsd,Rc.constants.STSD_PREFIX,Rc.mp4a(e)):"avc"===e.videoType?Rc.box(Rc.types.stsd,Rc.constants.STSD_PREFIX,Rc.avc1(e)):Rc.box(Rc.types.stsd,Rc.constants.STSD_PREFIX,Rc.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,s=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 Rc.box(Rc.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,s=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 Rc.box(Rc.types.mp4a,s,Rc.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=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 Rc.box(Rc.types.esds,s)}static avc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 Rc.box(Rc.types.avc1,r,Rc.box(Rc.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 Rc.box(Rc.types.hvc1,r,Rc.box(Rc.types.hvcC,t))}static mvex(e){return Rc.box(Rc.types.mvex,Rc.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 Rc.box(Rc.types.trex,i)}static moof(e,t){return Rc.box(Rc.types.moof,Rc.mfhd(e.sequenceNumber),Rc.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 Rc.box(Rc.types.mfhd,t)}static traf(e,t){let i=e.id,s=Rc.box(Rc.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=Rc.box(Rc.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=Rc.sdtp(e),a=Rc.trun(e,o.byteLength+16+16+8+16+8+8);return Rc.box(Rc.types.traf,s,r,a,o)}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,Rc.box(Rc.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 s=e.duration,r=e.size,o=e.flags,a=e.cts;return i.set([s>>>24&255,s>>>16&255,s>>>8&255,255&s,r>>>24&255,r>>>16&255,r>>>8&255,255&r,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),Rc.box(Rc.types.trun,i)}static mdat(e){return Rc.box(Rc.types.mdat,e)}}Rc.init();class Ic extends o{constructor(e){super(),this.TAG_NAME="MediaSource",this.player=e,this._resetInIt(),this._useManagedMediaSource="ManagedMediaSource"in Nr&&!("MediaSource"in Nr),this.mediaSource=this._useManagedMediaSource?new Nr.ManagedMediaSource:new Nr.MediaSource,this.isDecodeFirstIIframe=!!xa(e._opt.checkFirstIFrame),this.mediaSourceObjectURL=null,this._useManagedMediaSource||(this.mediaSourceObjectURL=Nr.URL.createObjectURL(this.mediaSource)),this.isSupportVideoFrameCallback=Oa(),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.hasPendingEos=!1,this.player.isPlayback()&&this.player.on(yt.playbackPause,(t=>{xa(t)?(e._opt.isPlaybackPauseClearCache&&(Ca(e._opt.checkFirstIFrame)&&(this.player.debugLog(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._useManagedMediaSource?this.player.debugLog(this.TAG_NAME,"init and using ManagedMediaSource"):this.player.debugLog(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.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,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.mediaSource=null,this.off(),this.player.debugLog(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.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===Ci}get isStateClosed(){return this.state===xi}get isStateEnded(){return this.state===Li}get duration(){return this.mediaSource&&this.mediaSource.duration||-1}set duration(e){this.mediaSource.duration=e}_bindMediaSourceEvents(){const{events:{proxy:e}}=this.player,t=e(this.mediaSource,is,(()=>{this.player.debugLog(this.TAG_NAME,"sourceOpen"),this._onMediaSourceSourceOpen(),this.player.emit(yt.mseSourceOpen)})),i=e(this.mediaSource,ts,(()=>{this.player.debugLog(this.TAG_NAME,"sourceClose"),this.player.emit(yt.mseSourceClose)})),s=e(this.mediaSource,ss,(()=>{this.player.debugLog(this.TAG_NAME,"sourceended"),this.player.emit(yt.mseSourceended)}));this.eventListenList.push(t,i,s);const r=e(this.$videoElement,ds,(e=>{if(xa(this.isSupportVideoFrameCallback))if(this.player.checkIsInRender())this.player.handleRender();else{const t=parseInt(e.timeStamp,10);this.player.debugLog(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}`)}}));if(this.eventListenList.push(r),this._useManagedMediaSource){const t=e(this.mediaSource,rs,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource startstreaming"),this.player.emit(yt.mseSourceStartStreaming)})),i=e(this.mediaSource,os,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource endstreaming"),this.player.emit(yt.mseSourceEndStreaming)})),s=e(this.mediaSource,as,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource qualitychange")}));this.eventListenList.push(t,i,s)}}_onMediaSourceSourceOpen(){this.sourceBuffer||(this.player.debugLog("MediaSource","onMediaSourceSourceOpen() sourceBuffer is null and next init"),this._initSourceBuffer()),this.audioSourceBuffer||(this.player.debugLog("MediaSource","onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),this._initAudioSourceBuffer()),this._hasPendingSegments()&&this._doAppendSegments()}initVideoEvents(){const{proxy:e}=this.player.events;this.player.on(yt.visibilityChange,(e=>{e&&setTimeout((()=>{if(this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getMseBufferMaxDelayTime()&&(this.player.debugLog(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)}));const t=e(this.$videoElement,ns,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.emit(yt.removeLoadingBgImage),Oa()?this.supportVideoFrameCallbackHandle||(this.player.debugLog(this.TAG_NAME,"video canplay and requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.isUseHls265()&&(this.player.debugLog(this.TAG_NAME,"video canplay and use canvas render and fps is 25"),this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40)),this.player.debugLog(this.TAG_NAME,"video play")})).catch((e=>{this.player.debugError(this.TAG_NAME,"video play error ",e),this.player.emitError(vt.mediaSourceUseCanvasRenderPlayFailed,`code is ${e.code} and message is ${e.message}`)}))})),i=e(this.$videoElement,ls,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,cs,(()=>{this.player.debugLog(this.TAG_NAME,"video loadedmetadata")})),r=e(this.$videoElement,ds,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),o=e(this.$videoElement,hs,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&this.player.debugWarn(this.TAG_NAME,"ratechange and video is paused")}));this.eventListenList.push(t,i,r,o,s)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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,s){const r=this.player;if(r)if(this.player.isDestroyedOrClosed())this.player.debugWarn(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===xt){i=Kn(e.slice(5))}else t===Dt&&(i=nl(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debugWarn(this.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(vt.mseWidthOrHeightChange,`width ${s.width}->${i.codecWidth}, height ${s.height}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(La(e))return void this.player.debugLog(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debugWarn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let r=t;if(this.player.isPlayer()){if(null===this.firstRenderTime&&(this.firstRenderTime=t,this.player.debugLog(this.TAG_NAME,`firstRenderTime is ${this.firstRenderTime}`)),r=t-this.firstRenderTime,r<0&&(this.player.debugWarn(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}`),r=null===this.prevDts?0:this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t)))return this.player.debugWarn(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(vt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`);if(null!==this.prevDts&&r<=this.prevDts){if(this.player.debugWarn(this.TAG_NAME,`\n decodeVideo dts is less than(or equal) prev dts ,\n dts is ${r} 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}`),r===this.prevDts&&this.prevPayloadBufferSize===e.byteLength)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo dts is equal to prev dts and payload size is equal to prev payload size so drop this frame");if(r=this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t))return this.player.debugWarn(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(vt.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`)}}this.player.isPlayer()?this._decodeVideo(e,r,i,s,t):this.player.isPlayback()&&(xa(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this._decodeVideo(e,r,i,s,t)):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this._decodeVideo(e,r,i,s,t)),this.prevDts=r,this.prevPayloadBufferSize=e.byteLength,this.prevTs=t}else this.player.debugLog(this.TAG_NAME,"decodeVideo first frame is not iFrame");else if(i&&e[1]===Cs){const s=15&e[0];if(r.video.updateVideoInfo({encTypeCode:s}),s===Dt&&xa(No()))return void this.player.emitError(vt.mediaSourceH265NotSupport);r._times.decodeStart||(r._times.decodeStart=yo()),this.hasInit=this._decodeConfigurationRecord(e,t,i,s)}else this.player.debugWarn(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.debugWarn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(xa(this.hasAudioInit))this.hasAudioInit=this._decodeAudioConfigurationRecord(e,t);else{let i=t;if(Kr(e))return void this.player.debugLog(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.player.isPlayer()){if(null===this.firstAudioTime&&(this.firstAudioTime=t,this.player.debugLog(this.TAG_NAME,`firstAudioTime is ${this.firstAudioTime}`)),i=t-this.firstAudioTime,i<0&&(this.player.debugWarn(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.debugWarn(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(vt.mediaSourceTsIsMaxDiff,`decodeAudio is max diff, prevTs is ${this.prevAudioDts} and ts is ${t}`);null!==this.prevAudioTs&&i<=this.prevAudioDts&&(this.player.debugWarn(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()&&(xa(this.player.playbackPause)||this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()))&&this._decodeAudio(e,i,t),this.prevAudioTs=t,this.prevAudioDts=i}else this.player.debugLog(this.TAG_NAME,"decodeAudio first frame is not iFrame")}}_checkTsIsMaxDiff(e){return this.prevTs>0&&ete}_checkAudioTsIsMaxDiff(e){return this.prevAudioTs>0&&ete}_decodeConfigurationRecord(e,t,i,s){let r=e.slice(5),o={};if(s===xt?o=Kn(r):s===Dt&&(o=ll(r)),ra(o)||0===o.codecWidth&&0===o.codecHeight){this.player.debugWarn(this.TAG_NAME,"_decodeConfigurationRecord",o);let e="";return e=ra(o)?"config is empty object":`config is not empty object and codecWidth is ${o.codecWidth} and codecHeight is ${o.codecHeight}`,this.player.emitError(vt.mediaSourceDecoderConfigurationError,e),!1}this.isInitInfo||(this.player.debugLog(this.TAG_NAME,`updateVideoInfo: ${o.codecWidth},${o.codecHeight}`),this.player.video.updateVideoInfo({width:o.codecWidth,height:o.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,s);const a={id:mr,type:"video",timescale:1e3,duration:0,avcc:r,codecWidth:o.codecWidth,codecHeight:o.codecHeight,videoType:o.videoType},n=Rc.generateInitSegment(a);this.isAvc=s===xt;let l=o.codec;return this.videoMimeType=l?`video/mp4; codecs="${o.codec}"`:this.isAvc?_i:wi,this._initSourceBuffer(),this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack={},!0}_decodeAudioConfigurationRecord(e,t){const i=e[0]>>4,s=e[0]>>1&1,r=i===Mt,o=i===Pt;let a="";if(a=o?s?16:8:0===s?8:16,xa(o||r))return this.player.debugWarn(this.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),this.player.emit(vt.mediaSourceAudioG711NotSupport),!1;const n={id:gr,type:"audio",timescale:1e3};let l={};if(Kr(e)){if(l=eo(e.slice(2)),!l)return!1;n.audioSampleRate=l.sampleRate,n.channelCount=l.channelCount,n.config=l.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale}else{if(!r)return!1;if(l=lc(e),!l)return!1;n.audioSampleRate=l.samplingRate,n.channelCount=l.channelCount,n.refSampleDuration=1152/n.audioSampleRate*n.timescale}n.codec=l.codec,n.duration=0;let d="mp4",h=l.codec,c=null;r&&xa(Co())?(d="mpeg",h="",c=new Uint8Array):c=Rc.generateInitSegment(n);let u=`${n.type}/${d}`;return h&&h.length>0&&(u+=`;codecs=${h}`),xa(this.isAudioInitInfo)&&(this.player.audio.updateAudioInfo({encTypeCode:i,channels:n.channelCount,sampleRate:n.audioSampleRate,depth:a}),this.isAudioInitInfo=!0),this.audioMimeType=u,this.isAAC=o,this._initAudioSourceBuffer(),this.appendAudioBuffer(c.buffer),!0}_initSourceBuffer(){const{events:{proxy:e}}=this.player;if(null===this.sourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.videoMimeType){try{this.sourceBuffer=this.mediaSource.addSourceBuffer(this.videoMimeType),this.player.debugLog(this.TAG_NAME,"_initSourceBuffer() this.mediaSource.addSourceBuffer()",this.videoMimeType)}catch(e){return this.player.debugError(this.TAG_NAME,"appendBuffer() this.mediaSource.addSourceBuffer()",e.code,e),this.player.emitError(vt.mseAddSourceBufferError,`code is ${e.code} and message is ${e.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.sourceBuffer){const t=e(this.sourceBuffer,"error",(e=>{this.mediaSourceBufferError=!0,this.player.debugError(this.TAG_NAME,"mseSourceBufferError this.sourceBuffer",e),this.player.emitError(vt.mseSourceBufferError,e.toString())})),i=e(this.sourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debugLog(this.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(t,i)}}else this.player.debugLog(this.TAG_NAME,`_initSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.isAvc === null is ${null===this.isAvc}`)}_initAudioSourceBuffer(){const{events:{proxy:e}}=this.player;if(null===this.audioSourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.audioMimeType){try{this.audioSourceBuffer=this.mediaSource.addSourceBuffer(this.audioMimeType),this._clearAudioSourceBufferCheckTimeout(),this.player.debugLog(this.TAG_NAME,"_initAudioSourceBuffer() this.mediaSource.addSourceBuffer()",this.audioMimeType)}catch(e){return this.player.debugError(this.TAG_NAME,"appendAudioBuffer() this.mediaSource.addSourceBuffer()",e.code,e),this.player.emitError(vt.mseAddSourceBufferError,`code is ${e.code} and message is ${e.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.audioSourceBuffer){const t=e(this.audioSourceBuffer,"error",(e=>{this.mediaSourceBufferError=!0,this.player.debugError(this.TAG_NAME,"mseSourceBufferError this.audioSourceBuffer",e),this.player.emitError(vt.mseSourceBufferError,e.toString())})),i=e(this.audioSourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debugLog(this.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(t,i),null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(vt.mediaSourceAudioNoDataTimeout)}),1e3))}}else this.player.debugLog(this.TAG_NAME,`_initAudioSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.audioMimeType is ${this.audioMimeType}`)}_decodeVideo(e,t,i,s,r){const o=this.player;let a=e.slice(5),n=a.byteLength;if(0===n)return void o.debugWarn(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>1e3&&!d&&this.player.isPlayer()&&o.debugLog(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(Rc.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts,this.cacheTrack.duration>1e3&&this.player.debugWarn(this.TAG_NAME,`cacheTrack duration is ${this.cacheTrack.duration} ms`);let s=Rc.moof(this.cacheTrack,this.cacheTrack.dts);this.cacheTrack={};let a=new Uint8Array(s.byteLength+i.byteLength);a.set(s,0),a.set(i,s.byteLength),this.appendBuffer(a.buffer),o.emit(yt.timeUpdate,r),o.isPlayer()?o.isUseHls265()?o.updateStats({dfps:!0,mseTs:t}):o.updateStats({fps:!0,dfps:!0,ts:r,mseTs:t}):o.isPlayback()&&o.playback.updateStats({ts:r}),o._times.videoStart||(o._times.videoStart=yo(),o.handlePlayToRenderTimes())}else o.debugLog(this.TAG_NAME,`cacheTrack = {} now dts is ${t}, and ts is ${r} cacheTrack dts is ${this.cacheTrack&&this.cacheTrack.dts}`),this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=mr,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=n,this.cacheTrack.dts=t,this.cacheTrack.cts=s,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=a,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},o._opt.mseUseCanvasRender&&xa(this.isSupportVideoFrameCallback)&&xa(o.isUseHls265())&&o.video.render({$video:c,ts:t}),this.prevTimestamp=(new Date).getTime()}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_decodeAudio(e,t,i){const s=this.player;let r=this.isAAC?e.slice(2):e.slice(1),o=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(Rc.types.mdat,4),i.set(this.cacheAudioTrack.data,8),this.cacheAudioTrack.duration=t-this.cacheAudioTrack.dts,this.cacheAudioTrack.duration>1e3&&this.player.debugWarn(this.TAG_NAME,`cacheTrack duration is ${this.cacheTrack.duration} ms`);let s=Rc.moof(this.cacheAudioTrack,this.cacheAudioTrack.dts);this.cacheAudioTrack={};let r=new Uint8Array(s.byteLength+i.byteLength);r.set(s,0),r.set(i,s.byteLength),this.appendAudioBuffer(r.buffer)}else s.debugLog(this.TAG_NAME,`cacheAudioTrack = {} now dts is ${t} cacheAudioTrack dts is ${this.cacheAudioTrack&&this.cacheAudioTrack.dts}`),this.cacheAudioTrack={};this.cacheAudioTrack||(this.cacheAudioTrack={}),this.cacheAudioTrack.id=gr,this.cacheAudioTrack.sequenceNumber=++this.audioSequenceNumber,this.cacheAudioTrack.size=o,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){this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"appendBuffer() player is destroyed"):(this.player,this.mediaSourceAddSourceBufferError?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?this.player.debugWarn(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._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),xa(this.getSourceBufferUpdating())&&this.isStateOpen&&xa(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(vt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(vt.mseSourceBufferError,"mediaSource is end"))))}appendAudioBuffer(e){this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() player is destroyed"):(this.player,this.mediaSourceAddSourceBufferError?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?this.player.debugWarn(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._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),xa(this.getAudioSourceBufferUpdating())&&this.isStateOpen&&xa(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(vt.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(vt.mseSourceBufferError,"mediaSource is end"))))}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}getAudioSourceBufferUpdating(){return this.audioSourceBuffer&&this.audioSourceBuffer.updating}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}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.debugWarn(this.TAG_NAME,`checkMSESourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debugWarn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}checkSourceBufferEndLessThanCurrentTime(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.buffered.end(e.buffered.length-1)-e.currentTime),t}getDecodeDiffTimes(){return this.decodeDiffTimestamp}removeBuffer(e,t){const i=ha();if(this.player.debugLog(this.TAG_NAME,`removeBuffer() start is ${e} and end is ${t} and _isMacOsFirefox is ${i}`),this.isStateOpen&&xa(i)){if(xa(this.getSourceBufferUpdating()))try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debugWarn(this.TAG_NAME,"removeBuffer() sourceBuffer error",e)}if(xa(this.getAudioSourceBufferUpdating()))try{this.audioSourceBuffer.remove(e,t)}catch(e){this.player.debugWarn(this.TAG_NAME,"removeBuffer() audioSourceBuffer error",e)}}}clearUpAllSourceBuffer(){if(this.sourceBuffer){const e=this.sourceBuffer.buffered;for(let t=0;t=1)if(this.getSourceBufferUpdating()||this.getAudioSourceBufferUpdating())this.hasPendingEos=!0;else{this.hasPendingEos=!1;try{this.player.debugLog(this.TAG_NAME,"endOfStream()"),this.mediaSource.endOfStream()}catch(e){this.player.debugWarn(this.TAG_NAME,"endOfStream() error",e)}}}abortSourceBuffer(){if(this.isStateOpen){if(this.sourceBuffer){try{this.player.debugLog(this.TAG_NAME,"abortSourceBuffer() abort sourceBuffer"),this.sourceBuffer.abort()}catch(e){}xa(this.getSourceBufferUpdating())&&this._doRemoveRanges()}if(this.audioSourceBuffer){try{this.player.debugLog(this.TAG_NAME,"abortSourceBuffer() abort audioSourceBuffer"),this.audioSourceBuffer.abort()}catch(e){}xa(this.getAudioSourceBufferUpdating())&&this._doRemoveRanges()}}this.sourceBuffer=null,this.audioSourceBuffer=null}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource){if(this.sourceBuffer)try{this.player.debugLog(this.TAG_NAME,"removeSourceBuffer() sourceBuffer"),this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debugError(this.TAG_NAME,"removeSourceBuffer() sourceBuffer error",e)}if(this.audioSourceBuffer)try{this.player.debugLog(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer"),this.mediaSource.removeSourceBuffer(this.audioSourceBuffer)}catch(e){this.player.debugError(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;this.player._opt.videoBuffer,this.player._opt.videoBufferDelay;const t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getMseBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),0===this.$videoElement.readyState)return;if(r>o)this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debugWarn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(vt.mediaSourceBufferedIsZeroError,"video.buffered is empty");const a=this._getPlaybackRate(i-s);e.playbackRate!==a&&(this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${a} `),e.playbackRate=a)}_handleUpdateBufferDelayTime(){const e=this.getVideoBufferDelayTime();this.player.updateStats({mseVideoBufferDelayTime:e})}_checkVideoPlayCurrentTime(){const e=this.checkSourceBufferStore();if(e<0){const t=this.getVideoBufferStartTime();this.player.debugWarn(this.TAG_NAME,`checkVideoPlayCurrentTime store is ${e} < 0 and set currentTime ${this.$videoElement.currentTime} to ${t}`),this.$videoElement.currentTime=t}}updateVideoCurrentTimeByBufferStart(){if(!this.$videoElement)return;const e=this.$videoElement.currentTime,t=this.getVideoBufferRangeList();if(1===t.length){const i=t[0].end,s=Math.abs(i-e);if(s<1)return void this.player.debugLog(this.TAG_NAME,`updateVideoCurrentTimeByBufferStart current time is ${e} and buffer end is ${i} and diff is ${s} and return`)}let i=null;for(let s=0;s{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(vt.mediaSourceAudioInitTimeout)}),1e3)));if(xa(this.getSourceBufferUpdating())&&this.pendingSegments.length>0){const e=this.pendingSegments.shift();try{this.sourceBuffer.appendBuffer(e)}catch(e){this.player.debugError(this.TAG_NAME,"this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(vt.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(vt.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(yt.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}if(xa(this.getAudioSourceBufferUpdating())&&this.pendingAudioSegments.length>0){const e=this.pendingAudioSegments.shift();try{this.audioSourceBuffer.appendBuffer(e)}catch(e){this.player.debugError(this.TAG_NAME,"this.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(vt.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(vt.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(yt.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}}else this.player.debugLog(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 s=0;s=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingRemoveRanges.push({start:r,end:t})}}else o=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingAudioRemoveRanges.push({start:r,end:t})}}else o0||this.pendingAudioRemoveRanges.length>0}_doRemoveRanges(){if(this.sourceBuffer&&xa(this.getSourceBufferUpdating())){let e=this.pendingRemoveRanges;for(;e.length&&xa(this.getSourceBufferUpdating());){let t=e.shift();try{this.sourceBuffer.remove(t.start,t.end)}catch(e){this.player.debugWarn(this.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(this.audioSourceBuffer&&xa(this.getAudioSourceBufferUpdating())){let e=this.pendingAudioRemoveRanges;for(;e.length&&xa(this.getAudioSourceBufferUpdating());){let t=e.shift();try{this.audioSourceBuffer.remove(t.start,t.end)}catch(e){this.player.debugWarn(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 s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?1:t.playbackRate}_needCleanupSourceBuffer(){if(xa(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}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getVideoBufferStartTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;t=i.length?i.start(0):0}return t}getVideoBufferEndTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;t=i.length?i.end(i.length-1):0}return t}getVideoBufferRangeList(){const e=this.$videoElement;let t=[];if(e){const i=e.buffered;for(let e=0;e0?t:0}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}getMimeType(){return{video:this.videoMimeType,audio:this.audioMimeType}}getMseBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}isVideoPlaying(){return this.$videoElement&&xa(this.$videoElement.paused)&&xa(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}isCurrentTimeInBufferEnd(){let e=!1;if(this.$videoElement){const t=this.$videoElement.currentTime,i=this.getVideoBufferEndTime(),s=Math.abs(i-t);e=s<1,e&&this.player.debugLog(this.TAG_NAME,`isCurrentTimeInBufferEnd and currentTime is ${t} and end is ${i} and diff is ${s}`)}return e}}const Pc=()=>"wakeLock"in navigator&&-1===window.navigator.userAgent.indexOf("Samsung")&&xa(Do());class Bc{constructor(e){this.player=e,this.enabled=!1,Pc()?(this.player.debugLog("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.debugLog("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.debugWarn("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 s=document.createElement("source");s.src=i,s.type=`video/${t}`,e.appendChild(s)}get isEnabled(){return this.enabled}enable(){if(Pc())return navigator.wakeLock.request("screen").then((e=>{this._wakeLock=e,this.enabled=!0,this.player.debugLog("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{this.player.debugLog("wakeLock","Wake Lock released.")}))})).catch((e=>{throw this.enabled=!1,this.player.debugWarn("wakeLock",`${e.name}, ${e.message}`),e}));return this.noSleepVideo.play().then((e=>(this.player.debugLog("wakeLock","noSleepVideo Wake Lock active."),this.enabled=!0,e))).catch((e=>{throw this.player.debugWarn("wakeLock",`noSleepVideo ${e.name}, ${e.message}`),this.enabled=!1,e}))}disable(){Pc()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):this.noSleepVideo&&this.noSleepVideo.pause(),this.enabled=!1,this.player.debugLog("wakeLock","Disabling wake lock.")}}function Mc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Fc={exports:{}};!function(e,t){var i,s,r,o,a;i=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,s=/^(?=([^\/?#]*))\1([^]*)$/,r=/(?:\/|^)\.(?=\/)/g,o=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,a={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var r=a.parseURL(e);if(!r)throw new Error("Error trying to parse base URL.");return r.path=a.normalizePath(r.path),a.buildURLFromParts(r)}var o=a.parseURL(t);if(!o)throw new Error("Error trying to parse relative URL.");if(o.scheme)return i.alwaysNormalize?(o.path=a.normalizePath(o.path),a.buildURLFromParts(o)):t;var n=a.parseURL(e);if(!n)throw new Error("Error trying to parse base URL.");if(!n.netLoc&&n.path&&"/"!==n.path[0]){var l=s.exec(n.path);n.netLoc=l[1],n.path=l[2]}n.netLoc&&!n.path&&(n.path="/");var d={scheme:n.scheme,netLoc:o.netLoc,path:null,params:o.params,query:o.query,fragment:o.fragment};if(!o.netLoc&&(d.netLoc=n.netLoc,"/"!==o.path[0]))if(o.path){var h=n.path,c=h.substring(0,h.lastIndexOf("/")+1)+o.path;d.path=a.normalizePath(c)}else d.path=n.path,o.params||(d.params=n.params,o.query||(d.query=n.query));return null===d.path&&(d.path=i.alwaysNormalize?a.normalizePath(o.path):o.path),a.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(r,"");e.length!==(e=e.replace(o,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=a}(Fc);var Uc=Fc.exports;function Oc(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function Nc(e){for(var t=1;t`):Kc}(t)}))}const Zc=Qc,eu=/^(\d+)x(\d+)$/,tu=/(.+?)=(".*?"|.*?)(?:,|$)/g;class iu{constructor(e){"string"==typeof e&&(e=iu.parseAttrList(e)),Wc(this,e)}get clientAttrs(){return Object.keys(this).filter((e=>"X-"===e.substring(0,2)))}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;const i=new Uint8Array(t.length/2);for(let e=0;eNumber.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){const i=this[e];return i?parseFloat(i):t}enumeratedString(e){return this[e]}bool(e){return"YES"===this[e]}decimalResolution(e){const t=eu.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t;const i={};for(tu.lastIndex=0;null!==(t=tu.exec(e));){let e=t[2];0===e.indexOf('"')&&e.lastIndexOf('"')===e.length-1&&(e=e.slice(1,-1));i[t[1].trim()]=e}return i}}function su(e){return"SCTE35-OUT"===e||"SCTE35-IN"===e}class ru{constructor(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){const i=t.attr;for(const t in i)if(Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==i[t]){Zc.warn(`DATERANGE tag attribute: "${t}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=t;break}e=Wc(new iu({}),i,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){const e=new Date(this.attr["END-DATE"]);zc(e.getTime())&&(this._endDate=e)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;const e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}get duration(){if("DURATION"in this.attr){const e=this.attr.decimalFloatingPoint("DURATION");if(zc(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isValid(){return!!this.id&&!this._badValueForSameId&&zc(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class ou{constructor(){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}}}var au="audio",nu="video",lu="audiovideo";class du{constructor(e){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[au]:null,[nu]:null,[lu]:null},this.baseurl=e}setByteRange(e,t){const i=e.split("@",2);let s;s=1===i.length?(null==t?void 0:t.byteRangeEndOffset)||0:parseInt(i[1]),this._byteRange=[s,parseInt(i[0])+s]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=Uc.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(e){this._url=e}}class hu extends du{constructor(e,t){super(t),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new ou,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=e}get decryptdata(){const{levelkeys:e}=this;if(!e&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{const e=Object.keys(this.levelkeys);if(1===e.length)return this._decryptdata=this.levelkeys[e[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!zc(this.programDateTime))return null;const e=zc(this.duration)?this.duration:0;return this.programDateTime+1e3*e}get encrypted(){var e;if(null!=(e=this._decryptdata)&&e.encrypted)return!0;if(this.levelkeys){const e=Object.keys(this.levelkeys),t=e.length;if(t>1||1===t&&this.levelkeys[e[0]].encrypted)return!0}return!1}setKeyFormat(e){if(this.levelkeys){const t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}}abortRequests(){var e,t;null==(e=this.loader)||e.abort(),null==(t=this.keyLoader)||t.abort()}setElementaryStreamInfo(e,t,i,s,r,o=!1){const{elementaryStreams:a}=this,n=a[e];n?(n.startPTS=Math.min(n.startPTS,t),n.endPTS=Math.max(n.endPTS,i),n.startDTS=Math.min(n.startDTS,s),n.endDTS=Math.max(n.endDTS,r)):a[e]={startPTS:t,endPTS:i,startDTS:s,endDTS:r,partial:o}}clearElementaryStreamInfo(){const{elementaryStreams:e}=this;e[au]=null,e[nu]=null,e[lu]=null}}class cu extends du{constructor(e,t,i,s,r){super(i),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.stats=new ou,this.duration=e.decimalFloatingPoint("DURATION"),this.gap=e.bool("GAP"),this.independent=e.bool("INDEPENDENT"),this.relurl=e.enumeratedString("URI"),this.fragment=t,this.index=s;const o=e.enumeratedString("BYTERANGE");o&&this.setByteRange(o,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}}class uu{constructor(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}reloaded(e){if(!e)return this.advanced=!0,void(this.updated=!0);const 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}get hasProgramDateTime(){return!!this.fragments.length&&zc(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const e=this.driftEndTime-this.driftStartTime;if(e>0){return 1e3*(this.driftEnd-this.driftStart)/e}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var e;return null!=(e=this.fragments)&&e.length?this.fragments[this.fragments.length-1].end:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function pu(e){return Uint8Array.from(atob(e),(e=>e.charCodeAt(0)))}function fu(e){const t=e.split(":");let i=null;if("data"===t[0]&&2===t.length){const e=t[1].split(";"),s=e[e.length-1].split(",");if(2===s.length){const t="base64"===s[0],r=s[1];t?(e.splice(-1,1),i=pu(r)):i=function(e){const t=mu(e).subarray(0,16),i=new Uint8Array(16);return i.set(t,16-t.length),i}(r)}}return i}function mu(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(e=>e.charCodeAt(0)))}const gu="undefined"!=typeof self?self:void 0;var yu={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},Au="org.w3.clearkey",bu="com.apple.streamingkeydelivery",vu="com.microsoft.playready",_u="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function wu(e){switch(e){case bu:return yu.FAIRPLAY;case vu:return yu.PLAYREADY;case _u:return yu.WIDEVINE;case Au:return yu.CLEARKEY}}var Su="edef8ba979d64acea3c827dcd51d21ed";function Eu(e){switch(e){case yu.FAIRPLAY:return bu;case yu.PLAYREADY:return vu;case yu.WIDEVINE:return _u;case yu.CLEARKEY:return Au}}function Tu(e){const{drmSystems:t,widevineLicenseUrl:i}=e,s=t?[yu.FAIRPLAY,yu.WIDEVINE,yu.PLAYREADY,yu.CLEARKEY].filter((e=>!!t[e])):[];return!s[yu.WIDEVINE]&&i&&s.push(yu.WIDEVINE),s}const ku=null!=gu&&null!=(Lu=gu.navigator)&&Lu.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var Lu;function Cu(e,t,i){return Uint8Array.prototype.slice?e.slice(t,i):new Uint8Array(Array.prototype.slice.call(e,t,i))}const xu=(e,t)=>t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,Du=(e,t)=>t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,Ru=(e,t)=>{const i=t;let s=0;for(;xu(e,t);){s+=10;s+=Iu(e,t+6),Du(e,t+10)&&(s+=10),t+=s}if(s>0)return e.subarray(i,i+s)},Iu=(e,t)=>{let i=0;return i=(127&e[t])<<21,i|=(127&e[t+1])<<14,i|=(127&e[t+2])<<7,i|=127&e[t+3],i},Pu=(e,t)=>xu(e,t)&&Iu(e,t+6)+10<=e.length-t,Bu=e=>{const t=Uu(e);for(let e=0;ee&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info,Fu=e=>{const t=String.fromCharCode(e[0],e[1],e[2],e[3]),i=Iu(e,4);return{type:t,size:i,data:e.subarray(10,10+i)}},Uu=e=>{let t=0;const i=[];for(;xu(e,t);){const s=Iu(e,t+6);t+=10;const r=t+s;for(;t+8"PRIV"===e.type?Nu(e):"W"===e.type[0]?Gu(e):ju(e),Nu=e=>{if(e.size<2)return;const t=zu(e.data,!0),i=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:i.buffer}},ju=e=>{if(e.size<2)return;if("TXXX"===e.type){let t=1;const i=zu(e.data.subarray(t),!0);t+=i.length+1;const s=zu(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=zu(e.data.subarray(1));return{key:e.type,data:t}},Gu=e=>{if("WXXX"===e.type){if(e.size<2)return;let t=1;const i=zu(e.data.subarray(t),!0);t+=i.length+1;const s=zu(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=zu(e.data);return{key:e.type,data:t}},Wu=e=>{if(8===e.data.byteLength){const t=new Uint8Array(e.data),i=1&t[3];let s=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return s/=45,i&&(s+=47721858.84),Math.round(s)}},zu=(e,t=!1)=>{const i=Vu();if(i){const s=i.decode(e);if(t){const e=s.indexOf("\0");return-1!==e?s.substring(0,e):s}return s.replace(/\0/g,"")}const s=e.length;let r,o,a,n="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(r);break;case 12:case 13:o=e[l++],n+=String.fromCharCode((31&r)<<6|63&o);break;case 14:o=e[l++],a=e[l++],n+=String.fromCharCode((15&r)<<12|(63&o)<<6|(63&a)<<0)}}return n};let $u;function Vu(){if(!navigator.userAgent.includes("PlayStation 4"))return $u||void 0===self.TextDecoder||($u=new self.TextDecoder("utf-8")),$u}const Hu=function(e){let t="";for(let i=0;i>24,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i}function ip(e,t){const i=[];if(!t.length)return i;const s=e.byteLength;for(let r=0;r1?r+o:s;if(Yu(e.subarray(r+4,r+8))===t[0])if(1===t.length)i.push(e.subarray(r+8,a));else{const s=ip(e.subarray(r+8,a),t.slice(1));s.length&&qu.apply(i,s)}r=a}return i}function sp(e){const t=[],i=e[0];let s=8;const r=Xu(e,s);s+=4;let o=0,a=0;0===i?(o=Xu(e,s),a=Xu(e,s+4),s+=8):(o=Zu(e,s),a=Zu(e,s+8),s+=16),s+=2;let n=e.length+a;const l=Qu(e,s);s+=2;for(let i=0;i>>31)return Zc.warn("SIDX has hierarchical references (not supported)"),null;const l=Xu(e,i);i+=4,t.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/r,start:n,end:n+a-1}}),n+=a,i+=4,s=i}return{earliestPresentationTime:o,timescale:r,version:i,referencesCount:l,references:t}}function rp(e){const t=[],i=ip(e,["moov","trak"]);for(let e=0;e{const i=Xu(e,4),s=t[i];s&&(s.default={duration:Xu(e,12),flags:Xu(e,20)})})),t}function op(e){const t=e.subarray(8),i=t.subarray(86),s=Yu(t.subarray(4,8));let r=s;const o="enca"===s||"encv"===s;if(o){const e=ip(t,[s])[0];ip(e.subarray("enca"===s?28:78),["sinf"]).forEach((e=>{const t=ip(e,["schm"])[0];if(t){const i=Yu(t.subarray(4,8));if("cbcs"===i||"cenc"===i){const t=ip(e,["frma"])[0];t&&(r=Yu(t))}}}))}switch(r){case"avc1":case"avc2":case"avc3":case"avc4":{const e=ip(i,["avcC"])[0];r+="."+np(e[1])+np(e[2])+np(e[3]);break}case"mp4a":{const e=ip(t,[s])[0],i=ip(e.subarray(28),["esds"])[0];if(i&&i.length>12){let e=4;if(3!==i[e++])break;e=ap(i,e),e+=2;const t=i[e++];if(128&t&&(e+=2),64&t&&(e+=i[e++]),4!==i[e++])break;e=ap(i,e);const s=i[e++];if(64!==s)break;if(r+="."+np(s),e+=12,5!==i[e++])break;e=ap(i,e);const o=i[e++];let a=(248&o)>>3;31===a&&(a+=1+((7&o)<<3)+((224&i[e])>>5)),r+="."+a}break}case"hvc1":case"hev1":{const e=ip(i,["hvcC"])[0],t=e[1],s=["","A","B","C"][t>>6],o=31&t,a=Xu(e,2),n=(32&t)>>5?"H":"L",l=e[12],d=e.subarray(6,12);r+="."+s+o,r+="."+a.toString(16).toUpperCase(),r+="."+n+l;let h="";for(let e=d.length;e--;){const t=d[e];if(t||h){h="."+t.toString(16).toUpperCase()+h}}r+=h;break}case"dvh1":case"dvhe":{const e=ip(i,["dvcC"])[0],t=e[2]>>1&127,s=e[2]<<5&32|e[3]>>3&31;r+="."+lp(t)+"."+lp(s);break}case"vp09":{const e=ip(i,["vpcC"])[0],t=e[4],s=e[5],o=e[6]>>4&15;r+="."+lp(t)+"."+lp(s)+"."+lp(o);break}case"av01":{const e=ip(i,["av1C"])[0],t=e[1]>>>5,s=31&e[1],o=e[2]>>>7?"H":"M",a=(64&e[2])>>6,n=(32&e[2])>>5,l=2===t&&a?n?12:10:a?10:8,d=(16&e[2])>>4,h=(8&e[2])>>3,c=(4&e[2])>>2,u=3&e[2],p=1,f=1,m=1,g=0;r+="."+t+"."+lp(s)+o+"."+lp(l)+"."+d+"."+h+c+u+"."+lp(p)+"."+lp(f)+"."+lp(m)+"."+g;break}}return{codec:r,encrypted:o}}function ap(e,t){const i=t+5;for(;128&e[t++]&&t{const l=n.byteOffset-8;ip(n,["traf"]).map((n=>{const d=ip(n,["tfdt"]).map((e=>{const t=e[0];let i=Xu(e,4);return 1===t&&(i*=Math.pow(2,32),i+=Xu(e,8)),i/r}))[0];return void 0!==d&&(e=d),ip(n,["tfhd"]).map((d=>{const h=Xu(d,4),c=16777215&Xu(d,0);let u=0;const p=0!=(16&c);let f=0;const m=0!=(32&c);let g=8;h===o&&(0!=(1&c)&&(g+=8),0!=(2&c)&&(g+=4),0!=(8&c)&&(u=Xu(d,g),g+=4),p&&(f=Xu(d,g),g+=4),m&&(g+=4),"video"===t.type&&(a=function(e){if(!e)return!1;const t=e.indexOf("."),i=t<0?e:e.substring(0,t);return"hvc1"===i||"hev1"===i||"dvh1"===i||"dvhe"===i}(t.codec)),ip(n,["trun"]).map((o=>{const n=o[0],d=16777215&Xu(o,0),h=0!=(1&d);let c=0;const p=0!=(4&d),m=0!=(256&d);let g=0;const y=0!=(512&d);let A=0;const b=0!=(1024&d),v=0!=(2048&d);let _=0;const w=Xu(o,4);let S=8;h&&(c=Xu(o,S),S+=4),p&&(S+=4);let E=c+l;for(let l=0;l>1&63;return 39===e||40===e}return 6===(31&t)}function fp(e,t,i,s){const r=mp(e);let o=0;o+=t;let a=0,n=0,l=0;for(;o=r.length)break;l=r[o++],a+=l}while(255===l);n=0;do{if(o>=r.length)break;l=r[o++],n+=l}while(255===l);const e=r.length-o;let t=o;if(ne){Zc.error(`Malformed SEI payload. ${n} is too small, only ${e} bytes left to parse.`);break}if(4===a){if(181===r[t++]){const e=Qu(r,t);if(t+=2,49===e){const e=Xu(r,t);if(t+=4,1195456820===e){const e=r[t++];if(3===e){const o=r[t++],n=31&o,l=64&o,d=l?2+3*n:0,h=new Uint8Array(d);if(l){h[0]=o;for(let e=1;e16){const e=[];for(let i=0;i<16;i++){const s=r[t++].toString(16);e.push(1==s.length?"0"+s:s),3!==i&&5!==i&&7!==i&&9!==i||e.push("-")}const o=n-16,l=new Uint8Array(o);for(let e=0;e0?(o=new Uint8Array(4),t.length>0&&new DataView(o.buffer).setUint32(0,t.length,!1)):o=new Uint8Array;const a=new Uint8Array(4);return i&&i.byteLength>0&&new DataView(a.buffer).setUint32(0,i.byteLength,!1),function(e,...t){const i=t.length;let s=8,r=i;for(;r--;)s+=t[r].byteLength;const o=new Uint8Array(s);for(o[0]=s>>24&255,o[1]=s>>16&255,o[2]=s>>8&255,o[3]=255&s,o.set(e,4),r=0,s=8;r>8*(15-i)&255;return t}(e);return new Ap(this.method,this.uri,"identity",this.keyFormatVersions,t)}const t=fu(this.uri);if(t)switch(this.keyFormat){case _u:this.pssh=t,t.length>=22&&(this.keyId=t.subarray(t.length-22,t.length-6));break;case vu:{const e=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=gp(e,null,t);const i=new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2),s=String.fromCharCode.apply(null,Array.from(i)),r=s.substring(s.indexOf("<"),s.length),o=(new DOMParser).parseFromString(r,"text/xml").getElementsByTagName("KID")[0];if(o){const e=o.childNodes[0]?o.childNodes[0].nodeValue:o.getAttribute("VALUE");if(e){const t=pu(e).subarray(0,16);!function(e){const t=function(e,t,i){const s=e[t];e[t]=e[i],e[i]=s};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}(t),this.keyId=t}}break}default:{let e=t.subarray(0,16);if(16!==e.length){const t=new Uint8Array(16);t.set(e,16-e.length),e=t}this.keyId=e;break}}if(!this.keyId||16!==this.keyId.byteLength){let e=yp[this.uri];if(!e){const t=Object.keys(yp).length%Number.MAX_SAFE_INTEGER;e=new Uint8Array(16);new DataView(e.buffer,12,4).setUint32(0,t),yp[this.uri]=e}this.keyId=e}return this}}const bp=/\{\$([a-zA-Z0-9-_]+)\}/g;function vp(e){return bp.test(e)}function _p(e,t,i){if(null!==e.variableList||e.hasVariableRefs)for(let s=i.length;s--;){const r=i[s],o=t[r];o&&(t[r]=wp(e,o))}}function wp(e,t){if(null!==e.variableList||e.hasVariableRefs){const i=e.variableList;return t.replace(bp,(t=>{const s=t.substring(2,t.length-1),r=null==i?void 0:i[s];return void 0===r?(e.playlistParsingError||(e.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${s}"`)),t):r}))}return t}function Sp(e,t,i){let s,r,o=e.variableList;if(o||(e.variableList=o={}),"QUERYPARAM"in t){s=t.QUERYPARAM;try{const e=new self.URL(i).searchParams;if(!e.has(s))throw new Error(`"${s}" does not match any query parameter in URI: "${i}"`);r=e.get(s)}catch(t){e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${t.message}`))}}else s=t.NAME,r=t.VALUE;s in o?e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${s}"`)):o[s]=r||""}function Ep(e,t,i){const s=t.IMPORT;if(i&&s in i){let t=e.variableList;t||(e.variableList=t={}),t[s]=i[s]}else e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${s}"`))}function Tp(e=!0){if("undefined"==typeof self)return;return(e||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const kp={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 Lp(e,t,i=!0){return!e.split(",").some((e=>!Cp(e,t,i)))}function Cp(e,t,i=!0){var s;const r=Tp(i);return null!=(s=null==r?void 0:r.isTypeSupported(xp(e,t)))&&s}function xp(e,t){return`${t}/mp4;codecs="${e}"`}function Dp(e){if(e){const t=e.substring(0,4);return kp.video[t]}return 2}function Rp(e){return e.split(",").reduce(((e,t)=>{const i=kp.video[t];return i?(2*i+e)/(e?3:2):(kp.audio[t]+e)/(e?2:1)}),0)}const Ip={};const Pp=/flac|opus/i;function Bp(e,t=!0){return e.replace(Pp,(e=>function(e,t=!0){if(Ip[e])return Ip[e];const i={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[e];for(let s=0;s0&&s.length({id:e.attrs.AUDIO,audioCodec:e.audioCodec}))),SUBTITLES:o.map((e=>({id:e.attrs.SUBTITLES,textCodec:e.textCodec}))),"CLOSED-CAPTIONS":[]};let n=0;for(Up.lastIndex=0;null!==(s=Up.exec(e));){const e=new iu(s[1]),o=e.TYPE;if(o){const s=a[o],l=r[o]||[];r[o]=l,_p(i,e,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const d=e.LANGUAGE,h=e["ASSOC-LANGUAGE"],c=e.CHANNELS,u=e.CHARACTERISTICS,p=e["INSTREAM-ID"],f={attrs:e,bitrate:0,id:n++,groupId:e["GROUP-ID"]||"",name:e.NAME||d||"",type:o,default:e.bool("DEFAULT"),autoselect:e.bool("AUTOSELECT"),forced:e.bool("FORCED"),lang:d,url:e.URI?Gp.resolve(e.URI,t):""};if(h&&(f.assocLang=h),c&&(f.channels=c),u&&(f.characteristics=u),p&&(f.instreamId=p),null!=s&&s.length){const e=Gp.findGroup(s,f.groupId)||s[0];Vp(f,e,"audioCodec"),Vp(f,e,"textCodec")}l.push(f)}}return r}static parseLevelPlaylist(e,t,i,s,r,o){const a=new uu(t),n=a.fragments;let l,d,h,c=null,u=0,p=0,f=0,m=0,g=null,y=new hu(s,t),A=-1,b=!1,v=null;for(Np.lastIndex=0,a.m3u8=e,a.hasVariableRefs=vp(e);null!==(l=Np.exec(e));){b&&(b=!1,y=new hu(s,t),y.start=f,y.sn=u,y.cc=m,y.level=i,c&&(y.initSegment=c,y.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,v&&(y.setByteRange(v),v=null)));const e=l[1];if(e){y.duration=parseFloat(e);const t=(" "+l[2]).slice(1);y.title=t||null,y.tagList.push(t?["INF",e,t]:["INF",e])}else if(l[3]){if(zc(y.duration)){y.start=f,h&&qp(y,h,a),y.sn=u,y.level=i,y.cc=m,n.push(y);const e=(" "+l[3]).slice(1);y.relurl=wp(a,e),Hp(y,g),g=y,f+=y.duration,u++,p=0,b=!0}}else if(l[4]){const e=(" "+l[4]).slice(1);g?y.setByteRange(e,g):y.setByteRange(e)}else if(l[5])y.rawProgramDateTime=(" "+l[5]).slice(1),y.tagList.push(["PROGRAM-DATE-TIME",y.rawProgramDateTime]),-1===A&&(A=n.length);else{if(l=l[0].match(jp),!l){Zc.warn("No matches on slow regex match for level playlist!");continue}for(d=1;d0&&e.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=e.optionalFloat("PART-HOLD-BACK",0),a.holdBack=e.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const e=new iu(r);a.partTarget=e.decimalFloatingPoint("PART-TARGET");break}case"PART":{let e=a.partList;e||(e=a.partList=[]);const i=p>0?e[e.length-1]:void 0,s=p++,o=new iu(r);_p(a,o,["BYTERANGE","URI"]);const n=new cu(o,y,t,s,i);e.push(n),y.duration+=n.duration;break}case"PRELOAD-HINT":{const e=new iu(r);_p(a,e,["URI"]),a.preloadHint=e;break}case"RENDITION-REPORT":{const e=new iu(r);_p(a,e,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(e);break}default:Zc.warn(`line parsed but not handled: ${l}`)}}}g&&!g.relurl?(n.pop(),f-=g.duration,a.partList&&(a.fragmentHint=g)):a.partList&&(Hp(y,g),y.cc=m,a.fragmentHint=y,h&&qp(y,h,a));const _=n.length,w=n[0],S=n[_-1];if(f+=a.skippedSegments*a.targetduration,f>0&&_&&S){a.averagetargetduration=f/_;const e=S.sn;a.endSN="initSegment"!==e?e:0,a.live||(S.endList=!0),w&&(a.startCC=w.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(f+=a.fragmentHint.duration),a.totalduration=f,a.endCC=m,A>0&&function(e,t){let i=e[t];for(let s=t;s--;){const t=e[s];if(!t)return;t.programDateTime=i.programDateTime-1e3*t.duration,i=t}}(n,A),a}}function Wp(e,t,i){var s,r;const o=new iu(e);_p(i,o,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(s=o.METHOD)?s:"",n=o.URI,l=o.hexadecimalInteger("IV"),d=o.KEYFORMATVERSIONS,h=null!=(r=o.KEYFORMAT)?r:"identity";n&&o.IV&&!l&&Zc.error(`Invalid IV: ${o.IV}`);const c=n?Gp.resolve(n,t):"",u=(d||"1").split("/").map(Number).filter(Number.isFinite);return new Ap(a,c,h,u,l)}function zp(e){const t=new iu(e).decimalFloatingPoint("TIME-OFFSET");return zc(t)?t:null}function $p(e,t){let i=(e||"").split(/[ ,]+/).filter((e=>e));["video","audio","text"].forEach((e=>{const s=i.filter((t=>function(e,t){const i=kp[t];return!!i&&!!i[e.slice(0,4)]}(t,e)));s.length&&(t[`${e}Codec`]=s.join(","),i=i.filter((e=>-1===s.indexOf(e))))})),t.unknownCodecs=i}function Vp(e,t,i){const s=t[i];s&&(e[i]=s)}function Hp(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),zc(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function Jp(e,t,i,s){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=i,e.sn="initSegment",s&&(e.levelkeys=s),e.initSegment=null}function qp(e,t,i){e.levelkeys=t;const{encryptedFragments:s}=i;s.length&&s[s.length-1].levelkeys===t||!Object.keys(t).some((e=>t[e].isCommonEncryption))||s.push(e)}var Kp="manifest",Yp="level",Qp="audioTrack",Xp="subtitleTrack",Zp="main",ef="audio",tf="subtitle";function sf(e){const{type:t}=e;switch(t){case Qp:return ef;case Xp:return tf;default:return Zp}}function rf(e,t){let i=e.url;return void 0!==i&&0!==i.indexOf("data:")||(i=t.url),i}class of{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:e}=this;e.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Hc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Hc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(Hc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:e}=this;e.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Hc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Hc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(Hc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(e){const t=this.hls.config,i=t.pLoader,s=t.loader,r=new(i||s)(t);return this.loaders[e.type]=r,r}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(const e in this.loaders){const t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){const{url:i}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:Kp,url:i,deliveryDirectives:null})}onLevelLoading(e,t){const{id:i,level:s,pathwayId:r,url:o,deliveryDirectives:a}=t;this.load({id:i,level:s,pathwayId:r,responseType:"text",type:Yp,url:o,deliveryDirectives:a})}onAudioTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:Qp,url:r,deliveryDirectives:o})}onSubtitleTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:Xp,url:r,deliveryDirectives:o})}load(e){var t;const i=this.hls.config;let s,r=this.getInternalLoader(e);if(r){const t=r.context;if(t&&t.url===e.url&&t.level===e.level)return void Zc.trace("[playlist-loader]: playlist request ongoing");Zc.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),r.abort()}if(s=e.type===Kp?i.manifestLoadPolicy.default:Wc({},i.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),r=this.createInternalLoader(e),zc(null==(t=e.deliveryDirectives)?void 0:t.part)){let t;if(e.type===Yp&&null!==e.level?t=this.hls.levels[e.level].details:e.type===Qp&&null!==e.id?t=this.hls.audioTracks[e.id].details:e.type===Xp&&null!==e.id&&(t=this.hls.subtitleTracks[e.id].details),t){const e=t.partTarget,i=t.targetduration;if(e&&i){const t=1e3*Math.max(3*e,.8*i);s=Wc({},s,{maxTimeToFirstByteMs:Math.min(t,s.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(t,s.maxTimeToFirstByteMs)})}}}const o=s.errorRetry||s.timeoutRetry||{},a={loadPolicy:s,timeout:s.maxLoadTimeMs,maxRetry:o.maxNumRetry||0,retryDelay:o.retryDelayMs||0,maxRetryDelay:o.maxRetryDelayMs||0},n={onSuccess:(e,t,i,s)=>{const r=this.getInternalLoader(i);this.resetInternalLoader(i.type);const o=e.data;0===o.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),Gp.isMediaPlaylist(o)?this.handleTrackOrLevelPlaylist(e,t,i,s||null,r):this.handleMasterPlaylist(e,t,i,s)):this.handleManifestParsingError(e,i,new Error("no EXTM3U delimiter"),s||null,t)},onError:(e,t,i,s)=>{this.handleNetworkError(t,i,!1,e,s)},onTimeout:(e,t,i)=>{this.handleNetworkError(t,i,!0,void 0,e)}};r.load(e,a,n)}handleMasterPlaylist(e,t,i,s){const r=this.hls,o=e.data,a=rf(e,i),n=Gp.parseMasterPlaylist(o,a);if(n.playlistParsingError)return void this.handleManifestParsingError(e,i,n.playlistParsingError,s,t);const{contentSteering:l,levels:d,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p}=n;this.variableList=p;const{AUDIO:f=[],SUBTITLES:m,"CLOSED-CAPTIONS":g}=Gp.parseMasterPlaylistMedia(o,a,n);if(f.length){f.some((e=>!e.url))||!d[0].audioCodec||d[0].attrs.AUDIO||(Zc.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),f.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new iu({}),bitrate:0,url:""}))}r.trigger(Hc.MANIFEST_LOADED,{levels:d,audioTracks:f,subtitles:m,captions:g,contentSteering:l,url:a,stats:t,networkDetails:s,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p})}handleTrackOrLevelPlaylist(e,t,i,s,r){const o=this.hls,{id:a,level:n,type:l}=i,d=rf(e,i),h=zc(n)?n:zc(a)?a:0,c=sf(i),u=Gp.parseLevelPlaylist(e.data,d,h,c,0,this.variableList);if(l===Kp){const e={attrs:new iu({}),bitrate:0,details:u,name:"",url:d};o.trigger(Hc.MANIFEST_LOADED,{levels:[e],audioTracks:[],url:d,stats:t,networkDetails:s,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=u,this.handlePlaylistLoaded(u,e,t,i,s,r)}handleManifestParsingError(e,t,i,s,r){this.hls.trigger(Hc.ERROR,{type:Jc.NETWORK_ERROR,details:qc.MANIFEST_PARSING_ERROR,fatal:t.type===Kp,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:s,stats:r})}handleNetworkError(e,t,i=!1,s,r){let o=`A network ${i?"timeout":"error"+(s?" (status "+s.code+")":"")} occurred while loading ${e.type}`;e.type===Yp?o+=`: ${e.level} id: ${e.id}`:e.type!==Qp&&e.type!==Xp||(o+=` id: ${e.id} group-id: "${e.groupId}"`);const a=new Error(o);Zc.warn(`[playlist-loader]: ${o}`);let n=qc.UNKNOWN,l=!1;const d=this.getInternalLoader(e);switch(e.type){case Kp:n=i?qc.MANIFEST_LOAD_TIMEOUT:qc.MANIFEST_LOAD_ERROR,l=!0;break;case Yp:n=i?qc.LEVEL_LOAD_TIMEOUT:qc.LEVEL_LOAD_ERROR,l=!1;break;case Qp:n=i?qc.AUDIO_TRACK_LOAD_TIMEOUT:qc.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case Xp:n=i?qc.SUBTITLE_TRACK_LOAD_TIMEOUT:qc.SUBTITLE_LOAD_ERROR,l=!1}d&&this.resetInternalLoader(e.type);const h={type:Jc.NETWORK_ERROR,details:n,fatal:l,url:e.url,loader:d,context:e,error:a,networkDetails:t,stats:r};if(s){const i=(null==t?void 0:t.url)||e.url;h.response=Nc({url:i,data:void 0},s)}this.hls.trigger(Hc.ERROR,h)}handlePlaylistLoaded(e,t,i,s,r,o){const a=this.hls,{type:n,level:l,id:d,groupId:h,deliveryDirectives:c}=s,u=rf(t,s),p=sf(s),f="number"==typeof s.level&&p===Zp?l:void 0;if(!e.fragments.length){const e=new Error("No Segments found in Playlist");return void a.trigger(Hc.ERROR,{type:Jc.NETWORK_ERROR,details:qc.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:e,reason:e.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i})}e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));const m=e.playlistParsingError;if(m)a.trigger(Hc.ERROR,{type:Jc.NETWORK_ERROR,details:qc.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i});else switch(e.live&&o&&(o.getCacheAge&&(e.ageHeader=o.getCacheAge()||0),o.getCacheAge&&!isNaN(e.ageHeader)||(e.ageHeader=0)),n){case Kp:case Yp:a.trigger(Hc.LEVEL_LOADED,{details:e,level:f||0,id:d||0,stats:i,networkDetails:r,deliveryDirectives:c});break;case Qp:a.trigger(Hc.AUDIO_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c});break;case Xp:a.trigger(Hc.SUBTITLE_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c})}}}function af(e,t){let i;try{i=new Event("addtrack")}catch(e){i=document.createEvent("Event"),i.initEvent("addtrack",!1,!1)}i.track=e,t.dispatchEvent(i)}function nf(e,t){const 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){Zc.debug(`[texttrack-utils]: ${i}`);try{const i=new self.TextTrackCue(t.startTime,t.endTime,t.text);i.id=t.id,e.addCue(i)}catch(e){Zc.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${e}`)}}"disabled"===i&&(e.mode=i)}function lf(e){const t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(let t=e.cues.length;t--;)e.removeCue(e.cues[t]);"disabled"===t&&(e.mode=t)}function df(e,t,i,s){const r=e.mode;if("disabled"===r&&(e.mode="hidden"),e.cues&&e.cues.length>0){const r=function(e,t,i){const s=[],r=function(e,t){if(te[i].endTime)return-1;let s=0,r=i;for(;s<=r;){const o=Math.floor((r+s)/2);if(te[o].startTime&&s-1)for(let o=r,a=e.length;o=t&&r.endTime<=i)s.push(r);else if(r.startTime>i)return s}return s}(e.cues,t,i);for(let t=0;t{const e=ff();try{e&&new e(0,Number.POSITIVE_INFINITY,"")}catch(e){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function yf(e,t){return e.getTime()/1e3-t}class Af{constructor(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=e,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){const{hls:e}=this;e.on(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Hc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(Hc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Hc.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:e}=this;e.off(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Hc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(Hc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Hc.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(e,t){this.media=t.media}onMediaDetaching(){this.id3Track&&(lf(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){const t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;tgf&&(s=gf);s-i<=0&&(s=i+.25);for(let e=0;ee.type===cf&&n:"video"===s?e=>e.type===pf&&a:e=>e.type===cf&&n||e.type===pf&&a,df(r,t,i,e)}}onLevelUpdated(e,{details:t}){if(!this.media||!t.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:i,id3Track:s}=this,{dateRanges:r}=t,o=Object.keys(r);if(s){const e=Object.keys(i).filter((e=>!o.includes(e)));for(let t=e.length;t--;){const r=e[t];Object.keys(i[r].cues).forEach((e=>{s.removeCue(i[r].cues[e])})),delete i[r]}}const a=t.fragments[t.fragments.length-1];if(0===o.length||!zc(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const n=a.programDateTime/1e3-a.start,l=ff();for(let e=0;e{if(t!==s.id){const i=r[t];if(i.class===s.class&&i.startDate>s.startDate&&(!e||s.startDatethis.timeupdate(),this.hls=e,this.config=e.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:e,levelDetails:t}=this;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){const{levelDetails:e}=this;if(null===e)return null;const{holdBack:t,partHoldBack:i,targetduration:s}=e,{liveSyncDuration:r,liveSyncDurationCount:o,lowLatencyMode:a}=this.config,n=this.hls.userConfig;let l=a&&i||t;(n.liveSyncDuration||n.liveSyncDurationCount||0===l)&&(l=void 0!==r?r:o*s);const d=s;return l+Math.min(1*this.stallCount,d)}get liveSyncPosition(){const e=this.estimateLiveEdge(),t=this.targetLatency,i=this.levelDetails;if(null===e||null===t||null===i)return null;const s=i.edge,r=e-t-this.edgeStalled,o=s-i.totalduration,a=s-(this.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(o,r),a)}get drift(){const{levelDetails:e}=this;return null===e?1:e.drift}get edgeStalled(){const{levelDetails:e}=this;if(null===e)return 0;const t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}get forwardBufferLength(){const{media:e,levelDetails:t}=this;if(!e||!t)return 0;const i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Hc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(Hc.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Hc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(Hc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(e,{details:t}){this.levelDetails=t,t.advanced&&this.timeupdate(),!t.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(e,t){var i;t.details===qc.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(i=this.levelDetails)&&i.live&&Zc.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:e,levelDetails:t}=this;if(!e||!t)return;this.currentTime=e.currentTime;const i=this.computeLatency();if(null===i)return;this._latency=i;const{lowLatencyMode:s,maxLiveSyncPlaybackRate:r}=this.config;if(!s||1===r||!t.live)return;const o=this.targetLatency;if(null===o)return;const a=i-o;if(a.05&&this.forwardBufferLength>1){const t=Math.min(2,Math.max(1,r)),i=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;e.playbackRate=Math.min(t,Math.max(1,i))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}estimateLiveEdge(){const{levelDetails:e}=this;return null===e?null:e.edge+e.age}computeLatency(){const e=this.estimateLiveEdge();return null===e?null:e-this.currentTime}}const vf=["NONE","TYPE-0","TYPE-1",null];const _f=["SDR","PQ","HLG"];var wf="",Sf="YES",Ef="v2";function Tf(e){const{canSkipUntil:t,canSkipDateRanges:i,age:s}=e;return t&&s!!e)).map((e=>e.substring(0,4))).join(","),this.addGroupId("audio",e.attrs.AUDIO),this.addGroupId("text",e.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(e){return Cf(this._audioGroups,e)}hasSubtitleGroup(e){return Cf(this._subtitleGroups,e)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(e,t){if(t)if("audio"===e){let e=this._audioGroups;e||(e=this._audioGroups=[]),-1===e.indexOf(t)&&e.push(t)}else if("text"===e){let e=this._subtitleGroups;e||(e=this._subtitleGroups=[]),-1===e.indexOf(t)&&e.push(t)}}get urlId(){return 0}set urlId(e){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var e;return null==(e=this.audioGroups)?void 0:e[0]}get textGroupId(){var e;return null==(e=this.subtitleGroups)?void 0:e[0]}addFallback(){}}function Cf(e,t){return!(!t||!e)&&-1!==e.indexOf(t)}function xf(e,t){const i=t.startPTS;if(zc(i)){let s,r=0;t.sn>e.sn?(r=i-e.start,s=e):(r=e.start-i,s=t),s.duration!==r&&(s.duration=r)}else if(t.sn>e.sn){e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration}else t.start=Math.max(e.start-t.duration,0)}function Df(e,t,i,s,r,o){s-i<=0&&(Zc.warn("Fragment should have a positive duration",t),s=i+t.duration,o=r+t.duration);let a=i,n=s;const l=t.startPTS,d=t.endPTS;if(zc(l)){const e=Math.abs(l-i);zc(t.deltaPTS)?t.deltaPTS=Math.max(e,t.deltaPTS):t.deltaPTS=e,a=Math.max(i,l),i=Math.min(i,l),r=Math.min(r,t.startDTS),n=Math.min(s,d),s=Math.max(s,d),o=Math.max(o,t.endDTS)}const h=i-t.start;0!==t.start&&(t.start=i),t.duration=s-t.start,t.startPTS=i,t.maxStartPTS=a,t.startDTS=r,t.endPTS=s,t.minEndPTS=n,t.endDTS=o;const c=t.sn;if(!e||ce.endSN)return 0;let u;const p=c-e.startSN,f=e.fragments;for(f[p]=t,u=p;u>0;u--)xf(f[u],f[u-1]);for(u=p;u=0;e--){const t=s[e].initSegment;if(t){i=t;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;let r,o=0;if(function(e,t,i){const s=t.skippedSegments,r=Math.max(e.startSN,t.startSN)-t.startSN,o=(e.fragmentHint?1:0)+(s?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,a=t.startSN-e.startSN,n=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments;for(let e=r;e<=o;e++){const r=l[a+e];let o=n[e];s&&!o&&e{e.relurl&&(o=e.cc-s.cc),zc(e.startPTS)&&zc(e.endPTS)&&(s.start=s.startPTS=e.startPTS,s.startDTS=e.startDTS,s.maxStartPTS=e.maxStartPTS,s.endPTS=e.endPTS,s.endDTS=e.endDTS,s.minEndPTS=e.minEndPTS,s.duration=e.endPTS-e.startPTS,s.duration&&(r=s),t.PTSKnown=t.alignedSliding=!0),s.elementaryStreams=e.elementaryStreams,s.loader=e.loader,s.stats=e.stats,e.initSegment&&(s.initSegment=e.initSegment,i=e.initSegment)})),i){(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((e=>{var t;!e||e.initSegment&&e.initSegment.relurl!==(null==(t=i)?void 0:t.relurl)||(e.initSegment=i)}))}if(t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((e=>!e)),t.deltaUpdateFailed){Zc.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let e=t.skippedSegments;e--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=function(e,t,i){const s=Wc({},e);i&&i.forEach((e=>{delete s[e]}));return Object.keys(t).forEach((e=>{const i=new ru(t[e].attr,s[e]);i.isValid?s[e]=i:Zc.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(t[e].attr)}"`)})),s}(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));const a=t.fragments;if(o){Zc.warn("discontinuity sliding from playlist, take drift into account");for(let e=0;e{t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),r?Df(t,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):If(e,t),a.length&&(t.totalduration=t.edge-a[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;const n=t.advancedDateTime;if(t.advanced&&n){const e=t.edge;t.driftStart||(t.driftStartTime=n,t.driftStart=e),t.driftEndTime=n,t.driftEnd=e}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function If(e,t){const i=t.startSN+t.skippedSegments-e.startSN,s=e.fragments;i<0||i>=s.length||Pf(t,s[i].start)}function Pf(e,t){if(t){const i=e.fragments;for(let s=e.skippedSegments;s{const{details:i}=e;null!=i&&i.fragments&&i.fragments.forEach((e=>{e.level=t}))}))}function Uf(e){switch(e.details){case qc.FRAG_LOAD_TIMEOUT:case qc.KEY_LOAD_TIMEOUT:case qc.LEVEL_LOAD_TIMEOUT:case qc.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function Of(e,t){const i=Uf(t);return e.default[(i?"timeout":"error")+"Retry"]}function Nf(e,t){const i="linear"===e.backoff?1:Math.pow(2,t);return Math.min(i*e.retryDelayMs,e.maxRetryDelayMs)}function jf(e){return Nc(Nc({},e),{errorRetry:null,timeoutRetry:null})}function Gf(e,t,i,s){if(!e)return!1;const r=null==s?void 0:s.code,o=t499)}(r)||!!i);return e.shouldRetry?e.shouldRetry(e,t,i,s,o):o}const Wf=function(e,t){let i=0,s=e.length-1,r=null,o=null;for(;i<=s;){r=(i+s)/2|0,o=e[r];const a=t(o);if(a>0)i=r+1;else{if(!(a<0))return o;s=r-1}}return null};function zf(e,t,i=0,s=0,r=.005){let o=null;if(e){o=t[e.sn-t[0].sn+1]||null;const s=e.endDTS-i;s>0&&s<15e-7&&(i+=15e-7)}else 0===i&&0===t[0].start&&(o=t[0]);if(o&&((!e||e.level===o.level)&&0===$f(i,s,o)||function(e,t,i){if(t&&0===t.start&&t.level0){const s=t.tagList.reduce(((e,t)=>("INF"===t[0]&&(e+=parseFloat(t[1])),e)),i);return e.start<=s}return!1}(o,e,Math.min(r,s))))return o;const a=Wf(t,$f.bind(null,i,s));return!a||a===e&&o?o:a}function $f(e=0,t=0,i){if(i.start<=e&&i.start+i.duration>e)return 0;const s=Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return i.start+i.duration-s<=e?1:i.start-s>e&&i.start?-1:0}function Vf(e,t,i){const s=1e3*Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return(i.endProgramDateTime||0)-s>e}var Hf=0,Jf=2,qf=3,Kf=5,Yf=0,Qf=1,Xf=2;class Zf{constructor(e,t){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=Zc.log.bind(Zc,`${t}:`),this.warn=Zc.warn.bind(Zc,`${t}:`),this.hls=e}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(e,t,i){const s=null==t?void 0:t.renditionReports;if(s){let r=-1;for(let i=0;i=0&&e>t.partTarget&&(a+=1)}const n=i&&Tf(i);return new kf(o,a>=0?a:void 0,n)}}}loadPlaylist(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}shouldReloadPlaylist(e){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(e)}playlistLoaded(e,t,i){const{details:s,stats:r}=t,o=self.performance.now(),a=r.loading.first?Math.max(0,o-r.loading.first):0;if(s.advancedDateTime=Date.now()-a,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&&Rf(i,s),!this.canLoad||!s.live)return;let a,n,l;if(s.canBlockReload&&s.endSN&&s.advanced){const e=this.hls.config.lowLatencyMode,r=s.lastPartSn,o=s.endSN,d=s.lastPartIndex,h=r===o,c=e?0:d;-1!==d?(n=h?o+1:r,l=h?c:d+1):n=o+1;const u=s.age,p=u+s.ageHeader;let f=Math.min(p-s.partTarget,1.5*s.targetduration);if(f>0){if(i&&f>i.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${i.tuneInGoal} to: ${f} with playlist age: ${s.age}`),f=0;else{const e=Math.floor(f/s.targetduration);if(n+=e,void 0!==l){l+=Math.round(f%s.targetduration/s.partTarget)}this.log(`CDN Tune-in age: ${s.ageHeader}s last advanced ${u.toFixed(2)}s goal: ${f} skip sn ${e} to part ${l}`)}s.tuneInGoal=f}if(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l),e||!h)return void this.loadPlaylist(a)}else(s.canBlockReload||s.canSkipUntil)&&(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l));const d=this.hls.mainForwardBufferInfo,h=d?d.end-d.len:0,c=function(e,t=1/0){let i=1e3*e.targetduration;if(e.updated){const s=e.fragments,r=4;if(s.length&&i*r>t){const e=1e3*s[s.length-1].duration;ethis.requestScheduled+c&&(this.requestScheduled=r.loading.start),void 0!==n&&s.canBlockReload?this.requestScheduled=r.loading.first+c-(1e3*s.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+cthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(e,t,i,s){let r=Tf(e);return null!=t&&t.skip&&e.deltaUpdateFailed&&(i=t.msn,s=t.part,r=wf),new kf(i,s,r)}checkRetry(e){const t=e.details,i=Uf(e),s=e.errorAction,{action:r,retryCount:o=0,retryConfig:a}=s||{},n=!!s&&!!a&&(r===Kf||!s.resolved&&r===Jf);if(n){var l;if(this.requestScheduled=-1,o>=a.maxNumRetry)return!1;if(i&&null!=(l=e.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{const e=Nf(a,o);this.timer=self.setTimeout((()=>this.loadPlaylist()),e),this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" in ${e}ms`)}e.levelRetry=!0,s.resolved=!0}return n}}class em{constructor(e,t=0,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}sample(e,t){const i=Math.pow(this.alpha_,e);this.estimate_=t*(1-i)+i*this.estimate_,this.totalWeight_+=e}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}}class tm{constructor(e,t,i,s=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 em(e),this.fast_=new em(t),this.defaultTTFB_=s,this.ttfb_=new em(e)}update(e,t){const{slow_:i,fast_:s,ttfb_:r}=this;i.halfLife!==e&&(this.slow_=new em(e,i.getEstimate(),i.getTotalWeight())),s.halfLife!==t&&(this.fast_=new em(t,s.getEstimate(),s.getTotalWeight())),r.halfLife!==e&&(this.ttfb_=new em(e,r.getEstimate(),r.getTotalWeight()))}sample(e,t){const i=(e=Math.max(e,this.minDelayMs_))/1e3,s=8*t/i;this.fast_.sample(i,s),this.slow_.sample(i,s)}sampleTTFB(e){const t=e/1e3,i=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(i,Math.max(e,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}destroy(){}}const im={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},sm={};function rm(e,t,i,s,r,o){const a=e.audioCodec?e.audioGroups:null,n=null==o?void 0:o.audioCodec,l=null==o?void 0:o.channels,d=l?parseInt(l):n?1/0:2;let h=null;if(null!=a&&a.length)try{h=1===a.length&&a[0]?t.groups[a[0]].channels:a.reduce(((e,i)=>{if(i){const s=t.groups[i];if(!s)throw new Error(`Audio track group ${i} not found`);Object.keys(s.channels).forEach((t=>{e[t]=(e[t]||0)+s.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(s,30)||"SDR"!==e.videoRange&&e.videoRange!==i||e.bitrate>Math.max(r,8e6))||!!h&&zc(d)&&Object.keys(h).some((e=>parseInt(e)>d))}function om(e,t,i){const s=e.videoCodec,r=e.audioCodec;if(!s||!r||!i)return Promise.resolve(im);const o={width:e.width,height:e.height,bitrate:Math.ceil(Math.max(.9*e.bitrate,e.averageBitrate)),framerate:e.frameRate||30},a=e.videoRange;"SDR"!==a&&(o.transferFunction=a.toLowerCase());const n=s.split(",").map((e=>({type:"media-source",video:Nc(Nc({},o),{},{contentType:xp(e,"video")})})));return r&&e.audioGroups&&e.audioGroups.forEach((e=>{var i;e&&(null==(i=t.groups[e])||i.tracks.forEach((t=>{if(t.groupId===e){const e=t.channels||"",i=parseFloat(e);zc(i)&&i>2&&n.push.apply(n,r.split(",").map((e=>({type:"media-source",audio:{contentType:xp(e,"audio"),channels:""+i}}))))}})))})),Promise.all(n.map((e=>{const t=function(e){const{audio:t,video:i}=e,s=i||t;if(s){const e=s.contentType.split('"')[1];if(i)return`r${i.height}x${i.width}f${Math.ceil(i.framerate)}${i.transferFunction||"sd"}_${e}_${Math.ceil(i.bitrate/1e5)}`;if(t)return`c${t.channels}${t.spatialRendering?"s":"n"}_${e}`}return""}(e);return sm[t]||(sm[t]=i.decodingInfo(e))}))).then((e=>({supported:!e.some((e=>!e.supported)),configurations:n,decodingInfoResults:e}))).catch((e=>({supported:!1,configurations:n,decodingInfoResults:[],error:e})))}function am(e,t){let i=!1,s=[];return e&&(i="SDR"!==e,s=[e]),t&&(s=t.allowedVideoRanges||_f.slice(0),i=void 0!==t.preferHDR?t.preferHDR:function(){if("function"==typeof matchMedia){const e=matchMedia("(dynamic-range: high)"),t=matchMedia("bad query");if(e.media!==t.media)return!0===e.matches}return!1}(),s=i?s.filter((e=>"SDR"!==e)):["SDR"]),{preferHDR:i,allowedVideoRanges:s}}function nm(e,t){Zc.log(`[abr] start candidates with "${e}" ignored because ${t}`)}function lm(e,t,i){if("attrs"in e){const i=t.indexOf(e);if(-1!==i)return i}for(let s=0;s-1===s.indexOf(e)))}(n,t.characteristics))&&(void 0===i||i(e,t))}function hm(e,t){const{audioCodec:i,channels:s}=e;return!(void 0!==i&&(t.audioCodec||"").substring(0,4)!==i.substring(0,4)||void 0!==s&&s!==(t.channels||"2"))}function cm(e,t,i){for(let s=t;s;s--)if(i(e[s]))return s;for(let s=t+1;s{const o=this.fragments[s];if(!o)return;if(r>=o.body.sn)return;if(!o.buffered&&!o.loaded)return void(o.body.type===i&&this.removeFragment(o.body));const a=o.range[e];a&&a.time.some((e=>{const i=!this.isTimeBuffered(e.startPTS,e.endPTS,t);return i&&this.removeFragment(o.body),i}))}))}detectPartialFragments(e){const t=this.timeRanges,{frag:i,part:s}=e;if(!t||"initSegment"===i.sn)return;const r=Am(i),o=this.fragments[r];if(!o||o.buffered&&i.gap)return;const a=!i.relurl;if(Object.keys(t).forEach((e=>{const r=i.elementaryStreams[e];if(!r)return;const n=t[e],l=a||!0===r.partial;o.range[e]=this.getBufferedTimes(i,s,l,n)})),o.loaded=null,Object.keys(o.range).length){o.buffered=!0;(o.body.endList=i.endList||o.body.endList)&&(this.endListFragments[o.body.type]=o),ym(o)||this.removeParts(i.sn-1,i.type)}else this.removeFragment(o.body)}removeParts(e,t){const i=this.activePartLists[t];i&&(this.activePartLists[t]=i.filter((t=>t.fragment.sn>=e)))}fragBuffered(e,t){const i=Am(e);let s=this.fragments[i];!s&&t&&(s=this.fragments[i]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),s&&(s.loaded=null,s.buffered=!0)}getBufferedTimes(e,t,i,s){const r={time:[],partial:i},o=e.start,a=e.end,n=e.minEndPTS||a,l=e.maxStartPTS||o;for(let e=0;e=t&&n<=i){r.time.push({startPTS:Math.max(o,s.start(e)),endPTS:Math.min(a,s.end(e))});break}if(ot){const t=Math.max(o,s.start(e)),i=Math.min(a,s.end(e));i>t&&(r.partial=!0,r.time.push({startPTS:t,endPTS:i}))}else if(a<=t)break}return r}getPartialFragment(e){let t,i,s,r=null,o=0;const{bufferPadding:a,fragments:n}=this;return Object.keys(n).forEach((l=>{const d=n[l];d&&ym(d)&&(i=d.body.start-a,s=d.body.end+a,e>=i&&e<=s&&(t=Math.min(e-i,s-e),o<=t&&(r=d.body,o=t)))})),r}isEndListAppended(e){const t=this.endListFragments[e];return void 0!==t&&(t.buffered||ym(t))}getState(e){const t=Am(e),i=this.fragments[t];return i?i.buffered?ym(i)?fm:mm:pm:um}isTimeBuffered(e,t,i){let s,r;for(let o=0;o=s&&t<=r)return!0;if(t<=s)return!1}return!1}onFragLoaded(e,t){const{frag:i,part:s}=t;if("initSegment"===i.sn||i.bitrateTest)return;const r=s?null:t,o=Am(i);this.fragments[o]={body:i,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){const{frag:i,part:s,timeRanges:r}=t;if("initSegment"===i.sn)return;const o=i.type;if(s){let e=this.activePartLists[o];e||(this.activePartLists[o]=e=[]),e.push(s)}this.timeRanges=r,Object.keys(r).forEach((e=>{const t=r[e];this.detectEvictedFragments(e,t,o,s)}))}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){const t=Am(e);return!!this.fragments[t]}hasParts(e){var t;return!(null==(t=this.activePartLists[e])||!t.length)}removeFragmentsInRange(e,t,i,s,r){s&&!this.hasGaps||Object.keys(this.fragments).forEach((o=>{const a=this.fragments[o];if(!a)return;const n=a.body;n.type!==i||s&&!n.gap||n.starte&&(a.buffered||r)&&this.removeFragment(n)}))}removeFragment(e){const t=Am(e);e.stats.loaded=0,e.clearElementaryStreamInfo();const i=this.activePartLists[e.type];if(i){const t=e.sn;this.activePartLists[e.type]=i.filter((e=>e.fragment.sn!==t))}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}}function ym(e){var t,i,s;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==(s=e.range.audiovideo)?void 0:s.partial))}function Am(e){return`${e.type}_${e.level}_${e.sn}`}const bm={length:0,start:()=>0,end:()=>0};class vm{static isBuffered(e,t){try{if(e){const i=vm.getBuffered(e);for(let e=0;e=i.start(e)&&t<=i.end(e))return!0}}catch(e){}return!1}static bufferInfo(e,t,i){try{if(e){const s=vm.getBuffered(e),r=[];let o;for(o=0;oo&&(s[r-1].end=e[t].end):s.push(e[t])}else s.push(e[t])}else s=e;let r,o=0,a=t,n=t;for(let e=0;e=l&&ti.startCC||e&&e.cc{if(this.loader&&this.loader.destroy(),e.gap){if(e.tagList.some((e=>"GAP"===e[0])))return void n(Dm(e));e.gap=!1}const l=this.loader=e.loader=r?new r(s):new o(s),d=xm(e),h=jf(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===e.sn?1/0:Lm};e.stats=l.stats,l.load(d,c,{onSuccess:(t,i,s,r)=>{this.resetLoader(e,l);let o=t.data;s.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(o.slice(0,16)),o=o.slice(16)),a({frag:e,part:null,payload:o,networkDetails:r})},onError:(t,s,r,o)=>{this.resetLoader(e,l),n(new Rm({type:Jc.NETWORK_ERROR,details:qc.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:Nc({url:i,data:void 0},t),error:new Error(`HTTP Error ${t.code} ${t.text}`),networkDetails:r,stats:o}))},onAbort:(t,i,s)=>{this.resetLoader(e,l),n(new Rm({type:Jc.NETWORK_ERROR,details:qc.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:s,stats:t}))},onTimeout:(t,i,s)=>{this.resetLoader(e,l),n(new Rm({type:Jc.NETWORK_ERROR,details:qc.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:s,stats:t}))},onProgress:(i,s,r,o)=>{t&&t({frag:e,part:null,payload:r,networkDetails:o})}})}))}loadPart(e,t,i){this.abort();const s=this.config,r=s.fLoader,o=s.loader;return new Promise(((a,n)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap)return void n(Dm(e,t));const l=this.loader=e.loader=r?new r(s):new o(s),d=xm(e,t),h=jf(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:Lm};t.stats=l.stats,l.load(d,c,{onSuccess:(s,r,o,n)=>{this.resetLoader(e,l),this.updateStatsFromPart(e,t);const d={frag:e,part:t,payload:s.data,networkDetails:n};i(d),a(d)},onError:(i,s,r,o)=>{this.resetLoader(e,l),n(new Rm({type:Jc.NETWORK_ERROR,details:qc.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:Nc({url:d.url,data:void 0},i),error:new Error(`HTTP Error ${i.code} ${i.text}`),networkDetails:r,stats:o}))},onAbort:(i,s,r)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,l),n(new Rm({type:Jc.NETWORK_ERROR,details:qc.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:r,stats:i}))},onTimeout:(i,s,r)=>{this.resetLoader(e,l),n(new Rm({type:Jc.NETWORK_ERROR,details:qc.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:r,stats:i}))}})}))}updateStatsFromPart(e,t){const i=e.stats,s=t.stats,r=s.total;if(i.loaded+=s.loaded,r){const s=Math.round(e.duration/t.duration),o=Math.min(Math.round(i.loaded/r),s),a=(s-o)*Math.round(i.loaded/o);i.total=i.loaded+a}else i.total=Math.max(i.loaded,i.total);const o=i.loading,a=s.loading;o.start?o.first+=a.first-a.start:(o.start=a.start,o.first=a.first),o.end=a.end}resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()}}function xm(e,t=null){const i=t||e,s={frag:e,part:t,responseType:"arraybuffer",url:i.url,headers:{},rangeStart:0,rangeEnd:0},r=i.byteRangeStartOffset,o=i.byteRangeEndOffset;if(zc(r)&&zc(o)){var a;let t=r,i=o;if("initSegment"===e.sn&&"AES-128"===(null==(a=e.decryptdata)?void 0:a.method)){const e=o-r;e%16&&(i=o+(16-e%16)),0!==r&&(s.resetIV=!0,t=r-16)}s.rangeStart=t,s.rangeEnd=i}return s}function Dm(e,t){const i=new Error(`GAP ${e.gap?"tag":"attribute"} found`),s={type:Jc.MEDIA_ERROR,details:qc.FRAG_GAP,fatal:!1,frag:e,error:i,networkDetails:null};return t&&(s.part=t),(t||e).stats.aborted=!0,new Rm(s)}class Rm extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}}class Im{constructor(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}decrypt(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)}}class Pm{constructor(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}class Bm{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(e){const t=new DataView(e),i=new Uint32Array(4);for(let e=0;e<4;e++)i[e]=t.getUint32(4*e);return i}initTable(){const e=this.sBox,t=this.invSBox,i=this.subMix,s=i[0],r=i[1],o=i[2],a=i[3],n=this.invSubMix,l=n[0],d=n[1],h=n[2],c=n[3],u=new Uint32Array(256);let p=0,f=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let i=f^f<<1^f<<2^f<<3^f<<4;i=i>>>8^255&i^99,e[p]=i,t[i]=p;const n=u[p],m=u[n],g=u[m];let y=257*u[i]^16843008*i;s[p]=y<<24|y>>>8,r[p]=y<<16|y>>>16,o[p]=y<<8|y>>>24,a[p]=y,y=16843009*g^65537*m^257*n^16843008*p,l[i]=y<<24|y>>>8,d[i]=y<<16|y>>>16,h[i]=y<<8|y>>>24,c[i]=y,p?(p=n^u[u[u[g^n]]],f^=u[u[f]]):p=f=1}}expandKey(e){const t=this.uint8ArrayToUint32Array_(e);let i=!0,s=0;for(;s{if(!this.subtle)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new Im(this.subtle,new Uint8Array(i)).decrypt(e.buffer,t)})).catch((s=>(Zc.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${s.name}: ${s.message}`),this.onWebCryptoError(e,t,i))))}onWebCryptoError(e,t,i){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,i);const s=this.flush();if(s)return s.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(e){let t=e;const i=e.length-e.length%16;return i!==e.length&&(t=Cu(e,0,i),this.remainderData=Cu(e,i)),t}logOnce(e){this.logEnabled&&(Zc.log(`[decrypter]: ${e}`),this.logEnabled=!1)}}const Fm=function(e){let t="";const i=e.length;for(let s=0;s1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}{constructor(e,t,i,s,r){super(),this.hls=void 0,this.fragPrevious=null,this.fragCurrent=null,this.fragmentTracker=void 0,this.transmuxer=null,this._state=Um,this.playlistType=void 0,this.media=null,this.mediaBuffer=null,this.config=void 0,this.bitrateTest=!1,this.lastCurrentTime=0,this.nextLoadPosition=0,this.startPosition=0,this.startTimeOffset=null,this.loadedmetadata=!1,this.retryDate=0,this.levels=null,this.fragmentLoader=void 0,this.keyLoader=void 0,this.levelLastLoaded=null,this.startFragRequested=!1,this.decrypter=void 0,this.initPTS=[],this.onvseeking=null,this.onvended=null,this.logPrefix="",this.log=void 0,this.warn=void 0,this.playlistType=r,this.logPrefix=s,this.log=Zc.log.bind(Zc,`${s}:`),this.warn=Zc.warn.bind(Zc,`${s}:`),this.hls=e,this.fragmentLoader=new Cm(e.config),this.keyLoader=i,this.fragmentTracker=t,this.config=e.config,this.decrypter=new Mm(e.config),e.on(Hc.MANIFEST_LOADED,this.onManifestLoaded,this)}doTick(){this.onTickEnd()}onTickEnd(){}startLoad(e){}stopLoad(){this.fragmentLoader.abort(),this.keyLoader.abort(this.playlistType);const e=this.fragCurrent;null!=e&&e.loader&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=Um}_streamEnded(e,t){if(t.live||e.nextStart||!e.end||!this.media)return!1;const i=t.partList;if(null!=i&&i.length){const e=i[i.length-1];return vm.isBuffered(this.media,e.start+e.duration/2)}const s=t.fragments[t.fragments.length-1].type;return this.fragmentTracker.isEndListAppended(s)}getLevelDetails(){var e;if(this.levels&&null!==this.levelLastLoaded)return null==(e=this.levelLastLoaded)?void 0:e.details}onMediaAttached(e,t){const i=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),i.addEventListener("seeking",this.onvseeking),i.addEventListener("ended",this.onvended);const s=this.config;this.levels&&s.autoStartLoad&&this.state===Um&&this.startLoad(s.startPosition)}onMediaDetaching(){const e=this.media;null!=e&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&this.onvseeking&&this.onvended&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.keyLoader&&this.keyLoader.detach(),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()}onMediaSeeking(){const{config:e,fragCurrent:t,media:i,mediaBuffer:s,state:r}=this,o=i?i.currentTime:0,a=vm.bufferInfo(s||i,o,e.maxBufferHole);if(this.log(`media seeking to ${zc(o)?o.toFixed(3):o}, state: ${r}`),this.state===Vm)this.resetLoadingState();else if(t){const i=e.maxFragLookUpTolerance,s=t.start-i,r=t.start+t.duration+i;if(!a.len||ra.end){const e=o>r;(o{if(this.fragContextChanged(e))return this.warn(`Fragment ${e.sn}${t.part?" p: "+t.part.index:""} of level ${e.level} was dropped during download.`),void this.fragmentTracker.removeFragment(e);e.stats.chunkCount++,this._handleFragmentLoadProgress(t)})).then((t=>{if(!t)return;const i=this.state;this.fragContextChanged(e)?(i===jm||!this.fragCurrent&&i===zm)&&(this.fragmentTracker.removeFragment(e),this.state=Om):("payload"in t&&(this.log(`Loaded fragment ${e.sn} of level ${e.level}`),this.hls.trigger(Hc.FRAG_LOADED,t)),this._handleFragmentLoadComplete(t))})).catch((t=>{this.state!==Um&&this.state!==Hm&&(this.warn(`Frag error: ${(null==t?void 0:t.message)||t}`),this.resetFragmentLoading(e))}))}clearTrackerIfNeeded(e){var t;const{fragmentTracker:i}=this;if(i.getState(e)===pm){const t=e.type,s=this.getFwdBufferInfo(this.mediaBuffer,t),r=Math.max(e.duration,s?s.len:this.config.maxBufferLength),o=this.backtrackFragment;(1===(o?e.sn-o.sn:0)||this.reduceMaxBufferLength(r,e.duration))&&i.removeFragment(e)}else 0===(null==(t=this.mediaBuffer)?void 0:t.buffered.length)?i.removeAllFragments():i.hasParts(e.type)&&(i.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type}),i.getState(e)===fm&&i.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){const t=e.fragments[e.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type})}e.fragments[0]||(e.deltaUpdateFailed=!0)}flushMainBuffer(e,t,i=null){if(!(e-t))return;const s={startOffset:e,endOffset:t,type:i};this.hls.trigger(Hc.BUFFER_FLUSHING,s)}_loadInitSegment(e,t){this._doFragLoad(e,t).then((t=>{if(!t||this.fragContextChanged(e)||!this.levels)throw new Error("init load aborted");return t})).then((t=>{const{hls:i}=this,{payload:s}=t,r=e.decryptdata;if(s&&s.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const o=self.performance.now();return this.decrypter.decrypt(new Uint8Array(s),r.key.buffer,r.iv.buffer).catch((t=>{throw i.trigger(Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((s=>{const r=self.performance.now();return i.trigger(Hc.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:o,tdecrypt:r}}),t.payload=s,this.completeInitSegmentLoad(t)}))}return this.completeInitSegmentLoad(t)})).catch((t=>{this.state!==Um&&this.state!==Hm&&(this.warn(t),this.resetFragmentLoading(e))}))}completeInitSegmentLoad(e){const{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");const i=e.frag.stats;this.state=Om,e.frag.data=new Uint8Array(e.payload),i.parsing.start=i.buffering.start=self.performance.now(),i.parsing.end=i.buffering.end=self.performance.now(),this.tick()}fragContextChanged(e){const{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){var i,s,r,o;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.playlistType===Zp?"level":"track"} ${e.level} (frag:[${(null!=(i=e.startPTS)?i:NaN).toFixed(3)}-${(null!=(s=e.endPTS)?s:NaN).toFixed(3)}] > buffer:${a?Fm(vm.getBuffered(a)):"(detached)"})`),"initSegment"!==e.sn){var n;if(e.type!==tf){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return void(this.state=Om)}const t=null==(n=this.levels)?void 0:n[e.level];null!=t&&t.fragmentError&&(this.log(`Resetting level fragment error count of ${t.fragmentError} on frag buffered`),t.fragmentError=0)}this.state=Om,a&&(!this.loadedmetadata&&e.type==Zp&&a.buffered.length&&(null==(r=this.fragCurrent)?void 0:r.sn)===(null==(o=this.fragPrevious)?void 0:o.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(e){const{transmuxer:t}=this;if(!t)return;const{frag:i,part:s,partsLoaded:r}=e,o=!r||0===r.length||r.some((e=>!e)),a=new _m(i.level,i.sn,i.stats.chunkCount+1,0,s?s.index:-1,!o);t.flush(a)}_handleFragmentLoadProgress(e){}_doFragLoad(e,t,i=null,s){var r;const o=null==t?void 0:t.details;if(!this.levels||!o)throw new Error(`frag load aborted, missing level${o?"":" detail"}s`);let a=null;if(!e.encrypted||null!=(r=e.decryptdata)&&r.key?!e.encrypted&&o.encryptedFragments.length&&this.keyLoader.loadClear(e,o.encryptedFragments):(this.log(`Loading key for ${e.sn} of [${o.startSN}-${o.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${e.level}`),this.state=Nm,this.fragCurrent=e,a=this.keyLoader.load(e).then((e=>{if(!this.fragContextChanged(e.frag))return this.hls.trigger(Hc.KEY_LOADED,e),this.state===Nm&&(this.state=Om),e})),this.hls.trigger(Hc.KEY_LOADING,{frag:e}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),i=Math.max(e.start,i||0),this.config.lowLatencyMode&&"initSegment"!==e.sn){const r=o.partList;if(r&&s){i>e.end&&o.fragmentHint&&(e=o.fragmentHint);const n=this.getNextPart(r,e,i);if(n>-1){const l=r[n];let d;return this.log(`Loading part sn: ${e.sn} p: ${l.index} cc: ${e.cc} of playlist [${o.startSN}-${o.endSN}] parts [0-${n}-${r.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=jm,d=a?a.then((i=>!i||this.fragContextChanged(i.frag)?null:this.doFragPartsLoad(e,l,t,s))).catch((e=>this.handleFragLoadError(e))):this.doFragPartsLoad(e,l,t,s).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Hc.FRAG_LOADING,{frag:e,part:l,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):d}if(!e.url||this.loadedEndOfParts(r,i))return Promise.resolve(null)}}this.log(`Loading fragment ${e.sn} cc: ${e.cc} ${o?"of ["+o.startSN+"-"+o.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),zc(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=jm;const n=this.config.progressive;let l;return l=n&&a?a.then((t=>!t||this.fragContextChanged(null==t?void 0:t.frag)?null:this.fragmentLoader.load(e,s))).catch((e=>this.handleFragLoadError(e))):Promise.all([this.fragmentLoader.load(e,n?s:void 0),a]).then((([e])=>(!n&&e&&s&&s(e),e))).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Hc.FRAG_LOADING,{frag:e,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(e,t,i,s){return new Promise(((r,o)=>{var a;const n=[],l=null==(a=i.details)?void 0:a.partList,d=t=>{this.fragmentLoader.loadPart(e,t,s).then((s=>{n[t.index]=s;const o=s.part;this.hls.trigger(Hc.FRAG_LOADED,s);const a=Bf(i,e.sn,t.index+1)||Mf(l,e.sn,t.index+1);if(!a)return r({frag:e,part:o,partsLoaded:n});d(a)})).catch(o)};d(t)}))}handleFragLoadError(e){if("data"in e){const t=e.data;e.data&&t.details===qc.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(Hc.ERROR,t)}else this.hls.trigger(Hc.ERROR,{type:Jc.OTHER_ERROR,details:qc.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){const t=this.getCurrentContext(e);if(!t||this.state!==zm)return void(this.fragCurrent||this.state===Um||this.state===Hm||(this.state=Om));const{frag:i,part:s,level:r}=t,o=self.performance.now();i.stats.parsing.end=o,s&&(s.stats.parsing.end=o),this.updateLevelTiming(i,s,r,e.partial)}getCurrentContext(e){const{levels:t,fragCurrent:i}=this,{level:s,sn:r,part:o}=e;if(null==t||!t[s])return this.warn(`Levels object was unset while buffering fragment ${r} of level ${s}. The current chunk will not be buffered.`),null;const a=t[s],n=o>-1?Bf(a,r,o):null,l=n?n.fragment:function(e,t,i){if(null==e||!e.details)return null;const s=e.details;let r=s.fragments[t-s.startSN];return r||(r=s.fragmentHint,r&&r.sn===t?r:to&&this.flushMainBuffer(a,e.start)}getFwdBufferInfo(e,t){const i=this.getLoadPosition();return zc(i)?this.getFwdBufferInfoAtPos(e,i,t):null}getFwdBufferInfoAtPos(e,t,i){const{config:{maxBufferHole:s}}=this,r=vm.bufferInfo(e,t,s);if(0===r.len&&void 0!==r.nextStart){const o=this.fragmentTracker.getBufferedFrag(t,i);if(o&&r.nextStart=s&&(i.maxMaxBufferLength=r,this.warn(`Reduce max buffer length to ${r}s`),!0)}getAppendedFrag(e,t=Zp){const i=this.fragmentTracker.getAppendedFrag(e,Zp);return i&&"fragment"in i?i.fragment:i}getNextFragment(e,t){const i=t.fragments,s=i.length;if(!s)return null;const{config:r}=this,o=i[0].start;let a;if(t.live){const n=r.initialLiveManifestSize;if(st}getNextFragmentLoopLoading(e,t,i,s,r){const o=e.gap,a=this.getNextFragment(this.nextLoadPosition,t);if(null===a)return a;if(e=a,o&&e&&!e.gap&&i.nextStart){const t=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,i.nextStart,s);if(null!==t&&i.len+t.len>=r)return this.log(`buffer full after gaps in "${s}" playlist starting at sn: ${e.sn}`),null}return e}mapToInitFragWhenRequired(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment}getNextPart(e,t,i){let s=-1,r=!1,o=!0;for(let a=0,n=e.length;a-1&&ii.start&&i.loaded}getInitialLiveFragment(e,t){const i=this.fragPrevious;let s=null;if(i){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${i.programDateTime}`),s=function(e,t,i){if(null===t||!Array.isArray(e)||!e.length||!zc(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(let s=0;s=e.startSN&&r<=e.endSN){const o=t[r-e.startSN];i.cc===o.cc&&(s=o,this.log(`Live playlist, switching playlist, load frag with next SN: ${s.sn}`))}s||(s=function(e,t){return Wf(e,(e=>e.cct?-1:0))}(t,i.cc),s&&this.log(`Live playlist, switching playlist, load frag with same CC: ${s.sn}`))}}else{const t=this.hls.liveSyncPosition;null!==t&&(s=this.getFragmentAtPosition(t,this.bitrateTest?e.fragmentEnd:e.edge,e))}return s}getFragmentAtPosition(e,t,i){const{config:s}=this;let{fragPrevious:r}=this,{fragments:o,endSN:a}=i;const{fragmentHint:n}=i,{maxFragLookUpTolerance:l}=s,d=i.partList,h=!!(s.lowLatencyMode&&null!=d&&d.length&&n);let c;if(h&&n&&!this.bitrateTest&&(o=o.concat(n),a=n.sn),et-l?0:l)}else c=o[o.length-1];if(c){const e=c.sn-i.startSN,t=this.fragmentTracker.getState(c);if((t===mm||t===fm&&c.gap)&&(r=c),r&&c.sn===r.sn&&(!h||d[0].fragment.sn>c.sn)){if(r&&c.level===r.level){const t=o[e+1];c=c.sn=o-t.maxFragLookUpTolerance&&r<=a;if(null!==s&&i.duration>s&&(r${e.startSN} prev-sn: ${r?r.sn:"na"} fragments: ${s}`),o}return r}waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)}setStartPosition(e,t){let i=this.startPosition;if(i ${null==(s=this.fragCurrent)?void 0:s.url}`);const r=t.details===qc.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(i,!0);const o=t.errorAction,{action:a,retryCount:n=0,retryConfig:l}=o||{};if(o&&a===Kf&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const s=Nf(l,n);this.warn(`Fragment ${i.sn} of ${e} ${i.level} errored with ${t.details}, retrying loading ${n+1}/${l.maxNumRetry} in ${s}ms`),o.resolved=!0,this.retryDate=self.performance.now()+s,this.state=Gm}else if(l&&o){if(this.resetFragmentErrors(e),!(n.5;r&&this.reduceMaxBufferLength(s.len,(null==t?void 0:t.duration)||10);const o=!r;return o&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${i} buffer`),t&&(this.fragmentTracker.removeFragment(t),this.nextLoadPosition=t.start),this.resetLoadingState(),o}return!1}resetFragmentErrors(e){e===ef&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==Um&&(this.state=Om)}afterBufferFlushed(e,t,i){if(!e)return;const s=vm.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,s,i),this.state===Vm&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=Om}resetStartWhenNotLoaded(e){if(!this.loadedmetadata){this.startFragRequested=!1;const t=e?e.details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(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()}removeUnbufferedFrags(e=0){this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)}updateLevelTiming(e,t,i,s){var r;const o=i.details;if(!o)return void this.warn("level.details undefined");if(!Object.keys(e.elementaryStreams).reduce(((t,r)=>{const a=e.elementaryStreams[r];if(a){const n=a.endPTS-a.startPTS;if(n<=0)return this.warn(`Could not parse fragment ${e.sn} ${r} duration reliably (${n})`),t||!1;const l=s?0:Df(o,e,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(Hc.LEVEL_PTS_UPDATED,{details:o,level:i,drift:l,type:r,frag:e,start:a.startPTS,end:a.endPTS}),!0}return t}),!1)&&null===(null==(r=this.transmuxer)?void 0:r.error)){const t=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(t.message),this.hls.trigger(Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.FRAG_PARSING_ERROR,fatal:!1,error:t,frag:e,reason:`Found no media in msn ${e.sn} of level "${i.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=$m,this.hls.trigger(Hc.FRAG_PARSED,{frag:e,part:t})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(e){"demuxerWorker"===e.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(e){const t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}}class Ym{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){const{chunks:e,dataLength:t}=this;let i;return e.length?(i=1===e.length?e[0]:function(e,t){const i=new Uint8Array(t);let s=0;for(let t=0;t0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:cf,duration:Number.POSITIVE_INFINITY});r{if(zc(e))return 90*e;return 9e4*t+(i?9e4*i.baseTime/i.timescale:0)};function eg(e,t){return 255===e[t]&&240==(246&e[t+1])}function tg(e,t){return 1&e[t+1]?7:9}function ig(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function sg(e,t){return t+1=e.length)return!1;const s=ig(e,t);if(s<=i)return!1;const r=t+s;return r===e.length||sg(e,r)}return!1}function og(e,t,i,s,r){if(!e.samplerate){const o=function(e,t,i,s){let r,o,a,n;const l=navigator.userAgent.toLowerCase(),d=s,h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r=1+((192&t[i+2])>>>6);const c=(60&t[i+2])>>>2;if(!(c>h.length-1))return a=(1&t[i+2])<<2,a|=(192&t[i+3])>>>6,Zc.log(`manifest codec:${s}, ADTS type:${r}, samplingIndex:${c}`),/firefox/i.test(l)?c>=6?(r=5,n=new Array(4),o=c-3):(r=2,n=new Array(2),o=c):-1!==l.indexOf("android")?(r=2,n=new Array(2),o=c):(r=5,n=new Array(4),s&&(-1!==s.indexOf("mp4a.40.29")||-1!==s.indexOf("mp4a.40.5"))||!s&&c>=6?o=c-3:((s&&-1!==s.indexOf("mp4a.40.2")&&(c>=6&&1===a||/vivaldi/i.test(l))||!s&&1===a)&&(r=2,n=new Array(2)),o=c)),n[0]=r<<3,n[0]|=(14&c)>>1,n[1]|=(1&c)<<7,n[1]|=a<<3,5===r&&(n[1]|=(14&o)>>1,n[2]=(1&o)<<7,n[2]|=8,n[3]=0),{config:n,samplerate:h[c],channelCount:a,codec:"mp4a.40."+r,manifestCodec:d};{const t=new Error(`invalid ADTS sampling index:${c}`);e.emit(Hc.ERROR,Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.FRAG_PARSING_ERROR,fatal:!0,error:t,reason:t.message})}}(t,i,s,r);if(!o)return;e.config=o.config,e.samplerate=o.samplerate,e.channelCount=o.channelCount,e.codec=o.codec,e.manifestCodec=o.manifestCodec,Zc.log(`parsed codec:${e.codec}, rate:${o.samplerate}, channels:${o.channelCount}`)}}function ag(e){return 9216e4/e}function ng(e,t,i,s,r){const o=s+r*ag(e.samplerate),a=function(e,t){const i=tg(e,t);if(t+i<=e.length){const s=ig(e,t)-i;if(s>0)return{headerLength:i,frameLength:s}}}(t,i);let n;if(a){const{frameLength:s,headerLength:r}=a,l=r+s,d=Math.max(0,i+l-t.length);d?(n=new Uint8Array(l-r),n.set(t.subarray(i+r,t.length),0)):n=t.subarray(i+r,i+l);const h={unit:n,pts:o};return d||e.samples.push(h),{sample:h,length:l,missing:d}}const l=t.length-i;n=new Uint8Array(l),n.set(t.subarray(i,t.length),0);return{sample:{unit:n,pts:o},length:l,missing:-1}}let lg=null;const dg=[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],hg=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],cg=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],ug=[0,1,1,4];function pg(e,t,i,s,r){if(i+24>t.length)return;const o=fg(t,i);if(o&&i+o.frameLength<=t.length){const a=s+r*(9e4*o.samplesPerFrame/o.sampleRate),n={unit:t.subarray(i,i+o.frameLength),pts:a,dts:a};return e.config=[],e.channelCount=o.channelCount,e.samplerate=o.sampleRate,e.samples.push(n),{sample:n,length:o.frameLength,missing:0}}}function fg(e,t){const i=e[t+1]>>3&3,s=e[t+1]>>1&3,r=e[t+2]>>4&15,o=e[t+2]>>2&3;if(1!==i&&0!==r&&15!==r&&3!==o){const a=e[t+2]>>1&1,n=e[t+3]>>6,l=1e3*dg[14*(3===i?3-s:3===s?3:4)+r-1],d=hg[3*(3===i?0:2===i?1:2)+o],h=3===n?1:2,c=cg[i][s],u=ug[s],p=8*c*u,f=Math.floor(c*l/d+a)*u;if(null===lg){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);lg=e?parseInt(e[1]):0}return!!lg&&lg<=87&&2===s&&l>=224e3&&0===n&&(e[t+3]=128|e[t+3]),{sampleRate:d,channelCount:h,frameLength:f,samplesPerFrame:p}}}function mg(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function gg(e,t){return t+1{let i=0,s=5;t+=s;const r=new Uint32Array(1),o=new Uint32Array(1),a=new Uint8Array(1);for(;s>0;){a[0]=e[t];const n=Math.min(s,8),l=8-n;o[0]=4278190080>>>24+l<>l,i=i?i<t.length)return-1;if(11!==t[i]||119!==t[i+1])return-1;const o=t[i+4]>>6;if(o>=3)return-1;const a=[48e3,44100,32e3][o],n=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*n+o];if(i+l>t.length)return-1;const d=t[i+6]>>5;let h=0;2===d?h+=2:(1&d&&1!==d&&(h+=2),4&d&&(h+=2));const 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([o<<6|p<<1|f>>2,(3&f)<<6|d<<3|c<<2|n>>4,n<<4&224]),g=s+r*(1536/a*9e4),y=t.subarray(i,i+l);return e.config=m,e.channelCount=u,e.samplerate=a,e.samples.push({unit:y,pts:g}),l}class wg{constructor(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}loadWord(){const e=this.data,t=this.bytesAvailable,i=e.byteLength-t,s=new Uint8Array(4),r=Math.min(4,t);if(0===r)throw new Error("no bytes available");s.set(e.subarray(i,i+r)),this.word=new DataView(s.buffer).getUint32(0),this.bitsAvailable=8*r,this.bytesAvailable-=r}skipBits(e){let t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(t=(e-=this.bitsAvailable)>>3,e-=t<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}readBits(e){let t=Math.min(this.bitsAvailable,e);const i=this.word>>>32-t;if(e>32&&Zc.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,t>0&&this.bitsAvailable?i<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const e=this.skipLZ();return this.readBits(e+1)-1}readEG(){const e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(e){let t,i=8,s=8;for(let r=0;r{var o;switch(s.type){case 1:{let t=!1;a=!0;const r=s.data;if(l&&r.length>4){const e=new wg(r).readSliceType();2!==e&&4!==e&&7!==e&&9!==e||(t=!0)}var d;if(t)null!=(d=n)&&d.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null);n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.frame=!0,n.key=t;break}case 5:a=!0,null!=(o=n)&&o.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null),n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.key=!0,n.frame=!0;break;case 6:a=!0,fp(s.data,1,i.pts,t.samples);break;case 7:{var h,c;a=!0,l=!0;const t=s.data,i=new wg(t).readSPS();if(!e.sps||e.width!==i.width||e.height!==i.height||(null==(h=e.pixelRatio)?void 0:h[0])!==i.pixelRatio[0]||(null==(c=e.pixelRatio)?void 0:c[1])!==i.pixelRatio[1]){e.width=i.width,e.height=i.height,e.pixelRatio=i.pixelRatio,e.sps=[t],e.duration=r;const s=t.subarray(1,4);let o="avc1.";for(let e=0;e<3;e++){let t=s[e].toString(16);t.length<2&&(t="0"+t),o+=t}e.codec=o}break}case 8:a=!0,e.pps=[s.data];break;case 9:a=!0,e.audFound=!0,n&&this.pushAccessUnit(n,e),n=this.VideoSample=this.createVideoSample(!1,i.pts,i.dts,"");break;case 12:a=!0;break;default:a=!1,n&&(n.debug+="unknown NAL "+s.type+" ")}if(n&&a){n.units.push(s)}})),s&&n&&(this.pushAccessUnit(n,e),this.VideoSample=null)}parseAVCNALu(e,t){const i=t.byteLength;let s=e.naluState||0;const r=s,o=[];let a,n,l,d=0,h=-1,c=0;for(-1===s&&(h=0,c=31&t[0],s=0,d=1);d=0){const e={data:t.subarray(h,n),type:c};o.push(e)}else{const i=this.getLastNalUnit(e.samples);i&&(r&&d<=4-r&&i.state&&(i.data=i.data.subarray(0,i.data.byteLength-r)),n>0&&(i.data=cp(i.data,t.subarray(0,n)),i.state=0))}d=0&&s>=0){const e={data:t.subarray(h,i),type:c,state:s};o.push(e)}if(0===o.length){const i=this.getLastNalUnit(e.samples);i&&(i.data=cp(i.data,t))}return e.naluState=s,o}}class Eg{constructor(e,t,i){this.keyData=void 0,this.decrypter=void 0,this.keyData=i,this.decrypter=new Mm(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(e,t,i){const s=e[t].unit;if(s.length<=16)return;const r=s.subarray(16,s.length-s.length%16),o=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(o).then((r=>{const o=new Uint8Array(r);s.set(o,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,i)}))}decryptAacSamples(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}}getAvcEncryptedData(e){const t=16*Math.floor((e.length-48)/160)+16,i=new Int8Array(t);let s=0;for(let t=32;t{r.data=this.getAvcDecryptedUnit(o,a),this.decrypter.isSync()||this.decryptAvcSamples(e,t,i+1,s)}))}decryptAvcSamples(e,t,i,s){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,i=0){if(t>=e.length)return void s();const r=e[t].units;for(;!(i>=r.length);i++){const o=r[i];if(!(o.data.length<=48||1!==o.type&&5!==o.type||(this.decryptAvcSample(e,t,i,s,o),this.decrypter.isSync())))return}}}}const Tg=188;class kg{constructor(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=new Sg}static probe(e){const t=kg.syncOffset(e);return t>0&&Zc.warn(`MPEG2-TS detected but first sync word found @ offset ${t}`),-1!==t}static syncOffset(e){const t=e.length;let i=Math.min(940,t-Tg)+1,s=0;for(;s1&&(0===o&&a>2||n+Tg>i))return o}s++}return-1}static createTrack(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:Ku[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}}resetInitSegment(e,t,i,s){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=kg.createTrack("video"),this._audioTrack=kg.createTrack("audio",s),this._id3Track=kg.createTrack("id3"),this._txtTrack=kg.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=i,this._duration=s}resetTimeStamp(){}resetContiguity(){const{_audioTrack:e,_videoTrack:t,_id3Track:i}=this;e&&(e.pesData=null),t&&(t.pesData=null),i&&(i.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(e,t,i=!1,s=!1){let r;i||(this.sampleAes=null);const o=this._videoTrack,a=this._audioTrack,n=this._id3Track,l=this._txtTrack;let d=o.pid,h=o.pesData,c=a.pid,u=n.pid,p=a.pesData,f=n.pesData,m=null,g=this.pmtParsed,y=this._pmtId,A=e.length;if(this.remainderData&&(A=(e=cp(this.remainderData,e)).length,this.remainderData=null),A>4>1){if(v=t+5+e[t+4],v===t+Tg)continue}else v=t+4;switch(A){case d:s&&(h&&(r=Ig(h))&&this.videoParser.parseAVCPES(o,l,r,!1,this._duration),h={data:[],size:0}),h&&(h.data.push(e.subarray(v,t+Tg)),h.size+=t+Tg-v);break;case c:if(s){if(p&&(r=Ig(p)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,r);break;case"mp3":this.parseMPEGPES(a,r);break;case"ac3":this.parseAC3PES(a,r)}p={data:[],size:0}}p&&(p.data.push(e.subarray(v,t+Tg)),p.size+=t+Tg-v);break;case u:s&&(f&&(r=Ig(f))&&this.parseID3PES(n,r),f={data:[],size:0}),f&&(f.data.push(e.subarray(v,t+Tg)),f.size+=t+Tg-v);break;case 0:s&&(v+=e[v]+1),y=this._pmtId=Cg(e,v);break;case y:{s&&(v+=e[v]+1);const r=xg(e,v,this.typeSupported,i,this.observer);d=r.videoPid,d>0&&(o.pid=d,o.segmentCodec=r.segmentVideoCodec),c=r.audioPid,c>0&&(a.pid=c,a.segmentCodec=r.segmentAudioCodec),u=r.id3Pid,u>0&&(n.pid=u),null===m||g||(Zc.warn(`MPEG-TS PMT found at ${t} after unknown PID '${m}'. Backtracking to sync byte @${b} to parse all TS packets.`),m=null,t=b-188),g=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=A}}else v++;v>0&&Dg(this.observer,new Error(`Found ${v} TS packet/s that do not start with 0x47`)),o.pesData=h,a.pesData=p,n.pesData=f;const _={audioTrack:a,videoTrack:o,id3Track:n,textTrack:l};return s&&this.extractRemainingSamples(_),_}flush(){const{remainderData:e}=this;let t;return this.remainderData=null,t=e?this.demux(e,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t}extractRemainingSamples(e){const{audioTrack:t,videoTrack:i,id3Track:s,textTrack:r}=e,o=i.pesData,a=t.pesData,n=s.pesData;let l;if(o&&(l=Ig(o))?(this.videoParser.parseAVCPES(i,r,l,!0,this._duration),i.pesData=null):i.pesData=o,a&&(l=Ig(a))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,l);break;case"mp3":this.parseMPEGPES(t,l);break;case"ac3":this.parseAC3PES(t,l)}t.pesData=null}else null!=a&&a.size&&Zc.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=a;n&&(l=Ig(n))?(this.parseID3PES(s,l),s.pesData=null):s.pesData=n}demuxSampleAes(e,t,i){const s=this.demux(e,i,!0,!this.config.progressive),r=this.sampleAes=new Eg(this.observer,this.config,t);return this.decrypt(s,r)}decrypt(e,t){return new Promise((i=>{const{audioTrack:s,videoTrack:r}=e;s.samples&&"aac"===s.segmentCodec?t.decryptAacSamples(s.samples,0,(()=>{r.samples?t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)})):i(e)})):r.samples&&t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)}))}))}destroy(){this._duration=0}parseAACPES(e,t){let i=0;const s=this.aacOverFlow;let r,o,a,n=t.data;if(s){this.aacOverFlow=null;const t=s.missing,r=s.sample.unit.byteLength;if(-1===t)n=cp(s.sample.unit,n);else{const o=r-t;s.sample.unit.set(n.subarray(0,t),o),e.samples.push(s.sample),i=s.missing}}for(r=i,o=n.length;r0;)n+=o}}parseID3PES(e,t){if(void 0===t.pts)return void Zc.warn("[tsdemuxer]: ID3 PES unknown PTS");const i=Wc({},t,{type:this._videoTrack?pf:cf,duration:Number.POSITIVE_INFINITY});e.samples.push(i)}}function Lg(e,t){return((31&e[t+1])<<8)+e[t+2]}function Cg(e,t){return(31&e[t+10])<<8|e[t+11]}function xg(e,t,i,s,r){const o={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){let s=t+5,r=n;for(;r>2;){if(106===e[s])!0!==i.ac3?Zc.log("AC-3 audio found, not supported in this browser for now"):(o.audioPid=a,o.segmentAudioCodec="ac3");const t=e[s+1]+2;s+=t,r-=t}}break;case 194:case 135:return Dg(r,new Error("Unsupported EC-3 in M2TS found")),o;case 36:return Dg(r,new Error("Unsupported HEVC in M2TS found")),o}t+=n+5}return o}function Dg(e,t,i){Zc.warn(`parsing error: ${t.message}`),e.emit(Hc.ERROR,Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.FRAG_PARSING_ERROR,fatal:!1,levelRetry:i,error:t,reason:t.message})}function Rg(e){Zc.log(`${e} with AES-128-CBC encryption found in unencrypted stream`)}function Ig(e){let t,i,s,r,o,a=0;const n=e.data;if(!e||0===e.size)return null;for(;n[0].length<19&&n.length>1;)n[0]=cp(n[0],n[1]),n.splice(1,1);t=n[0];if(1===(t[0]<<16)+(t[1]<<8)+t[2]){if(i=(t[4]<<8)+t[5],i&&i>e.size-6)return null;const l=t[7];192&l&&(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&l?(o=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,r-o>54e5&&(Zc.warn(`${Math.round((r-o)/9e4)}s delta between PTS and DTS, align them`),r=o)):o=r),s=t[8];let d=s+9;if(e.size<=d)return null;e.size-=d;const h=new Uint8Array(e.size);for(let e=0,i=n.length;ei){d-=i;continue}t=t.subarray(d),i-=d,d=0}h.set(t,a),a+=i}return i&&(i-=s+3),{data:h,pts:r,dts:o,len:i}}return null}class Pg{static getSilentFrame(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])}}}const Bg=Math.pow(2,32)-1;class Mg{static init(){let e;for(e in Mg.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},Mg.types)Mg.types.hasOwnProperty(e)&&(Mg.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);const t=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]),i=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]);Mg.HDLR_TYPES={video:t,audio:i};const s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);Mg.STTS=Mg.STSC=Mg.STCO=r,Mg.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),Mg.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),Mg.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),Mg.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const o=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),n=new Uint8Array([0,0,0,1]);Mg.FTYP=Mg.box(Mg.types.ftyp,o,n,o,a),Mg.DINF=Mg.box(Mg.types.dinf,Mg.box(Mg.types.dref,s))}static box(e,...t){let i=8,s=t.length;const r=s;for(;s--;)i+=t[s].byteLength;const o=new Uint8Array(i);for(o[0]=i>>24&255,o[1]=i>>16&255,o[2]=i>>8&255,o[3]=255&i,o.set(e,4),s=0,i=8;s>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s,85,196,0,0]))}static mdia(e){return Mg.box(Mg.types.mdia,Mg.mdhd(e.timescale,e.duration),Mg.hdlr(e.type),Mg.minf(e))}static mfhd(e){return Mg.box(Mg.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static minf(e){return"audio"===e.type?Mg.box(Mg.types.minf,Mg.box(Mg.types.smhd,Mg.SMHD),Mg.DINF,Mg.stbl(e)):Mg.box(Mg.types.minf,Mg.box(Mg.types.vmhd,Mg.VMHD),Mg.DINF,Mg.stbl(e))}static moof(e,t,i){return Mg.box(Mg.types.moof,Mg.mfhd(e),Mg.traf(i,t))}static moov(e){let t=e.length;const i=[];for(;t--;)i[t]=Mg.trak(e[t]);return Mg.box.apply(null,[Mg.types.moov,Mg.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(Mg.mvex(e)))}static mvex(e){let t=e.length;const i=[];for(;t--;)i[t]=Mg.trex(e[t]);return Mg.box.apply(null,[Mg.types.mvex,...i])}static mvhd(e,t){t*=e;const i=Math.floor(t/(Bg+1)),s=Math.floor(t%(Bg+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,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 Mg.box(Mg.types.mvhd,r)}static sdtp(e){const t=e.samples||[],i=new Uint8Array(4+t.length);let s,r;for(s=0;s>>8&255),r.push(255&s),r=r.concat(Array.prototype.slice.call(i));for(t=0;t>>8&255),o.push(255&s),o=o.concat(Array.prototype.slice.call(i));const a=Mg.box(Mg.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|e.sps.length].concat(r).concat([e.pps.length]).concat(o))),n=e.width,l=e.height,d=e.pixelRatio[0],h=e.pixelRatio[1];return Mg.box(Mg.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,n>>8&255,255&n,l>>8&255,255&l,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]),a,Mg.box(Mg.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),Mg.box(Mg.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,h>>24,h>>16&255,h>>8&255,255&h])))}static esds(e){const 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]))}static audioStsd(e){const 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])}static mp4a(e){return Mg.box(Mg.types.mp4a,Mg.audioStsd(e),Mg.box(Mg.types.esds,Mg.esds(e)))}static mp3(e){return Mg.box(Mg.types[".mp3"],Mg.audioStsd(e))}static ac3(e){return Mg.box(Mg.types["ac-3"],Mg.audioStsd(e),Mg.box(Mg.types.dac3,e.config))}static stsd(e){return"audio"===e.type?"mp3"===e.segmentCodec&&"mp3"===e.codec?Mg.box(Mg.types.stsd,Mg.STSD,Mg.mp3(e)):"ac3"===e.segmentCodec?Mg.box(Mg.types.stsd,Mg.STSD,Mg.ac3(e)):Mg.box(Mg.types.stsd,Mg.STSD,Mg.mp4a(e)):Mg.box(Mg.types.stsd,Mg.STSD,Mg.avc1(e))}static tkhd(e){const t=e.id,i=e.duration*e.timescale,s=e.width,r=e.height,o=Math.floor(i/(Bg+1)),a=Math.floor(i%(Bg+1));return Mg.box(Mg.types.tkhd,new Uint8Array([1,0,0,7,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,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,a>>24,a>>16&255,a>>8&255,255&a,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,r>>8&255,255&r,0,0]))}static traf(e,t){const i=Mg.sdtp(e),s=e.id,r=Math.floor(t/(Bg+1)),o=Math.floor(t%(Bg+1));return Mg.box(Mg.types.traf,Mg.box(Mg.types.tfhd,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])),Mg.box(Mg.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,o>>24,o>>16&255,o>>8&255,255&o])),Mg.trun(e,i.length+16+20+8+16+8+8),i)}static trak(e){return e.duration=e.duration||4294967295,Mg.box(Mg.types.trak,Mg.tkhd(e),Mg.mdia(e))}static trex(e){const t=e.id;return Mg.box(Mg.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(e,t){const i=e.samples||[],s=i.length,r=12+16*s,o=new Uint8Array(r);let a,n,l,d,h,c;for(t+=8+r,o.set(["video"===e.type?1:0,0,15,1,s>>>24&255,s>>>16&255,s>>>8&255,255&s,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,d>>>24&255,d>>>16&255,d>>>8&255,255&d,h.isLeading<<2|h.dependsOn,h.isDependedOn<<6|h.hasRedundancy<<4|h.paddingValue<<1|h.isNonSync,61440&h.degradPrio,15&h.degradPrio,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*a);return Mg.box(Mg.types.trun,o)}static initSegment(e){Mg.types||Mg.init();const t=Mg.moov(e);return cp(Mg.FTYP,t)}}Mg.types=void 0,Mg.HDLR_TYPES=void 0,Mg.STTS=void 0,Mg.STSC=void 0,Mg.STCO=void 0,Mg.STSZ=void 0,Mg.VMHD=void 0,Mg.SMHD=void 0,Mg.STSD=void 0,Mg.FTYP=void 0,Mg.DINF=void 0;function Fg(e,t,i=1,s=!1){const r=e*t*i;return s?Math.round(r):r}function Ug(e,t=!1){return Fg(e,1e3,1/9e4,t)}let Og,Ng=null,jg=null;class Gg{constructor(e,t,i,s=""){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===Ng){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Ng=e?parseInt(e[1]):0}if(null===jg){const e=navigator.userAgent.match(/Safari\/(\d+)/i);jg=e?parseInt(e[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){Zc.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e}resetNextTimestamp(){Zc.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){Zc.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1;const i=e.reduce(((e,i)=>{const s=i.pts-e;return s<-4294967296?(t=!0,Wg(e,i.pts)):s>0?e:i.pts}),e[0].pts);return t&&Zc.debug("PTS rollover detected"),i}remux(e,t,i,s,r,o,a,n){let l,d,h,c,u,p,f=r,m=r;const g=e.pid>-1,y=t.pid>-1,A=t.samples.length,b=e.samples.length>0,v=a&&A>0||A>1;if((!g||b)&&(!y||v)||this.ISGenerated||a){if(this.ISGenerated){var _,w,S,E;const e=this.videoTrackConfig;!e||t.width===e.width&&t.height===e.height&&(null==(_=t.pixelRatio)?void 0:_[0])===(null==(w=e.pixelRatio)?void 0:w[0])&&(null==(S=t.pixelRatio)?void 0:S[1])===(null==(E=e.pixelRatio)?void 0:E[1])||this.resetInitSegment()}else h=this.generateIS(e,t,r,o);const i=this.isVideoContiguous;let s,a=-1;if(v&&(a=function(e){for(let t=0;t0){Zc.warn(`[mp4-remuxer]: Dropped ${a} out of ${A} video samples due to a missing keyframe`);const e=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(a),t.dropped+=a,m+=(t.samples[0].pts-e)/t.inputTimeScale,s=m}else-1===a&&(Zc.warn(`[mp4-remuxer]: No keyframe found out of ${A} video samples`),p=!1);if(this.ISGenerated){if(b&&v){const i=this.getVideoStartPts(t.samples),s=(Wg(e.samples[0].pts,i)-i)/t.inputTimeScale;f+=Math.max(0,s),m+=Math.max(0,-s)}if(b){if(e.samplerate||(Zc.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),h=this.generateIS(e,t,r,o)),d=this.remuxAudio(e,f,this.isAudioContiguous,o,y||v||n===ef?m:void 0),v){const s=d?d.endPTS-d.startPTS:0;t.inputTimeScale||(Zc.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),h=this.generateIS(e,t,r,o)),l=this.remuxVideo(t,m,i,s)}}else v&&(l=this.remuxVideo(t,m,i,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=s)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(i.samples.length&&(u=zg(i,r,this._initPTS,this._initDTS)),s.samples.length&&(c=$g(s,r,this._initPTS))),{audio:d,video:l,initSegment:h,independent:p,text:c,id3:u}}generateIS(e,t,i,s){const r=e.samples,o=t.samples,a=this.typeSupported,n={},l=this._initPTS;let d,h,c,u=!l||s,p="audio/mp4";if(u&&(d=h=1/0),e.config&&r.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":a.mpeg?(p="audio/mpeg",e.codec=""):a.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3"}n.audio={id:"audio",container:p,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&a.mpeg?new Uint8Array(0):Mg.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(c=e.inputTimeScale,l&&c===l.timescale?u=!1:d=h=r[0].pts-Math.round(c*i))}if(t.sps&&t.pps&&o.length){if(t.timescale=t.inputTimeScale,n.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:Mg.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(c=t.inputTimeScale,l&&c===l.timescale)u=!1;else{const e=this.getVideoStartPts(o),t=Math.round(c*i);h=Math.min(h,Wg(o[0].dts,e)-t),d=Math.min(d,e-t)}this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(n).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:d,timescale:c},this._initDTS={baseTime:h,timescale:c}):d=c=void 0,{tracks:n,initPTS:d,timescale:c}}remuxVideo(e,t,i,s){const r=e.inputTimeScale,o=e.samples,a=[],n=o.length,l=this._initPTS;let d,h,c=this.nextAvcDts,u=8,p=this.videoSampleDuration,f=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,g=!1;if(!i||null===c){const e=t*r,s=o[0].pts-Wg(o[0].dts,o[0].pts);Ng&&null!==c&&Math.abs(e-s-c)<15e3?i=!0:c=e-s}const y=l.baseTime*r/l.timescale;for(let e=0;e0?e-1:e].dts&&(g=!0)}g&&o.sort((function(e,t){const i=e.dts-t.dts,s=e.pts-t.pts;return i||s})),d=o[0].dts,h=o[o.length-1].dts;const A=h-d,b=A?Math.round(A/(n-1)):p||e.inputTimeScale/30;if(i){const e=d-c,i=e>b,s=e<-1;if((i||s)&&(i?Zc.warn(`AVC: ${Ug(e,!0)} ms (${e}dts) hole between fragments detected at ${t.toFixed(3)}`):Zc.warn(`AVC: ${Ug(-e,!0)} ms (${e}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!s||c>=o[0].pts||Ng)){d=c;const t=o[0].pts-e;if(i)o[0].dts=d,o[0].pts=t;else for(let i=0;it);i++)o[i].dts-=e,o[i].pts-=e;Zc.log(`Video: Initial PTS/DTS adjusted: ${Ug(t,!0)}/${Ug(d,!0)}, delta: ${Ug(e,!0)} ms`)}}d=Math.max(0,d);let v=0,_=0,w=d;for(let e=0;e0?t.dts-o[e-1].dts:b;if(l=e>0?t.pts-o[e-1].pts:b,i.stretchShortVideoTrack&&null!==this.nextAudioPts){const e=Math.floor(i.maxBufferHole*r),o=(s?f+s*r:this.nextAudioPts)-t.pts;o>e?(p=o-a,p<0?p=a:k=!0,Zc.log(`[mp4-remuxer]: It is approximately ${o/90} ms to the next segment; using duration ${p/90} ms for the last video frame.`)):p=a}else p=a}const h=Math.round(t.pts-t.dts);L=Math.min(L,p),x=Math.max(x,p),C=Math.min(C,l),D=Math.max(D,l),a.push(new Vg(t.key,p,d,h))}if(a.length)if(Ng){if(Ng<70){const e=a[0].flags;e.dependsOn=2,e.isNonSync=0}}else if(jg&&D-C0&&(s&&Math.abs(g-m)<9e3||Math.abs(Wg(p[0].pts-y,g)-m)<20*l),p.forEach((function(e){e.pts=Wg(e.pts-y,g)})),!i||m<0){if(p=p.filter((e=>e.pts>=0)),!p.length)return;m=0===r?0:s&&!u?Math.max(0,g):p[0].pts}if("aac"===e.segmentCodec){const t=this.config.maxAudioFramesDrift;for(let i=0,s=m;i=t*l&&d<1e4&&u){let t=Math.round(n/l);s=a-t*l,s<0&&(t--,s+=l),0===i&&(this.nextAudioPts=m=s),Zc.warn(`[mp4-remuxer]: Injecting ${t} audio frame @ ${(s/o).toFixed(3)}s due to ${Math.round(1e3*n/o)} ms gap.`);for(let o=0;o0))return;_+=f;try{A=new Uint8Array(_)}catch(e){return void this.observer.emit(Hc.ERROR,Hc.ERROR,{type:Jc.MUX_ERROR,details:qc.REMUX_ALLOC_ERROR,fatal:!1,error:e,bytes:_,reason:`fail allocating audio mdat ${_}`})}if(!h){new DataView(A.buffer).setUint32(0,_),A.set(Mg.types.mdat,4)}}A.set(r,f);const l=r.byteLength;f+=l,c.push(new Vg(!0,n,l,0)),v=o}const S=c.length;if(!S)return;const E=c[c.length-1];this.nextAudioPts=m=v+a*E.duration;const T=h?new Uint8Array(0):Mg.moof(e.sequenceNumber++,b/a,Wc({},e,{samples:c}));e.samples=[];const k=b/o,L=m/o,C={data1:T,data2:A,startPTS:k,endPTS:L,startDTS:k,endDTS:L,type:"audio",hasAudio:!0,hasVideo:!1,nb:S};return this.isAudioContiguous=!0,C}remuxEmptyAudio(e,t,i,s){const r=e.inputTimeScale,o=r/(e.samplerate?e.samplerate:r),a=this.nextAudioPts,n=this._initDTS,l=9e4*n.baseTime/n.timescale,d=(null!==a?a:s.startDTS*r)+l,h=s.endDTS*r+l,c=1024*o,u=Math.ceil((h-d)/c),p=Pg.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(Zc.warn("[mp4-remuxer]: remux empty Audio"),!p)return void Zc.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const f=[];for(let e=0;e4294967296;)e+=i;return e}function zg(e,t,i,s){const r=e.samples.length;if(!r)return;const o=e.inputTimeScale;for(let a=0;ae.pts-t.pts));const o=e.samples;return e.samples=[],{samples:o}}class Vg{constructor(e,t,i,s){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=i,this.cts=s,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:e?2:1,isNonSync:e?0:1}}}function Hg(e,t){const i=null==e?void 0:e.codec;if(i&&i.length>4)return i;if(t===au){if("ec-3"===i||"ac-3"===i||"alac"===i)return i;if("fLaC"===i||"Opus"===i){return Bp(i,!1)}const e="mp4a.40.5";return Zc.info(`Parsed audio codec "${i}" or audio object type not handled. Using "${e}"`),e}return Zc.warn(`Unhandled video codec "${i}"`),"hvc1"===i||"hev1"===i?"hvc1.1.6.L120.90":"av01"===i?"av01.0.04M.08":"avc1.42e01e"}try{Og=self.performance.now.bind(self.performance)}catch(e){Zc.debug("Unable to use Performance API on this environment"),Og=null==gu?void 0:gu.Date.now}const Jg=[{demux:class{constructor(e,t){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=t}resetTimeStamp(){}resetInitSegment(e,t,i,s){const r=this.videoTrack=Qm("video",1),o=this.audioTrack=Qm("audio",1),a=this.txtTrack=Qm("text",1);if(this.id3Track=Qm("id3",1),this.timeOffset=0,null==e||!e.byteLength)return;const n=rp(e);if(n.video){const{id:e,timescale:t,codec:i}=n.video;r.id=e,r.timescale=a.timescale=t,r.codec=i}if(n.audio){const{id:e,timescale:t,codec:i}=n.audio;o.id=e,o.timescale=t,o.codec=i}a.id=Ku.text,r.sampleDuration=0,r.duration=o.duration=s}resetContiguity(){this.remainderData=null}static probe(e){return function(e){const t=e.byteLength;for(let i=0;i8&&109===e[i+4]&&111===e[i+5]&&111===e[i+6]&&102===e[i+7])return!0;i=s>1?i+s:t}return!1}(e)}demux(e,t){this.timeOffset=t;let i=e;const s=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(i=cp(this.remainderData,e));const t=function(e){const t={valid:null,remainder:null},i=ip(e,["moof"]);if(i.length<2)return t.remainder=e,t;const s=i[i.length-1];return t.valid=Cu(e,0,s.byteOffset-8),t.remainder=Cu(e,s.byteOffset-8),t}(i);this.remainderData=t.remainder,s.samples=t.valid||new Uint8Array}else s.samples=i;const o=this.extractID3Track(s,t);return r.samples=up(t,s),{videoTrack:s,audioTrack:this.audioTrack,id3Track:o,textTrack:this.txtTrack}}flush(){const e=this.timeOffset,t=this.videoTrack,i=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;const s=this.extractID3Track(t,this.timeOffset);return i.samples=up(e,t),{videoTrack:t,audioTrack:Qm(),id3Track:s,textTrack:Qm()}}extractID3Track(e,t){const i=this.id3Track;if(e.samples.length){const s=ip(e.samples,["emsg"]);s&&s.forEach((e=>{const s=function(e){const t=e[0];let i="",s="",r=0,o=0,a=0,n=0,l=0,d=0;if(0===t){for(;"\0"!==Yu(e.subarray(d,d+1));)i+=Yu(e.subarray(d,d+1)),d+=1;for(i+=Yu(e.subarray(d,d+1)),d+=1;"\0"!==Yu(e.subarray(d,d+1));)s+=Yu(e.subarray(d,d+1)),d+=1;s+=Yu(e.subarray(d,d+1)),d+=1,r=Xu(e,12),o=Xu(e,16),n=Xu(e,20),l=Xu(e,24),d=28}else if(1===t){d+=4,r=Xu(e,d),d+=4;const t=Xu(e,d);d+=4;const o=Xu(e,d);for(d+=4,a=2**32*t+o,$c(a)||(a=Number.MAX_SAFE_INTEGER,Zc.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),n=Xu(e,d),d+=4,l=Xu(e,d),d+=4;"\0"!==Yu(e.subarray(d,d+1));)i+=Yu(e.subarray(d,d+1)),d+=1;for(i+=Yu(e.subarray(d,d+1)),d+=1;"\0"!==Yu(e.subarray(d,d+1));)s+=Yu(e.subarray(d,d+1)),d+=1;s+=Yu(e.subarray(d,d+1)),d+=1}return{schemeIdUri:i,value:s,timeScale:r,presentationTime:a,presentationTimeDelta:o,eventDuration:n,id:l,payload:e.subarray(d,e.byteLength)}}(e);if(Ag.test(s.schemeIdUri)){const e=zc(s.presentationTime)?s.presentationTime/s.timeScale:t+s.presentationTimeDelta/s.timeScale;let r=4294967295===s.eventDuration?Number.POSITIVE_INFINITY:s.eventDuration/s.timeScale;r<=.001&&(r=Number.POSITIVE_INFINITY);const o=s.payload;i.samples.push({data:o,len:o.byteLength,dts:e,pts:e,type:pf,duration:r})}}))}return i}demuxSampleAes(e,t,i){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux:class{constructor(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null}destroy(){}resetTimeStamp(e){this.initPTS=e,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(e,t,i,s){this.audioCodec=t,this.videoCodec=i,this.generateInitSegment(function(e,t){if(!e||!t)return e;const i=t.keyId;i&&t.isCommonEncryption&&ip(e,["moov","trak"]).forEach((e=>{const t=ip(e,["mdia","minf","stbl","stsd"])[0].subarray(8);let s=ip(t,["enca"]);const r=s.length>0;r||(s=ip(t,["encv"])),s.forEach((e=>{ip(r?e.subarray(28):e.subarray(78),["sinf"]).forEach((e=>{const t=dp(e);if(t){const e=t.subarray(8,24);e.some((e=>0!==e))||(Zc.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${Hu(e)} -> ${Hu(i)}`),t.set(i,8))}}))}))}));return e}(e,s)),this.emitInitSegment=!0}generateInitSegment(e){let{audioCodec:t,videoCodec:i}=this;if(null==e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const s=this.initData=rp(e);s.audio&&(t=Hg(s.audio,au)),s.video&&(i=Hg(s.video,nu));const r={};s.audio&&s.video?r.audiovideo={container:"video/mp4",codec:t+","+i,initSegment:e,id:"main"}:s.audio?r.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:s.video?r.video={container:"video/mp4",codec:i,initSegment:e,id:"main"}:Zc.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(e,t,i,s,r,o){var a,n;let{initPTS:l,lastEndTime:d}=this;const h={audio:void 0,video:void 0,text:s,id3:i,initSegment:void 0};zc(d)||(d=this.lastEndTime=r||0);const c=t.samples;if(null==c||!c.length)return h;const u={initPTS:void 0,timescale:1};let p=this.initData;if(null!=(a=p)&&a.length||(this.generateInitSegment(c),p=this.initData),null==(n=p)||!n.length)return Zc.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),h;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const f=function(e,t){let i=0,s=0,r=0;const o=ip(e,["moof","traf"]);for(let e=0;ee+t.info.duration||0),0);i=Math.max(i,e+o.earliestPresentationTime/o.timescale),s=i-t}}if(s&&zc(s))return s}return s||r}(c,p),m=function(e,t){return ip(t,["moof","traf"]).reduce(((t,i)=>{const s=ip(i,["tfdt"])[0],r=s[0],o=ip(i,["tfhd"]).reduce(((t,i)=>{const o=Xu(i,4),a=e[o];if(a){let e=Xu(s,4);if(1===r){if(e===Ju)return Zc.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),t;e*=Ju+1,e+=Xu(s,8)}const i=e/(a.timescale||9e4);if(zc(i)&&(null===t||ir}(l,g,r,f)||u.timescale!==l.timescale&&o)&&(u.initPTS=g-r,l&&1===l.timescale&&Zc.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const y=e?g-l.baseTime/l.timescale:d,A=y+f;!function(e,t,i){ip(t,["moof","traf"]).forEach((t=>{ip(t,["tfhd"]).forEach((s=>{const r=Xu(s,4),o=e[r];if(!o)return;const a=o.timescale||9e4;ip(t,["tfdt"]).forEach((e=>{const t=e[0],s=i*a;if(s){let i=Xu(e,4);if(0===t)i-=s,i=Math.max(i,0),tp(e,4,i);else{i*=Math.pow(2,32),i+=Xu(e,8),i-=s,i=Math.max(i,0);const t=Math.floor(i/(Ju+1)),r=Math.floor(i%(Ju+1));tp(e,4,t),tp(e,8,r)}}}))}))}))}(p,c,l.baseTime/l.timescale),f>0?this.lastEndTime=A:(Zc.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const b=!!p.audio,v=!!p.video;let _="";b&&(_+="audio"),v&&(_+="video");const w={data1:c,startPTS:y,startDTS:y,endPTS:A,endDTS:A,type:_,hasAudio:b,hasVideo:v,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=zg(i,r,l,l),s.samples.length&&(h.text=$g(s,r,l)),h}}},{demux:kg,remux:Gg},{demux:class extends Xm{constructor(e,t){super(),this.observer=void 0,this.config=void 0,this.observer=e,this.config=t}resetInitSegment(e,t,i,s){super.resetInitSegment(e,t,i,s),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:t,duration:s,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;const t=Ru(e,0);let i=(null==t?void 0:t.length)||0;if(yg(e,i))return!1;for(let t=e.length;i0&&null!=(null==t?void 0:t.key)&&null!==t.iv&&null!=t.method&&(i=t);return i}(o,t);if(b&&"AES-128"===b.method){const e=this.getDecrypter();if(!e.isSync())return this.decryptionPromise=e.webCryptoDecrypt(o,b.key.buffer,b.iv.buffer).then((e=>{const t=this.push(e,null,i);return this.decryptionPromise=null,t})),this.decryptionPromise;{let t=e.softwareDecrypt(o,b.key.buffer,b.iv.buffer);if(i.part>-1&&(t=e.flush()),!t)return r.executeEnd=Og(),Kg(i);o=new Uint8Array(t)}}const v=this.needsProbing(d,h);if(v){const e=this.configureTransmuxer(o);if(e)return Zc.warn(`[transmuxer] ${e.message}`),this.observer.emit(Hc.ERROR,Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message}),r.executeEnd=Og(),Kg(i)}(d||h||p||v)&&this.resetInitSegment(A,f,m,y,t),(d||p||v)&&this.resetInitialTimestamp(g),l||this.resetContiguity();const _=this.transmux(o,b,u,c,i),w=this.currentTransmuxState;return w.contiguous=!0,w.discontinuity=!1,w.trackSwitch=!1,r.executeEnd=Og(),_}flush(e){const t=e.transmuxing;t.executeStart=Og();const{decrypter:i,currentTransmuxState:s,decryptionPromise:r}=this;if(r)return r.then((()=>this.flush(e)));const o=[],{timeOffset:a}=s;if(i){const t=i.flush();t&&o.push(this.push(t,null,e))}const{demuxer:n,remuxer:l}=this;if(!n||!l)return t.executeEnd=Og(),[Kg(e)];const d=n.flush(a);return Yg(d)?d.then((t=>(this.flushRemux(o,t,e),o))):(this.flushRemux(o,d,e),o)}flushRemux(e,t,i){const{audioTrack:s,videoTrack:r,id3Track:o,textTrack:a}=t,{accurateTimeOffset:n,timeOffset:l}=this.currentTransmuxState;Zc.log(`[transmuxer.ts]: Flushed fragment ${i.sn}${i.part>-1?" p: "+i.part:""} of level ${i.level}`);const d=this.remuxer.remux(s,r,o,a,l,n,!0,this.id);e.push({remuxResult:d,chunkMeta:i}),i.transmuxing.executeEnd=Og()}resetInitialTimestamp(e){const{demuxer:t,remuxer:i}=this;t&&i&&(t.resetTimeStamp(e),i.resetTimeStamp(e))}resetContiguity(){const{demuxer:e,remuxer:t}=this;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,i,s,r){const{demuxer:o,remuxer:a}=this;o&&a&&(o.resetInitSegment(e,t,i,s),a.resetInitSegment(e,t,i,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(e,t,i,s,r){let o;return o=t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,i,s,r):this.transmuxUnencrypted(e,i,s,r),o}transmuxUnencrypted(e,t,i,s){const{audioTrack:r,videoTrack:o,id3Track:a,textTrack:n}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,o,a,n,t,i,!1,this.id),chunkMeta:s}}transmuxSampleAes(e,t,i,s,r){return this.demuxer.demuxSampleAes(e,t,i).then((e=>({remuxResult:this.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,i,s,!1,this.id),chunkMeta:r})))}configureTransmuxer(e){const{config:t,observer:i,typeSupported:s,vendor:r}=this;let o;for(let t=0,i=Jg.length;t({remuxResult:{},chunkMeta:e});function Yg(e){return"then"in e&&e.then instanceof Function}class Qg{constructor(e,t,i,s,r){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=s,this.defaultInitPts=r||null}}class Xg{constructor(e,t,i,s,r,o){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=s,this.timeOffset=r,this.initSegmentChange=o}}var Zg={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function s(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function o(e,t,s,o,a){if("function"!=typeof s)throw new TypeError("The listener must be a function");var n=new r(s,o||e,a),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],n]:e._events[l].push(n):(e._events[l]=n,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function n(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(i=!1)),n.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(i?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},n.prototype.listeners=function(e){var t=i?i+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,o=s.length,a=new Array(o);r{(t=t||{}).frag=this.frag,t.id=this.id,e===Hc.ERROR&&(this.error=t.error),this.hls.trigger(e,t)};this.observer=new ey,this.observer.on(Hc.FRAG_DECRYPTED,o),this.observer.on(Hc.ERROR,o);const a=Tp(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},n={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')};if(this.useWorker&&"undefined"!=typeof Worker){if(r.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{r.workerPath?(Zc.log(`loading Web Worker ${r.workerPath} for "${t}"`),this.workerContext=function(e){const t=new self.URL(e,self.location.href).href;return{worker:new self.Worker(t),scriptURL:t}}(r.workerPath)):(Zc.log(`injecting Web Worker for "${t}"`),this.workerContext=function(){const e=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),t=self.URL.createObjectURL(e);return{worker:new self.Worker(t),objectURL:t}}()),this.onwmsg=e=>this.onWorkerMessage(e);const{worker:e}=this.workerContext;e.addEventListener("message",this.onwmsg),e.onerror=e=>{const i=new Error(`${e.message} (${e.filename}:${e.lineno})`);r.enableWorker=!1,Zc.warn(`Error in "${t}" Web Worker, fallback to inline`),this.hls.trigger(Hc.ERROR,{type:Jc.OTHER_ERROR,details:qc.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:i})},e.postMessage({cmd:"init",typeSupported:n,vendor:"",id:t,config:JSON.stringify(r)})}catch(e){Zc.warn(`Error setting up "${t}" Web Worker, fallback to inline`,e),this.resetWorker(),this.error=null,this.transmuxer=new qg(this.observer,n,r,"",t)}return}}this.transmuxer=new qg(this.observer,n,r,"",t)}resetWorker(){if(this.workerContext){const{worker:e,objectURL:t}=this.workerContext;t&&self.URL.revokeObjectURL(t),e.removeEventListener("message",this.onwmsg),e.onerror=null,e.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{const e=this.transmuxer;e&&(e.destroy(),this.transmuxer=null)}const e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(e,t,i,s,r,o,a,n,l,d){var h,c;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,p=o?o.start:r.start,f=r.decryptdata,m=this.frag,g=!(m&&r.cc===m.cc),y=!(m&&l.level===m.level),A=m?l.sn-m.sn:-1,b=this.part?l.part-this.part.index:-1,v=0===A&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),_=!y&&(1===A||0===A&&(1===b||v&&b<=0)),w=self.performance.now();(y||A||0===r.stats.parsing.start)&&(r.stats.parsing.start=w),!o||!b&&_||(o.stats.parsing.start=w);const S=!(m&&(null==(h=r.initSegment)?void 0:h.url)===(null==(c=m.initSegment)?void 0:c.url)),E=new Xg(g,_,n,y,p,S);if(!_||g||S){Zc.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${g}\n trackSwitch: ${y}\n contiguous: ${_}\n accurateTimeOffset: ${n}\n timeOffset: ${p}\n initSegmentChange: ${S}`);const e=new Qg(i,s,t,a,d);this.configureTransmuxer(e)}if(this.frag=r,this.part=o,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:f,chunkMeta:l,state:E},e instanceof ArrayBuffer?[e]:[]);else if(u){const t=u.push(e,f,l,E);Yg(t)?(u.async=!0,t.then((e=>{this.handleTransmuxComplete(e)})).catch((e=>{this.transmuxerError(e,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(t))}}flush(e){e.transmuxing.start=self.performance.now();const{transmuxer:t}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(t){let i=t.flush(e);Yg(i)||t.async?(Yg(i)||(i=Promise.resolve(i)),i.then((t=>{this.handleFlushResult(t,e)})).catch((t=>{this.transmuxerError(t,e,"transmuxer-interface flush error")}))):this.handleFlushResult(i,e)}}transmuxerError(e,t,i){this.hls&&(this.error=e,this.hls.trigger(Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.FRAG_PARSING_ERROR,chunkMeta:t,frag:this.frag||void 0,fatal:!1,error:e,err:e,reason:i}))}handleFlushResult(e,t){e.forEach((e=>{this.handleTransmuxComplete(e)})),this.onFlush(t)}onWorkerMessage(e){const t=e.data;if(null==t||!t.event)return void Zc.warn("worker message received with no "+(t?"event name":"data"));const i=this.hls;if(this.hls)switch(t.event){case"init":{var s;const e=null==(s=this.workerContext)?void 0:s.objectURL;e&&self.URL.revokeObjectURL(e);break}case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":Zc[t.data.logType]&&Zc[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)}}configureTransmuxer(e){const{transmuxer:t}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:e}):t&&t.configure(e)}handleTransmuxComplete(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)}}function iy(e,t){if(e.length!==t.length)return!1;for(let i=0;ie[i]!==t[i]))}function ry(e,t){return t.label.toLowerCase()===e.name.toLowerCase()&&(!t.language||t.language.toLowerCase()===(e.lang||"").toLowerCase())}class oy{constructor(e){this.buffered=void 0;const t=(t,i,s)=>{if((i>>>=0)>s-1)throw new DOMException(`Failed to execute '${t}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${s})`);return e[i][t]};this.buffered={get length(){return e.length},end:i=>t("end",i,e.length),start:i=>t("start",i,e.length)}}}class ay{constructor(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}append(e,t,i){const s=this.queues[t];s.push(e),1!==s.length||i||this.executeNext(t)}insertAbort(e,t){this.queues[t].unshift(e),this.executeNext(t)}appendBlocker(e){let t;const i=new Promise((e=>{t=e})),s={execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(s,e),i}executeNext(e){const t=this.queues[e];if(t.length){const i=t[0];try{i.execute()}catch(t){Zc.warn(`[buffer-operation-queue]: Exception executing "${e}" SourceBuffer operation: ${t}`),i.onError(t);const s=this.buffers[e];null!=s&&s.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues[e].shift(),this.executeNext(e)}current(e){return this.queues[e][0]}}const ny=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function ly(e){const t=e.querySelectorAll("source");[].slice.call(t).forEach((t=>{e.removeChild(t)}))}const dy={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},hy=e=>String.fromCharCode(dy[e]||e),cy=15,uy=100,py={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},fy={17:2,18:4,21:6,22:8,23:10,19:13,20:15},my={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},gy={25:2,26:4,29:6,30:8,31:10,27:13,28:15},yy=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Ay{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;Zc.log(`${this.time} [${e}] ${i}`)}}}const by=function(e){const t=[];for(let i=0;iuy&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=uy)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=hy(e);this.pos>=uy?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",s=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class Ey{constructor(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 Sy(i),this.nonDisplayedMemory=new Sy(i),this.lastOutputScreen=new Sy(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(e){this.outputFilter=e}setPAC(e){this.writeScreen.setPAC(e)}setBkgData(e){this.writeScreen.setBkgData(e)}setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(2,(()=>"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)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(1,(()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0))),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(e){this.logger.log(2,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,s=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=s[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const 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))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Ty{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const s=this.logger=new Ay;this.channels=[null,new Ey(e,t,s),new Ey(e+1,i,s)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+by([t[e],t[e+1]])+"] -> ("+by([i,s])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if(Ly(i,s,a)){ky(null,null,a),this.logger.log(3,(()=>"Repeated command ("+by([i,s])+") is dropped"));continue}ky(i,s,this.cmdHistory),r=this.parseCmd(i,s),r||(r=this.parseMidrow(i,s)),r||(r=this.parsePAC(i,s)),r||(r=this.parseBackgroundAttributes(i,s))}else ky(null,null,a);if(!r&&(o=this.parseChars(i,s),o)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(o)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}r||o||this.logger.log(2,(()=>"Couldn't parse cleaned data "+by([i,s])+" orig: "+by([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,s=this.channels[i];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),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const s=this.channels[i];return!!s&&(s.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+by([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const s=e<=23?1:2;i=t>=64&&t<=95?1===s?py[e]:my[e]:1===s?fy[e]:gy[e];const r=this.channels[s];return!!r&&(r.setPAC(this.interpretPAC(i,t)),this.currentChannel=s,!0)}interpretPAC(e,t){let i;const s={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,s.underline=1==(1&i),i<=13?s.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(s.italics=!0,s.color="white"):s.indent=4*Math.floor((i-16)/2),s}parseChars(e,t){let i,s=null,r=null;if(e>=25?(i=2,r=e-8):(i=1,r=e),r>=17&&r<=19){let e;e=17===r?t+80:18===r?t+112:t+144,this.logger.log(2,(()=>"Special char '"+hy(e)+"' in channel "+i)),s=[e]}else e>=32&&e<=127&&(s=0===t?[e]:[e,t]);return s&&this.logger.log(3,(()=>"Char codes = "+by(s).join(","))),s}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const s={};16===e||24===e?(i=Math.floor((t-32)/2),s.background=yy[i],t%2==1&&(s.background=s.background+"_semi")):45===t?s.background="transparent":(s.foreground="black",47===t&&(s.underline=!0));const r=e<=23?1:2;return this.channels[r].setBkgData(s),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var xy=function(){if(null!=gu&&gu.VTTCue)return self.VTTCue;const 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;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function s(e){return i(t,e)}function r(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");b=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"positionAlign",r({},l,{get:function(){return v},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");v=t,this.hasBeenReset=!0}})),Object.defineProperty(n,"size",r({},l,{get:function(){return _},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");_=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"align",r({},l,{get:function(){return w},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");w=t,this.hasBeenReset=!0}})),n.displayState=void 0}return o.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},o}();class Dy{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Ry(e){function t(e,t,i,s){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(s||0)}const 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}class Iy{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let s=0;s=0&&i<=100)return this.set(e,i),!0}return!1}}function Py(e,t,i,s){const r=s?e.split(s):[e];for(const e in r){if("string"!=typeof r[e])continue;const s=r[e].split(i);if(2!==s.length)continue;t(s[0],s[1])}}const By=new xy(0,0,""),My="middle"===By.align?"middle":"center";function Fy(e,t,i){const s=e;function r(){const t=Ry(e);if(null===t)throw new Error("Malformed timestamp: "+s);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function o(){e=e.replace(/^\s+/,"")}if(o(),t.startTime=r(),o(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+s);e=e.slice(3),o(),t.endTime=r(),o(),function(e,t){const s=new Iy;Py(e,(function(e,t){let r;switch(e){case"region":for(let r=i.length-1;r>=0;r--)if(i[r].id===t){s.set(e,i[r].region);break}break;case"vertical":s.alt(e,t,["rl","lr"]);break;case"line":r=t.split(","),s.integer(e,r[0]),s.percent(e,r[0])&&s.set("snapToLines",!1),s.alt(e,r[0],["auto"]),2===r.length&&s.alt("lineAlign",r[1],["start",My,"end"]);break;case"position":r=t.split(","),s.percent(e,r[0]),2===r.length&&s.alt("positionAlign",r[1],["start",My,"end","line-left","line-right","auto"]);break;case"size":s.percent(e,t);break;case"align":s.alt(e,t,["start",My,"end","left","right"])}}),/:/,/\s/),t.region=s.get("region",null),t.vertical=s.get("vertical","");let r=s.get("line","auto");"auto"===r&&-1===By.line&&(r=-1),t.line=r,t.lineAlign=s.get("lineAlign","start"),t.snapToLines=s.get("snapToLines",!0),t.size=s.get("size",100),t.align=s.get("align",My);let o=s.get("position","auto");"auto"===o&&50===By.position&&(o="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=o}(e,t)}function Uy(e){return e.replace(//gi,"\n")}class Oy{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Dy,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=Uy(e);i>>0).toString()};function Wy(e,t,i){return Gy(e.toString())+Gy(t.toString())+Gy(i)}function zy(e,t,i,s,r,o,a){const n=new Oy,l=zu(new Uint8Array(e)).trim().replace(Ny,"\n").split("\n"),d=[],h=t?function(e,t=1){return Fg(e,9e4,1/t)}(t.baseTime,t.timescale):0;let c,u="00:00.000",p=0,f=0,m=!0;n.oncue=function(e){const o=i[s];let a=i.ccOffset;const n=(p-h)/9e4;if(null!=o&&o.new&&(void 0!==f?a=i.ccOffset=o.start:function(e,t,i){let s=e[t],r=e[s.prevCC];if(!r||!r.new&&s.new)return e.ccOffset=e.presentationOffset=s.start,void(s.new=!1);for(;null!=(o=r)&&o.new;){var o;e.ccOffset+=s.start-r.start,s.new=!1,s=r,r=e[s.prevCC]}e.presentationOffset=i}(i,s,n)),n){if(!t)return void(c=new Error("Missing initPTS for VTT MPEGTS"));a=n-i.presentationOffset}const l=e.endTime-e.startTime,u=Wg(9e4*(e.startTime+a-f),9e4*r)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=Wy(e.startTime,e.endTime,m)),e.endTime>0&&d.push(e)},n.onparsingerror=function(e){c=e},n.onflush=function(){c?a(c):o(d)},l.forEach((e=>{if(m){if(jy(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{jy(e,"LOCAL:")?u=e.slice(6):jy(e,"MPEGTS:")&&(p=parseInt(e.slice(7)))}));try{f=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),s=parseInt(e.slice(-9,-7)),r=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(zc(t)&&zc(i)&&zc(s)&&zc(r)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*s,t+=36e5*r,t}(u)/1e3}catch(e){c=e}return}""===e&&(m=!1)}n.parse(e+"\n")})),n.flush()}const $y="stpp.ttml.im1t",Vy=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Hy=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,Jy={left:"start",center:"center",right:"end",start:"start",end:"end"};function qy(e,t,i,s){const r=ip(new Uint8Array(e),["mdat"]);if(0===r.length)return void s(new Error("Could not parse IMSC1 mdat"));const o=r.map((e=>zu(e))),a=function(e,t,i=1,s=!1){return Fg(e,t,1/i,s)}(t.baseTime,1,t.timescale);try{o.forEach((e=>i(function(e,t){const i=new DOMParser,s=i.parseFromString(e,"text/xml").getElementsByTagName("tt")[0];if(!s)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},o=Object.keys(r).reduce(((e,t)=>(e[t]=s.getAttribute(`ttp:${t}`)||r[t],e)),{}),a="preserve"!==s.getAttribute("xml:space"),n=Yy(Ky(s,"styling","style")),l=Yy(Ky(s,"layout","region")),d=Ky(s,"body","[begin]");return[].map.call(d,(e=>{const i=Qy(e,a);if(!i||!e.hasAttribute("begin"))return null;const s=eA(e.getAttribute("begin"),o),r=eA(e.getAttribute("dur"),o);let d=eA(e.getAttribute("end"),o);if(null===s)throw Zy(e);if(null===d){if(null===r)throw Zy(e);d=s+r}const h=new xy(s-t,d-t,i);h.id=Wy(h.startTime,h.endTime,h.text);const c=function(e,t,i){const s="http://www.w3.org/ns/ttml#styling";let r=null;const o=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(r=i[a]);return o.reduce(((i,o)=>{const a=Xy(t,s,o)||Xy(e,s,o)||Xy(r,s,o);return a&&(i[o]=a),i}),{})}(l[e.getAttribute("region")],n[e.getAttribute("style")],n),{textAlign:u}=c;if(u){const e=Jy[u];e&&(h.lineAlign=e),h.align=u}return Wc(h,c),h})).filter((e=>null!==e))}(e,a))))}catch(e){s(e)}}function Ky(e,t,i){const s=e.getElementsByTagName(t)[0];return s?[].slice.call(s.querySelectorAll(i)):[]}function Yy(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function Qy(e,t){return[].slice.call(e.childNodes).reduce(((e,i,s)=>{var r;return"br"===i.nodeName&&s?e+"\n":null!=(r=i.childNodes)&&r.length?Qy(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function Xy(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function Zy(e){return new Error(`Could not parse ttml timestamp ${e}`)}function eA(e,t){if(!e)return null;let i=Ry(e);return null===i&&(Vy.test(e)?i=function(e,t){const i=Vy.exec(e),s=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+s/t.frameRate}(e,t):Hy.test(e)&&(i=function(e,t){const i=Hy.exec(e),s=Number(i[1]);switch(i[2]){case"h":return 3600*s;case"m":return 60*s;case"ms":return 1e3*s;case"f":return s/t.frameRate;case"t":return s/t.tickRate}return s}(e,t))),i}function tA(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function iA(e,t){return!!e&&e.kind===tA(t)&&ry(t,e)}class sA{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(Hc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(Hc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Hc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Hc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Hc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Hc.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(Hc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(Hc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Hc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Hc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Hc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Hc.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&zc(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&Zc.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,sA.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const 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}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let s=e.length-1;const r=Math.max(t,i);for(let t=0;t=r||i.height>=r)&&(o=i,!(a=e[t+1])||o.width!==a.width||o.height!==a.height)){s=t;break}}var o,a;return s}}const rA="[eme]";class oA{constructor(e){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=oA.CDMCleanupPromise?[oA.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=Zc.debug.bind(Zc,rA),this.log=Zc.log.bind(Zc,rA),this.warn=Zc.warn.bind(Zc,rA),this.error=Zc.error.bind(Zc,rA),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const e=this.config;e.requestMediaKeySystemAccessFunc=null,e.licenseXhrSetup=e.licenseResponseCallback=void 0,e.drmSystems=e.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Hc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Hc.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Hc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Hc.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,s=t[e];if(s)return s.licenseUrl;if(e===yu.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,s=t.map((e=>e.audioCodec)).filter(i),r=t.map((e=>e.videoCodec)).filter(i);return s.length+r.length===0&&r.push("avc1.42e01e"),new Promise(((t,i)=>{const o=e=>{const a=e.shift();this.getMediaKeysPromise(a,s,r).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?o(e):i(t instanceof aA?t:new aA({type:Jc.KEY_SYSTEM_ERROR,details:qc.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};o(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===ku&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const s=function(e,t,i,s){let r;switch(e){case yu.FAIRPLAY:r=["cenc","sinf"];break;case yu.WIDEVINE:case yu.PLAYREADY:r=["cenc"];break;case yu.CLEARKEY:r=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,s){return[{initDataTypes:e,persistentState:s.persistentState||"optional",distinctiveIdentifier:s.distinctiveIdentifier||"optional",sessionTypes:s.sessionTypes||[s.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:s.audioRobustness||"",encryptionScheme:s.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:s.videoRobustness||"",encryptionScheme:s.videoEncryptionScheme||null})))}]}(r,t,i,s)}(e,t,i,this.config.drmSystemOptions),r=this.keySystemAccessPromises[e];let o=null==r?void 0:r.keySystemAccess;if(!o){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(s)}`),o=this.requestMediaKeySystemAccess(e,s);const t=this.keySystemAccessPromises[e]={keySystemAccess:o};return o.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),o.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const s=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),s.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return o.then((()=>r.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${Hu(e.keyId||[])}`);const s=i.createSession(),r={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:s,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),s=this.getKeyIdString(t),r="cenc";this.keyIdToKeySessionPromise[s]=this.generateRequestWithPreferredKeySession(i,r,t.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(e)}getKeyIdString(e){if(!e)throw new Error("Could not read keyId of undefined decryptdata");if(null===e.keyId)throw new Error("keyId is null");return Hu(e.keyId)}updateKeySession(e,t){var i;const s=e.mediaKeysSession;return this.log(`Updating key-session "${s.sessionId}" for keyID ${Hu((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),s.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const s=Tu(this.config),r=e.map(wu).filter((e=>!!e&&-1!==s.indexOf(e)));return this.getKeySystemSelectionPromise(r).then((({keySystem:e})=>{const s=Eu(e);s?t(s):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),s=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${s}`);let r=this.keyIdToKeySessionPromise[i];return r||(r=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:r})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${s}`),this.attemptSetMediaKeys(i,r).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:r,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),r.catch((e=>this.handleError(e)))),r}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof aA?this.hls.trigger(Hc.ERROR,e.data):this.hls.trigger(Hc.ERROR,{type:Jc.KEY_SYSTEM_ERROR,details:qc.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=wu(e.keyFormat),i=t?[t]:Tu(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=Tu(this.config)),0===e.length)throw new aA({type:Jc.KEY_SYSTEM_ERROR,details:qc.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(e)}_onMediaEncrypted(e){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let s,r;if("sinf"===t&&this.config.drmSystems[yu.FAIRPLAY]){const e=Yu(new Uint8Array(i));try{const t=pu(JSON.parse(e).sinf),i=dp(new Uint8Array(t));if(!i)return;s=i.subarray(8,24),r=yu.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),s=i.getUint32(0);if(e.byteLength!==s&&s>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=Hu(new Uint8Array(e,12,16));const r=i.getUint32(28);if(0===t.version){if(s-32this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-key-match")));break}}l||(l=a[o]=this.getKeySystemSelectionPromise([r]).then((({keySystem:e,mediaKeys:r})=>{var a;this.throwIfDestroyed();const n=new Ap("ISO-23001-7",o,null!=(a=Eu(e))?a:"");return n.pssh=new Uint8Array(i),n.keyId=s,this.attemptSetMediaKeys(e,r).then((()=>{this.throwIfDestroyed();const s=this.createMediaKeySessionContext({decryptdata:n,keySystem:e,mediaKeys:r});return this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const s=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(s),s.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(s),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,s){var r,o;const a=null==(r=this.config.drmSystems)||null==(o=r[e.keySystem])?void 0:o.generateRequest;if(a)try{const s=a.call(this.hls,t,i,e);if(!s)throw new Error("Invalid response from configured generateRequest filter");t=s.initDataType,i=e.decryptdata.pssh=s.initData?new Uint8Array(s.initData):null}catch(e){var n;if(this.warn(e.message),null!=(n=this.hls)&&n.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${s}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${s}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const d=new ey,h=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void d.emit("error",new Error("invalid state"));const{messageType:s,message:r}=t;this.log(`"${s}" message event for session "${i.sessionId}" message size: ${r.byteLength}`),"license-request"===s||"license-renewal"===s?this.renewLicense(e,r).catch((e=>{this.handleError(e),d.emit("error",e)})):"license-release"===s?e.keySystem===yu.FAIRPLAY&&(this.updateKeySession(e,mu("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${s}"`)},c=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void d.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;d.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",h),e.mediaKeysSession.addEventListener("keystatuseschange",c);const u=new Promise(((e,t)=>{d.on("error",t),d.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new aA({type:Jc.KEY_SYSTEM_ERROR,details:qc.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new aA({type:Jc.KEY_SYSTEM_ERROR,details:qc.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new aA({type:Jc.KEY_SYSTEM_ERROR,details:qc.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw d.removeAllListeners(),this.removeSession(e),t})).then((()=>(d.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${Hu("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${Hu(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),s=this.getServerCertificateUrl(e);return s?(this.log(`Fetching server certificate for "${e}"`),new Promise(((r,o)=>{const a={responseType:"arraybuffer",url:s},n=t.certLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{r(e.data)},onError:(t,i,r,n)=>{o(new aA({type:Jc.KEY_SYSTEM_ERROR,details:qc.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:Nc({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${s}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,r)=>{o(new aA({type:Jc.KEY_SYSTEM_ERROR,details:qc.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${s})`))},onAbort:(e,t,i)=>{o(new Error("aborted"))}};i.load(a,l,d)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((s,r)=>{e.setServerCertificate(i).then((r=>{this.log(`setServerCertificate ${r?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),s(e)})).catch((e=>{r(new aA({type:Jc.KEY_SYSTEM_ERROR,details:qc.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new aA({type:Jc.KEY_SYSTEM_ERROR,details:qc.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const s=(new DOMParser).parseFromString(i,"application/xml"),r=s.querySelectorAll("HttpHeader");if(r.length>0){let t;for(let i=0,s=r.length;i in key message");return mu(atob(l))}setupLicenseXHR(e,t,i,s){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return r.call(this.hls,e,t,i,s)})).catch((o=>{if(!i.decryptdata)throw o;return e.open("POST",t,!0),r.call(this.hls,e,t,i,s)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||s}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:s}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((s,r)=>{const o=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${o}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return r(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,o,e)}catch(e){this.error(e)}s(t)}else{const n=i.errorRetry,l=n?n.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)r(new aA({type:Jc.KEY_SYSTEM_ERROR,details:qc.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:o,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${o}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(s,r)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,o,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==yu.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const e=this.media,t=this.mediaKeySessions;e&&(e.removeEventListener("encrypted",this.onMediaEncrypted),e.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},Ap.clearKeyUriToKeyIdMap();const i=t.length;oA.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=e;if(t){this.log(`Remove licenses and keys and close session ${t.sessionId}`),e._onmessage&&(t.removeEventListener("message",e._onmessage),e._onmessage=void 0),e._onkeystatuseschange&&(t.removeEventListener("keystatuseschange",e._onkeystatuseschange),e._onkeystatuseschange=void 0),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const s=this.mediaKeySessions.indexOf(e);return s>-1&&this.mediaKeySessions.splice(s,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}oA.CDMCleanupPromise=void 0;class aA extends Error{constructor(e,t){super(t),this.data=void 0,e.error||(e.error=new Error(t)),this.data=e,e.err=e.error}}var nA,lA,dA;!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"}(nA||(nA={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(lA||(lA={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(dA||(dA={}));const hA={[dA.OBJECT]:["br","d","ot","tb"],[dA.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[dA.SESSION]:["cid","pr","sf","sid","st","v"],[dA.STATUS]:["bs","rtp"]};class cA{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof cA?e:new cA(e)))),this.value=e,this.params=t}}class uA{constructor(e){this.description=void 0,this.description=e}}function pA(e,t,i,s){return new Error(`failed to ${e} "${r=t,Array.isArray(r)?JSON.stringify(r):r instanceof Map?"Map{}":r instanceof Set?"Set{}":"object"==typeof r?JSON.stringify(r):String(r)}" as ${i}`,{cause:s});var r}const fA="Bare Item";const mA=/[\x00-\x1f\x7f]+/;function gA(e,t,i){return pA("serialize",e,t,i)}function yA(e){if(!1===ArrayBuffer.isView(e))throw gA(e,"Byte Sequence");return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function AA(e){if(function(e){return e<-999999999999999||99999999999999912)throw gA(e,"Decimal");const i=t.toString();return i.includes(".")?i:`${i}.0`}function _A(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw gA(t,"Token");return t}function wA(e){switch(typeof e){case"number":if(!zc(e))throw gA(e,fA);return Number.isInteger(e)?AA(e):vA(e);case"string":return function(e){if(mA.test(e))throw gA(e,"String");return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return _A(e);case"boolean":return function(e){if("boolean"!=typeof e)throw gA(e,"Boolean");return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${AA(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return yA(e);if(e instanceof uA)return _A(e);default:throw gA(e,fA)}}function SA(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw gA(e,"Key");return e}function EA(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${SA(e)}`:`;${SA(e)}=${wA(t)}`)).join("")}function TA(e){return e instanceof cA?`${wA(e.value)}${EA(e.params)}`:wA(e)}function kA(e,t={whitespace:!0}){if("object"!=typeof e)throw gA(e,"Dict");const i=e instanceof Map?e.entries():Object.entries(e),s=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof cA==!1&&(t=new cA(t));let i=SA(e);var s;return!0===t.value?i+=EA(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(s=t).value.map(TA).join(" ")})${EA(s.params)}`:i+=TA(t)),i})).join(`,${s}`)}const LA=e=>Math.round(e),CA=e=>100*LA(e/100),xA={br:LA,d:LA,bl:CA,dl:CA,mtp:CA,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),s=new URL(t);if(i.origin!==s.origin)return e;const r=i.pathname.split("/").slice(1),o=s.pathname.split("/").slice(1,-1);for(;r[0]===o[0];)r.shift(),o.shift();for(;o.length;)o.shift(),r.unshift("..");return r.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:CA,tb:LA};function DA(e,t){const i={};if(null==e||"object"!=typeof e)return i;const s=Object.keys(e).sort(),r=Wc({},xA,null==t?void 0:t.formatters),o=null==t?void 0:t.filter;return s.forEach((s=>{if(null!=o&&o(s))return;let a=e[s];const n=r[s];n&&(a=n(a,t)),"v"===s&&1===a||"pr"==s&&1===a||(e=>"number"==typeof e?zc(e):null!=e&&""!==e&&!1!==e)(a)&&((e=>"ot"===e||"sf"===e||"st"===e)(s)&&"string"==typeof a&&(a=new uA(a)),i[s]=a)})),i}function RA(e,t={}){return e?function(e,t){return kA(e,t)}(DA(e,t),Wc({whitespace:!1},t)):""}function IA(e,t,i){return Wc(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),s=Object.entries(hA).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),r=i.reduce(((e,t)=>{var i;const[r,o]=t,a=(null==(i=s.find((e=>e[1].includes(r))))?void 0:i[0])||dA.REQUEST;return null!=e[a]||(e[a]={}),e[a][r]=o,e}),{});return Object.entries(r).reduce(((e,[i,s])=>(e[i]=RA(s,t),e)),{})}(t,i))}const PA=/CMCD=[^&#]+/;function BA(e,t,i){const s=function(e,t={}){if(!e)return"";const i=RA(e,t);return`CMCD=${encodeURIComponent(i)}`}(t,i);if(!s)return e;if(PA.test(e))return e.replace(PA,s);const r=e.includes("?")?"&":"?";return`${e}${r}${s}`}function MA(e,t,i,s){e&&Object.keys(t).forEach((r=>{const o=e.filter((e=>e.groupId===r)).map((e=>{const o=Wc({},e);return o.details=void 0,o.attrs=new iu(o.attrs),o.url=o.attrs.URI=FA(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),o.groupId=o.attrs["GROUP-ID"]=t[r],o.attrs["PATHWAY-ID"]=s,o}));e.push(...o)}))}function FA(e,t,i,s){const{HOST:r,PARAMS:o,[i]:a}=s;let n;t&&(n=null==a?void 0:a[t],n&&(e=n));const l=new self.URL(e);return r&&!n&&(l.host=r),o&&Object.keys(o).sort().forEach((e=>{e&&l.searchParams.set(e,o[e])})),l.href}const UA=/^age:\s*[\d.]+\s*$/im;class OA{constructor(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=e&&e.xhrSetup||null,this.stats=new ou,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,s=this.stats;s.loading.first=0,s.loaded=0,s.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return r(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),r(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,s)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const s=t.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:o}=i.loadPolicy;if(s)for(const t in s)e.setRequestHeader(t,s[t]);t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,self.clearTimeout(this.requestTimeout),i.timeout=r&&zc(r)?r:o,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const s=t.readyState,r=this.config;if(!i.aborted&&s>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===s)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const s=t.status,o="text"!==t.responseType;if(s>=200&&s<300&&(o&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const r=o?t.response:t.responseText,a="arraybuffer"===t.responseType?r.byteLength:r.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const n=this.callbacks.onProgress;if(n&&n(i,e,r,t),!this.callbacks)return;const l={url:t.responseURL,data:r,code:s};this.callbacks.onSuccess(l,i,e,t)}else{const o=r.loadPolicy.errorRetry;Gf(o,i.retry,!1,{url:e.url,data:void 0,code:s})?this.retry(o):(Zc.error(`${s} while loading ${e.url}`),this.callbacks.onError({code:s,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(Gf(e,this.stats.retry,!0))this.retry(e);else{var t;Zc.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=Nf(e,i.retry),i.retry++,Zc.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)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&UA.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const NA=/(\d+)-(\d+)\/(\d+)/;class jA{constructor(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||GA,this.controller=new self.AbortController,this.stats=new ou}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now();const r=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Wc({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),o=i.onProgress,a="arraybuffer"===e.responseType,n=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:d}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,r),self.clearTimeout(this.requestTimeout),t.timeout=l&&zc(l)?l:d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),t.timeout),self.fetch(this.request).then((r=>{this.response=this.loader=r;const n=Math.max(self.performance.now(),s.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),d-(n-s.loading.start)),!r.ok){const{status:e,statusText:t}=r;throw new WA(t||"fetch, bad network response",e,r)}return s.loading.first=n,s.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=NA.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(zc(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(r.headers)||s.total,o&&zc(t.highWaterMark)?this.loadProgressively(r,s,e,t.highWaterMark,o):a?r.arrayBuffer():"json"===e.responseType?r.json():r.text()})).then((r=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),s.loading.end=Math.max(self.performance.now(),s.loading.first);const l=r[n];l&&(s.loaded=s.total=l);const d={url:a.url,data:r,code:a.status};o&&!zc(t.highWaterMark)&&o(s,e,r,a),i.onSuccess(d,s,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),s.aborted)return;const r=t&&t.code||0,o=t?t.message:null;i.onError({code:r,text:o},e,t?t.details:null,s)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,s=0,r){const o=new Ym,a=e.body.getReader(),n=()=>a.read().then((a=>{if(a.done)return o.dataLength&&r(t,i,o.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,d=l.length;return t.loaded+=d,d=s&&r(t,i,o.flush(),e)):r(t,i,l,e),n()})).catch((()=>Promise.reject()));return n()}}function GA(e,t){return new self.Request(e.url,t)}class WA extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const zA=/\s/,$A={newCue(e,t,i,s){const r=[];let o,a,n,l,d;const h=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const s=Uy(d.trim()),p=Wy(t,i,s);null!=e&&null!=(c=e.cues)&&c.getCueById(p)||(a=new h(t,i,s),a.id=p,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),r.push(a))}return e&&r.length&&(r.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),r.forEach((t=>nf(e,t)))),r}},VA=Nc(Nc({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:OA,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:class{constructor(e){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:s,media:r}=i;if(!e||!r)return;const o=performance.now(),a=t?t.stats:e.stats,n=t?t.duration:e.duration,l=o-a.loading.start,d=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=d)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!s||r.paused||!r.playbackRate||!r.readyState)return;const h=i.mainForwardBufferInfo;if(null===h)return;const c=this.bwEstimator.getEstimateTTFB(),u=Math.abs(r.playbackRate);if(l<=Math.max(c,n/(2*u)*1e3))return;const p=h.len/u,f=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&f>-1,g=this.getBwEstimate(),y=i.levels,A=y[e.level],b=a.total||Math.max(a.loaded,Math.round(n*A.averageBitrate/8));let v=m?l-f:l;v<1&&m&&(v=Math.min(l,8*a.loaded/g));const _=m?1e3*a.loaded/v:0,w=_?(b-a.loaded)/_:8*b/g+c/1e3;if(w<=p)return;const S=_?8*_:g;let E,T=Number.POSITIVE_INFINITY;for(E=e.level-1;E>d;E--){const e=y[E].maxBitrate;if(T=this.getTimeToLoadFrag(c/1e3,S,n*e,!y[E].details),T=w)return;if(T>10*n)return;i.nextLoadLevel=i.nextAutoLevel=E,m?this.bwEstimator.sample(l-Math.min(c,f),a.loaded):this.bwEstimator.sampleTTFB(l);const k=y[E].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>k&&this.resetEstimator(k),this.clearTimer(),Zc.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${p.toFixed(3)} s\n Estimated load time for current fragment: ${w.toFixed(3)} s\n Estimated load time for down switch fragment: ${T.toFixed(3)} s\n TTFB estimate: ${0|f} ms\n Current BW estimate: ${zc(g)?0|g:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${E} @ ${0|k} bps`),i.trigger(Hc.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(Zc.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new tm(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Hc.FRAG_LOADING,this.onFragLoading,this),e.on(Hc.FRAG_LOADED,this.onFragLoaded,this),e.on(Hc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Hc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Hc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Hc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Hc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(Hc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Hc.FRAG_LOADING,this.onFragLoading,this),e.off(Hc.FRAG_LOADED,this.onFragLoaded,this),e.off(Hc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Hc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Hc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Hc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Hc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(Hc.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(e,t){const i=t.frag;if(!this.ignoreFragment(i)){var s;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(s=t.part)?s:null;this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(e,t){this.clearTimer()}onError(e,t){if(!t.fatal)switch(t.details){case qc.BUFFER_ADD_CODEC_ERROR:case qc.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case qc.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:s}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=s?s.stats:e.stats,r=t-i.loading.start,o=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&o>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(r-Math.min(e,o),i.loaded)}else this.bwEstimator.sampleTTFB(r)}break}}}getTimeToLoadFrag(e,t,i,s){return e+i/t+(s?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:s}=t.stats,r=s.end-s.start;zc(r)&&(this.lastLevelLoadSec=r/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const s=i?i.stats:t.stats;if(t.type===Zp&&this.bwEstimator.sampleTTFB(s.loading.first-s.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,r=this.hls.levels[t.level],o=(r.loaded?r.loaded.bytes:0)+s.loaded,a=(r.loaded?r.loaded.duration:0)+e;r.loaded={bytes:o,duration:a},r.realBitrate=Math.round(8*o/a)}if(t.bitrateTest){const e={stats:s,frag:t,part:i,id:t.type};this.onFragBuffered(Hc.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:s}=t,r=null!=s&&s.stats.loaded?s.stats:i.stats;if(r.aborted)return;if(this.ignoreFragment(i))return;const o=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(o,r.loaded),r.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=o/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==Zp||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),s=this.hls.config.maxStarvationDelay,r=this.findBestLevel(i,t,e,0,s,1,1);if(r>-1)return r;const o=this.hls.firstLevel,a=Math.min(Math.max(o,t),e);return Zc.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${o} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const s=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,s)&&t[e].loadError<=t[s].loadError)return e}return this._nextAutoLevel=s,this.nextAutoLevelKey=this.getAutoLevelKey(),s}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:s,config:r,minAutoLevel:o}=i,a=t?t.duration:e?e.duration:0,n=this.getBwEstimate(),l=this.getStarvationDelay();let d=r.abrBandWidthFactor,h=r.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(n,o,s,l,0,d,h);if(e>=0)return e}let c=a?Math.min(a,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){c=(a?Math.min(a,r.maxLoadingDelay):r.maxLoadingDelay)-e,Zc.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),d=h=1}}const u=this.findBestLevel(n,o,s,l,c,d,h);if(Zc.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const p=i.levels[o],f=i.levels[i.loadLevel];return(null==p?void 0:p.bitrate)<(null==f?void 0:f.bitrate)?o:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,s=e.mainForwardBufferInfo;return(s?s.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,s,r,o,a){var n;const l=s+r,d=this.lastLoadedFragLevel,h=-1===d?this.hls.firstLevel:d,{fragCurrent:c,partCurrent:u}=this,{levels:p,allAudioTracks:f,loadLevel:m,config:g}=this.hls;if(1===p.length)return 0;const y=p[h],A=!(null==y||null==(n=y.details)||!n.live),b=-1===m||-1===d;let v,_="SDR",w=(null==y?void 0:y.frameRate)||0;const{audioPreference:S,videoPreference:E}=g,T=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const s=t.channels||"2";return i.channels[s]=(i.channels[s]||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:{}})}(f));if(b){if(-1!==this.firstSelection)return this.firstSelection;const s=this.codecTiers||(this.codecTiers=function(e,t,i,s){return e.slice(i,s+1).reduce(((e,i)=>{if(!i.codecSet)return e;const s=i.audioGroups;let r=e[i.codecSet];r||(e[i.codecSet]=r={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!s,fragmentError:0}),r.minBitrate=Math.min(r.minBitrate,i.bitrate);const o=Math.min(i.height,i.width);return r.minHeight=Math.min(r.minHeight,o),r.minFramerate=Math.min(r.minFramerate,i.frameRate),r.maxScore=Math.max(r.maxScore,i.score),r.fragmentError+=i.fragmentError,r.videoRanges[i.videoRange]=(r.videoRanges[i.videoRange]||0)+1,s&&s.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(r.hasDefaultAudio=r.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{r.channels[e]=(r.channels[e]||0)+i.channels[e]})))})),e}),{})}(p,T,t,i)),r=function(e,t,i,s,r){const o=Object.keys(e),a=null==s?void 0:s.channels,n=null==s?void 0:s.audioCodec,l=a&&2===parseInt(a);let d=!0,h=!1,c=1/0,u=1/0,p=1/0,f=0,m=[];const{preferHDR:g,allowedVideoRanges:y}=am(t,r);for(let t=o.length;t--;){const i=e[o[t]];d=i.channels[2]>0,c=Math.min(c,i.minHeight),u=Math.min(u,i.minFramerate),p=Math.min(p,i.minBitrate);const s=y.filter((e=>i.videoRanges[e]>0));s.length>0&&(h=!0,m=s)}c=zc(c)?c:0,u=zc(u)?u:0;const A=Math.max(1080,c),b=Math.max(30,u);p=zc(p)?p:i,i=Math.max(p,i),h||(t=void 0,m=[]);const v=o.reduce(((t,s)=>{const r=e[s];if(s===t)return t;if(r.minBitrate>i)return nm(s,`min bitrate of ${r.minBitrate} > current estimate of ${i}`),t;if(!r.hasDefaultAudio)return nm(s,"no renditions with default or auto-select sound found"),t;if(n&&s.indexOf(n.substring(0,4))%5!=0)return nm(s,`audio codec preference "${n}" not found`),t;if(a&&!l){if(!r.channels[a])return nm(s,`no renditions with ${a} channel sound found (channels options: ${Object.keys(r.channels)})`),t}else if((!n||l)&&d&&0===r.channels[2])return nm(s,"no renditions with stereo sound found"),t;return r.minHeight>A?(nm(s,`min resolution of ${r.minHeight} > maximum of ${A}`),t):r.minFramerate>b?(nm(s,`min framerate of ${r.minFramerate} > maximum of ${b}`),t):m.some((e=>r.videoRanges[e]>0))?r.maxScore=Rp(t)||r.fragmentError>e[t].fragmentError)?t:(f=r.maxScore,s):(nm(s,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0);return{codecSet:v,videoRanges:m,preferHDR:g,minFramerate:u,minBitrate:p}}(s,_,e,S,E),{codecSet:o,videoRanges:a,minFramerate:n,minBitrate:l,preferHDR:d}=r;v=o,_=d?a[a.length-1]:a[0],w=n,e=Math.max(e,l),Zc.log(`[abr] picked start tier ${JSON.stringify(r)}`)}else v=null==y?void 0:y.codecSet,_=null==y?void 0:y.videoRange;const k=u?u.duration:c?c.duration:0,L=this.bwEstimator.getEstimateTTFB()/1e3,C=[];for(let n=i;n>=t;n--){var x;const t=p[n],c=n>h;if(!t)continue;if(g.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&rm(t,T,_,w,e,S)?(t.supportedPromise=om(t,T,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,s=i.indexOf(t);e.error?Zc.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${s} ${JSON.stringify(e)}`):e.supported||(Zc.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${s} ${JSON.stringify(e)}`),s>-1&&i.length>1&&(Zc.log(`[abr] Removing unsupported level ${s}`),this.hls.removeLevel(s)))}))):t.supportedResult=im}if(v&&t.codecSet!==v||_&&t.videoRange!==_||c&&w>t.frameRate||!c&&w>0&&w=2*k&&0===r?p[n].averageBitrate:p[n].maxBitrate,I=this.getTimeToLoadFrag(L,D,R*E,void 0===f);if(D>=R&&(n===d||0===t.loadError&&0===t.fragmentError)&&(I<=L||!zc(I)||A&&!this.bitrateTestDelay||I${n} adjustedbw(${Math.round(D)})-bitrate=${Math.round(D-R)} ttfb:${L.toFixed(1)} avgDuration:${E.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${I.toFixed(1)} firstSelection:${b} codecSet:${v} videoRange:${_} hls.loadLevel:${m}`)),b&&(this.firstSelection=n),n}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,s=Math.min(Math.max(e,i),t);this._nextAutoLevel!==s&&(this.nextAutoLevelKey="",this._nextAutoLevel=s)}},bufferController:class{constructor(e){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(Hc.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&Zc.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=Tp(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=Zc.log.bind(Zc,t),this.warn=Zc.warn.bind(Zc,t),this.error=Zc.error.bind(Zc,t),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){const{hls:e}=this;e.on(Hc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Hc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Hc.BUFFER_RESET,this.onBufferReset,this),e.on(Hc.BUFFER_APPENDING,this.onBufferAppending,this),e.on(Hc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Hc.BUFFER_EOS,this.onBufferEos,this),e.on(Hc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Hc.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(Hc.FRAG_PARSED,this.onFragParsed,this),e.on(Hc.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(Hc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Hc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Hc.BUFFER_RESET,this.onBufferReset,this),e.off(Hc.BUFFER_APPENDING,this.onBufferAppending,this),e.off(Hc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Hc.BUFFER_EOS,this.onBufferEos,this),e.off(Hc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Hc.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(Hc.FRAG_PARSED,this.onFragParsed,this),e.off(Hc.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new ay(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(e,t){let i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,s=Tp(this.appendSource);if(i&&s){var r;const e=this.mediaSource=new s;this.log(`created media source: ${null==(r=e.constructor)?void 0:r.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const s=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||s&&e instanceof s,ly(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;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)),e&&(e.removeEventListener("emptied",this._onMediaEmptied),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&ly(e),e.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(Hc.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(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)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,s=Object.keys(t);if(s.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var s;const{id:r,codec:o,levelCodec:a,container:n,metadata:l}=t[e],d=Mp(i.codec,i.levelCodec),h=null==d?void 0:d.replace(ny,"$1");let c=Mp(o,a);const u=null==(s=c)?void 0:s.replace(ny,"$1");if(c&&h!==u){"audio"===e.slice(0,5)&&(c=Bp(c,this.appendSource));const t=`${n};codecs=${c}`;this.appendChangeType(e,t),this.log(`switching codec ${d} to ${c}`),this.tracks[e]={buffer:i.buffer,codec:o,container:n,levelCodec:a,metadata:l,id:r}}}}else this.pendingTracks[e]=t[e]})),i)return;const r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${s.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,s={execute:()=>{const s=this.sourceBuffer[e];s&&(this.log(`changing ${e} sourceBuffer type to ${t}`),s.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(s,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:s,tracks:r}=this,{data:o,type:a,frag:n,part:l,chunkMeta:d}=t,h=d.buffering[a],c=self.performance.now();h.start=c;const u=n.stats.buffering,p=l?l.stats.buffering:null;0===u.start&&(u.start=c),p&&0===p.start&&(p.start=c);const f=r.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==f?void 0:f.container)&&(m=!this.lastMpegAudioChunk||1===d.id||this.lastMpegAudioChunk.sn!==d.sn,this.lastMpegAudioChunk=d);const g=n.start,y={execute:()=>{if(h.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=g-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${g} (delta: ${t}) sn: ${n.sn})`),e.timestampOffset=g)}}this.appendExecutor(o,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();h.executeEnd=h.end=e,0===u.first&&(u.first=e),p&&0===p.first&&(p.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=vm.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(Hc.BUFFER_APPENDED,{type:a,frag:n,part:l,chunkMeta:d,parent:n.type,timeRanges:i})},onError:e=>{const t={type:Jc.MEDIA_ERROR,parent:n.type,details:qc.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:n,part:l,chunkMeta:d,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=qc.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=qc.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(Hc.ERROR,t)}};s.append(y,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,s=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(Hc.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(s(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(s(e),e)}))}onFragParsed(e,t){const{frag:i,part:s}=t,r=[],o=s?s.elementaryStreams:i.elementaryStreams;o[lu]?r.push("audiovideo"):(o[au]&&r.push("audio"),o[nu]&&r.push("video"));0===r.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,s&&(s.stats.buffering.end=e);const t=s?s.stats:i.stats;this.hls.trigger(Hc.FRAG_BUFFERED,{frag:i,part:s,stats:t,id:i.type})}),r)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const s=this.sourceBuffer[i];return!s||t.type&&t.type!==i||(s.ending=!0,s.ended||(s.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(s&&!s.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const s=e.config,r=i.currentTime,o=t.levelTargetDuration,a=t.live&&null!==s.liveBackBufferLength?s.liveBackBufferLength:s.backBufferLength;if(zc(a)&&a>0){const e=Math.max(a,o),t=Math.floor(r/o)*o-e;this.flushBackBuffer(r,o,t)}if(zc(s.frontBufferFlushThreshold)&&s.frontBufferFlushThreshold>0){const e=Math.max(s.maxBufferLength,s.frontBufferFlushThreshold),t=Math.max(e,o),i=Math.floor(r/o)*o+t;this.flushFrontBuffer(r,o,i)}}flushBackBuffer(e,t,i){const{details:s,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((o=>{const a=r[o];if(a){const r=vm.getBuffered(a);if(r.length>0&&i>r.start(0)){if(this.hls.trigger(Hc.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=s&&s.live)this.hls.trigger(Hc.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&r.end(r.length-1)-e<2*t)return void this.log(`Cannot flush ${o} back buffer while SourceBuffer is in ended state`);this.hls.trigger(Hc.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:o})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((r=>{const o=s[r];if(o){const s=vm.getBuffered(o),a=s.length;if(a<2)return;const n=s.start(a-1),l=s.end(a-1);if(i>n||e>=n&&e<=l)return;if(o.ended&&e-l<2*t)return void this.log(`Cannot flush ${r} front buffer while SourceBuffer is in ended state`);this.hls.trigger(Hc.BUFFER_FLUSHING,{startOffset:n,endOffset:1/0,type:r})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:s}=this,r=e.fragments[0].start+e.totalduration,o=i.duration,a=zc(s.duration)?s.duration:0;e.live&&t.config.liveDurationInfinity?(s.duration=1/0,this.updateSeekableRange(e)):(r>a&&r>o||!zc(o))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),s.duration=r)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const s=Math.max(0,i[0].start),r=Math.max(s,s+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${s}-${r}.`),t.setLiveSeekableRange(s,r)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,s=Object.keys(i).length;if(s&&(!e||2===s||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(Hc.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const r in e)if(!t[r]){var s;const o=e[r];if(!o)throw Error(`source buffer exists for track ${r}, however track does not`);let a=-1===(null==(s=o.levelCodec)?void 0:s.indexOf(","))?o.levelCodec:o.codec;a&&"audio"===r.slice(0,5)&&(a=Bp(a,this.appendSource));const n=`${o.container};codecs=${a}`;this.log(`creating sourceBuffer(${n})`);try{const e=t[r]=i.addSourceBuffer(n),s=r;this.addBufferListener(s,"updatestart",this._onSBUpdateStart),this.addBufferListener(s,"updateend",this._onSBUpdateEnd),this.addBufferListener(s,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(s,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(Hc.BUFFER_FLUSHED,{type:r})})),this.tracks[r]={buffer:e,codec:a,container:o.container,levelCodec:o.levelCodec,metadata:o.metadata,id:o.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:r,mimeType:n})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const s=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${s}`,t),this.hls.trigger(Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:s,fatal:!1});const r=this.operationQueue.current(e);r&&r.onError(s)}removeExecutor(e,t,i){const{media:s,mediaSource:r,operationQueue:o,sourceBuffer:a}=this,n=a[e];if(!s||!r||!n)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void o.shiftAndExecuteNext(e);const l=zc(s.duration)?s.duration:1/0,d=zc(r.duration)?r.duration:1/0,h=Math.max(0,t),c=Math.min(i,l,d);c>h&&(!n.ending||n.ended)?(n.ended=!1,this.log(`Removing [${h},${c}] from the ${e} SourceBuffer`),n.remove(h,c)):o.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)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`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,s=t.map((e=>i.appendBlocker(e)));Promise.all(s).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const s=this.sourceBuffer[e];if(!s)return;const r=i.bind(this,e);this.listeners[e].push({event:t,listener:r}),s.addEventListener(t,r)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:sA,errorController:class{constructor(e){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=e,this.log=Zc.log.bind(Zc,"[info]:"),this.warn=Zc.warn.bind(Zc,"[warning]:"),this.error=Zc.error.bind(Zc,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Hc.ERROR,this.onError,this),e.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Hc.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Hc.ERROR,this.onError,this),e.off(Hc.ERROR,this.onErrorOut,this),e.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Hc.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===Zp?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,s;if(t.fatal)return;const r=this.hls,o=t.context;switch(t.details){case qc.FRAG_LOAD_ERROR:case qc.FRAG_LOAD_TIMEOUT:case qc.KEY_LOAD_ERROR:case qc.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case qc.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:Hf,flags:Yf});case qc.FRAG_GAP:case qc.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=Jf);case qc.LEVEL_EMPTY_ERROR:case qc.LEVEL_PARSING_ERROR:{var a,n;const e=t.parent===Zp?t.level:r.loadLevel;t.details===qc.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(n=a.levelDetails)&&n.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case qc.LEVEL_LOAD_ERROR:case qc.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==o?void 0:o.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,o.level)));case qc.AUDIO_TRACK_LOAD_ERROR:case qc.AUDIO_TRACK_LOAD_TIMEOUT:case qc.SUBTITLE_LOAD_ERROR:case qc.SUBTITLE_TRACK_LOAD_TIMEOUT:if(o){const e=r.levels[r.loadLevel];if(e&&(o.type===Qp&&e.hasAudioGroup(o.groupId)||o.type===Xp&&e.hasSubtitleGroup(o.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,r.loadLevel),t.errorAction.action=Jf,void(t.errorAction.flags=Qf)}return;case qc.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=r.levels[r.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:Jf,flags:Xf,hdcpLevel:i}:this.keySystemError(t)}return;case qc.BUFFER_ADD_CODEC_ERROR:case qc.REMUX_ALLOC_ERROR:case qc.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(s=t.level)?s:r.loadLevel));case qc.INTERNAL_EXCEPTION:case qc.BUFFER_APPENDING_ERROR:case qc.BUFFER_FULL_ERROR:case qc.LEVEL_SWITCH_ERROR:case qc.BUFFER_STALLED_ERROR:case qc.BUFFER_SEEK_OVER_HOLE:case qc.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:Hf,flags:Yf})}t.type===Jc.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Of(this.hls.config.playlistLoadPolicy,e),s=this.playlistError++;if(Gf(i,s,Uf(e),e.response))return{action:Kf,flags:Yf,retryConfig:i,retryCount:s};const r=this.getLevelSwitchAction(e,t);return i&&(r.retryConfig=i,r.retryCount=s),r}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),s=t.levels[i],{fragLoadPolicy:r,keyLoadPolicy:o}=t.config,a=Of(e.details.startsWith("key")?o:r,e),n=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(s){e.details!==qc.FRAG_GAP&&s.fragmentError++;if(Gf(a,n,Uf(e),e.response))return{action:Kf,flags:Yf,retryConfig:a,retryCount:n}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=n),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const s=this.hls.levels[t];if(s){var r,o;const t=e.details;s.loadError++,t===qc.BUFFER_APPEND_ERROR&&s.fragmentError++;let l=-1;const{levels:d,loadLevel:h,minAutoLevel:c,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const p=null==(r=e.frag)?void 0:r.type,f=(p===ef&&t===qc.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===qc.BUFFER_ADD_CODEC_ERROR||t===qc.BUFFER_APPEND_ERROR))&&d.some((({audioCodec:e})=>s.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===qc.BUFFER_ADD_CODEC_ERROR||t===qc.BUFFER_APPEND_ERROR)&&d.some((({codecSet:e,audioCodec:t})=>s.codecSet!==e&&s.audioCodec===t)),{type:g,groupId:y}=null!=(o=e.context)?o:{};for(let i=d.length;i--;){const r=(i+h)%d.length;if(r!==h&&r>=c&&r<=u&&0===d[r].loadError){var a,n;const i=d[r];if(t===qc.FRAG_GAP&&p===Zp&&e.frag){const t=d[r].details;if(t){const i=zf(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(g===Qp&&i.hasAudioGroup(y)||g===Xp&&i.hasSubtitleGroup(y))continue;if(p===ef&&null!=(a=s.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||p===tf&&null!=(n=s.subtitleGroups)&&n.some((e=>i.hasSubtitleGroup(e)))||f&&s.audioCodec===i.audioCodec||!f&&s.audioCodec!==i.audioCodec||m&&s.codecSet===i.codecSet)continue}l=r;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:Jf,flags:Yf,nextAutoLevel:l}}return{action:Jf,flags:Qf}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case Hf:break;case Jf:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===qc.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()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:s,hdcpLevel:r,nextAutoLevel:o}=i;switch(s){case Yf:this.switchLevel(e,o);break;case Xf:r&&(t.maxHdcpLevel=vf[vf.indexOf(r)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,o)}switchLevel(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)}},fpsController:class{constructor(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()}setStreamController(e){this.streamController=e}registerListeners(){this.hls.on(Hc.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(Hc.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const s=performance.now();if(t){if(this.lastTime){const e=s-this.lastTime,r=i-this.lastDroppedFrames,o=t-this.lastDecodedFrames,a=1e3*r/e,n=this.hls;if(n.trigger(Hc.FPS_DROP,{currentDropped:r,currentDecoded:o,totalDroppedFrames:i}),a>0&&r>n.config.fpsDroppedMonitoringThreshold*o){let e=n.currentLevel;Zc.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===n.autoLevelCapping||n.autoLevelCapping>=e)&&(e-=1,n.trigger(Hc.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:n.currentLevel}),n.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=s,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:ku,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},{cueHandler:$A,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends Km{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",tf),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Hc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Hc.ERROR,this.onError,this),e.on(Hc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Hc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(Hc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Hc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(Hc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Hc.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Hc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Hc.ERROR,this.onError,this),e.off(Hc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Hc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(Hc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Hc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(Hc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Hc.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=Om,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(e,t){this.mainDetails=t.details}onSubtitleFragProcessed(e,t){const{frag:i,success:s}=t;if(this.fragPrevious=i,this.state=Om,!s)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let o;const a=i.start;for(let e=0;e=r[e].start&&a<=r[e].end){o=r[e];break}const n=i.start+i.duration;o?o.end=n:(o={start:a,end:n},r.push(o)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:s}=t;if(0===i&&s!==Number.POSITIVE_INFINITY){const e=s-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew Lf(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new Lf(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,tf),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const s=this.levels[this.currentTrackId];null!=s&&s.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,s&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:s,levels:r}=this,{details:o,id:a}=t;if(!r)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const n=r[a];if(a>=r.length||!n)return;this.log(`Subtitle track ${a} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""},duration:${o.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(o.live||null!=(i=n.details)&&i.live){const e=this.mainDetails;if(o.deltaUpdateFailed||!e)return;const t=e.fragments[0];var d;if(n.details)l=this.alignPlaylists(o,n.details,null==(d=this.levelLastLoaded)?void 0:d.details),0===l&&t&&(l=t.start,Pf(o,l));else o.hasProgramDateTime&&e.hasProgramDateTime?(km(o,e),l=o.fragments[0].start):t&&(l=t.start,Pf(o,l))}if(n.details=o,this.levelLastLoaded=n,a===s&&(this.startFragRequested||!this.mainDetails&&o.live||this.setStartPosition(this.mainDetails||o,l),this.tick(),o.live&&!this.fragCurrent&&this.media&&this.state===Om)){zf(null,o.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),n.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,s=t.decryptdata,r=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=s&&s.key&&s.iv&&"AES-128"===s.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),s.key.buffer,s.iv.buffer).catch((e=>{throw r.trigger(Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const s=performance.now();r.trigger(Hc.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:s}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=Om}))}}doTick(){if(this.media){if(this.state===Om){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:s}=this,r=this.getLoadPosition(),o=vm.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,s.maxBufferHole),{end:a,len:n}=o,l=this.getFwdBufferInfo(this.media,Zp),d=i.details;if(n>this.getMaxBufferLength(null==l?void 0:l.len)+d.levelTargetDuration)return;const h=d.fragments,c=h.length,u=d.edge;let p=null;const f=this.fragPrevious;if(au-e?0:e;p=zf(f,h,Math.max(h[0].start,a),t),!p&&f&&f.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=hf(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Hc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Hc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Hc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Hc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Hc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Hc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Hc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Hc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Hc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Hc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media&&(this.queuedDefaultTrack>-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))}pollTrackChange(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)}onMediaDetaching(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId);hf(this.media.textTracks).forEach((e=>{lf(e)})),this.subtitleTrack=-1,this.media=null}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.subtitleTracks}onSubtitleTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Subtitle track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Subtitle track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!r&&t){this.selectDefaultTrack=!1;const i=lm(t,e);if(i>-1)r=e[i];else{const e=lm(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const o={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(Hc.SUBTITLE_TRACKS_UPDATED,o),-1!==s&&-1===this.trackId&&this.setSubtitleTrack(s)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let s=0;s-1){const e=this.tracksInGroup[s];return this.setSubtitleTrack(s),e}if(i)return null;{const i=lm(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,s=t.groupId;let r=t.url;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(Hc.SUBTITLE_TRACK_LOADING,{url:r,id:i,groupId:s,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=hf(e.textTracks),i=this.currentTrack;let s;if(i&&(s=t.filter((e=>ry(i,e)))[0],s||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==s&&(e.mode="disabled")})),s){const e=this.subtitleDisplay?"showing":"hidden";s.mode!==e&&(s.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!zc(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e]||null;if(this.trackId=e,this.currentTrack=s,this.toggleTrackModes(),!s)return void this.hls.trigger(Hc.SUBTITLE_TRACK_SWITCH,{id:e});const r=!!s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;this.log(`Switching to subtitle-track ${e}`+(s?` "${s.name}" lang:${s.lang} group:${s.groupId}`:""));const{id:o,groupId:a="",name:n,type:l,url:d}=s;this.hls.trigger(Hc.SUBTITLE_TRACK_SWITCH,{id:o,groupId:a,name:n,type:l,url:d});const h=this.switchParams(s.url,null==i?void 0:i.details,s.details);this.loadPlaylist(h)}},timelineController:class{constructor(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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(Hc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Hc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Hc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Hc.FRAG_LOADING,this.onFragLoading,this),e.on(Hc.FRAG_LOADED,this.onFragLoaded,this),e.on(Hc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(Hc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(Hc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(Hc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(Hc.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(Hc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Hc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Hc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Hc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Hc.FRAG_LOADING,this.onFragLoading,this),e.off(Hc.FRAG_LOADED,this.onFragLoaded,this),e.off(Hc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(Hc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(Hc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(Hc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(Hc.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){const e=new Cy(this,"textTrack1"),t=new Cy(this,"textTrack2"),i=new Cy(this,"textTrack3"),s=new Cy(this,"textTrack4");this.cea608Parser1=new Ty(1,e,t),this.cea608Parser2=new Ty(3,i,s)}}addCues(e,t,i,s,r){let o=!1;for(let e=r.length;e--;){const s=r[e],h=(a=s[0],n=s[1],l=t,d=i,Math.min(n,d)-Math.max(a,l));if(h>=0&&(s[0]=Math.min(s[0],t),s[1]=Math.max(s[1],i),o=!0,h/(i-t)>.5))return}var a,n,l,d;if(o||r.push([t,i]),this.config.renderTextTracksNatively){const r=this.captionsTracks[e];this.Cues.newCue(r,t,i,s)}else{const r=this.Cues.newCue(null,t,i,s);this.hls.trigger(Hc.CUES_PARSED,{type:"captions",cues:r,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:s,timescale:r}){const{unparsedVttFrags:o}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:s,timescale:r}),o.length&&(this.unparsedVttFrags=[],o.forEach((e=>{this.onFragLoaded(Hc.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let s=0;s{lf(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===$y));if(this.config.enableWebVTT||s&&this.config.enableIMSC1){if(iy(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?hf(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let s;if(t){let i=null;for(let s=0;snull!==e)).map((e=>e.label));e.length&&Zc.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(Hc.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,s=this.captionsProperties[i];s&&(s.label=e.name,e.lang&&(s.languageCode=e.lang),s.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===Zp){var i,s;const{cea608Parser1:e,cea608Parser2:r,lastSn:o}=this,{cc:a,sn:n}=t.frag,l=null!=(i=null==(s=t.part)?void 0:s.index)?i:-1;e&&r&&(n!==o+1||n===o&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),r.reset()),this.lastCc=a,this.lastSn=n,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:s}=t;if(i.type===tf)if(s.byteLength){const e=i.decryptdata,r="stats"in t;if(null==e||!e.encrypted||r){const e=this.tracks[i.level],r=this.vttCCs;r[i.cc]||(r[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===$y?this._parseIMSC1(i,s):this._parseVTTs(t)}}else this.hls.trigger(Hc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;qy(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(Hc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{Zc.log(`Failed to parse IMSC1: ${t}`),i.trigger(Hc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:s}=e,{initPTS:r,unparsedVttFrags:o}=this,a=r.length-1;if(!r[i.cc]&&-1===a)return void o.push(e);const n=this.hls;zy(null!=(t=i.initSegment)&&t.data?cp(i.initSegment.data,new Uint8Array(s)):s,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),n.trigger(Hc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const r="Missing initPTS for VTT MPEGTS"===t.message;r?o.push(e):this._fallbackToIMSC1(i,s),Zc.log(`Failed to parse VTT cue: ${t}`),r&&a>i.cc||n.trigger(Hc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||qy(t,this.initPTS[e.cc],(()=>{i.textCodec=$y,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>nf(i,e)))}else{const s=this.tracks[t];if(!s)return;const r=s.default?"default":"subtitles"+t;i.trigger(Hc.CUES_PARSED,{type:"subtitles",cues:e,track:r})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===tf&&this.onFragLoaded(Hc.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:s}=this;if(!this.enabled||!i||!s)return;const{frag:r,samples:o}=t;if(r.type!==Zp||"NONE"!==this.closedCaptionsForLevel(r))for(let e=0;edf(e[s],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==s){const{textTracks:e}=this;Object.keys(e).forEach((i=>df(e[i],t,s)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let s=2;for(let r=0;r0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=Om):(this.loadedmetadata=!1,this.state=Wm),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case Om:this.doTickIdle();break;case Wm:{var e;const{levels:t,trackId:i}=this,s=null==t||null==(e=t[i])?void 0:e.details;if(s){if(this.waitForCdnTuneIn(s))break;this.state=Jm}break}case Gm:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=Om}break}case Jm:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:s,complete:r}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=jm;const e={frag:t,part:i,payload:s.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),r&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=vm.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);$f(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=Om}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=Om)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:s}=this,r=e.config;if(!i&&(this.startFragRequested||!r.startFragPrefetch)||null==t||!t[s])return;const o=t[s],a=o.details;if(!a||a.live&&this.levelLastLoaded!==o||this.waitForCdnTuneIn(a))return void(this.state=Wm);const n=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&n&&(this.bufferFlushed=!1,this.afterBufferFlushed(n,au,ef));const l=this.getFwdBufferInfo(n,ef);if(null===l)return;const{bufferedTrack:d,switchingTrack:h}=this;if(!h&&this._streamEnded(l,a))return e.trigger(Hc.BUFFER_EOS,{type:"audio"}),void(this.state=Vm);const c=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,Zp),u=l.len,p=this.getMaxBufferLength(null==c?void 0:c.len),f=a.fragments,m=f[0].start;let g=this.flushing?this.getLoadPosition():l.end;if(h&&i){const e=this.getLoadPosition();d&&!sy(h.attrs,d.attrs)&&(g=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=p&&!h&&gc.end+a.targetduration;if(b||(null==c||!c.len)&&l.len){const e=this.getAppendedFrag(y.start,Zp);if(null===e)return;if(A||(A=!!e.gap||!!b&&0===c.len),b&&!A||A&&l.nextStart&&l.nextStartnew Lf(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:s}=this;s&&(s.abortRequests(),this.removeUnbufferedFrags(s.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=Om,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=Um),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(e,t){this.mainDetails=t.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(Hc.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:s}=this,{details:r,id:o}=t;if(!s)return void this.warn(`Audio tracks were reset while loading level ${o}`);this.log(`Audio track ${o} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const a=s[o];let n=0;if(r.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(r);const e=this.mainDetails;if(r.deltaUpdateFailed||!e)return;var l;if(!a.details&&r.hasProgramDateTime&&e.hasProgramDateTime)km(r,e),n=r.fragments[0].start;else n=this.alignPlaylists(r,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=r,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&r.live||this.setStartPosition(this.mainDetails||r,n),this.state!==Wm||this.waitForCdnTuneIn(r)||(this.state=Om),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{config:o,trackId:a,levels:n}=this;if(!n)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=n[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const d=l.details;if(!d)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const h=o.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let c=this.transmuxer;c||(c=this.transmuxer=new ty(this.hls,ef,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],p=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=s?s.index:-1,o=-1!==t,a=new _m(i.level,i.sn,i.stats.chunkCount,r.byteLength,t,o);c.push(r,p,h,"",i,s,d.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${d.startSN} ,${d.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:s,cache:new Ym,complete:!1};e.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=Jm}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i.type===ef)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(Hc.AUDIO_TRACK_SWITCHED,Nc({},e)))}this.fragBufferedComplete(i,s)}else if(!this.loadedmetadata&&i.type===Zp){const e=this.videoBuffer||this.media;if(e){vm.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=Hm;else switch(t.details){case qc.FRAG_GAP:case qc.FRAG_PARSING_ERROR:case qc.FRAG_DECRYPT_ERROR:case qc.FRAG_LOAD_ERROR:case qc.FRAG_LOAD_TIMEOUT:case qc.KEY_LOAD_ERROR:case qc.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(ef,t);break;case qc.AUDIO_TRACK_LOAD_ERROR:case qc.AUDIO_TRACK_LOAD_TIMEOUT:case qc.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Wm||(null==(i=t.context)?void 0:i.type)!==Qp||(this.state=Om);break;case qc.BUFFER_APPEND_ERROR:case qc.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===qc.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case qc.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==nu&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==nu){this.flushing=!1,this.bufferFlushed=!0,this.state===Vm&&(this.state=Om);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,ef),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{details:h}=d,{audio:c,text:u,id3:p,initSegment:f}=r;if(!this.fragContextChanged(n)&&h){if(this.state=zm,this.switchingTrack&&c&&this.completeAudioSwitch(this.switchingTrack),null!=f&&f.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,f.tracks,e,o),s.trigger(Hc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}if(c){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=c;l&&(l.elementaryStreams[au]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(au,e,t,i,s),this.bufferFragmentData(c,n,l,o)}if(null!=p&&null!=(t=p.samples)&&t.length){const e=Wc({id:i,frag:n,details:h},p);s.trigger(Hc.FRAG_PARSING_METADATA,e)}if(u){const e=Wc({id:i,frag:n,details:h},u);s.trigger(Hc.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(n)}_bufferInitSegment(e,t,i,s){if(this.state!==zm)return;t.video&&delete t.video;const r=t.audio;if(!r)return;r.id="audio";const o=e.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${o}/${r.codec}]`),o&&1===o.split(",").length&&(r.levelCodec=o),this.hls.trigger(Hc.BUFFER_CODECS,t);const a=r.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:s,parent:i.type,data:a};this.hls.trigger(Hc.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);var r;if(this.fragCurrent=e,this.switchingTrack||s===um||s===fm)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(r=t.details)&&r.live&&!this.initPTS[e.cc]){this.log(`Waiting for video PTS in continuity counter ${e.cc} of live stream before loading audio fragment ${e.sn} of level ${this.trackId}`),this.state=Jm;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&km(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,s=null==i?void 0:i.attrs,r=e.attrs;t&&s&&(s.CHANNELS!==r.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(Hc.AUDIO_TRACK_SWITCHED,Nc({},e))}},audioTrackController:class extends Zf{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Hc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Hc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Hc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Hc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(Hc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Hc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Hc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Hc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Hc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(Hc.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Audio track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Audio track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!r&&t){const i=lm(t,e,hm);if(i>-1)r=e[i];else{const e=lm(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(Hc.AUDIO_TRACKS_UPDATED,a);const n=this.trackId;if(-1!==s&&-1===n)this.setAudioTrack(s);else if(e.length&&-1===n){var o;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(o=this.groupIds)?void 0:o.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==Qp||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(this.requestScheduled=-1,this.checkRetry(t)))}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(e){this.selectDefaultTrack=!1,this.setAudioTrack(e)}setAudioOption(e){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const s=this.currentTrack;if(s&&dm(e,s,hm))return s;const r=lm(e,this.tracksInGroup,hm);if(r>-1){const e=this.tracksInGroup[r];return this.setAudioTrack(r),e}if(s){let s=t.loadLevel;-1===s&&(s=t.firstAutoLevel);const r=function(e,t,i,s,r){const o=t[s],a=t.reduce(((e,t,i)=>{const s=t.uri;return(e[s]||(e[s]=[])).push(i),e}),{})[o.uri];a.length>1&&(s=Math.max.apply(Math,a));const n=o.videoRange,l=o.frameRate,d=o.codecSet.substring(0,4),h=cm(t,s,(t=>{if(t.videoRange!==n||t.frameRate!==l||t.codecSet.substring(0,4)!==d)return!1;const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return lm(e,o,r)>-1}));return h>-1?h:cm(t,s,(t=>{const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return lm(e,o,r)>-1}))}(e,t.levels,i,s,hm);if(-1===r)return null;t.nextLoadLevel=r}if(e.channels||e.audioCodec){const t=lm(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e],r=s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;if(this.log(`Switching to audio-track ${e} "${s.name}" lang:${s.lang} group:${s.groupId} channels:${s.channels}`),this.trackId=e,this.currentTrack=s,this.hls.trigger(Hc.AUDIO_TRACK_SWITCHING,Nc({},s)),r)return;const o=this.switchParams(s.url,null==i?void 0:i.details,s.details);this.loadPlaylist(o)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:nA.MANIFEST,su:!this.initialized})}catch(e){Zc.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],s=this.getObjectType(t),r={d:1e3*t.duration,ot:s};s!==nA.VIDEO&&s!==nA.AUDIO&&s!=nA.MUXED||(r.br=i.bitrate/1e3,r.tb=this.getTopBandwidth(s)/1e3,r.bl=this.getBufferLength(s)),this.apply(e,r)}catch(e){Zc.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}))}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Hc.MEDIA_DETACHED,this.onMediaDetached,this),e.on(Hc.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(Hc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Hc.MEDIA_DETACHED,this.onMediaDetached,this),e.off(Hc.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=null}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(e,t){var i,s;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(s=t.tracks.video)?void 0:s.buffer}createData(){var e;return{v:1,sf:lA.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Wc(t,this.createData());const i=t.ot===nA.INIT||t.ot===nA.VIDEO||t.ot===nA.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:s}=this;s&&(t=Object.keys(t).reduce(((e,i)=>(s.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),IA(e.headers,t)):e.url=BA(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?nA.TIMED_TEXT:"initSegment"===e.sn?nA.INIT:"audio"===t?nA.AUDIO:"main"===t?this.hls.audioTracks.length?nA.VIDEO:nA.MUXED:void 0}getTopBandwidth(e){let t,i=0;const s=this.hls;if(e===nA.AUDIO)t=s.audioTracks;else{const e=s.maxAutoLevel,i=e>-1?e+1:s.levels.length;t=s.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===nA.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*vm.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}},contentSteeringController:class{constructor(e){this.hls=void 0,this.log=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this.pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=e,this.log=Zc.log.bind(Zc,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Hc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Hc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Hc.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Hc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Hc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Hc.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===Jf&&i.flags===Qf){const e=this.levels;let s=this.pathwayPriority,r=this.pathwayId;if(t.context){const{groupId:i,pathwayId:s,type:o}=t.context;i&&e?r=this.getPathwayForGroupId(i,o,r):s&&(r=s)}r in this.penalizedPathways||(this.penalizedPathways[r]=performance.now()),!s&&e&&(s=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),s&&s.length>1&&(this.updatePathwayPriority(s),i.resolved=this.pathwayId!==r),i.resolved||Zc.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${r} levels: ${e?e.length:e} priorities: ${JSON.stringify(s)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const 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}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,s=performance.now();Object.keys(i).forEach((e=>{s-i[e]>3e5&&delete i[e]}));for(let s=0;s0){this.log(`Setting Pathway to "${r}"`),this.pathwayId=r,Ff(t),this.hls.trigger(Hc.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[o];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=o);break}}}getPathwayForGroupId(e,t,i){const s=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:r,"BASE-ID":o,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===r)))return;const n=this.getLevelsForPathway(o).map((e=>{const t=new iu(e.attrs);t["PATHWAY-ID"]=r;const o=t.AUDIO&&`${t.AUDIO}_clone_${r}`,n=t.SUBTITLES&&`${t.SUBTITLES}_clone_${r}`;o&&(i[t.AUDIO]=o,t.AUDIO=o),n&&(s[t.SUBTITLES]=n,t.SUBTITLES=n);const l=FA(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),d=new Lf({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${s}"`);const o=e.data;if(1!==o.VERSION)return void this.log(`Steering VERSION ${o.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=o.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":n,"PATHWAY-PRIORITY":l}=o;if(a)try{this.uri=new self.URL(a,s).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),n&&this.clonePathways(n);const d={steeringManifest:o,url:s.toString()};this.hls.trigger(Hc.STEERING_MANIFEST_LOADED,d),l&&this.updatePathwayPriority(l)},onError:(e,t,i,s)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let r=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,r);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(r=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${s}`),this.loader.load(r,n,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function HA(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(HA):Object.keys(e).reduce(((t,i)=>(t[i]=HA(e[i]),t)),{}):e}function JA(e){const t=e.loader;if(t!==jA&&t!==OA)Zc.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=jA,e.progressive=!0,e.enableSoftwareAES=!0,Zc.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let qA;class KA extends Zf{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Hc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Hc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Hc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Hc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Hc.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(Hc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Hc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Hc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Hc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Hc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Hc.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,s=[],r={},o={};let a=!1,n=!1,l=!1;t.levels.forEach((e=>{var t,d;const h=e.attrs;let{audioCodec:c,videoCodec:u}=e;-1!==(null==(t=c)?void 0:t.indexOf("mp4a.40.34"))&&(qA||(qA=/chrome|firefox/i.test(navigator.userAgent)),qA&&(e.audioCodec=c=void 0)),c&&(e.audioCodec=c=Bp(c,i)),0===(null==(d=u)?void 0:d.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(",");for(let e=0;e2){let s=i.shift()+".";s+=parseInt(i.shift()).toString(16),s+=("000"+parseInt(i.shift()).toString(16)).slice(-4),t[e]=s}}return t.join(",")}(u));const{width:p,height:f,unknownCodecs:m}=e;if(a||(a=!(!p||!f)),n||(n=!!u),l||(l=!!c),null!=m&&m.length||c&&!Lp(c,"audio",i)||u&&!Lp(u,"video",i))return;const{CODECS:g,"FRAME-RATE":y,"HDCP-LEVEL":A,"PATHWAY-ID":b,RESOLUTION:v,"VIDEO-RANGE":_}=h,w=`${`${b||"."}-`}${e.bitrate}-${v}-${y}-${g}-${_}-${A}`;if(r[w])if(r[w].uri===e.url||e.attrs["PATHWAY-ID"])r[w].addGroupId("audio",h.AUDIO),r[w].addGroupId("text",h.SUBTITLES);else{const t=o[w]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new Lf(e);r[w]=i,s.push(i)}else{const t=new Lf(e);r[w]=t,o[w]=1,s.push(t)}})),this.filterAndSortMediaOptions(s,t,a,n,l)}filterAndSortMediaOptions(e,t,i,s,r){let o=[],a=[],n=e;if((i||s)&&r&&(n=n.filter((({videoCodec:e,videoRange:t,width:i,height:s})=>{return(!!e||!(!i||!s))&&(!!(r=t)&&_f.indexOf(r)>-1);var r}))),0===n.length)return void Promise.resolve().then((()=>{if(this.hls){t.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(t.levels[0].attrs)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;o=t.audioTracks.filter((t=>!t.audioCodec||Lp(t.audioCodec,"audio",e))),YA(o)}t.subtitles&&(a=t.subtitles,YA(a));const l=n.slice(0);n.sort(((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 _f.indexOf(e.videoRange)-_f.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Dp(e.videoCodec),s=Dp(t.videoCodec);if(i!==s)return s-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=Rp(e.codecSet),s=Rp(t.codecSet);if(i!==s)return s-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let d=l[0];if(this.steering&&(n=this.steering.filterParsedLevels(n),n.length!==l.length))for(let e=0;ei&&i===VA.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const c=r&&!s,u={levels:n,audioTracks:o,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:r,video:s,altAudio:!c&&o.some((e=>!!e.url))};this.hls.trigger(Hc.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),s=e<0;if(this.hls.trigger(Hc.ERROR,{type:Jc.OTHER_ERROR,details:qc.LEVEL_SWITCH_ERROR,level:e,fatal:s,error:i,reason:i.message}),s)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,s=this.currentLevel,r=s?s.attrs["PATHWAY-ID"]:void 0,o=t[e],a=o.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=o,i===e&&o.details&&s&&r===a)return;this.log(`Switching to level ${e} (${o.height?o.height+"p ":""}${o.videoRange?o.videoRange+" ":""}${o.codecSet?o.codecSet+" ":""}@${o.bitrate})${a?" with Pathway "+a:""} from level ${i}${r?" with Pathway "+r:""}`);const n={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(Hc.LEVEL_SWITCHING,n);const l=o.details;if(!l||l.live){const e=this.switchParams(o.uri,null==s?void 0:s.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===Yp&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===Zp){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:s,details:r}=t,o=this._levels[s];var a;if(!o)return this.warn(`Invalid level index ${s}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(r.deltaUpdateFailed=!0));s===this.currentLevelIndex?(0===o.fragmentError&&(o.loadError=0),this.playlistLoaded(s,t,o.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let s=i.uri;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const r=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${r?" Pathway "+r:""} ${s}`),this.clearTimer(),this.hls.trigger(Hc.LEVEL_LOADING,{url:s,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));Ff(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(Hc.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(Hc.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function YA(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class QA{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const s=this.keyUriToKeyInfo[i].loader;if(s){var t;if(e&&e!==(null==(t=s.context)?void 0:t.frag.type))return;s.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=qc.KEY_LOAD_ERROR,i,s,r){return new Rm({type:Jc.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:r,error:i,networkDetails:s})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:s}=e;for(let e=0;e{r.setKeyFormat(e)}));break}}}}load(e){return!e.decryptdata&&e.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(e).then((t=>this.loadInternal(e,t))):this.loadInternal(e)}loadInternal(e,t){var i,s;t&&e.setKeyFormat(t);const r=e.decryptdata;if(!r){const i=new Error(t?`Expected frag.decryptdata to be defined after setting format ${t}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(e,qc.KEY_LOAD_ERROR,i))}const o=r.uri;if(!o)return Promise.reject(this.createKeyLoadError(e,qc.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${o}"`)));let a=this.keyUriToKeyInfo[o];if(null!=(i=a)&&i.decryptdata.key)return r.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var n;if(null!=(s=a)&&s.keyLoadPromise)switch(null==(n=a.mediaKeySessionContext)?void 0:n.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(r.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[o]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===r.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,qc.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,s=new(0,i.loader)(i);return t.keyLoader=e.loader=s,e.keyLoadPromise=new Promise(((r,o)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},n=i.keyLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{const{frag:a,keyInfo:n,url:l}=i;if(!a.decryptdata||n!==this.keyUriToKeyInfo[l])return o(this.createKeyLoadError(a,qc.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),s));n.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,n.loader=null,r({frag:a,keyInfo:n})},onError:(e,i,s,r)=>{this.resetLoader(i),o(this.createKeyLoadError(t,qc.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),s,Nc({url:a.url,data:void 0},e)))},onTimeout:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,qc.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),s))},onAbort:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,qc.INTERNAL_ABORTED,new Error("key loading aborted"),s))}};s.load(a,l,d)}))}resetLoader(e){const{frag:t,keyInfo:i,url:s}=e,r=i.loader;t.keyLoader===r&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[s],r&&r.destroy()}}function XA(){return self.SourceBuffer||self.WebKitSourceBuffer}function ZA(){if(!Tp())return!1;const e=XA();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class eb{constructor(e,t,i,s){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=i,this.hls=s}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:s,stalled:r}=this;if(null===s)return;const{currentTime:o,seeking:a}=s,n=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,o!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==r){if(this.stallReported){const e=self.performance.now()-r;Zc.warn(`playback not stuck anymore @${o}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||n)return void(this.stalled=null);if(s.paused&&!a||s.ended||0===s.playbackRate||!vm.getBuffered(s).length)return void(this.nudgeRetry=0);const d=vm.bufferInfo(s,o,0),h=d.nextStart||0;if(a){const e=d.len>2,i=!h||t&&t.start<=o||h-o>2&&!this.fragmentTracker.getPartialFragment(o);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var c;if(!(d.len>0)&&!h)return;const e=Math.max(h,d.start||0)-o,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(c=t.details)?void 0:c.live)?2*t.details.targetduration:2,r=this.fragmentTracker.getPartialFragment(o);if(e>0&&(e<=i||r))return void(s.paused||this._trySkipBufferHole(r))}const u=self.performance.now();if(null===r)return void(this.stalled=u);const p=u-r;if(!a&&p>=250&&(this._reportStall(d),!this.media))return;const f=vm.bufferInfo(s,o,i.maxBufferHole);this._tryFixBufferStall(f,p)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:s,media:r}=this;if(null===r)return;const o=r.currentTime,a=s.getPartialFragment(o);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-o1e3*i.highBufferWatchdogPeriod&&(Zc.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:s}=this;if(!s&&i){this.stallReported=!0;const s=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);Zc.warn(s.message),t.trigger(Hc.ERROR,{type:Jc.MEDIA_ERROR,details:qc.BUFFER_STALLED_ERROR,fatal:!1,error:s,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:s}=this;if(null===s)return 0;const r=s.currentTime,o=vm.bufferInfo(s,r,0),a=r0&&o.len<1&&s.readyState<3,d=a-r;if(d>0&&(n||l)){if(d>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===r){const e=t.getAppendedFrag(0,Zp);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=Om,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Um}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case qm:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],s=null==i?void 0:i.details;if(s&&(!s.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(s))break;this.state=Om;break}if(this.hls.nextLoadLevel!==this.level){this.state=Om;break}break}case Gm:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=Om}}}this.state===Om&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:s}=this;if(null===t||!s&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const r=e.nextLoadLevel;if(null==i||!i[r])return;const o=i[r],a=this.getMainFwdBufferInfo();if(null===a)return;const n=this.getLevelDetails();if(n&&this._streamEnded(a,n)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(Hc.BUFFER_EOS,e),void(this.state=Vm)}e.loadLevel!==r&&-1===e.manualLevel&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=e.nextLoadLevel=r;const l=o.details;if(!l||this.state===qm||l.live&&this.levelLastLoaded!==o)return this.level=r,void(this.state=qm);const d=a.len,h=this.getMaxBufferLength(o.maxBitrate);if(d>=h)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const c=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(c,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==mm){var p;const e=(null!=(p=this.backtrackFragment)?p:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,c)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?au:nu,t=(e===nu?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,Zp)}u=this.getNextFragmentLoopLoading(u,l,a,Zp,h)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,o,c))}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);this.fragCurrent=e,s===um||s===fm?"initSegment"===e.sn?this._loadInitSegment(e,t):this.bitrateTest?(this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(e,t)):(this.startFragRequested=!0,super.loadFragment(e,t,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,Zp)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const s=this.getAppendedFrag(t.currentTime);s&&s.start>1&&this.flushMainBuffer(0,s.start-1);const r=this.getLevelDetails();if(null!=r&&r.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*r.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],s=this.fragLastKbps;i=s&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*s)+1:0}else i=0;const o=this.getBufferedFrag(t.currentTime+i);if(o){const e=this.followingBufferedFrag(o);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,s=Math.max(o.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(s,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case Nm:case jm:case Gm:case zm:case $m:this.state=Om}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new eb(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{media:e}=this;e&&this.onvplaying&&this.onvseeked&&(e.removeEventListener("playing",this.onvplaying),e.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){const e=this.media,t=e?e.currentTime:null;zc(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(Hc.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}onManifestParsed(e,t){let i=!1,s=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),s=s||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&s&&!function(){var e;const t=XA();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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}onLevelLoading(e,t){const{levels:i}=this;if(!i||this.state!==Om)return;const s=i[t.level];(!s.details||s.details.live&&this.levelLastLoaded!==s||this.waitForCdnTuneIn(s.details))&&(this.state=qm)}onLevelLoaded(e,t){var i;const{levels:s}=this,r=t.level,o=t.details,a=o.totalduration;if(!s)return void this.warn(`Levels were reset while loading level ${r}`);this.log(`Level ${r} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""}, cc [${o.startCC}, ${o.endCC}] duration:${a}`);const n=s[r],l=this.fragCurrent;!l||this.state!==jm&&this.state!==Gm||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let d=0;if(o.live||null!=(i=n.details)&&i.live){var h;if(this.checkLiveUpdate(o),o.deltaUpdateFailed)return;d=this.alignPlaylists(o,n.details,null==(h=this.levelLastLoaded)?void 0:h.details)}if(n.details=o,this.levelLastLoaded=n,this.hls.trigger(Hc.LEVEL_UPDATED,{details:o,level:r}),this.state===qm){if(this.waitForCdnTuneIn(o))return;this.state=Om}this.startFragRequested?o.live&&this.synchronizeToLiveEdge(o):this.setStartPosition(o,d),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{levels:o}=this;if(!o)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=o[i.level],n=a.details;if(!n)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,d=n.PTSKnown||!n.live,h=null==(t=i.initSegment)?void 0:t.data,c=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new ty(this.hls,Zp,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),p=s?s.index:-1,f=-1!==p,m=new _m(i.level,i.sn,i.stats.chunkCount,r.byteLength,p,f),g=this.initPTS[i.cc];u.push(r,h,c,l,i,s,n.totalduration,d,m,g)}onAudioTrackSwitching(e,t){const 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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(Hc.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(Hc.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,s=!!this.hls.audioTracks[i].url;if(s){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=s,this.tick()}onBufferCreated(e,t){const i=t.tracks;let s,r,o=!1;for(const e in i){const t=i[e];if("main"===t.id){if(r=e,s=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else o=!0}o&&s?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=s.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i&&i.type!==Zp)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===$m&&(this.state=Om));const r=s?s.stats:i.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,s)}onError(e,t){var i;if(t.fatal)this.state=Hm;else switch(t.details){case qc.FRAG_GAP:case qc.FRAG_PARSING_ERROR:case qc.FRAG_DECRYPT_ERROR:case qc.FRAG_LOAD_ERROR:case qc.FRAG_LOAD_TIMEOUT:case qc.KEY_LOAD_ERROR:case qc.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(Zp,t);break;case qc.LEVEL_LOAD_ERROR:case qc.LEVEL_LOAD_TIMEOUT:case qc.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==qm||(null==(i=t.context)?void 0:i.type)!==Yp||(this.state=Om);break;case qc.BUFFER_APPEND_ERROR:case qc.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===qc.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case qc.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!vm.getBuffered(e).length){const e=this.state!==Om?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=Om,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==au||this.audioOnly&&!this.altAudio){const e=(t===nu?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,Zp),this.tick()}}onLevelsUpdated(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=t.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(r{const{hls:s}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=Om,this.startFragRequested=!1,this.bitrateTest=!1;const r=e.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),s.trigger(Hc.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{video:h,text:c,id3:u,initSegment:p}=r,{details:f}=d,m=this.altAudio?void 0:r.audio;if(this.fragContextChanged(n))this.fragmentTracker.removeFragment(n);else{if(this.state=zm,p){if(null!=p&&p.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,p.tracks,e,o),s.trigger(Hc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:p.tracks})}const e=p.initPTS,t=p.timescale;zc(e)&&(this.initPTS[n.cc]={baseTime:e,timescale:t},s.trigger(Hc.INIT_PTS_FOUND,{frag:n,id:i,initPTS:e,timescale:t}))}if(h&&f&&"initSegment"!==n.sn){const e=f.fragments[n.sn-1-f.startSN],t=n.sn===f.startSN,i=!e||n.cc>e.cc;if(!1!==r.independent){const{startPTS:e,endPTS:s,startDTS:r,endDTS:a}=h;if(l)l.elementaryStreams[h.type]={startPTS:e,endPTS:s,startDTS:r,endDTS:a};else if(h.firstKeyFrame&&h.independent&&1===o.id&&!i&&(this.couldBacktrack=!0),h.dropped&&h.independent){const r=this.getMainFwdBufferInfo(),o=(r?r.end:this.getLoadPosition())+this.config.maxBufferHole,l=h.firstKeyFramePTS?h.firstKeyFramePTS:e;if(!t&&o2&&(n.gap=!0);n.setElementaryStreamInfo(h.type,e,s,r,a),this.backtrackFragment&&(this.backtrackFragment=n),this.bufferFragmentData(h,n,l,o,t||i)}else{if(!t&&!i)return void this.backtrack(n);n.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=m;l&&(l.elementaryStreams[au]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(au,e,t,i,s),this.bufferFragmentData(m,n,l,o)}if(f&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:n,details:f,samples:u.samples};s.trigger(Hc.FRAG_PARSING_METADATA,e)}if(f&&c){const e={id:i,frag:n,details:f,samples:c.samples};s.trigger(Hc.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,s){if(this.state!==zm)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:r,video:o,audiovideo:a}=t;if(r){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=r.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==r.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),r.levelCodec=t,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${r.codec}]`)}o&&(o.levelCodec=e.videoCodec,o.id="main",this.log(`Init video buffer, container:${o.container}, codecs[level/parsed]=[${e.videoCodec||""}/${o.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(Hc.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const r=t[e].initSegment;null!=r&&r.byteLength&&this.hls.trigger(Hc.BUFFER_APPENDING,{type:e,data:r,frag:i,part:null,chunkMeta:s,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,Zp)}backtrack(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=Om}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(vm.isBuffered(e,i)?t=this.getAppendedFrag(i):vm.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(Hc.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(Hc.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&zc(t)&&zc(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class ib{static get version(){return"1.5.13"}static isMSESupported(){return ZA()}static isSupported(){return function(){if(!ZA())return!1;const e=Tp();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(xp(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(xp(t,"audio")))))}()}static getMediaSource(){return Tp()}static get Events(){return Hc}static get ErrorTypes(){return Jc}static get ErrorDetails(){return qc}static get DefaultConfig(){return ib.defaultConfig?ib.defaultConfig:VA}static set DefaultConfig(e){ib.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new ey,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){Xc(e,"debug","log","info","warn","error");try{Qc.log(`Debug logs enabled for "${t}" in hls.js version 1.5.13`)}catch(e){Qc=Yc}}else Qc=Yc}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){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"');const i=HA(e),s=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const r=`${"level"===e?"playlist":e}LoadPolicy`,o=void 0===t[r],a=[];s.forEach((s=>{const n=`${e}Loading${s}`,l=t[n];if(void 0!==l&&o){a.push(n);const e=i[r].default;switch(t[r]={default:e},s){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&Zc.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${r}": ${JSON.stringify(t[r])}`)})),Nc(Nc({},i),t)}(ib.DefaultConfig,e);this.userConfig=e,t.progressive&&JA(t);const{abrController:i,bufferController:s,capLevelController:r,errorController:o,fpsController:a}=t,n=new o(this),l=this.abrController=new i(this),d=this.bufferController=new s(this),h=this.capLevelController=new r(this),c=new a(this),u=new of(this),p=new Af(this),f=t.contentSteeringController,m=f?new f(this):null,g=this.levelController=new KA(this,m),y=new gm(this),A=new QA(this.config),b=this.streamController=new tb(this,y,A);h.setStreamController(b),c.setStreamController(b);const v=[u,g,b];m&&v.splice(1,0,m),this.networkControllers=v;const _=[l,d,h,c,p,y];this.audioTrackController=this.createController(t.audioTrackController,v);const w=t.audioStreamController;w&&v.push(new w(this,y,A)),this.subtitleTrackController=this.createController(t.subtitleTrackController,v);const S=t.subtitleStreamController;S&&v.push(new S(this,y,A)),this.createController(t.timelineController,_),A.emeController=this.emeController=this.createController(t.emeController,_),this.cmcdController=this.createController(t.cmcdController,_),this.latencyController=this.createController(bf,_),this.coreComponents=_,v.push(n);const E=n.onErrorOut;"function"==typeof E&&this.on(Hc.ERROR,E,n)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,s){this._emitter.off(e,t,i,s)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(Zc.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===Hc.ERROR;this.trigger(Hc.ERROR,{type:Jc.OTHER_ERROR,details:qc.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){Zc.log("destroy"),this.trigger(Hc.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){Zc.log("attachMedia"),this._media=e,this.trigger(Hc.MEDIA_ATTACHING,{media:e})}detachMedia(){Zc.log("detachMedia"),this.trigger(Hc.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,s=this.url=Uc.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,Zc.log(`loadSource:${s}`),t&&i&&(i!==s||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(Hc.MANIFEST_LOADING,{url:e})}startLoad(e=-1){Zc.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){Zc.log("stopLoad"),this.started=!1,this.networkControllers.forEach((e=>{e.stopLoad()}))}resumeBuffering(){this.started&&this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.startLoad(-1)}))}pauseBuffering(){this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.stopLoad()}))}swapAudioCodec(){Zc.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){Zc.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){Zc.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){Zc.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){Zc.log(`set loadLevel:${e}`),this.levelController.manualLevel=e}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(e){this.levelController.nextLoadLevel=e}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(e){Zc.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){Zc.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(Zc.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return vf.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let s=0;s=t)return s;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let s;if(s=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=s;t--;){const s=e[t].attrs["HDCP-LEVEL"];if(s&&s<=i)return t}return s}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(e){this.abrController.nextAutoLevel=e}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}setAudioOption(e){var t;return null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}ib.defaultConfig=void 0;class sb extends o{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):ib.isSupported()?(this.$videoElement=this.player.video.$videoElement,this.hls=new ib({}),this._initHls(),this._bindEvents()):this.player.debugError(this.TAG_NAME,"init hls error ,not support "),this.player.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{if(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.player._opt.useCanvasRender&&this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}this.$videoElement=null,this.hlsFps=0,this.player.debugLog(this.TAG_NAME,"destroy"),setTimeout((()=>{e()}),0)}))}checkHlsBufferedDelay(){const e=this.$videoElement;let t=0;const i=e.buffered,s=i.length?i.end(i.length-1):0;return t=s-e.currentTime,t<0&&(this.player.debugWarn(this.TAG_NAME,`checkHlsBufferedDelay ${t} < 0, and buffered is ${s} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${s}`),e.currentTime=s,t=0),t}getFps(){return this.hlsFps}_startCanvasRender(){Oa()?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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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(yt.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(ca(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,Ro()&&(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,s=Oa(),r=t(i,ds,(t=>{if(this.hls){const i=parseInt(t.timeStamp,10);this.player._opt.useCanvasRender&&xa(s)&&e.updateStats({ts:i,dts:i})}}));this.eventsDestroy.push(r),this._startBandwidthEstimateInterval(),this._startFpsInterval(),this.hls.on(ib.Events.ERROR,((e,t)=>{if(t.fatal)switch(t.type){case ib.ErrorTypes.NETWORK_ERROR:this.player.debugWarn(this.TAG_NAME,"fatal network error encountered, try to recover"),this.hls.startLoad();break;case ib.ErrorTypes.MEDIA_ERROR:this.player.debugWarn(this.TAG_NAME,"fatal media error encountered, try to recover"),this.hls.recoverMediaError()}})),this.hls.on(ib.Events.MEDIA_ATTACHING,(()=>{})),this.hls.on(ib.Events.MEDIA_ATTACHED,(()=>{})),this.hls.on(ib.Events.MEDIA_DETACHING,(()=>{})),this.hls.on(ib.Events.MEDIA_DETACHED,(()=>{})),this.hls.on(ib.Events.BUFFER_RESET,(()=>{})),this.hls.on(ib.Events.BUFFER_CODECS,(()=>{})),this.hls.on(ib.Events.BUFFER_CREATED,(()=>{})),this.hls.on(ib.Events.BUFFER_APPENDING,((e,t)=>{this.player.debugLog(this.TAG_NAME,"BUFFER_APPENDING",t.type)})),this.hls.on(ib.Events.BUFFER_APPENDED,(()=>{})),this.hls.on(ib.Events.BUFFER_EOS,(()=>{})),this.hls.on(ib.Events.BUFFER_FLUSHING,(()=>{})),this.hls.on(ib.Events.BUFFER_FLUSHED,(()=>{})),this.hls.on(ib.Events.MANIFEST_LOADING,(()=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_LOADING 开始加载playlist m3u8资源")})),this.hls.on(ib.Events.MANIFEST_LOADED,((e,t)=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_LOADED playlist m3u8文件加载完成",t.url)})),this.hls.on(ib.Events.MANIFEST_PARSED,(()=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_PARSED playlist m3u8解析完成"),e._times.demuxStart||(e._times.demuxStart=yo())})),this.hls.on(ib.Events.LEVEL_LOADING,(()=>{})),this.hls.on(ib.Events.LEVEL_LOADED,((e,t)=>{})),this.hls.on(ib.Events.FRAG_LOADING,(()=>{})),this.hls.on(ib.Events.FRAG_LOADED,((t,i)=>{e._times.decodeStart||(e._times.decodeStart=yo())})),this.hls.on(ib.Events.BUFFER_APPENDING,(()=>{e._times.videoStart||(e._times.videoStart=yo(),e.handlePlayToRenderTimes())})),this.hls.on(ib.Events.FRAG_DECRYPTED,(()=>{})),this.hls.on(ib.Events.KEY_LOADING,(()=>{})),this.hls.on(ib.Events.KEY_LOADING,(()=>{})),this.hls.on(ib.Events.FPS_DROP,(e=>{})),this.hls.on(ib.Events.FPS_DROP_LEVEL_CAPPING,(e=>{})),this.hls.on(ib.Events.FRAG_PARSING_INIT_SEGMENT,((e,t)=>{this.player.debugLog(this.TAG_NAME,"FRAG_PARSING_INIT_SEGMENT",t);const i=!!(t&&t.tracks&&t.tracks.audio),s=!!(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,s=e.codec;this.player.audio&&this.player.audio.updateAudioInfo({encType:s,channels:i,sampleRate:44100})}if(s&&t.tracks.video){let e=t.tracks.video;const i={encTypeCode:-1!==e.codec.indexOf("avc")?xt:Dt};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,ns,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,ls,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,ds,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,hs,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,s,r)}loadSource(e){return new Promise(((t,i)=>{this.canVideoPlay?(this.initVideoPlay(e),t()):this.hls.on(ib.Events.MEDIA_ATTACHED,(()=>{this.hls.loadSource(e),t()}))}))}}const rb=2097152,ob="fetch",ab="xhr",nb="arraybuffer",lb="text",db="json",hb="real_time_speed",cb=Object.prototype.toString;function ub(e){if("[object Object]"!==cb.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function pb(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 fb(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function mb(e,t){if(!e)return;if(!t)return e;let i;const s=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]"===cb.call(i)?t=t.toISOString():function(e){return null!==e&&"object"==typeof e}(t)&&(t=JSON.stringify(t)),`${fb(e)}=${fb(t)}`})).join("&")})).filter(Boolean).join("&");if(s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}function gb(e,t,i,s,r,o,a,n,l,d,h){r=null!=r?parseFloat(r):null,s=parseInt(s||"0",10),Number.isNaN(s)&&(s=0);return{data:e,done:t,option:{range:l,vid:d,index:n,contentLength:s,age:r,startTime:o,firstByteTime:a,endTime:Date.now(),priOptions:h},response:i}}function yb(e,t){return Math.round(8*e*1e3/t/1024)}class Ab extends Error{constructor(e,t,i,s){super(s),kh(this,"retryCount",0),kh(this,"isTimeout",!1),kh(this,"loaderType",ob),kh(this,"startTime",0),kh(this,"endTime",0),kh(this,"options",{}),this.url=e,this.request=t,this.response=i}}class bb extends o{constructor(e){super(),kh(this,"_abortController",null),kh(this,"_timeoutTimer",null),kh(this,"_reader",null),kh(this,"_response",null),kh(this,"_aborted",!1),kh(this,"_index",-1),kh(this,"_range",null),kh(this,"_receivedLength",0),kh(this,"_running",!1),kh(this,"_logger",null),kh(this,"_vid",""),kh(this,"_onProcessMinLen",0),kh(this,"_onCancel",null),kh(this,"_priOptions",null),kh(this,"TAG_NAME","FetchLoader"),this.player=e}load(e){var t;let{url:i,vid:s,timeout:r,responseType:o,onProgress:a,index:n,onTimeout:l,onCancel:d,range:h,transformResponse:c,request:u,params:p,logger:f,method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:w,referrerPolicy:S,onProcessMinLen:E,priOptions:T}=e;this._aborted=!1,this._onProcessMinLen=E,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=n,this._range=h||[0,0],this._vid=s||i,this._priOptions=T||{};const k={method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:w,referrerPolicy:S,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal};let L=!1;clearTimeout(this._timeoutTimer),i=mb(i,p);const C=pb(h);C&&(g=u?u.headers:k.headers=k.headers||(Headers?new Headers:{}),Headers&&g instanceof Headers?g.append("Range",C):g.Range=C),r&&(this._timeoutTimer=setTimeout((()=>{if(L=!0,this.cancel(),l){const e=new Ab(i,k,null,"timeout");e.isTimeout=!0,l(e,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),r));const x=Date.now();return(Ho(n)||Ho(h))&&this.player.debugLog(this.TAG_NAME,"[fetch load start], index,",n,",range,",h),new Promise(((e,t)=>{fetch(u||i,u?void 0:k).then((async s=>{if(clearTimeout(this._timeoutTimer),this._response=s,this._aborted||!this._running)return;if(c&&(s=c(s,i)||s),!s.ok)throw new Ab(i,k,s,"bad network response");const r=Date.now();let l;if(o===lb)l=await s.text(),this._running=!1;else if(o===db)l=await s.json(),this._running=!1;else{if(a)return this.resolve=e,this.reject=t,void this._loadChunk(s,a,x,r);{l=await s.arrayBuffer(),l=new Uint8Array(l),this._running=!1;const e=Date.now()-x,t=yb(l.byteLength,e);this.emit(hb,{speed:t,len:l.byteLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}(Ho(n)||Ho(h))&&this.player.debugLog(this.TAG_NAME,"[fetch load end], index,",n,",range,",h),e(gb(l,!0,s,s.headers.get("Content-Length"),s.headers.get("age"),x,r,n,h,this._vid,this._priOptions))})).catch((e=>{var s;clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!L||((e=e instanceof Ab?e:new Ab(i,k,null,null===(s=e)||void 0===s?void 0:s.message)).startTime=x,e.endTime=Date.now(),e.isTimeout=L,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},t(e))}))}))}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,s){if(!e.body||!e.body.getReader){this._running=!1;const t=new Ab(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(rb),this._writeIdx=0);const r=this._reader=e.body.getReader();let o,a,n;const l=async()=>{var d;a=Date.now();try{o=await r.read(),n=Date.now()}catch(e){return n=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 h=(null===(d=this._range)||void 0===d?void 0:d.length)>0?this._range[0]:0,c=h+this._receivedLength;if(this._aborted)return this._running=!1,void t(void 0,!1,{range:[c,c],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e);const u=o.value?o.value.byteLength:0;let p;if(this._receivedLength+=u,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress call】,task,",this._range,", start,",c,", end,",h+this._receivedLength,", done,",o.done),this._onProcessMinLen>0){if(this._writeIdx+u>=this._onProcessMinLen||o.done)p=new Uint8Array(this._writeIdx+u),p.set(this._cache.slice(0,this._writeIdx),0),u>0&&p.set(o.value,this._writeIdx),this._writeIdx=0,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress enough】,done,",o.done,",len,",p.byteLength,", writeIdx,",this._writeIdx);else if(u>0&&this._writeIdx+u0){const e=new Uint8Array(this._writeIdx+u+2048);this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress extra start】,size,",this._writeIdx+u+2048,", datalen,",u,", writeIdx,",this._writeIdx),e.set(this._cache.slice(0,this._writeIdx),0),u>0&&e.set(o.value,this._writeIdx),this._writeIdx+=u,delete this._cache,this._cache=e,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",this._writeIdx)}}else p=o.value;if((p&&p.byteLength>0||o.done)&&t(p,o.done,{range:[this._range[0]+this._receivedLength-(p?p.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e),o.done){const t=Date.now()-i,r=yb(this._receivedLength,t);this.emit(hb,{speed:r,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this.player.debugLog(this.TAG_NAME,"[fetchLoader onProgress end],task,",this._range,",done,",o.done),this.resolve(gb(o,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),i,s,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 vb{constructor(e,t,i){kh(this,"TAG_NAME","Task"),this.promise=function(){let e,t;const i=new Promise(((i,s)=>{e=i,t=s}));return i.used=!1,i.resolve=function(){return i.used=!0,e(...arguments)},i.reject=function(){return i.used=!0,t(...arguments)},i}(),this.alive=!!t.onProgress,this._loaderType=e,this.player=i,this._loader=e===ob&&window.fetch?new bb(i):new _b(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:s,...r}=this._config,o=async()=>{try{const e=await this._loader.load(r);this.promise.resolve(e)}catch(a){if(this._loader.running=!1,this.player.debugLog(this.TAG_NAME,"[task request catch err]",a),this._canceled)return;a.loaderType=this._loaderType,a.retryCount=this._retryCount;let n=a;s&&(n=s(n)||n),i&&this._retryCount>0&&i(n,this._retryCount,{index:r.index,vid:r.vid,range:r.range,priOptions:r.priOptions}),this._retryCount++;let l=!0;if(this._retryCheckFunc&&(l=this._retryCheckFunc(a)),l&&this._retryCount<=e)return clearTimeout(this._retryTimer),this.player.debugLog(this.TAG_NAME,"[task request setTimeout],retry",this._retryCount,",retry range,",r.range),void(this._retryTimer=setTimeout(o,t));this.promise.reject(n)}};return o(),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 _b extends o{constructor(e){super(),kh(this,"_xhr",null),kh(this,"_aborted",!1),kh(this,"_timeoutTimer",null),kh(this,"_range",null),kh(this,"_receivedLength",0),kh(this,"_url",null),kh(this,"_onProgress",null),kh(this,"_index",-1),kh(this,"_headers",null),kh(this,"_currentChunkSizeKB",384),kh(this,"_timeout",null),kh(this,"_xhr",null),kh(this,"_withCredentials",null),kh(this,"_startTime",-1),kh(this,"_loadCompleteResolve",null),kh(this,"_loadCompleteReject",null),kh(this,"_runing",!1),kh(this,"_logger",!1),kh(this,"_vid",""),kh(this,"_responseType",void 0),kh(this,"_credentials",void 0),kh(this,"_method",void 0),kh(this,"_transformResponse",void 0),kh(this,"_firstRtt",void 0),kh(this,"_onCancel",null),kh(this,"_priOptions",null),kh(this,"TAG_NAME","XhrLoader"),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.debugLog(this.TAG_NAME,"【xhrLoader task】, range",this._range),this._url=mb(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 Ab?e:new Ab(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===nb&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const t=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let s=this._range[1];t],tast :",this._range,", SubRange, ",e)}else e=this._range,this.player.debugLog(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=>{var t,i,s;this._running=!1;const r=new Ab(this._url,this._request,null==e||null===(t=e.currentTarget)||void 0===t?void 0:t.response,"xhr.onerror.status:"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.status)+",statusText,"+(null==e||null===(s=e.currentTarget)||void 0===s?void 0:s.statusText));r.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(r)},t.ontimeout=e=>{this.cancel();const t=new Ab(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||{},s=pb(e);s&&(i.Range=s),i&&Object.keys(i).forEach((e=>{t.setRequestHeader(e,i[e])})),this.player.debugLog(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){var t;const i=e.target.status;if(i<200||i>299){const t=new Ab(this._url,null,{...e.target.response,status:i},"bad response,status:"+i);return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}let s,r=null,o=!1;const a=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===nb){var n;const t=new Uint8Array(e.target.response);if(s=a+this._receivedLength,t&&t.byteLength>0){this._receivedLength+=t.byteLength;const e=Date.now()-this._startTime,i=yb(this._receivedLength,e);this.emit(hb,{speed:i,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:[s,a+this._receivedLength],priOptions:this._priOptions})}r=t,o=!((null===(n=this._range)||void 0===n?void 0:n.length)>1&&this._range[1]&&this._receivedLength], tast :",this._range,", start",s,"end ",a+this._receivedLength,",dataLen,",t?t.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",o)}else o=!0,r=e.target.response;let l={ok:i>=200&&i<300,status:i,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(l=this._transformResponse(l,this._url)||l),this._onProgress&&this._onProgress(r,o,{index:this._index,vid:this._vid,range:[s,a+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},l),o?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(gb(this._onProgress?null:r,o,l,l.headers["content-length"],l.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 wb extends o{constructor(e,t){super(),kh(this,"type",ob),kh(this,"_queue",[]),kh(this,"_alive",[]),kh(this,"_currentTask",null),kh(this,"_config",void 0),this.player=t,this._config=function(e){return{loaderType:ob,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:lb,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!==ab&&bb.isSupported()||(this.type=ab)}destroy(){this._queue=[],this._alive=[],this._currentTask=null}isFetch(){return this.type===ob}static isFetchSupport(){return bb.isSupported()}load(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?t=e:t.url=e||t.url||this._config.url,t=Object.assign({},this._config,t),t.params&&(t.params=Object.assign({},t.params)),t.headers&&ub(t.headers)&&(t.headers=Object.assign({},t.headers)),t.body&&ub(t.body)&&(t.body=Object.assign({},t.body)),t.transformRequest&&(t=t.transformRequest(t)||t);const i=new vb(this.type,t,this.player);return i.loader.on(hb,(e=>{this.emit(hb,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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]: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((()=>{var e,t;null!==(e=this._currentTask)&&void 0!==e&&e.alive&&(null===(t=this._alive)||void 0===t?void 0:t.length)>0&&(this._alive=this._alive.filter((e=>e&&e!==this._currentTask))),this._processTask()}))}}const Sb="network",Eb="network_timeout",Tb="other",kb="manifest",Lb="hls",Cb="demux";class xb extends Error{constructor(e,t,i,s,r){super(r||(null==i?void 0:i.message)),this.errorType=e===Eb?Sb:e,this.originError=i,this.ext=s,this.errorMessage=this.message}static create(e,t,i,s,r){return e instanceof xb?e:(e instanceof Error&&(i=e,e=""),e||(e=Tb),new xb(e,t,i,s,r))}static network(e){var t;return new xb(null!=e&&e.isTimeout?Eb:Sb,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==e||null===(t=e.response)||void 0===t?void 0:t.status})}}const Db=/^#(EXT[^:]*)(?::(.*))?$/,Rb=/([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g,Ib=/^(?:[a-zA-Z0-9+\-.]+:)?\/\//,Pb=/^((?:[a-zA-Z0-9+\-.]+:)?\/\/[^/?#]*)?([^?#]*\/)?/;function Bb(e){const t=e.match(Db);if(t&&t[1])return[t[1].replace("EXT-X-",""),t[2]]}function Mb(e){const t={};let i=Rb.exec(e);for(;i;)t[i[1]]=i[2]||i[3],i=Rb.exec(e);return t}function Fb(e,t){if(!t||!e||Ib.test(e))return e;const i=Pb.exec(t);return i?"/"===e[0]?i[1]+e:i[1]+i[2]+e:e}const Ub={audio:[/^mp4a/,/^vorbis$/,/^opus$/,/^flac$/,/^[ae]c-3$/],video:[/^avc/,/^hev/,/^hvc/,/^vp0?[89]/,/^av1$/],text:[/^vtt$/,/^wvtt/,/^stpp/]};function Ob(e,t){const i=Ub[e];if(i&&t&&t.length)for(let e=0;e>8*(15-t)&255}}}class Kb{static parse(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;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 Kb.isMediaPlaylist(e)?function(e,t){const i=new Hb;i.url=t;let s,r=new Jb,o=null,a=null,n=0,l=0,d=0,h=0,c=!1;for(;(s=e[h++])&&!c;){if("#"!==s[0]){r.sn=l,r.cc=d,r.url=Fb(s,t),a&&(r.key=a.clone(l)),o&&(r.initSegment=o),i.segments.push(r),r=new Jb,l++;continue}const e=Bb(s);if(!e)continue;const[h,u]=e;switch(h){case"VERSION":i.version=parseInt(u);break;case"PLAYLIST-TYPE":i.type=null==u?void 0: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":r.setByteRange(u,i.segments[i.segments.length-1]);break;case"EXTINF":{const[e,t]=u.split(",");r.start=n,r.duration=parseFloat(e),n+=r.duration,r.title=t}break;case"KEY":{const e=Mb(u);if("NONE"===e.METHOD){a=null;break}if("AES-128"!==e.METHOD)throw new Error(`encrypt ${e.METHOD}/${e.KEYFORMAT} is not supported`);if(a=new qb,a.method=e.METHOD,a.url=/^blob:/.test(e.URI)?e.URI:Fb(e.URI,t),a.keyFormat=e.KEYFORMAT||"identity",a.keyFormatVersions=e.KEYFORMATVERSIONS,e.IV){let t=e.IV.slice(2);t=(1&t.length?"0":"")+t,a.iv=new Uint8Array(t.length/2);for(let e=0,i=t.length/2;e{e.id=t})),o.length&&(o.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.audioGroup&&(e.audioStreams=o.filter((t=>t.group===e.audioGroup)))}))),a.length&&(a.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.subtitleGroup&&(e.subtitleStreams=a.filter((t=>t.group===e.subtitleGroup)))}))),i}(i,t)}static isMediaPlaylist(e){return e.includes("#EXTINF:")||e.includes("#EXT-X-TARGETDURATION:")}}class Yb{constructor(e){kh(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(Js,{error:xb.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this.TAG_NAME="HlsManifestLoader",this._timer=null;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._loader=new wb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioLoader=new wb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._subtitleLoader=new wb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,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.debugLog(this.TAG_NAME,"load()",e,t,i);const s=[this._loader.load(e)];let r,o,a,n,l,d;t&&s.push(this._audioLoader.load(t)),i&&s.push(this._subtitleLoader.load(i));try{const[e,i,n]=await Promise.all(s);if(!e)return[];r=e.data,t?(o=null==i?void 0:i.data,a=null==n?void 0:n.data):a=null==i?void 0:i.data}catch(e){throw xb.network(e)}try{var h;if(n=Kb.parse(r,e),!1===(null===(h=n)||void 0===h?void 0:h.live)&&n.segments&&!n.segments.length)throw new Error("empty segments list");o&&(l=Kb.parse(o,t)),a&&(d=Kb.parse(a,i))}catch(e){throw new xb(kb,Lb,e)}return n&&(n.isMaster?this.hls.emit(Gs,{playlist:n}):this.hls.emit(Ws,{playlist:n})),[n,l,d]}poll(e,t,i,s,r,o){clearTimeout(this._timer),o=o||3e3;let a=this.hls.config.pollRetryCount;const n=async()=>{clearTimeout(this._timer);try{const r=await this.load(e,t,i);if(!r[0])return;a=this.hls.config.pollRetryCount,s(r[0],r[1],r[2])}catch(e){a--,a<=0&&r(e)}this._timer=setTimeout(n,o)};this._timer=setTimeout(n,o)}stopPoll(){return clearTimeout(this._timer),this.cancel()}cancel(){return Promise.all([this._loader.cancel(),this._audioLoader.cancel()])}}class Qb{constructor(){kh(this,"_chunkSpeeds",[]),kh(this,"_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 Xb{constructor(e){kh(this,"_emitOnLoaded",((e,t)=>{const{data:i,response:s,option:r}=e,{firstByteTime:o,startTime:a,endTime:n,contentLength:l}=r||{},d=n-a;this._bandwidthService.addRecord(l||i.byteLength,d),this.hls.emit(Ks,{time:d,byteLength:l,url:t}),this.hls.emit(Ys,{url:t,elapsed:d||0}),this.hls.emit(Hs,{url:t,responseUrl:s.url,elapsed:o-a}),this.hls.emit(Qs,{headers:s.headers})})),kh(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(Js,{error:xb.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this._bandwidthService=new Qb;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._segmentLoader=new wb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioSegmentLoader=new wb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._keyLoader=new wb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,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){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i;const r=[];return e&&(r[0]=this.loadVideoSegment(e,i)),t&&(r[1]=this.loadAudioSegment(t,s)),Promise.all(r)}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){var s;let r,o,a,n,l;const d=[];if(this.hls.emit(qs,{url:t.url}),d[0]=e.load(t.url),i&&t.initSegment){var h;const i=t.initSegment.url;r=this._mapCache[i],r||(this.hls.emit(qs,{url:i}),d[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=null===(h=t.initSegment.key)||void 0===h?void 0:h.url;s&&(l=t.initSegment.key.iv,n=this._keyCache[s],n||(this.hls.emit(qs,{url:s}),d[2]=this._keyLoader.load(s).then((e=>{e&&(n=this._keyCache[s]=e.data,this._emitOnLoaded(e,s))}))))}const c=null===(s=t.key)||void 0===s?void 0:s.url;c&&(a=t.key.iv,o=this._keyCache[c],o||(this.hls.emit(qs,{url:c}),d[3]=this._keyLoader.load(c).then((e=>{e&&(o=this._keyCache[c]=e.data,this._emitOnLoaded(e,c))}))));const[u]=await Promise.all(d);if(!u)return;const p=u.data;return this._emitOnLoaded(u,t.url),{data:p,map:r,key:o,mapKey:n,keyIv:a,mapKeyIv:l}}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()])}}class Zb{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(){var e;return this.targetDuration||(null===(e=this.segments[0])||void 0===e?void 0:e.duration)||0}get liveEdge(){return this.endTime}get endTime(){var e;return(null===(e=this.lastSegment)||void 0===e?void 0:e.end)||0}get currentSubtitleEndSn(){var e;return(null===(e=this.currentSubtitleStream)||void 0===e?void 0:e.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 s=this.segments;for(let t=0,r=s.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 s=i[i.length-1],r=(null==s?void 0:s.sn)||-1;if(re.sn===r)),a=o<0?e.segments:e.segments.slice(o+1);if(i.length&&a.length){let e=s.end;a.forEach((t=>{t.start=e,e=t.end}));const t=(null==s?void 0:s.cc)||-1;t>a[0].cc&&a.forEach((e=>e.cc+=t))}return t.endSN=e.endSN,t.segments=i.concat(a),a}}else t.segments=e.segments}}class ev{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(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.lastSegment}get currentSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer]}get nextSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer+1]}get currentSegments(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.segments}get currentSubtitleEndSn(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.currentSubtitleEndSn}get liveEdge(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.liveEdge}get totalDuration(){var e;return(null===(e=this.currentStream)||void 0===e?void 0:e.totalDuration)||0}get seekRange(){const e=this.currentSegments;if(e&&e.length)return[e[0].start,e[e.length-1].end]}get isEmpty(){var e;return!(null!==(e=this.currentSegments)&&void 0!==e&&e.length)}get isLive(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.live}get hasSubtitle(){var e;return!(null===(e=this.currentStream)||void 0===e||!e.currentSubtitleStream)}getAudioSegment(e){var t;return null===(t=this.currentStream)||void 0===t?void 0:t.getAudioSegment(e)}moveSegmentPointer(e){var t;null==e&&(e=this._segmentPointer+1),this._segmentPointer=Ao(e,-1,null===(t=this.currentSegments)||void 0===t?void 0:t.length),this.player.debugLog(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){var t;return null===(t=this.currentSegments)||void 0===t?void 0:t[e]}setNextSegmentByIndex(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this._segmentPointer=e-1,this.player.debugLog(this.TAG_NAME,"setNextSegmentByIndex()",e,this._segmentPointer)}findSegmentIndexByTime(e){const t=this.currentSegments;if(t){for(let i,s=0,r=t.length;s=i.start&&ee.url)).forEach(((e,t)=>{this.streams[t]?this.streams[t].update(e):this.streams[t]=new Zb(e)})),this.currentStream=this.streams[0];else if(Array.isArray(e.segments)){const s=this.currentStream;if(s){s.update(e,t,i);const r=s.updateSubtitle(i);r&&this.hls.emit(js,{list:r})}else this.reset(),this.currentStream=this.streams[0]=new Zb(e,t,i)}this.currentStream&&this.hls.isLive&&!this.dvrWindow&&(this.dvrWindow=this.currentSegments.reduce(((e,t)=>e+=t.duration),0))}switchSubtitle(e){var t;null===(t=this.currentStream)||void 0===t||t.switchSubtitle(e)}clearOldSegment(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50;const t=this.currentStream;if(!this.dvrWindow||!t)return;const i=t.endTime-this.dvrWindow;if(i<=0)return void this.player.debugLog(this.TAG_NAME,`clearOldSegment() stream.endTime:${t.endTime}, this.dvrWindow:${this.dvrWindow} startTime <= 0`);const s=t.segments;if(s.length<=e)return void this.player.debugLog(this.TAG_NAME,`clearOldSegment() segments.length:${s.length} <= maxPlaylistSize:${e}`);const r=this._segmentPointer;this._segmentPointer=t.clearOldSegment(i,r),this.player.debugLog(this.TAG_NAME,"clearOldSegment() update _segmentPointer:",r,this._segmentPointer),this.player.debugLog(this.TAG_NAME,"currentSegments",this.currentSegments)}checkSegmentTrackChange(e,t){const i=this.findSegmentIndexByTime(e),s=this.getSegmentByIndex(i);if(!s)return;if(!s.hasAudio&&!s.hasVideo)return;if(2!==t&&s.hasAudio&&s.hasVideo)return s;if(s.end-e>.3)return;const r=this.getSegmentByIndex(i+1);return r&&(r.hasAudio||r.hasVideo)&&(r.hasAudio!==s.hasAudio||r.hasVideo!==s.hasVideo)?r:void 0}}class tv{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?Fh(e.map,t):t}async _decryptData(e,t,i){if(this.externalDecryptor)return await this.externalDecryptor.decrypt(e,t,i);if(this.subtle){const s=await this.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt","decrypt"]),r=await this.subtle.decrypt({name:"AES-CBC",iv:i},s,e);return new Uint8Array(r)}e=Nd(e),t=Nd(t),i=Nd(i);return function(e){const{words:t}=e,{sigBytes:i}=e,s=new Uint8Array(i);for(let e=0;e>>2]>>>24-e%4*8&255;return s}(Ud.AES.decrypt({ciphertext:e},t,{iv:i,mode:Ud.mode.CBC}))}}class iv extends mh{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=xt,this._audioCodecType=Pt,this._vps=null,this._sps=null,this._pps=null,this.TAG_NAME="HlsTsLoader",this.videoTrack=iv.initVideoTrack(),this.audioTrack=iv.initAudioTrack(),this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,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.debugLog(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.videoTrack=null,this.audioTrack=null,this.tempSampleListInfo={},this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._hasCalcFps=!1,this._tempSampleTsList=[],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.player.debugLog(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])}_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let r,o;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?(o=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-o>54e5&&(r=o)):o=r),{data:e.subarray(9+t),pts:r,dts:o,originalPts:r,originalDts:o}}_demux(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t&&(this._pmtId=-1,this.videoTrack=iv.initVideoTrack(),this.audioTrack=iv.initAudioTrack()),!i||t?(this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[]):(this.videoTrack.samples=[],this.audioTrack.samples=[],this._remainingPacketData&&(e=Fh(this._remainingPacketData,e),this._remainingPacketData=null));let s=e.length;const r=s%188;r&&(this._remainingPacketData=e.subarray(s-r),s-=r);for(let t=0;t>4>1){if(r=t+5+e[t+4],r===t+188)continue}else r=t+4;switch(s){case 0:i&&(r+=e[r]+1),this._pmtId=(31&e[r+10])<<8|e[r+11];break;case this._pmtId:{i&&(r+=e[r]+1);const t=r+3+((15&e[r+1])<<8|e[r+2])-4;for(r+=12+((15&e[r+10])<<8|e[r+11]);r=t)return[];const r=[];for(;s{const t=s?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(!s&&5!==t||s&&5===t)break;r.isIFrame=!0,this._gopId++;break;case 6:case 39:case 40:if(!s&&6!==t||s&&6===t)break;const o=co(function(e){const t=e.byteLength,i=[];let s=1;for(;s=i)return;const r=s,o=[],a=(60&e[s+2])>>>2,n=Vr[a];if(!n)throw new Error(`Invalid sampling index: ${a}`);const l=1+((192&e[s+2])>>>6),d=(1&e[s+2])<<2|(192&e[s+3])>>>6;let h,c,u=0;const p=Xr(n);for(;s+7>5,i-s=i?void 0:e.subarray(s),frames:o,samplingFrequencyIndex:a,sampleRate:n,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=qr({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});this._isSendAACSeqHeader=!0,this.player.debugLog(this.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),this._doDecodeByHls(e,je,0,!1,0)}if(this._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const i=t.pts,s=new Uint8Array(t.data.length+2);s.set([175,1],0),s.set(t.data,2);const r={type:je,pts:i,dts:i,payload:s};e.push(r)})),this.audioTrack.samples=this.audioTrack.samples.concat(e)}else this.player.debugWarn(this.TAG_NAME,"aac seq header not send")}else this.player.debugWarn(this.TAG_NAME,"aac parseADTS error")}this._audioPesData=[]}else e&&"startPrefixError"===e.code&&(this._audioPesData=[])}_fix(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=Math.round(9e4*e);const s=this.videoTrack,r=this.audioTrack,o=s.samples,a=r.samples;if(!o.length&&!a.length)return;const n=o[0],l=a[0];let d=0;if(o.length&&a.length&&(d=n.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=n?n.dts-this._baseDts-this._videoNextDts:0,i=l?l.pts-this._baseDts-this._audioNextPts:0;Math.abs(t||i)>Cr&&(this._calculateBaseDts(this.audioTrack,this.videoTrack),this._baseDts-=e)}this._resetBaseDtsWhenStreamBreaked(),this._fixAudio(r),this._fixVideo(s);let h=s.samples.concat(r.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===Ge?this._doDecodeVideo({...e,payload:t}):e.type===je&&this._doDecodeAudio({...e,payload:t})})),xa(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(h))}_calculateBaseDts(){const e=this.audioTrack,t=this.videoTrack,i=e.samples,s=t.samples;if(!i.length&&!s.length)return!1;let r=1/0,o=1/0;i.length&&(e.baseDts=r=i[0].pts),s.length&&(t.baseDts=o=s[0].dts),this._baseDts=Math.min(r,o);const a=o-r;return Number.isFinite(a)&&Math.abs(a)>45e3&&this.player.debugWarn(this.TAG_NAME,`large av first frame gap,\n video pts: ${o},\n audio pts: ${r},\n base dts: ${this._baseDts},\n detect is: ${a}`),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 s=0;const r=t[0],o=t[1],a=this._videoNextDts-r.dts;let n;Math.abs(a)>45e3&&(r.dts+=a,r.pts+=a,this.player.debugWarn(this.TAG_NAME,`large video gap between chunk,\n next dts is ${this._videoNextDts},\n first dts is ${r.dts},\n next dts is ${o&&o.dts},\n duration is ${a}`),o&&Math.abs(o.dts-r.dts)>Cr&&(this._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=a,e.pts+=a)}))));const l=e.samples[0],d=e.samples[i-1];n=1===i?9e3:Math.floor((d.dts-l.dts)/(i-1));for(let r=0;rCr||s<0){this._videoTimestampBreak=!0,s=this._audioTimestampBreak?n:Math.max(s,2700);const i=this._audioNextPts||0;a&&a.dts>i&&(s=n),this.player.debugWarn(this.TAG_NAME,`large video gap between frames,\n time is ${o/e.timescale},\n dts is ${o},\n origin dts is ${t[r].originalDts},\n next dts is ${this._videoNextDts},\n sample Duration is ${s} ,\n ref Sample DurationInt is ${n}`)}t[r].duration=s,this._videoNextDts+=s}}_doFixAudioInternal(e,t,i){e.sampleDuration||(e.sampleDuration=Xr(e.timescale,i));const s=e.sampleDuration;if(void 0===this._audioNextPts){const e=t[0];this._audioNextPts=e.pts}for(let i=0;i=3*s&&a<=kr&&!Ro()){Qr(e.codec,e.channelCount)||t[0].data.subarray();const n=Math.floor(a/s);Math.abs(o.pts-this._lastAudioExceptionGapDot)>Lr&&(this._lastAudioExceptionGapDot=o.pts),this.player.debugWarn(this.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${n},\n nextPts is ${r},\n ref sample duration is ${s}`);for(let e=0;e=-9e4?(Math.abs(o.pts-this._lastAudioExceptionOverlapDot)>Lr&&(this._lastAudioExceptionOverlapDot=o.pts,this.player.debugWarn(this.TAG_NAME,`audio overlap detected,\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n ref sample duration is ${s}`)),t.splice(i,1),i--):(Math.abs(a)>=kr&&(this._audioTimestampBreak=!0,Math.abs(o.pts-this._lastAudioExceptionLargeGapDot)>Lr&&(this._lastAudioExceptionLargeGapDot=o.pts,this.player.debugWarn(this.TAG_NAME,`large audio gap detected,\n time is ${o.pts/1e3}\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n sample duration is ${a}\n ref sample duration is ${s}`))),o.dts=o.pts=r,this._audioNextPts+=s)}}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=va(this._tempSampleTsList,Ge);if(i)this._tempSampleTsList=[],this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debugLog(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debugLog(this.TAG_NAME,"_initLoopWorker()");const e=Ua(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(`JbPro:[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((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=Math.round(s.duration/90))):s.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 if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};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 s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),oe),s.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=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debugWarn(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=this.cryptoPayloadAudio(t);this._doDecodeByHls(i,je,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?cl(t,e.isIFrame):Qn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,Ge,e.dts,e.isIFrame,s)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}}function sv(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function rv(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function ov(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=Math.pow(2,32);return rv(e,t)*i+rv(e,t+4)}const av="aac",nv="g7110a",lv="g7110m",dv="avc",hv="hevc";class cv{static getFrameDuration(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}static getRateIndexByRate(e){return cv.FREQ.indexOf(e)}}function uv(e,t,i,s,r,o){const a=[],n=null==r?void 0:r.entries,l=t.entries,d=s.entries,h=i.entrySizes,c=null==o?void 0:o.entries;let u,p,f;c&&(u={},c.forEach((e=>{u[e-1]=!0}))),n&&(p=[],n.forEach((e=>{let{count:t,offset:i}=e;for(let e=0;e{let{count:t,delta:s}=e;for(let e=0;e=w&&(b++,w=l[b+1]?l[b+1].firstChunk-1:1/0),_+=l[b].samplesPerChunk)})),a}function pv(e,t){return e.dataReferenceIndex=sv(t,6),e.width=sv(t,24),e.height=sv(t,26),e.horizresolution=rv(t,28),e.vertresolution=rv(t,32),e.frameCount=sv(t,40),e.depth=sv(t,74),78}function fv(e,t){return e.dataReferenceIndex=sv(t,6),e.channelCount=sv(t,16),e.sampleSize=sv(t,18),e.sampleRate=rv(t,24)/65536,28}function mv(e,t,i){if(!e)return;if(e.size!==e.data.length)throw new Error(`box ${e.type} size !== data.length`);const s={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(s.version=e.data[e.headerSize],s.flags=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),s.headerSize+=4),i(s,e.data.subarray(s.headerSize),s.start+s.headerSize),s}kh(cv,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);const gv=function(e,t,i){const s=String(i),r=t>>0;let o=Math.ceil(r/s.length);const a=[],n=String(e);for(;o--;)a.push(s);return a.join("").substring(0,r-n.length)+n},yv=function(){const e=[];for(var t=arguments.length,i=new Array(t),s=0;s{e.push(gv(Number(t).toString(16),2,0))})),e[0]};class Av{static probe(e){return!!Av.findBox(e,["ftyp"])}static findBox(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=[];if(!e)return s;let r=0,o="",a=0;for(;e.length>7;){if(r=rv(e),o=String.fromCharCode.apply(null,e.subarray(4,8)),a=8,1===r?(r=ov(e,8),a+=8):r||(r=e.length),!t[0]||o===t[0]){const n=e.subarray(0,r);if(!(t.length<2))return Av.findBox(n.subarray(a),t.slice(1),i+a);s.push({start:i,size:r,headerSize:a,type:o,data:n})}i+=r,e=e.subarray(r)}return s}static tfhd(e){return mv(e,!0,((e,t)=>{e.trackId=rv(t);let i=4;const s=1&e.flags,r=2&e.flags,o=8&e.flags,a=16&e.flags,n=32&e.flags;s&&(i+=4,e.baseDataOffset=rv(t,i),i+=4),r&&(e.sampleDescriptionIndex=rv(t,i),i+=4),o&&(e.defaultSampleDuration=rv(t,i),i+=4),a&&(e.defaultSampleSize=rv(t,i),i+=4),n&&(e.defaultSampleFlags=rv(t,i))}))}static sidx(e){return mv(e,!0,((e,t)=>{let i=0;e.reference_ID=rv(t,i),i+=4,e.timescale=rv(t,i),i+=4,0===e.version?(e.earliest_presentation_time=rv(t,i),i+=4,e.first_offset=rv(t,i),i+=4):(e.earliest_presentation_time=ov(t,i),i+=8,e.first_offset=ov(t,i),i+=8),i+=2,e.references=[];const s=sv(t,i);i+=2;for(let r=0;r>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=rv(t,i),i+=4,r=rv(t,i),i+=4,s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}}))}static moov(e){return mv(e,!1,((e,t,i)=>{e.mvhd=Av.mvhd(Av.findBox(t,["mvhd"],i)[0]),e.trak=Av.findBox(t,["trak"],i).map((e=>Av.trak(e))),e.pssh=Av.pssh(Av.findBox(t,["pssh"],i)[0])}))}static mvhd(e){return mv(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=rv(t,16),e.duration=ov(t,20),i+=28):(e.timescale=rv(t,8),e.duration=rv(t,12),i+=16),e.nextTrackId=rv(t,i+76)}))}static trak(e){return mv(e,!1,((e,t,i)=>{e.tkhd=Av.tkhd(Av.findBox(t,["tkhd"],i)[0]),e.mdia=Av.mdia(Av.findBox(t,["mdia"],i)[0])}))}static tkhd(e){return mv(e,!0,((e,t)=>{let i=0;1===e.version?(e.trackId=rv(t,16),e.duration=ov(t,24),i+=32):(e.trackId=rv(t,8),e.duration=rv(t,16),i+=20),e.width=rv(t,i+52),e.height=rv(t,i+56)}))}static mdia(e){return mv(e,!1,((e,t,i)=>{e.mdhd=Av.mdhd(Av.findBox(t,["mdhd"],i)[0]),e.hdlr=Av.hdlr(Av.findBox(t,["hdlr"],i)[0]),e.minf=Av.minf(Av.findBox(t,["minf"],i)[0])}))}static mdhd(e){return mv(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=rv(t,16),e.duration=ov(t,20),i+=28):(e.timescale=rv(t,8),e.duration=rv(t,12),i+=16);const s=sv(t,i);e.language=String.fromCharCode(96+(s>>10&31),96+(s>>5&31),96+(31&s))}))}static hdlr(e){return mv(e,!0,((e,t)=>{0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}static minf(e){return mv(e,!1,((e,t,i)=>{e.vmhd=Av.vmhd(Av.findBox(t,["vmhd"],i)[0]),e.smhd=Av.smhd(Av.findBox(t,["smhd"],i)[0]),e.stbl=Av.stbl(Av.findBox(t,["stbl"],i)[0])}))}static vmhd(e){return mv(e,!0,((e,t)=>{e.graphicsmode=sv(t),e.opcolor=[sv(t,2),sv(t,4),sv(t,6)]}))}static smhd(e){return mv(e,!0,((e,t)=>{e.balance=sv(t)}))}static stbl(e){return mv(e,!1,((e,t,i)=>{var s,r,o;e.stsd=Av.stsd(Av.findBox(t,["stsd"],i)[0]),e.stts=Av.stts(Av.findBox(t,["stts"],i)[0]),e.ctts=Av.ctts(Av.findBox(t,["ctts"],i)[0]),e.stsc=Av.stsc(Av.findBox(t,["stsc"],i)[0]),e.stsz=Av.stsz(Av.findBox(t,["stsz"],i)[0]),e.stco=Av.stco(Av.findBox(t,["stco"],i)[0]),e.stco||(e.co64=Av.co64(Av.findBox(t,["co64"],i)[0]),e.stco=e.co64);const a=null===(s=e.stsd.entries[0])||void 0===s||null===(r=s.sinf)||void 0===r||null===(o=r.schi)||void 0===o?void 0:o.tenc.default_IV_size;e.stss=Av.stss(Av.findBox(t,["stss"],i)[0]),e.senc=Av.senc(Av.findBox(t,["senc"],i)[0],a)}))}static senc(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return mv(e,!0,((e,i)=>{let s=0;const r=rv(i,s);s+=4,e.samples=[];for(let o=0;o{const i=[],s=[];let r=0;for(let e=0;e<16;e++)s.push(yv(t[r+e]));if(r+=16,e.version>0){const e=rv(t,r);r+=4;for(let s=0;s<(""+e).length;s++)for(let e=0;e<16;e++){const e=t[r];r+=1,i.push(yv(e))}}const o=rv(t,r);e.data_size=o,r+=4,e.kid=i,e.system_id=s,e.buffer=t}))}static stsd(e){return mv(e,!0,((e,t,i)=>{e.entryCount=rv(t),e.entries=Av.findBox(t.subarray(4),[],i+4).map((e=>{switch(e.type){case"avc1":case"avc2":case"avc3":case"avc4":return Av.avc1(e);case"hvc1":case"hev1":return Av.hvc1(e);case"mp4a":return Av.mp4a(e);case"alaw":case"ulaw":return Av.alaw(e);case"enca":return mv(e,!1,((e,t,i)=>{e.channelCount=sv(t,16),e.samplesize=sv(t,18),e.sampleRate=rv(t,24)/65536,t=t.subarray(28),e.sinf=Av.sinf(Av.findBox(t,["sinf"],i)[0]),e.esds=Av.esds(Av.findBox(t,["esds"],i)[0])}));case"encv":return mv(e,!1,((e,t,i)=>{e.width=sv(t,24),e.height=sv(t,26),e.horizresolution=rv(t,28),e.vertresolution=rv(t,32),t=t.subarray(78),e.sinf=Av.sinf(Av.findBox(t,["sinf"],i)[0]),e.avcC=Av.avcC(Av.findBox(t,["avcC"],i)[0]),e.hvcC=Av.hvcC(Av.findBox(t,["hvcC"],i)[0]),e.pasp=Av.pasp(Av.findBox(t,["pasp"],i)[0])}))}})).filter(Boolean)}))}static tenc(e){return mv(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 s=0;s<16;s++)e.default_KID.push(yv(t[i])),i+=1}))}static schi(e){return mv(e,!1,((e,t,i)=>{e.tenc=Av.tenc(Av.findBox(t,["tenc"],i)[0])}))}static sinf(e){return mv(e,!1,((e,t,i)=>{e.schi=Av.schi(Av.findBox(t,["schi"],i)[0]),e.frma=Av.frma(Av.findBox(t,["frma"],i)[0])}))}static frma(e){return mv(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 mv(e,!1,((e,t,i)=>{const s=pv(e,t),r=t.subarray(s);i+=s,e.avcC=Av.avcC(Av.findBox(r,["avcC"],i)[0]),e.pasp=Av.pasp(Av.findBox(r,["pasp"],i)[0])}))}static avcC(e){return mv(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 s=0;s<3;s++)t=e[s].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 s=0;s{const s=pv(e,t),r=t.subarray(s);i+=s,e.hvcC=Av.hvcC(Av.findBox(r,["hvcC"],i)[0]),e.pasp=Av.pasp(Av.findBox(r,["pasp"],i)[0])}))}static hvcC(e){return mv(e,!1,((t,i)=>{t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=i[0];const s=i[1];t.generalProfileSpace=s>>6,t.generalTierFlag=(32&s)>>5,t.generalProfileIdc=31&s,t.generalProfileCompatibility=rv(i,2),t.generalConstraintIndicatorFlags=i.subarray(6,12),t.generalLevelIdc=i[12],t.avgFrameRate=sv(i,19),t.numOfArrays=i[22],t.vps=[],t.sps=[],t.pps=[];let r=23,o=0,a=0,n=0;for(let e=0;e{e.hSpacing=rv(t),e.vSpacing=rv(t,4)}))}static mp4a(e){return mv(e,!1,((e,t,i)=>{const s=fv(e,t);e.esds=Av.esds(Av.findBox(t.subarray(s),["esds"],i+s)[0])}))}static esds(e){return mv(e,!0,((e,t)=>{e.codec="mp4a.";let i=0,s=0,r=0,o=0;for(;t.length;){for(i=0,o=t[i],s=t[i+1],i+=2;128&s;)r=(127&s)<<7,s=t[i],i+=1;if(r+=127&s,3===o)t=t.subarray(i+3);else{if(4!==o){if(5===o){const s=e.config=t.subarray(i,i+r);let o=(248&s[0])>>3;return 31===o&&s.length>=2&&(o=32+((7&s[0])<<3)+((224&s[1])>>5)),e.objectType=o,e.codec+=o.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 mv(e,!1,((e,t)=>{fv(e,t)}))}static stts(e){return mv(e,!0,((e,t)=>{const i=rv(t),s=[];let r=4;for(let e=0;e{const i=rv(t),s=[];let r=4;if(1===e.version)for(let e=0;e{const i=rv(t),s=[];let r=4;for(let e=0;e{const i=rv(t),s=rv(t,4),r=[];if(!i){let e=8;for(let i=0;i{const i=rv(t),s=[];let r=4;for(let e=0;e{const i=rv(t),s=[];let r=4;for(let e=0;e{const i=rv(t),s=[];let r=4;for(let e=0;e{e.mfhd=Av.mfhd(Av.findBox(t,["mfhd"],i)[0]),e.traf=Av.findBox(t,["traf"],i).map((e=>Av.traf(e)))}))}static mfhd(e){return mv(e,!0,((e,t)=>{e.sequenceNumber=rv(t)}))}static traf(e){return mv(e,!1,((e,t,i)=>{e.tfhd=Av.tfhd(Av.findBox(t,["tfhd"],i)[0]),e.tfdt=Av.tfdt(Av.findBox(t,["tfdt"],i)[0]),e.trun=Av.trun(Av.findBox(t,["trun"],i)[0])}))}static trun(e){return mv(e,!0,((e,t)=>{const{version:i,flags:s}=e,r=t.length,o=e.sampleCount=rv(t);let a=4;if(r>a&&1&s&&(e.dataOffset=-(1+~rv(t,a)),a+=4),r>a&&4&s&&(e.firstSampleFlags=rv(t,a),a+=4),e.samples=[],r>a){let r;for(let n=0;n{1===e.version?e.baseMediaDecodeTime=ov(t):e.baseMediaDecodeTime=rv(t)}))}static probe(e){return!!Av.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){var s,r;const o=e.trak;if(!o||!o.length)return;const a=o.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),n=o.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(a&&t){var l,d,h,c,u,p,f;const i=t,s=null===(l=a.tkhd)||void 0===l?void 0:l.trackId;null!=s&&(i.id=a.tkhd.trackId),i.tkhdDuration=a.tkhd.duration,i.mvhdDurtion=e.mvhd.duration,i.mvhdTimecale=e.mvhd.timescale,i.timescale=i.formatTimescale=a.mdia.mdhd.timescale,i.duration=a.mdia.mdhd.duration||i.mvhdDurtion/i.mvhdTimecale*i.timescale;const r=a.mdia.minf.stbl.stsd.entries[0];if(i.width=r.width,i.height=r.height,r.pasp&&(i.sarRatio=[r.pasp.hSpacing,r.pasp.vSpacing]),r.hvcC)i.codecType=hv,i.codec=r.hvcC.codec,i.vps=r.hvcC.vps,i.sps=r.hvcC.sps,i.pps=r.hvcC.pps,i.hvcC=r.hvcC.data;else{if(!r.avcC)throw new Error("unknown video stsd entry");i.codecType=dv,i.codec=r.avcC.codec,i.sps=r.avcC.sps,i.pps=r.avcC.pps}var m,g,y,A,b,v,_,w;if(i.present=!0,i.ext={},i.ext.stss=null===(d=a.mdia)||void 0===d||null===(h=d.minf)||void 0===h||null===(c=h.stbl)||void 0===c?void 0:c.stss,i.ext.ctts=null===(u=a.mdia)||void 0===u||null===(p=u.minf)||void 0===p||null===(f=p.stbl)||void 0===f?void 0:f.ctts,r&&"encv"===r.type)i.isVideoEncryption=!0,r.default_KID=null===(m=r.sinf)||void 0===m||null===(g=m.schi)||void 0===g?void 0:g.tenc.default_KID,r.default_IsEncrypted=null===(y=r.sinf)||void 0===y||null===(A=y.schi)||void 0===A?void 0:A.tenc.default_IsEncrypted,r.default_IV_size=null===(b=r.sinf)||void 0===b||null===(v=b.schi)||void 0===v?void 0:v.tenc.default_IV_size,i.videoSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,r.data_format=null===(_=r.sinf)||void 0===_||null===(w=_.frma)||void 0===w?void 0:w.data_format,i.useEME=e.useEME,i.kidValue=e.kidValue,i.pssh=e.pssh,i.encv=r}if(n&&i){var S,E,T,k,L,C,x,D,R;const t=i,o=null===(S=n.tkhd)||void 0===S?void 0:S.trackId;null!=o&&(t.id=n.tkhd.trackId),t.tkhdDuration=n.tkhd.duration,t.mvhdDurtion=e.mvhd.duration,t.mvhdTimecale=e.mvhd.timescale,t.timescale=t.formatTimescale=n.mdia.mdhd.timescale,t.duration=n.mdia.mdhd.duration||t.mvhdDurtion/t.mvhdTimecale*t.timescale;const a=n.mdia.minf.stbl.stsd.entries[0];switch(t.sampleSize=a.sampleSize,t.sampleRate=a.sampleRate,t.channelCount=a.channelCount,t.present=!0,a.type){case"alaw":t.codecType=t.codec=nv,t.sampleRate=8e3;break;case"ulaw":t.codecType=t.codec=lv,t.sampleRate=8e3;break;default:t.codecType=av,t.sampleDuration=cv.getFrameDuration(t.sampleRate,t.timescale),t.sampleRateIndex=cv.getRateIndexByRate(t.sampleRate),t.objectType=(null===(s=a.esds)||void 0===s?void 0:s.objectType)||2,a.esds&&(t.config=Array.from(a.esds.config)),t.codec=(null===(r=a.esds)||void 0===r?void 0:r.codec)||"mp4a.40.2"}var I,P,B,M,F,U,O,N;if(t.sampleDuration=cv.getFrameDuration(t.sampleRate,t.timescale),t.objectType=(null===(E=a.esds)||void 0===E?void 0:E.objectType)||2,a.esds&&(a.esds.config?t.config=Array.from(a.esds.config):console.warn("esds config is null")),t.codec=(null===(T=a.esds)||void 0===T?void 0:T.codec)||"mp4a.40.2",t.sampleRateIndex=cv.getRateIndexByRate(t.sampleRate),t.ext={},t.ext.stss=null===(k=n.mdia)||void 0===k||null===(L=k.minf)||void 0===L||null===(C=L.stbl)||void 0===C?void 0:C.stss,t.ext.ctts=null===(x=n.mdia)||void 0===x||null===(D=x.minf)||void 0===D||null===(R=D.stbl)||void 0===R?void 0:R.ctts,t.present=!0,a&&"enca"===a.type)t.isAudioEncryption=!0,a.data_format=null===(I=a.sinf)||void 0===I||null===(P=I.frma)||void 0===P?void 0:P.data_format,a.default_KID=null===(B=a.sinf)||void 0===B||null===(M=B.schi)||void 0===M?void 0:M.tenc.default_KID,a.default_IsEncrypted=null===(F=a.sinf)||void 0===F||null===(U=F.schi)||void 0===U?void 0:U.tenc.default_IsEncrypted,a.default_IV_size=null===(O=a.sinf)||void 0===O||null===(N=O.schi)||void 0===N?void 0:N.tenc.default_IV_size,t.audioSenc=n.mdia.minf.stbl.senc&&n.mdia.minf.stbl.senc.samples,t.useEME=e.useEME,t.kidValue=e.kidValue,t.enca=a}if(i&&(i.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!i&&i.isAudioEncryption),null!=t&&t.encv||null!=i&&i.enca){var j,G;const e=null==t||null===(j=t.encv)||void 0===j?void 0:j.default_KID,s=null==i||null===(G=i.enca)||void 0===G?void 0:G.default_KID,r=e||s?(e||s).join(""):null;t&&(t.kid=r),i&&(i.kid=r)}return t&&(t.flags=3841),i&&(i.flags=1793),{videoTrack:t,audioTrack:i}}static evaluateDefaultDuration(e,t,i){var s;const r=null==t||null===(s=t.samples)||void 0===s?void 0:s.length;if(!r)return 1024;return 1024*r/t.timescale*e.timescale/i}static moofToSamples(e,t,i){const s={};return e.mfhd&&(t&&(t.sequenceNumber=e.mfhd.sequenceNumber),i&&(i.sequenceNumber=e.mfhd.sequenceNumber)),e.traf.forEach((e=>{let{tfhd:r,tfdt:o,trun:a}=e;if(!r||!a)return;o&&(t&&t.id===r.trackId&&(t.baseMediaDecodeTime=o.baseMediaDecodeTime),i&&i.id===r.trackId&&(i.baseMediaDecodeTime=o.baseMediaDecodeTime));const n=r.defaultSampleSize||0,l=r.defaultSampleDuration||Av.evaluateDefaultDuration(t,i,a.samples.length||a.sampleCount);let d=a.dataOffset||0,h=0,c=-1;if(!a.samples.length&&a.sampleCount){s[r.trackId]=[];for(let e=0;e((e={offset:d,dts:h,pts:h+(e.cts||0),duration:e.duration||l,size:e.size||n,gopId:c,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(c++,e.gopId=c),h+=e.duration,d+=e.size,e)))})),s}static moovToSamples(e){const t=e.trak;if(!t||!t.length)return;const i=t.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),s=t.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(!i&&!s)return;let r,o;if(i){var a,n;const e=null===(a=i.mdia)||void 0===a||null===(n=a.minf)||void 0===n?void 0:n.stbl;if(!e)return;const{stts:t,stsc:s,stsz:o,stco:l,stss:d,ctts:h}=e;if(!(t&&s&&o&&l&&d))return;r=uv(t,s,o,l,h,d)}if(s){var l,d,h;const e=null===(l=s.mdia)||void 0===l||null===(d=l.minf)||void 0===d?void 0:d.stbl;if(!e)return;const t=null===(h=s.mdia.mdhd)||void 0===h?void 0:h.timescale,{stts:i,stsc:r,stsz:a,stco:n}=e;if(!(t&&i&&r&&a&&n))return;o=uv(i,r,a,n)}return{videoSamples:r,audioSamples:o}}}class bv extends mh{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._tempSampleTsList=[],this._basefps=25,this._isUseWorker()&&this._initLoopWorker(),e.debugLog(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._tempSampleTsList=[],this.videoTrack=null,this.audioTrack=null,this.isInitVideo=!1,this.isInitAudio=!1,this._basefps=25,this.player.debugLog(this.TAG_NAME,"destroy")}demux(e,t){let i=this.audioTrack,s=this.videoTrack;if(this.checkInitAudio(),this.checkInitVideo(),i.samples=[],s.samples=[],t){if(this.player.updateStats({abps:t.byteLength}),xa(this.isInitAudio)){const e=Av.findBox(t,["moov"])[0];if(!e)return void this.player.debugError(this.TAG_NAME,"cannot found moov box");Av.moovToTrack(Av.moov(e),null,i),this.checkInitAudio()&&(this.player.debugLog(this.TAG_NAME,"audioData audio init success"),this._sendAccADTSHeader(i))}const e=Av.findBox(t,["moof"])[0];if(e){const s=Av.moofToSamples(Av.moof(e),null,i)[i.id],r=i.baseMediaDecodeTime;if(s){const o=e.start;s.map((e=>{e.offset+=o;const s=t.subarray(e.offset,e.offset+e.size),a=e.dts+r,n=new Uint8Array(s.length+2);n.set([175,1],0),n.set(s,2),i.samples.push({type:je,pts:a,dts:a,payload:n,duration:e.duration,size:n.byteLength})}))}}}if(e){if(this.player.updateStats({vbps:e.byteLength}),xa(this.isInitVideo)&&xa(this.isInitAudio)){const t=Av.findBox(e,["moov"])[0];if(!t)throw new Error("cannot found moov box");if(Av.moovToTrack(Av.moov(t),s,i),xa(this.isInitAudio)&&this.checkInitAudio()&&(this.player.debugLog(this.TAG_NAME,"videoData audio init success",i),this._sendAccADTSHeader(i)),this.checkInitVideo()){this.player.debugLog(this.TAG_NAME,"video init success");let e=null;s.codecType===ps?s.sps.length&&s.vps.length&&s.pps.length&&(e=hl({sps:s.sps[0],pps:s.pps[0],vps:s.vps[0]})):s.sps.length&&s.pps.length&&(e=Yn({sps:s.sps[0],pps:s.pps[0]})),e&&(this.player.debugLog(this.TAG_NAME,"seqHeader"),this._doDecodeByHls(e,Ge,0,!0,0))}}const t=Av.findBox(e,["moof"])[0];if(t){const r=Av.moofToSamples(Av.moof(t),s,i),o=s.baseMediaDecodeTime,a=i.baseMediaDecodeTime,n=t.start;Object.keys(r).forEach((t=>{s.id==t?r[t].map((t=>{t.offset+=n;const i={type:Ge,pts:(t.pts||t.dts)+o,dts:t.dts+o,units:[],payload:null,isIFrame:!1};i.duration=t.duration,i.gopId=t.gopId,t.keyframe&&(i.isIFrame=!0);const r=e.subarray(t.offset,t.offset+t.size);i.payload=r,s.samples.push(i)})):i.id==t&&r[t].map((t=>{t.offset+=n;const s=e.subarray(t.offset,t.offset+t.size),r=t.dts+a,o=new Uint8Array(s.length+2);o.set([175,1],0),o.set(s,2),i.samples.push({type:je,pts:r,dts:r,payload:o,duration:t.duration,size:o.byteLength})}))}))}}const r=s.samples.concat(i.samples);r.sort(((e,t)=>e.dts-t.dts)),r.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===Ge?this._doDecodeVideo({...e,payload:t}):e.type===je&&this._doDecodeAudio({...e,payload:t})})),xa(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(r))}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=qr({profile:e.objectType,sampleRate:e.sampleRateIndex,channel:e.channelCount});this._doDecodeByHls(t,je,0,!0,0)}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=va(this._tempSampleTsList,Ge);if(i)this._tempSampleTsList=[],this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debugLog(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debugLog(this.TAG_NAME,"_initLoopWorker()");const e=Ua(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(`JbPro:[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((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=s.duration)):s.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 if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};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 s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),oe),s.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=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debugWarn(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}),this.cryptoPayloadAudio(t),this._doDecodeByHls(t,je,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?cl(t,e.isIFrame):Qn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,Ge,e.dts,e.isIFrame,s)}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 vv{constructor(e,t){this.hls=e,this.player=this.hls.player,this.isMP4=t,this._initSegmentId="",this.TAG_NAME="HlsTransmuxer",this._demuxer=t?new bv(this.hls.player):new iv(this.hls.player),this.player.debugLog(this.TAG_NAME,`init and isMP4 is ${t}`)}destroy(){this._demuxer&&(this._demuxer.destroy(),this._demuxer=null)}transmux(e,t,i,s,r,o){this.player.debugLog(this.TAG_NAME,`transmux videoChunk:${e&&e.byteLength}, audioChunk:${t&&t.byteLength}, discontinuity:${i}, contiguous:${s}, startTime:${r}, needInit:${o}`);const a=this._demuxer;try{this.isMP4?a.demux(e,t):a.demuxAndFix(Fh(e,t),i,s,r)}catch(e){throw new xb(Cb,Lb,e)}}}class _v{constructor(e){this.hls=e,this.player=e.player,this._decryptor=new tv(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(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t._baseDts}get nbSb(){return 0}async updateDuration(e){this.player.debugLog(this.TAG_NAME,"updateDuration()",e)}getBuferredDuration(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getBuferredDuration()}getBufferedSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleListLength()}getBufferedAudioSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleAudioListLength()}getBufferedVideoSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleVideoListLength()}createSource(e,t,i,s){if(this._sourceCreated)return;const r=e||t;r&&(iv.probe(r)?this._transmuxer||(this._transmuxer=new vv(this.hls,!1)):Av.probe(r)?this._transmuxer||(this._transmuxer=new vv(this.hls,!0)):this.player.debugError(this.TAG_NAME,"createSource error: chunk is not ts"))}async appendBuffer(e,t,i,s,r,o,a){if(null!=i&&i.length||null!=s&&s.length)return this._needInitSegment,this._transmuxer.transmux(i,s,r,o,a,this._needInitSegment||r),!0}async clearAllBuffer(){this.player.debugLog(this.TAG_NAME,"clearAllBuffer")}decryptBuffer(e,t){return this._decryptor.decrypt(e,t)}async reset(){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 wv{constructor(e){this.emitter=e,this._seiSet=new Set,e.on(Xs,(e=>{e&&this._seiSet.add(e)}))}throw(e){if(null==e||!this._seiSet.size)return;const t=e-.2,i=e+.2,s=[];this._seiSet.forEach((e=>{e.time>=t&&e.time<=i&&s.push(e)})),s.forEach((e=>{this._seiSet.delete(e),this.emitter.emit(Zs,e)}))}reset(){this._seiSet.clear()}}class Sv{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(e){var t;let{data:i}=e;const s=null==i||null===(t=i.onMetaData)||void 0===t?void 0:t.framerate;s&&s>0&&s<100&&(this.fps=s)}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 Ev{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3;kh(this,"_core",null),kh(this,"_samples",[]),this._core=e,this._timescale=t,this._stats=new Sv(t),this._bindEvents()}getStats(){var e,t,i,s,r,o,a;const{currentTime:n=0,decodeFps:l=0}=(null===(e=this._core)||void 0===e?void 0:e.media)||{};return{...this._stats.getStats(),downloadSpeed:(null===(t=this._core)||void 0===t||null===(i=t.speedInfo)||void 0===i?void 0:i.call(t).speed)||0,avgSpeed:(null===(s=this._core)||void 0===s||null===(r=s.speedInfo)||void 0===r?void 0:r.call(s).avgSpeed)||0,currentTime:n,bufferEnd:(null===(o=this._core)||void 0===o||null===(a=o.bufferInfo())||void 0===a?void 0:a.remaining)||0,decodeFps:l}}_bindEvents(){this._core.on(zs,(e=>this._stats.updateBitrate(e.samples))),this._core.on($s,(e=>{this._stats.setFpsFromScriptData(e)})),this._core.on(Vs,(e=>{"video"===e.type?this._stats.setVideoMeta(e.track):this._stats.setAudioMeta(e.track)})),this._core.on(Hs,(e=>{this._stats.setDomain(e.responseUrl)}))}reset(){this._samples=[],this._stats=new Sv(this._timescale)}}class Tv extends o{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),kh(this,"_loadSegment",(async()=>{if(this._segmentProcessing)return void this.player.debugWarn("_loadSegment()","_segmentProcessing is ture and return");if(!this._playlist)return void this.player.debugWarn("_loadSegment()","this._playlist is null and return");const e=this._playlist.currentSegment,t=this._playlist.nextSegment;if(this.player.debugLog(this.TAG_NAME,"_loadSegment()","curSeg",e&&e.url,"nextSeg",t&&t.url),t)return this._loadSegmentDirect();this.player.debugLog(this.TAG_NAME,"nextSeg is null and return")})),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 Yb(this),this._segmentLoader=new Xb(this),this._playlist=new ev(this),this._bufferService=new _v(this),this._seiService=new wv(this),this._stats=new Ev(this,9e4),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){this.player.debugLog(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.debugLog(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.debugLog(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(){var e;return null===(e=this._bufferService)||void 0===e?void 0:e.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 xb(Tb,Tb,null,null,"m3u8 url is missing"));const t=await this._loadM3U8(e),{currentStream:i}=this._playlist;if(this._urlSwitching){var s,r;if(0===i.bitrate&&null!==(s=this._switchUrlOpts)&&void 0!==s&&s.bitrate)i.bitrate=null===(r=this._switchUrlOpts)||void 0===r?void 0:r.bitrate;const e=this._getSeamlessSwitchPoint();this.config.startTime=e;const t=this._playlist.findSegmentIndexByTime(e),o=this._playlist.getSegmentByIndex(t+1);if(o){const e=o.start;this.player.debugWarn(this.TAG_NAME,`clear buffer from ${e}`)}}t&&(this.isLive?(this.player.debugLog(this.TAG_NAME,"is live"),this._bufferService.setLiveSeekableRange(0,4294967295),this.config.targetLatency{let[t,i,a]=e;t?(this._playlist.upsertPlaylist(t,i,a),this.isLive&&this._pollM3U8(s,r,o)):this.player.debugWarn(this.TAG_NAME,"_refreshM3U8() mediaPlaylist is empty")})).catch((e=>{throw this._emitError(xb.create(e))}))}_pollM3U8(e,t,i){var s;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(xb.create(e))}),1e3*((null===(s=this._playlist.lastSegment)||void 0===s?void 0:s.duration)||0))}async _loadSegmentDirect(){const e=this._playlist.nextSegment;if(!e)return void this.player.debugLog(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(xb.create(i)):(t?(this._urlSwitching&&(this._urlSwitching=!1,this.emit(tr,{url:this.config.url})),this._playlist.moveSegmentPointer(),this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast",e.isLast),e.isLast?(this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast"),this._end()):(this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","and next _loadSegment()"),this._loadSegment())):this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect() not appended"),t)}async _reqAndBufferSegment(e,t){this.player.debugLog(this.TAG_NAME,"video seg",e&&e.url,"audio seg",t&&t.url);const i=e?e.cc:t.cc,s=this._prevSegCc!==i;let r=[];try{r=await this._segmentLoader.load(e,t,s)}catch(e){throw e.fatal=!1,this._segmentLoader.error=e,e}if(!r[0])return;const o=await this._bufferService.decryptBuffer(...r);if(!o)return void this.player.debugLog(this.TAG_NAME,"decryptBuffer return null");const a=e?e.sn:t.sn,n=e?e.start:t.start,l=this._playlist.currentStream;return this._bufferService.createSource(o[0],o[1],null==l?void 0:l.videoCodec,null==l?void 0:l.audioCodec),await this._bufferService.appendBuffer(e,t,o[0],o[1],s,this._prevSegSn===a-1,n),this._prevSegCc=i,this._prevSegSn=a,!0}async _clear(){this.player.debugLog(this.TAG_NAME,"_clear()"),clearTimeout(this._disconnectTimer),this._stopTick(),await Promise.all([this._segmentLoader.cancel(),this._manifestLoader.stopPoll()]),this._segmentProcessing=!1}async _reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.player.debugLog(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.debugLog(this.TAG_NAME,"_end()"),this._clear()}_emitError(e){var t;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var s;!1===(null===(t=e.originError)||void 0===t?void 0:t.fatal)?console.warn(e):(console.table(e),console.error(e),console.error(null===(s=this.media)||void 0===s?void 0:s.error),this._stopTick(),this._urlSwitching&&(this._urlSwitching=!1,this.emit(er,e)),i&&this._end(),this._seiService.reset(),this.emit(rr,e));return e}_getSeamlessSwitchPoint(){const{media:e}=this;let t=e.currentTime;if(!e.paused){var i;const s=this._playlist.findSegmentIndexByTime(e.currentTime),r=this._playlist.getSegmentByIndex(s),o=null===(i=this._stats)||void 0===i?void 0:i.getStats().downloadSpeed;if(o&&r){t+=r.duration*this._playlist.currentStream.bitrate/o+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 kv extends o{constructor(e){super(),kh(this,"TAG_NAME","Hls256Decoder"),this.player=e,this.$videoElement=this.player.video.$videoElement,this.hls=null,this.eventsDestroy=[],this.bandwidthEstimateInterval=null,this.hls=new Tv(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.debugLog(this.TAG_NAME,"destroy"),!0}_bindEvents(){this.hls.on(rr,(e=>{this.player.emitError(vt.hlsError,e)})),this._startBandwidthEstimateInterval()}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{const e=this.hls.speedInfo();this.player.emit(yt.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 Lv extends o{constructor(e,t){if(super(),this.player=e,this.player.$container.classList.add("jb-pro-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=!!Ca(t.isUseFpsRender),this._rate=1,this._audioTimestamp=0,this._videoTimestamp=0,this.controlType=t.controlType||X.normal,t.controlType&&-1===[X.normal,X.simple].indexOf(t.controlType)&&(this.player.debugWarn("Playback","constructor()","controlType is not in [normal,simple]",t.controlType),this.controlType=X.normal),this._currentLocalTimestamp=0,this._localOneFrameTimestamp=t.localOneFrameTimestamp||40,this._localCalculateTimeInterval=null,this._isUseLocalCalculateTime=!!Ca(t.isUseLocalCalculateTime),this._isPlaybackPauseClearCache=!xa(t.isPlaybackPauseClearCache),this._isCacheBeforeDecodeForFpsRender=!!Ca(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===X.normal)this.initPlaybackList(t.playList,t.showPrecision,t.startTime);else if(t.controlType===X.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(yt.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};try{e.debugLog("Playback","init",JSON.stringify(i))}catch(t){e.debugLog("Playback","init",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("jb-pro-container-playback"),this.off(),this.player.debugLog("Playback","destroy")}_listen(){this.player.on(yt.stats,(e=>{const t=e.ts;this._playStartTime||(this._playStartTime=t-1e3);let i=t-this._playStartTime;if(this.setPlayingTimestamp(i),this.player.isPlaybackUseMSE()&&this.player.isPlaying()&&0===e.videoCurrentTimeDiff&&(this.player.debugWarn(this.TAG_NAME,`updateStats and videoCurrentTimeDiff is 0 and\n videoCurrentTime is ${e.videoCurrentTime}\n and next update video currentTime`),this.player.mseDecoder.updateVideoCurrentTimeByBufferStart()),this.player.isStreamEnd()&&this.player.isPlaying()&&this.player.isPlaybackUseMSE()&&0===e.videoCurrentTimeDiff){this.player.mseDecoder.isCurrentTimeInBufferEnd()&&this.player.emit(yt.playbackEnd)}}))}pause(){this.clearStatsInterval()}resume(){this.startCheckStatsInterval()}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._startFpsTimestamp||(this._startFpsTimestamp=yo()),Ho(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=yo(),i=t-this._startFpsTimestamp;if(i<1e3)return;let s=null;this._startfpsTime&&(s=this._playbackTs-this._startfpsTime),this.player.emit(yt.playbackStats,{fps:this._renderFps,rate:this.rate,start:this._startfpsTime,end:this._playbackTs,timestamp:i,dataTimestamp:s,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 s=0;if(this.playbackList.forEach(((e,t)=>{10===sa(e.start)?(e.startTimestamp=1e3*e.start,e.startTime=Io(e.startTimestamp)):(e.startTimestamp=e.start,e.startTime=Io(e.startTimestamp)),10===sa(e.end)?(e.endTimestamp=1e3*e.end,e.endTime=Io(e.endTimestamp)):(e.endTimestamp=e.end,e.endTime=Io(e.endTimestamp)),e.duration=e.end-e.start,s+=e.duration})),this._totalDuration=s,this.player.debugLog("Playback",this.playbackList),this.playbackList.length>0){const e=this.playbackList[0].startTimestamp;this._playbackListStartTimestamp=e;let t=e;i&&(10===sa(i)&&(i*=1e3),this._isTimeInPlaybackList(i)&&(t=i)),this.setStartTime(t)}const r=t||Pi;this.setShowPrecision(r)}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(yt.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===Pi}get is30Min(){return this.showPrecision===Bi}get is10Min(){return this.showPrecision===Mi}get is5Min(){return this.showPrecision===Fi}get is1Min(){return this.showPrecision===Fi}get isPlaybackPauseClearCache(){return this._isPlaybackPauseClearCache}get isCacheBeforeDecodeForFpsRender(){return this._isCacheBeforeDecodeForFpsRender}setShowPrecision(e){Oi.includes(e)||(this.player.debugWarn("Playback","setShowPrecision()","type is not in PLAYBACK_CONTROL_TIME_PRECISION_ARRAY",e),e=Pi),this._showPrecision&&this._showPrecision===e||(this._showPrecision=e,this.player.emit(yt.playbackPrecision,this._showPrecision,this.playbackList),this.player.emit(yt.playbackShowPrecisionChange,this._showPrecision))}setPlayingTimestamp(e){let t;if(this.controlType===X.normal){t=this.startTime+e,this._playingTimestamp=t,this.player.emit(yt.playbackTime,t);const i=new Date(t);this.player.emit(yt.playbackTimestamp,{ts:t,hour:i.getHours(),min:i.getMinutes(),second:i.getSeconds()})}else this.controlType===X.simple&&(t=this.startTime+Math.round(e/1e3),t>this.totalDuration&&(this.player.debugLog("Playback","setPlayingTimestamp()",`timestamp ${t} > this.totalDuration ${this.totalDuration}`),t=this.totalDuration),this._playingTimestamp=t,this.player.emit(yt.playbackTime,t),this.player.emit(yt.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.debugLog("Playback","seek()",e),this.controlType===X.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(yt.playbackSeek,i)}}else if(this.controlType===X.simple){let t=e.time;this.player.emit(yt.playbackSeek,{ts:t})}}currentTimeScroll(){this.player.emit(yt.playbackTimeScroll)}_findMoreInfoByTimestamp(e){let t=null;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=i)})),t}_isTimeInPlaybackList(e){let t=!1;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=!0)})),t}getControlType(){return this.controlType}isControlTypeNormal(){return this.controlType===X.normal}isControlTypeSimple(){return this.controlType===X.simple}isPlaybackPauseNotClearCacheAndCacheBeforeDecode(){return xa(this.isPlaybackPauseClearCache)&&this.isCacheBeforeDecodeForFpsRender}isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender(){return this.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.isUseFpsRender}}class Cv extends o{constructor(e){super(),this.player=e,this.TAG_NAME="zoom",this.bindEvents=[],this.isDragging=!1,this.isGesturing=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.prevGestureScale=null,this.prevGestureTouches=[],this._isZooming=!1,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.player,this.player.on(yt.zooming,this._handleZooming.bind(this)),e.debugLog("zoom","init")}destroy(){this._unbindEvents(),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.debugLog("zoom","destroy")}_handleZooming(e){if(e){this.player.$container.classList.add("jb-pro-zoom-control"),this._bindEvents();const e=this.player.video.$videoElement.style.transform;let t=this.player.video.$videoElement.offsetLeft,i=this.player.video.$videoElement.offsetTop;t=parseFloat(t),i=parseFloat(i),t&&(this.videoPosition.left=t),i&&(this.videoPosition.top=i),this.prevVideoElementStyleTransform=e;let s=e.match(/scale\([0-9., ]*\)/g);if(s&&s[0]){let e=s[0].replace("scale(","").replace(")","");this.prevVideoElementStyleScale=e.split(",")}this._isZooming=!0}else{this.player.$container.classList.remove("jb-pro-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,To()&&this.player._opt.useWebFullScreen&&this.player.resize(),this._isZooming=!1}}_bindEvents(){const{events:{proxy:e}}=this.player,t=Ga(),i=e(this.player.$container,t.move,this.handleMouseMove.bind(this)),s=e(this.player.$container,t.down,this.handleMouseDown.bind(this)),r=e(window,t.up,this.handleMouseUp.bind(this));if(this.bindEvents.push(i,s,r),To()&&this.player._opt.zoomSupportGestureInMobile)if(Lo()){this.handleGestureChangeThrottle=Fo(this.handleGestureChangeForAndroid.bind(this),100);const t=e(this.player.$container,"touchstart",this.handleGestureStartForAndroid.bind(this)),i=e(this.player.$container,"touchmove",this.handleGestureChangeThrottle.bind(this)),s=e(this.player.$container,"touchend",this.handleGestureEndForAndroid.bind(this));this.bindEvents.push(t,i,s)}else{this.handleGestureChangeThrottle=Fo(this.handleGestureChange.bind(this),100);const t=e(this.player.$container,"gesturestart",this.handleGestureStart.bind(this)),i=e(this.player.$container,"gesturechange",this.handleGestureChangeThrottle.bind(this)),s=e(this.player.$container,"gestureend",this.handleGestureEnd.bind(this));this.bindEvents.push(t,i,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}=ua(e),s=this.tempPosition.x-t,r=this.tempPosition.y-i;this.videoPosition.left=this.videoPosition.left-s,this.videoPosition.top=this.videoPosition.top-r,this.tempPosition.x=t,this.tempPosition.y=i,this.updateVideoPosition()}}handleMouseDown(e){e.stopPropagation();const t=da(e);if(this.player.zooming&&(t.matches("video")||t.matches("canvas"))){e.preventDefault();const{posX:t,posY:i}=ua(e);this.player.$container.style.cursor="grabbing",this.tempPosition.x=t,this.tempPosition.y=i,this.isDragging=!0,this.player.debugLog("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.debugLog("zoom","handleMouseUp is dragging false"))}handleGestureStart(e){e.stopPropagation(),this.player.zooming&&(null===this.prevGestureScale&&(this.prevGestureScale=e.scale),this.isGesturing=!0)}handleGestureStartForAndroid(e){e.stopPropagation(),this.player.zooming&&e.touches.length>=2&&(this.isGesturing=!0,this.prevGestureTouches=e.touches)}handleGestureChangeForAndroid(e){if(e.stopPropagation(),e.preventDefault(),this.player.zooming&&this.isGesturing&&e.touches.length>=2){const s=e.touches,r=t(s[0],s[1])/t(this.prevGestureTouches[0],this.prevGestureTouches[1]);i(s[0],s[1]),i(this.prevGestureTouches[0],this.prevGestureTouches[1]),null===this.prevGestureScale&&(this.prevGestureScale=r);const o=r-this.prevGestureScale,a=this.player._opt.zoomSupportGestureInMobileSpeed;o>0?this.expandPrecision(a):o<0&&this.narrowPrecision(a)}function t(e,t){var i=t.pageX-e.pageX,s=t.pageY-e.pageY;return Math.sqrt(i*i+s*s)}function i(e,t){var i=e.pageX-t.pageX,s=e.pageY-t.pageY;return 180*Math.atan2(s,i)/Math.PI}}handleGestureEndForAndroid(e){e.stopPropagation(),this.player.zooming&&(this.prevGestureScale=null,this.isGesturing=!1,this.prevGestureTouches=[])}handleGestureChange(e){if(e.stopPropagation(),this.player.zooming&&this.isGesturing&&null!==this.prevGestureScale){const t=e.scale,i=t-this.prevGestureScale,s=this.player._opt.zoomSupportGestureInMobileSpeed;i>0?this.expandPrecision(s):i<0&&this.narrowPrecision(s),this.prevGestureScale=t}}handleGestureEnd(e){e.stopPropagation(),this.player.zooming&&(this.prevGestureScale=null,this.isGesturing=!1)}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(e){this.currentZoom<=1||(this.currentZoom-=1,this.updateVideoElementScale(e))}expandPrecision(e){this.currentZoom>=this.player._opt.zoomMaxScale||(this.currentZoom+=1,this.updateVideoElementScale(e))}updateCurrentZoom(e,t){e<1||e>this.player._opt.zoomMaxScale||(this.currentZoom=e,this.updateVideoElementScale(t))}updatePrevVideoElementStyleScale(e){this.prevVideoElementStyleScale=e}updateVideoElementScale(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5;const t=this.player.video.$videoElement;let i=t.style.transform,s=1,r=1;if(this.prevVideoElementStyleScale){const e=this.prevVideoElementStyleScale[0];void 0!==e&&(s=e,r=e);const t=this.prevVideoElementStyleScale[1];void 0!==t&&(r=t)}r=Bo(r),s=Bo(s);const o=e*s*(this.currentZoom-1)+s,a=e*r*(this.currentZoom-1)+r;let n;n=-1===i.indexOf("scale(")?i+` scale(${o},${a})`:i.replace(/scale\([0-9., ]*\)/,`scale(${o},${a})`),this.player.debugLog("zoom",`updateVideoElementScale end is X: ${s} -> ${o}, Y: ${r} -> ${a} style is ${n}`),t.style.transform=n}isZooming(){return this._isZooming}}class xv extends o{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.debugLog("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.debugLog("AiLoader","destroy")}initFaceDetector(){if(this.player._opt.useFaceDetector&&window.JessibucaProFaceDetector){const e=new JessibucaProFaceDetector({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.debugLog("AiLoader","init face detector success"),this.faceDetector=e,this.faceDetector.on("jessibuca-pro-face-detector-info",(e=>{if(this.player.emit(yt.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.JessibucaProObjectDetector){const e=new JessibucaProObjectDetector({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.debugLog("AiLoader","init object detector success"),this.objectDetector=e,this.objectDetector.on("jessibuca-pro-object-detector-info",(e=>{if(this.player.emit(yt.aiObjectDetectorInfo,e),this.player._opt.aiObjectDetectShowRect){const t=[],i=this.player._opt.aiObjectDetectRectConfig||{};(e.list||[]).forEach((e=>{const s={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},r={type:"text",color:i.color||"#000",fontSize:i.fontSize||14,text:e.zh,x:e.rect.x,y:e.rect.y-25};t.push(s,r)})),this.player.video&&this.player.video.addAiContentToCanvas(t)}}))}))}}initImageDetector(){if(this.player._opt.useImageDetector&&window.JessibucaProImageDetector){const e=new JessibucaProImageDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debugLog("AiLoader","init image detector success"),this.imageDetector=e}))}}initOcclusionDetector(){if(this.player._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector){const e=new JessibucaProOcclusionDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debugLog("AiLoader","init occlusion detector success"),this.occlusionDetector=e}))}}updateFaceDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.faceDetector&&this.faceDetector.updateConfig(e)}updateObjectDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.objectDetector&&this.objectDetector.updateConfig(e)}updateImageDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.imageDetector&&this.imageDetector.updateConfig(e)}updateOcclusionDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.occlusionDetector&&this.occlusionDetector.updateConfig(e)}}class Dv extends o{constructor(e){super(),this.player=e,this.LOG_NAME="Contextmenu",this.menuList=[],this.$contextmenus=e.control.$contextmenus,To()?this.player.debugWarn(this.LOG_NAME,"not support mobile"):this.init(),e.debugLog(this.LOG_NAME,"init")}destroy(){this.menuList=[],this.player.debugLog(this.LOG_NAME,"destroy")}get isShow(){return wc(this.player.$container,"jb-pro-contextmenus-show")}show(){vc(this.player.$container,"jb-pro-contextmenus-show")}hide(){_c(this.player.$container,"jb-pro-contextmenus-show")}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:s,width:r,left:o,top:a}=this.player.$container.getBoundingClientRect(),{height:n,width:l}=this.$contextmenus.getBoundingClientRect();let d=t-o,h=i-a;t+l>o+r&&(d=r-l),i+n>a+s&&(h=s-n),bo(this.$contextmenus,{left:`${d}px`,top:`${h}px`})})),e(this.player.$container,"click",(e=>{Tc(e,this.$contextmenus)||this.hide()})),this.player.on(yt.blur,(()=>{this.hide()}))}_validateMenuItem(e){let t=!0;return e.content||(this.player.debugWarn(this.LOG_NAME,"content is required"),t=!1),t}addMenuItem(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Ea(Bs);if(e=Object.assign({},t,e),!this._validateMenuItem(e))return;const{events:{proxy:i},debug:s}=this.player,r=Mo(),o=`\n
    \n ${e.content}\n
    \n `,a=Array.from(this.$contextmenus.children)[e.index];a?a.insertAdjacentHTML("beforebegin",o):Sc(this.$contextmenus,o);const n=this.$contextmenus.querySelector(`.jb-pro-contextmenu-${r}`);e.click&&i(n,"click",(t=>{t.preventDefault(),e.click.call(this.player,this,t),this.hide()})),this.menuList.push({uuid:r,$menuItem:n})}}class Rv extends o{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"),Ro()&&(this.$videoElement.style.position="absolute"),this._initVideoEvents()),this.$videoElement.muted=!0,this._initRtcPeerConnection()}destroy(){if(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))if(this.player._opt.webrtcUseCanvasRender){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}else this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject"));this.$videoElement=null,this.rtcPeerConnection&&(this.rtcPeerConnection.onicecandidate=po,this.rtcPeerConnection.ontrack=po,this.rtcPeerConnection.onconnectionstatechange=po,this.rtcPeerConnection.ondatachannel=po,this.rtcPeerConnection.close(),this.rtcPeerConnection=null)}_initVideoEvents(){this.player.debugLog(this.TAG_NAME,"_initVideoEvents()");const{proxy:e}=this.player.events,t=e(this.$videoElement,ns,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,ls,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,cs,(()=>{this.player.debugLog(this.TAG_NAME,"video loadedmetadata")})),r=e(this.$videoElement,ds,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),o=e(this.$videoElement,hs,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,r,o,s)}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debugLog(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debugLog(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debugLog(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debugLog(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(yt.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(yt.webrtcFailed);break;case"disconnected":t.emit(yt.webrtcDisconnect);break;case"closed":t.emit(yt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debugLog(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debugLog(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=t=>{if(this.player.debugLog(this.TAG_NAME,"ontrack",t),"video"===t.track.kind){this.player.debugLog(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.debugLog(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.debugLog(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(vt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debugLog(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(yt.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(yt.webrtcFailed)}},this.rtcPeerConnection=e}_startBandwidthEstimateInterval(){this.player.debugLog(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 _r:("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 Er:this.currentWebrtcStats.remoteCandidate=e||{};break;case Sr:this.currentWebrtcStats.localCandidate=e||{};break;case wr:this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcVideoStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcVideoStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.vbps=o,this.prevWebrtcVideoStats=e;break;case Tr: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===wr){this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcAudioStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcAudioStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.abps=o,this.prevWebrtcAudioStats=e}})),this.player.updateStats(t),this.player.emit(yt.kBps,(i/1024).toFixed(2))})):(this.player.updateStats(t),this.player.emit(yt.kBps,(i/1024).toFixed(2)))}))}),1e3)}_stopBandwidthEstimateInterval(){this.player.debugLog(this.TAG_NAME,"_stopBandwidthEstimateInterval"),this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startCanvasRender(){Oa()?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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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.updateStats({dts:i}),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}isVideoPlaying(){return this.$videoElement&&xa(this.$videoElement.paused)&&xa(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class Iv extends Rv{constructor(e){super(e),this.TAG_NAME="WebrtcForSRSDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debugError(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r})).then((()=>{t()})).catch((e=>{this.player&&this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"response sdp is null"),i("response sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class Pv extends Rv{constructor(e){super(e),this.TAG_NAME="WebrtcForOthersDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`),e.text().then((e=>{this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp response");try{let t=JSON.parse(e);this.player.debugLog(this.TAG_NAME,"this is json sdp response"),0!=t.code&&(this.player.debugError(this.TAG_NAME,`response json code ${t.code}`),i(new Error(`response sdp json code: ${t.code}`))),e=t.sdp}catch(e){this.player.debugLog(this.TAG_NAME,"this is raw sdp response")}e?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{t()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"loadSource sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class Bv extends Rv{constructor(e){super(e),this.rtcPeerConnectionDataChannel=null,this.player.isWebrtcH265()&&(this.streamRate=wo((t=>{e.emit(yt.kBps,(t/1024).toFixed(2))}))),this.TAG_NAME="WebrtcForM7SDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.stopStreamRateInterval(),this.rtcPeerConnectionDataChannel&&(this.rtcPeerConnectionDataChannel.onopen=po,this.rtcPeerConnectionDataChannel.onclose=po,this.rtcPeerConnectionDataChannel.onmessage=po,this.rtcPeerConnectionDataChannel.close(),this.rtcPeerConnectionDataChannel=null),this.player.debugLog(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.debugLog(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debugLog(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debugLog(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debugLog(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(yt.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(yt.webrtcFailed);break;case"disconnected":t.emit(yt.webrtcDisconnect);break;case"closed":t.emit(yt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debugLog(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debugLog(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=i=>{this.player.debugLog(this.TAG_NAME,"ontrack",i);const s=t.getWebrtcVideo();if(t.isWebrtcH264())if("video"===i.track.kind){this.player.debugLog(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];s.autoplay=!0,s.srcObject=t,this.videoStream=t}else"audio"===i.track.kind&&(this.player.debugLog(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.debugLog(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(vt.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debugLog(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(yt.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(yt.webrtcFailed)}},e.ondatachannel=e=>{const t=e.channel;this.player.debugLog(this.TAG_NAME,"ondatachannel"),t.onopen=()=>{this.player.debugLog(this.TAG_NAME,"ondatachannel and onopen")},t.onmessage=e=>{const t=e.data;if(this.player.isWebrtcH264())return this.player.debugWarn(this.TAG_NAME,"ondatachannel is H265 but decode is h264 so emit webrtcStreamH265 "),void this.player.emit(yt.webrtcStreamH265);this.player.isDestroyedOrClosed()?this.player.debugWarn(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.debugWarn(this.TAG_NAME,"ondatachannel and onclose")},this.rtcPeerConnectionDataChannel=t};e.createDataChannel("signal").onmessage=e=>{this.player.debugLog(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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{const r=this.rtcPeerConnection;r.createOffer().then((o=>{r.setLocalDescription(o),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t,i){let s={"Content-Type":"application/sdp"};return i.username&&i.password&&(s.Authorization="Basic "+btoa(i.username+":"+i.password)),fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:s,body:t})}(e,o.sdp,t).then((e=>{e.text().then((e=>{this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp response"),e?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{this.player.isWebrtcH265()&&this.startStreamRateInterval(),i()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),s(e)})):(this.player.debugError(this.TAG_NAME,"loadSource sdp is null"),s("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),s(e)}))}))}}class Mv extends Rv{constructor(e){super(e),this.TAG_NAME="WebrtcForZLMDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return Hl({url:e,type:"POST",data:t,contentType:"text/plain;charset=utf-8",processData:!1,dataType:"json"})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debugError(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r&&r.sdp?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r.sdp})).then((()=>{t()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"response sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class Fv extends o{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.debugLog(this.TAG_NAME,"init")}destroy(){this.aliyunRtc&&(this.aliyunRtcRemoteStream&&(this.aliyunRtcRemoteStream=null),this.aliyunRtc.unsubscribe(),this.aliyunRtc=null),this.$videoElement=null,this.off(),this.player.debugLog(this.TAG_NAME,"destroy")}listenEvents(){this.aliyunRtc.on("onError",(e=>{this.player.debugLog(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),10400!==e.errorCode&&(this.player.debugError(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),this.player.emitError(vt.aliyunRtcError,e))})),this.aliyunRtc.on("reconnect",(e=>{this.player.debugLog(this.TAG_NAME,"reconnect",e)}));const e="canplay",t="waiting",i="playing",s="media";this.aliyunRtc.on("onPlayEvent",(r=>{if(r.event===e)this.player.debugLog(this.TAG_NAME,"onPlayEvent and canplay");else if(r.event===t)this.player.debugLog(this.TAG_NAME,"onPlayEvent and playing - > waiting");else if(r.event===i)this.player.debugLog(this.TAG_NAME,"onPlayEvent and waiting -> playing");else if(r.event===s){const e=r.data;let t={},i=0;if(e.audio){const s=Math.floor(e.audio.bytesReceivedPerSecond);i+=s,t.abps=s}if(e.video){const s=Math.floor(e.video.bytesReceivedPerSecond);i+=s,t.vbps=s}this.player.updateStats(t),this.player.emit(yt.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.debugError(this.TAG_NAME,"loadSource and subscribe is not success: ",e.message),i(e.message)}))})).catch((e=>{this.player.debugError(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}isVideoPlaying(){return this.$videoElement&&xa(this.$videoElement.paused)&&xa(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class Uv{constructor(e){this.player=e,this.TAG_NAME="PressureObserverCpu",this.observer=null,this.latestCpuInfo=null,this.currentLevel=-1,this.observeCpuSuccess=!1,this._init(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.observer&&(this.observeCpuSuccess&&this.observer.disconnect(),this.observer=null),this.latestCpuInfo=null,this.currentLevel=-1,this.player.debugLog(this.TAG_NAME,"destroy")}getCurrentCpuState(){return this.currentLevel}_init(){xa(Na())?this.player.debugLog(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(yt.pressureObserverCpu,this.currentLevel)}})),this.observer&&this.observer.observe("cpu",{sampleInterval:1e3}).then((()=>{this.observeCpuSuccess=!0,this.player.debugLog(this.TAG_NAME,"observe cpu success")})).catch((()=>{this.observeCpuSuccess=!1,this.player.debugLog(this.TAG_NAME,"observe cpu fail")})))}}class Ov extends tn{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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(yt.start,(()=>{const e=xa(Eo)?decodeURIComponent("JessibucaPro%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.debugLog(this.TAG_NAME,"int")}destroy(){super.destroy(),this.shadowRootDynamicDom=null,this.stopAnimation(),this.rafID&&(cancelAnimationFrame(this.rafID),this.rafID=null)}startAnimation(){if(!this.rafID){let e=1,t=1,i=Math.random(),s={width:0,height:0};const r=()=>{try{if(xa(this.isPauseAnimation)&&this.shadowRootDynamicDom&&this.shadowRootInnerDom){const o=this.shadowRootInnerDom,a=this.shadowRootDynamicDom,n=o.getBoundingClientRect(),l=a.getBoundingClientRect();if(l.width&&l.height&&(s.width=l.width,s.height=l.height),!this.shadowRootInnerDom.contains(this.shadowRootDynamicDom))return this.isGhost?xa(this.waterMarkWillAdd)&&(this.waterMarkWillAdd=!0,setTimeout((()=>{this._addDom(n,s),this.waterMarkWillAdd=!1}),1e3*this.ghostConfig.off)):this._addDom(n,s),void(0!==this.speed&&requestAnimationFrame(r));const d=Math.min(1,0===this.speed?0:this.speed?this.speed:.2);let h=l.left-n.left,c=l.top-n.top;h+=d*t*i,c+=d*e*(1-i),h+s.width>n.width?(t=-1,i=Math.random()):h<0&&(t=1,i=Math.random()),c+s.height>n.height?(e=-1,i=Math.random()):c<0&&(e=1,i=Math.random()),h=Math.min(n.width-s.width,h),c=Math.min(n.height-s.height,c);const u=h/n.width*100,p=c/n.height*100;this.shadowRootDynamicDom.style.left=`${u}%`,this.shadowRootDynamicDom.style.top=`${p}%`,xa(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(r)};this.rafID=requestAnimationFrame(r)}}_addDom(e,t){if(this.shadowRootInnerDom&&this.shadowRootDynamicDom){this.shadowRootInnerDom.appendChild(this.shadowRootDynamicDom);let i=e.width*Math.random(),s=e.height*Math.random();i=Math.min(e.width-2*t.width,i),s=Math.min(e.height-2*t.height,s),this.shadowRootDynamicDom.style.left=`${i}px`,this.shadowRootDynamicDom.style.top=`${s}px`}}resumeAnimation(){this.isPauseAnimation=!1}pauseAnimation(){this.isPauseAnimation=!0}stopAnimation(){this.isStopAnimation=!0}}class Nv extends o{constructor(e){super(),this.player=e,this.TAG_NAME="DrawRectangle",this.drawingRectangle=!1,this.isDragging=!1,this.bindEvents=[],this.$rectBox=null,this._resetPoint(),this.player.on(yt.drawingRect,this._handleDrawingRect.bind(this)),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this._unbindEvents(),this.drawingRectangle=!1,this.isDragging=!1,this._removeRectBox(),this.off(),this.player.debugLog(this.TAG_NAME,"destroy")}_resetPoint(){this.startPagePoint={x:0,y:0},this.startPoint={x:0,y:0},this.endPoint={x:0,y:0}}_handleDrawingRect(e){this.drawingRectangle=e,e?this._bindEvents():(this._unbindEvents(),this._removeRectBox())}_bindEvents(){const{events:{proxy:e}}=this.player,t=e(this.player.$container,"mousemove",this.handleMouseMove.bind(this)),i=e(this.player.$container,"mousedown",this.handleMouseDown.bind(this)),s=e(window,"mouseup",this.handleMouseUp.bind(this));this.bindEvents.push(t,i,s)}_unbindEvents(){this.bindEvents.forEach((e=>{e&&e()})),this.bindEvents=[]}_removeRectBox(){if(this.$rectBox){if(!kc(this.$rectBox)){const e=this.player.$container.querySelector(".jb-pro-drawing-rect-box");e&&this.player.$container&&this.player.$container.removeChild(e)}this.$rectBox=null}}handleMouseDown(e){if(e.stopPropagation(),!this.drawingRectangle)return;this._removeRectBox();const t=e.offsetX,i=e.offsetY;this.startPoint.x=t,this.startPoint.y=i,this.startPagePoint.x=e.pageX-this.player.$container.offsetLeft,this.startPagePoint.y=e.pageY-this.player.$container.offsetTop,this.$rectBox=document.createElement("div"),this.$rectBox.classList.add("jb-pro-drawing-rect-box"),this.$rectBox.style.border=`${this.player._opt.drawingRectLineWidth}px solid ${this.player._opt.drawingRectColor}`,this.$rectBox.style.position="absolute",this.$rectBox.style.left=`${this.startPoint.x}px`,this.$rectBox.style.top=`${this.startPoint.y}px`,this.player.$container.appendChild(this.$rectBox),this.isDragging=!0}handleMouseMove(e){if(e.stopPropagation(),!this.isDragging)return;if(!this.drawingRectangle)return;if(!this.$rectBox)return;const t=this.player.$container,i=this.player.getControlHeight(),s=e.pageX-t.offsetLeft,r=e.pageY-t.offsetTop;if(sn&&(o=n,this.endPoint.x=this.startPoint.x+o),a>l&&(a=l,this.endPoint.y=this.startPoint.y+a),this.$rectBox.style.width=`${o}px`,this.$rectBox.style.height=`${a}px`}handleMouseUp(e){if(e.stopPropagation(),this.drawingRectangle&&this.isDragging){e.preventDefault(),this.isDragging=!1,this.player._opt.drawingRectEndRemoveDom&&this._removeRectBox();const t={startPoint:this.startPoint,endPoint:this.endPoint,width:Math.abs(this.endPoint.x-this.startPoint.x),height:Math.abs(this.endPoint.y-this.startPoint.y)};this.player._opt.isResize,this.player.emit(yt.drawingRectInfo,t),this._resetPoint()}}}class jv extends o{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this._opt={},this.TAG_NAME="Player",this.$container=e;const i=ka();if(this._opt=Object.assign({},i,t),this.debug=new jr(this),this.debugLog(this.TAG_NAME,"init and version is",So),this._opt.forceNoOffscreen=!0,this._canPlayAppleMpegurl=!1,(Ro()||Do())&&(this._canPlayAppleMpegurl=pa(),this.debugLog(this.TAG_NAME,"isIOS or isSafari and canPlayAppleMpegurl",this._canPlayAppleMpegurl)),Ca(zr.isEnabled)&&Ca(this._opt.useWebFullScreen)&&(this.debugLog(this.TAG_NAME,"screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),xa(zr.isEnabled)&&xa(this._opt.useWebFullScreen)&&(this.debugLog(this.TAG_NAME,"screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0),Ba()&&(this.debugLog(this.TAG_NAME,"isIphone and set _opt.videoRenderSupportScale false"),this._opt.videoRenderSupportScale=!1,na()&&Ca(this._opt.isHls)&&xa(this._opt.supportHls265)&&(this.debugLog(this.TAG_NAME,"isIphone and is in wechat and is hls so set supportHls265 true"),this._opt.supportHls265=!0)),xa(this._opt.playFailedAndReplay)&&(this.debugLog(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.streamErrorReplay=!1,this._opt.streamEndReplay=!1,this._opt.mseWaitVideoCanplayAutoWasm=!1),this._opt.hiddenControl&&(this.debugLog(this.TAG_NAME,"_opt.hiddenControl is true and set others show btn to false"),Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(this._opt.operateBtns[e]=!1)})),this._opt.showBandwidth=!1,this._opt.extendOperateBtns=[],this._opt.controlHtml="",this.isPlayback()&&(this._opt.playbackConfig.showControl=!1)),this._opt.watermarkConfig={image:{src:"data:image/png;base64,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",width:75,height:24},opacity:.1,right:10,top:10},this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.isMpeg4&&(this.debugLog(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()&&(Ca(this._opt.useMSE)&&Ca(this._opt.mseDecoderUseWorker)&&this.debugLog(this.TAG_NAME,"isPlayback and mseDecoderUseWorker is true, so set mseDecoderUseWorker false"),this._opt.mseDecoderUseWorker=!1,Ca(this._opt.useWCS)&&Ca(this._opt.wcsDecodeAudio)&&this.debugLog(this.TAG_NAME,"isPlayback and wcsDecodeAudio is true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1),this._opt.poster&&(this._opt.background=this._opt.poster),xa(this._opt.muted)&&(this._opt.isNotMute=!0),this._opt.mseDecoderUseWorker&&(this._opt.mseDecoderUseWorker=!!(Nr.Worker&&Nr.MediaSource&&"canConstructInDedicatedWorker"in Nr.MediaSource&&!0===Nr.MediaSource.canConstructInDedicatedWorker),xa(this._opt.mseDecoderUseWorker)&&this.debugLog(this.TAG_NAME,"mseDecoderUseWorker is true but not support so set _opt.mseDecoderUseWorker = false")),(this.isOldHls()||this.isWebrtcH264()||this.isAliyunRtc())&&(this.debugLog(this.TAG_NAME,"isOldHls or isWebrtcH264 or isAliyunRtc is true, so set some params false and set _opt.recordType = 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=E),this._opt.isNakedFlow&&(this.debugLog(this.TAG_NAME,"isNakedFlow is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),Co()&&(this.debugLog(this.TAG_NAME,"isFirefox is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),!this.isOldHls()&&!this.isWebrtcH264()){if(this._opt.useWCS){const e=function(){let e=!1;return"VideoDecoder"in window&&(e=!0),e}(),t=jo();this._opt.useWCS=e,this._opt.useWCS&&this._opt.isH265&&(this._opt.useWCS=t),this._opt.useWCS||this.debugWarn(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.wcsDecodeAudio&&(this._opt.wcsDecodeAudio=function(){let e=!1;return"AudioDecoder"in window&&(e=!0),e}(),this._opt.wcsDecodeAudio||this.debugWarn(this.TAG_NAME,"wcsDecodeAudio is true, but not support so set wcsDecodeAudio false")),this._opt.useOffscreen?this._opt.wcsUseVideoRender=!1:this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=Go()&&Wo(),this._opt.wcsUseVideoRender||this.debugWarn(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 Nr&&(e=!0),e}()||function(){let e=!1;return!("MediaSource"in Nr)&&"ManagedMediaSource"in Nr&&(e=!0),e}(),t=No()||function(){let e=!1;return!("MediaSource"in Nr)&&"ManagedMediaSource"in Nr&&Nr.ManagedMediaSource&&(Nr.ManagedMediaSource.isTypeSupported(wi)||Nr.ManagedMediaSource.isTypeSupported(Si)||Nr.ManagedMediaSource.isTypeSupported(Ei)||Nr.ManagedMediaSource.isTypeSupported(Ti)||Nr.ManagedMediaSource.isTypeSupported(ki))&&(e=!0),e}();this._opt.useMSE=e,this._opt.useMSE&&this._opt.isH265&&(this._opt.useMSE=t),this._opt.useMSE||this.debugWarn(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(xa(this._opt.useMSE)&&(this._opt.mseDecodeAudio=!1),xa(this._opt.useWCS)&&(this._opt.wcsDecodeAudio=!1),this._opt.useMSE?(this._opt.useWCS&&this.debugWarn(this.TAG_NAME,"useMSE is true and useWCS is true then useWCS set true->false"),this._opt.forceNoOffscreen||this.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(this.TAG_NAME,"is stream use webTransport is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.wcsDecodeAudio&&this._opt.demuxUseWorker&&(this.debugWarn(this.TAG_NAME,"is wcsDecodeAudio true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),xa(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.debugWarn(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=Ba();this._opt.useSIMD=e&&xa(t),this._opt.useSIMD||this.debugWarn(this.TAG_NAME,`useSIMD is true, but not support(isSupportSimd is ${e} ,isIphone is ${t}) so set useSIMD false`)}var s;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.decoderOld=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-old.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.decoderOld=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-old.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.decoderOld=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-old.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"),this._opt.decoderOld=this._opt.decoder.replace("decoder-pro.js","decoder-pro-old.js")),xa(this._opt.hasAudio)&&(this._opt.operateBtns.audio=!1),xa(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.debugWarn(this.TAG_NAME,"_opt.qualityConfig is empty, so set operateBtns.quality false")),Ca(this._opt.useWebGPU)&&(this._opt.useWebGPU=function(){let e=!1;return"gpu"in navigator&&(e=!0),e}(),xa(this._opt.useWebGPU)&&this.debugWarn(this.TAG_NAME,"useWebGPU is true, but not support so set useWebGPU false")),this._opt.useMSE&&this._opt.mseWaitVideoCanplayTimeout>this._opt.loadingTimeout&&(this.debugWarn(this.TAG_NAME,`mseWaitVideoCanplayTimeout ${this._opt.mseWaitVideoCanplayTimeout} is greater than loadingTimeout ${this._opt.loadingTimeout}, so set mseWaitVideoCanplayTimeout = loadingTimeout -1`),this._opt.mseWaitVideoCanplayTimeout=Math.max(this._opt.loadingTimeout-1,1)),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._playbackPause=!1,this._hasLoaded=!1,this._zooming=!1,this._drawingRect=!1,this._destroyed=!1,this._destroyLock=!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._tempTsList=[],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._serverInfo=null,this._mseWorkerData={},this._isStreamEnd=!1,xa(this._opt.useMSE)&&xa(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=Po()&&Go()&&Wo(),this._opt.wasmUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false"),this._opt.wasmUseVideoRender&&this._opt.wasmPlayAudioUseVideoRender&&(this._opt.wasmPlayAudioUseVideoRender="AudioData"in window,this._opt.wasmPlayAudioUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render play audio, but not support so set wasmPlayAudioUseVideoRender false"))),this._opt.useSIMD?this.debugLog(this.TAG_NAME,"use simd wasm"):this.debugLog(this.TAG_NAME,"use wasm")),this._opt.useWasm&&(this._opt.useFaceDetector&&window.JessibucaProFaceDetector||this._opt.useObjectDetector&&window.JessibucaProObjectDetector||this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||this._opt.useImageDetector&&window.JessibucaProImageDetector)?(this.ai=new xv(this),this._opt.useFaceDetector&&window.JessibucaProFaceDetector||(this._opt.operateBtns.aiFace=!1),this._opt.useObjectDetector&&window.JessibucaProObjectDetector||(this._opt.operateBtns.aiObject=!1),this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||(this._opt.operateBtns.aiOcclusion=!1),this._opt.useImageDetector&&this._opt.aiImageDetectActive&&window.JessibucaProImageDetector&&(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.JessibucaProFaceDetector||this.debugWarn(this.TAG_NAME,`use face detector, useWasm is ${this._opt.useWasm} and window.JbProFaceDetector is null`)),this._opt.useObjectDetector&&(this._opt.useWasm&&window.JessibucaProObjectDetector||this.debugWarn(this.TAG_NAME,`use object detector, useWasm is ${this._opt.useWasm} and window.JbProObjectDetector is null`)),this._opt.useOcclusionDetector&&(this._opt.useWasm&&window.JessibucaProOcclusionDetector||this.debugWarn(this.TAG_NAME,`use occlusion detector, useWasm is ${this._opt.useWasm} and window.JessibucaProOcclusionDetector is null`)),this._opt.useImageDetector&&(this._opt.useWasm&&window.JessibucaProImageDetector||this.debugWarn(this.TAG_NAME,`use image detector, useWasm is ${this._opt.useWasm} and window.JessibucaProImageDetector is null`)),this._opt.videoRenderType&&(this.debugLog(this.TAG_NAME,`videoRenderType is ${this._opt.videoRenderType}`),this._opt.videoRenderType===J?(this._opt.useVideoRender=!0,this._opt.useCanvasRender=!1):this._opt.videoRenderType===H&&(this._opt.useVideoRender=!1,this._opt.useCanvasRender=!0)),this._opt.useVideoRender&&(this._opt.useWasm&&!this._opt.useOffscreen?(this._opt.wasmUseVideoRender=Po()&&Go()&&Wo(),this._opt.wasmUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")):this._opt.useWCS&&!this._opt.useOffscreen&&(this._opt.wcsUseVideoRender=Go()&&Wo(),this._opt.wcsUseVideoRender||this.debugWarn(this.TAG_NAME,"use wcs video render, but not support so set wcsUseVideoRender false"))),this._opt.useCanvasRender&&(this._opt.useMSE&&xa(this._opt.mseDecoderUseWorker)&&(this._opt.mseUseCanvasRender=!0),this._opt.useWasm&&(this._opt.wasmUseVideoRender=!1),this._opt.useWCS&&(this._opt.wcsUseVideoRender=!1),this.isOldHls()&&!Ro()&&(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),this._opt.useCanvasRender&&this.useVideoPlayAudio()&&(this.debugLog(this.TAG_NAME,"useCanvasRender is true and useVideoPlayAudio() return true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1,this._opt.wasmPlayAudioUseVideoRender=!1),s=this,Object.defineProperty(s,"rect",{get:()=>{let e={};return s.$container&&(e=s.$container.getBoundingClientRect(),e.width=Math.max(e.width,s.$container.clientWidth),e.height=Math.max(e.height,s.$container.clientHeight)),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(s,e,{get:()=>s.rect[e]||0})})),this.events=new Wa(this),this._opt.hasVideo&&(this.video=new gn(this),this.recorder=new Ll(this)),this.isOldHls()?(this.hlsDecoder=new sb(this),this.loaded=!0):this.isWebrtcH264()?(this._opt.isWebrtcForZLM?this.webrtc=new Mv(this):this._opt.isWebrtcForSRS?this.webrtc=new Iv(this):this._opt.isWebrtcForOthers?this.webrtc=new Pv(this):this.webrtc=new Bv(this),this.loaded=!0):this.isAliyunRtc()?(this.aliyunRtcDecoder=new Fv(this),this.loaded=!0):(this.isUseHls265()&&(this.hlsDecoder=new kv(this)),this.isWebrtcH265()&&(this.webrtc=new Bv(this)),xa(fa(this._opt))?this.decoderWorker=new Pl(this):this.loaded=!0),this._opt.hasAudio&&(this.audio=new Mn(this)),this.stream=null,this.demux=null,this._lastVolume=null,this._isMute=null,this._isInZoom=!1,this._playingStartTimestamp=null,this.isMSEVideoDecoderInitializationFailedNotSupportHevc=!1,this.isMSEAudioDecoderError=!1,this.isMSEPlaybackRateChangePause=!1,this.isMSECurrentMoreThanBufferedPause=!1,this.isPlayFailedAndPaused=!1,this._seiList=[],this._opt.useWCS&&(this.webcodecsDecoder=new dc(this),!this._opt.hasAudio&&xa(this._opt.demuxUseWorker)&&(this.loaded=!0)),this._opt.useMSE&&xa(this._opt.mseDecoderUseWorker)&&(this.mseDecoder=new Ic(this),!this._opt.hasAudio&&xa(this._opt.demuxUseWorker)&&(this.loaded=!0)),this.control=new xc(this),this._opt.contextmenuBtns.length>0&&xa(this._opt.disableContextmenu)&&ko()?this.contextmenu=new Dv(this):Ca(this._opt.disableContextmenu)&&this._opt.contextmenuBtns.length>0&&ko()&&this.debugWarn(this.TAG_NAME,"disableContextmenu is true, but contextmenuBtns is not empty, so Contextmenu can not be created,please check"),this.isPlayback()&&(this.playback=new Lv(this,this._opt.playbackConfig)),this._opt.operateBtns.zoom&&(this.zoom=new Cv(this)),/(iphone|ipad|ipod|ios|android)/i.test(window.navigator.userAgent.toLowerCase())&&xa(this._opt.supportLockScreenPlayAudio&&Do())&&(this.keepScreenOn=new Bc(this)),(e=>{try{const t=t=>{da(t)===e.$container&&(e.emit(At.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};zr.on("change",t),e.events.destroys.push((()=>{zr.off("change",t)}))}catch(e){}if(e.on(yt.decoderWorkerInit,(()=>{e.debugLog("player","listen decoderWorkerInit and set loaded true"),e.loaded=!0})),e.on(yt.play,(()=>{e.loading=!1})),e.on(yt.fullscreen,(t=>{if(t)try{zr.request(e.$container).then((()=>{})).catch((t=>{e.debugError("player","fullscreen request error",t,t.toString()),e.emitError(vt.fullscreenError,t.toString()),To()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){To()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{zr.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((t=>{e.debugError("player","fullscreen exit error",t,t.toString()),e.emitError(vt.fullscreenError,t.toString()),e.webFullscreen&&(e.webFullscreen=!1)}))}catch(t){e.webFullscreen&&(e.webFullscreen=!1)}})),To()&&e.on(yt.webFullscreen,(t=>{t?e.$container.classList.add("jb-pro-fullscreen-web"):e.$container.classList.remove("jb-pro-fullscreen-web"),e.emit(At.fullscreen,e.fullscreen)})),e.on(yt.resize,(()=>{e.resize()})),e._opt.debug){const t=[yt.timeUpdate,yt.currentPts,yt.videoSEI,yt.videoSEISyncPts,yt.performance,yt.videoSmooth],i=[yt.stats,yt.playbackStats,yt.playbackTimestamp,yt.flvMetaData,yt.playToRenderTimes,yt.audioInfo,yt.videoInfo];Object.keys(yt).forEach((s=>{e.on(yt[s],(function(r){if(!t.includes(s)){i.includes(s)&&(r=JSON.stringify(r));for(var o=arguments.length,a=new Array(o>1?o-1:0),n=1;n{e.on(vt[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.updateOption({rotate:e?270:0}),this.resize()}),10)}get webFullscreen(){return this.$container.classList.contains("jb-pro-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded||this.isOldHls()||this.isWebrtcH264()||this._opt.useMSE&&xa(this._opt.hasAudio)&&xa(this._opt.demuxUseWorker)||this._opt.useWCS&&!this._opt.hasAudio&&xa(this._opt.demuxUseWorker)}set playing(e){this.isClosed()&&e?this.debugLog(this.TAG_NAME,"player is closed, so can not play"):(e&&Ca(this.loading)&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(yt.playing,e),this.emit(yt.volumechange,this.volume),e?this.emit(yt.play):this.emit(yt.pause)))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio?(this.audio.setVolume(e),this._lastVolume=this.volume,this._isMute=0===this.volume):this.debugWarn(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(yt.loading,this._loading))}get loading(){return this._loading}set zooming(e){this.isDestroyedOrClosed()||this.zooming!==e&&(this.zoom||(this.zoom=new Cv(this)),this._zooming=e,this.emit(yt.zooming,this.zooming))}get zooming(){return this._zooming}set drawingRect(e){this.isDestroyedOrClosed()||this.drawingRect!==e&&(this.drawRectangle||(this.drawRectangle=new Nv(this)),this._drawingRect=e,this.emit(yt.drawingRect,this.drawingRect))}get drawingRect(){return this._drawingRect}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(yt.streamQualityChange,e))}get streamQuality(){return this._streamQuality}get isDebug(){return Ca(this._opt.debug)}get scaleType(){const e=this._opt,t=e.isResize,i=e.isFullResize;let s=li;return xa(i)&&xa(t)?s=li:xa(i)&&Ca(t)?s=di:Ca(i)&&Ca(t)&&(s=hi),s}set visibility(e){this._visibility!==e&&(this._visibility=e,this.emit(yt.visibilityChange,e),this._lastestVisibilityChangeTimestamp=yo(),e?this.clearVisibilityHiddenTimeout():this.startVisibilityHiddenTimeout())}get visibility(){return this._visibility}set playbackPause(e){this._playbackPause!==e&&(this._playbackPause=e,this.emit(yt.playbackPause,e),this.emit(yt.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(yt.faceDetectActive,e))}get faceDetectActive(){return this._faceDetectActive}set objectDetectActive(e){this._objectDetectActive!==e&&(this._objectDetectActive=e,this.emit(yt.objectDetectActive,e))}get objectDetectActive(){return this._objectDetectActive}set occlusionDetectActive(e){this._occlusionDetectActive!==e&&(this._occlusionDetectActive=e,this.emit(yt.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()===A}isDestroyed(){return this._destroyed}isDestroying(){return this._destroyed&&this._destroyLock}isClosed(){return this._closed}isDestroyedOrClosed(){return this.isDestroyed()||this.isClosed()}isLoading(){return this.loading}isPlaying(){let e=!1;return this._opt.playType===v?e=this.playing:this._opt.playType===w&&(e=xa(this.playbackPause)&&this.playing),e}updateOption(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._opt=Object.assign({},this._opt,e),Ca(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 gn(this)),this.audio||this._opt.hasAudio&&(this.audio=new Mn(this)),this.stream||(this.stream=new Vn(this)),this.isOldHls()?(this.hlsDecoder||(this.hlsDecoder=new sb(this),this.loaded=!0),e()):this.isWebrtcH264()?(this.webrtc||(this._opt.isWebrtcForZLM?this.webrtc=new Mv(this):this._opt.isWebrtcForSRS?this.webrtc=new Iv(this):this._opt.isWebrtcForOthers?this.webrtc=new Pv(this):this.webrtc=new Bv(this),this.loaded=!0),e()):this.isAliyunRtc()?(this.aliyunRtcDecoder||(this.aliyunRtcDecoder=new Fv(this),this.loaded=!0),e()):(this.demux||this._opt.hasVideo&&!this.isUseWorkerDemuxAndDecode&&(this.demux=new tc(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new dc(this))),this._opt.useMSE&&xa(this._opt.mseDecoderUseWorker)&&(this.mseDecoder||(this.mseDecoder=new Ic(this))),this.isUseHls265()&&(this.hlsDecoder||(this.hlsDecoder=new kv(this))),this.isWebrtcH265()&&(this.webrtc||(this.webrtc=new Bv(this))),this.decoderWorker?this.loaded?e():this.once(yt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debugError(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())})):xa(fa(this._opt))?(this.decoderWorker=new Pl(this),this.once(yt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debugError(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())}))):e())}))}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!e&&!this._opt.url)return s("url is empty");this._closed=!1,this.loading=!0,this.playing=!1,this._times.playInitStart=yo(),e||(e=this._opt.url),this._opt.url=e,this.control&&this._opt.loadingBackground&&this.control.initLoadingBackground(),this.init().then((()=>{this.debugLog(this.TAG_NAME,"play() init and next fetch stream"),this._times.playStart=yo(),this._opt.isNotMute&&this.mute(!1),this.enableWakeLock(),this.checkLoadingTimeout(),this.stream?(this.stream.once(vt.fetchError,(e=>{this.emitError(vt.fetchError,e)})),this.stream.once(vt.websocketError,(e=>{this.emitError(vt.websocketError,e)})),this.stream.once(yt.streamEnd,(e=>{this.emit(yt.streamEnd,e)})),this.stream.once(vt.hlsError,(e=>{this.emitError(vt.hlsError,e)})),this.stream.once(vt.webrtcError,(e=>{this.emitError(vt.webrtcError,e)})),this.stream.once(yt.streamSuccess,(()=>{i(),this._times.streamResponse=yo(),this.video&&this.video.play(),this.checkStatsInterval(),this.isPlayback()&&this.playback&&this.playback.startCheckStatsInterval();{const e=Number("1")||1;setTimeout((()=>{this.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码)"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload()}),60*e*60*1e3)}})),this.stream.fetchStream(e,t)):(this.debugWarn(this.TAG_NAME,`play() this.stream is null and is isDestroyedOrClosed is ${this.isDestroyedOrClosed()}`),s("this.stream is null"))})).catch((e=>{s(e)}))}))}playForControl(){return new Promise(((e,t)=>{this.debugLog(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&&xa(this._isMute)&&(this.volume=this.lastVolume)}async _close(){this._closed=!0,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.loading=!1,this.recording=!1,this.zooming=!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:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.stream&&(await this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.webcodecsDecoder&&(await this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.hlsDecoder&&(await this.hlsDecoder.destroy(),this.hlsDecoder=null),this.webrtc&&(this.webrtc.destroy(),this.webrtc=null),this.aliyunRtcDecoder&&(this.aliyunRtcDecoder.destroy(),this.aliyunRtcDecoder=null),this.audio&&(await this.audio.destroy(),this.audio=null),this.playing=!1}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];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.debugLog(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.debugLog(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.debugWarn(this.TAG_NAME,"pauseForControl() and videoInfo is null")}else this.debugWarn(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)}cancelRecord(){return new Promise(((e,t)=>{this.recorder||t("recorder is null"),this.recording&&(this._opt.useWasm&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})))}))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{this.recorder||s("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=>{s(e)}))):s("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),this._opt.controlHtml&&(e=!0),e}useWasmDecode(){return xa(this._opt.useMSE)&&xa(this._opt.useWCS)}canVideoTrackWritter(){const e=this._opt;return!this.isOldHls()&&!this.isWebrtcH264()&&xa(e.useMSE)&&!this.isAliyunRtc()&&(e.useWCS&&xa(e.useOffscreen)&&e.wcsUseVideoRender||this.useWasmDecode())}checkHeartTimeout$2(){if(xa(this.playbackPause)&&this.playing){if(this.isDestroyedOrClosed())return void this.debugWarn(this.TAG_NAME,"checkHeartTimeout$2 but player is destroyed");if(xa(this.isHistoryFpsListAllZero()))return void this.debugWarn(this.TAG_NAME,"checkHeartTimeout$2 but fps is not all zero");if(0!==this._stats.fps)return void this.debugWarn(this.TAG_NAME,`checkHeartTimeout$2 but fps is ${this._stats.fps}`);const e=this._historyFpsList.join(",");this.debugWarn(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(yt.timeout,yt.delayTimeout),this.emit(yt.delayTimeout)}else this.debugLog(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.debugWarn(this.TAG_NAME,`checkLoadingTimeout but loading is ${this.loading} and playing is ${this.playing}`):this.isDestroyedOrClosed()?this.debugWarn(this.TAG_NAME,"checkLoadingTimeout but player is destroyed"):(this.debugWarn(this.TAG_NAME,"checkLoadingTimeout and pause and emit loadingTimeout event"),this.emit(yt.timeout,yt.loadingTimeout),this.emit(yt.loadingTimeout))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(this.debugLog(this.TAG_NAME,"clearCheckLoadingTimeout"),clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.isDestroyedOrClosed()?this.debugWarn(this.TAG_NAME,"handleRender but player is destroyed"):(this.loading&&(this.clearCheckLoadingTimeout(),this.loading=!1,this.emit(yt.start)),this.playing||(this.playing=!0))}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.isDestroyedOrClosed())return void this.debugLog(this.TAG_NAME,"updateStats but player is closed or destroyed");if(this._startBpsTime||(this._startBpsTime=yo()),Ho(e.ts)){const t=parseInt(e.ts,10);this._stats.ts=t,this._tempTsList.push(t),null===this._playingStartTimestamp&&t>0&&(this._playingStartTimestamp=t)}Ho(e.dts)&&(this._stats.dts=parseInt(e.dts,10)),Ho(e.mseTs)&&(this._stats.mseTs=e.mseTs),Ho(e.buf)&&(this._stats.buf=e.buf),Ho(e.netBuf)&&(this._stats.netBuf=e.netBuf),Ho(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=yo();if(t-this._startBpsTime<1e3)return;null!==this._playingStartTimestamp&&this._stats.fps>0&&(this._stats.pTs+=1);let i=0,s=0,r=0,o=0,a=0;this._opt.useMSE&&(this.mseDecoder?(i=this.mseDecoder.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.mseDecoder.checkSourceBufferStore(),s=s.toFixed(2),o=this.mseDecoder.getDecodePlaybackRate(),a=this.mseDecoder.getPendingSegmentsLength()):this.isMseDecoderUseWorker()&&(i=this.video.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.video.checkSourceBufferStore(),s=s.toFixed(2),o=this.video.getDecodePlaybackRate())),this._opt.useWCS&&this.webcodecsDecoder&&(r=this.webcodecsDecoder.getDecodeDiffTimes()),this.isOldHls()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=parseInt(1e3*i,10));let n=0,l=0,d=0;this.isUseHls265()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=i.toFixed(2),n=this.hlsDecoder.getDemuxBufferedListLength(),d=this.hlsDecoder.getDemuxVideoBufferedListLength(),l=this.hlsDecoder.getDemuxAudioBufferedListLength());let h=0,c=0,u=0,p=!1,f=0,m=0;this._opt.useWasm||this._opt.demuxUseWorker?this._tempWorkerStats&&(c=this._tempWorkerStats.demuxBufferDelay,u=this._tempWorkerStats.audioDemuxBufferDelay,h=this._tempWorkerStats.streamBufferByteLength,this._stats.netBuf=this._tempWorkerStats.netBuf,f=this._tempWorkerStats.pushLatestDelay,p=this._tempWorkerStats.isStreamTsMoreThanLocal,this._stats.buf=this._tempWorkerStats.latestDelay,m=this._tempWorkerStats.wasmDecodeDelay):this.demux&&(h=this.demux.getInputByteLength(),f=this.demux.getPushLatestDelay(),p=this.demux.getIsStreamTsMoreThanLocal(),this.demux.bufferList&&(c=this.demux.bufferList.length));let g=0,y=0;this.audio&&this.audio.bufferList&&(g=this.audio.bufferList.length,y=parseInt(g*this.audio.oneBufferDuration,10));let A=0,b=0;if(this.isPlayback()&&this.video){this._opt.playbackConfig.isUseFpsRender&&(A=this.video.bufferList&&this.video.bufferList.length||0);let e=this.video.getStreamFps();const t=e>0?1e3/e:0;b=parseInt(t*A+t*c,10)}let v=0;this.videoTimestamp>0&&(v=this._stats.dts-this.videoTimestamp);const _=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 w=this.getVideoCurrentTime();const S=this._stats.videoCurrentTime;let E=-1;S&&w&&(E=Bo((w-S).toFixed(2)),w=w.toFixed(2));let T=0;this.audioTimestamp>0&&(T=this.audioTimestamp-this.getRenderCurrentPts()),this._allStatsData=Object.assign(this._stats,{audioBuffer:g,audioBufferDelayTs:y,audioTs:this.audioTimestamp,latestAudioTs:this.latestAudioTimestamp,playbackVideoBuffer:A,playbackVideoWaitingBuffer:0,playbackAudioWaitingBuffer:0,playbackCacheDataDuration:b,demuxBuffer:c,pushLatestDelay:f,audioDemuxBuffer:u,streamBuffer:h,mseDelay:i,mseStore:s,mseDecodeDiffTimes:r,mseDecodePlaybackRate:o,msePendingBuffer:a,wcsDecodeDiffTimes:r,wasmDecodeDelay:m,hlsDelay:i,hlsDemuxLength:n,hlsDemuxAudioLength:l,hlsDemuxVideoLength:d,delayTs:v,totalDelayTs:_,isStreamTsMoreThanLocal:p,videoCurrentTime:w,videoCurrentTimeDiff:E,audioSyncVideo:T});let L=null,C=null,x="";if(this.isPlayer()&&this._opt.hasVideo&&this.playing){L=function(e,t){let i=3;const s=t||25;return e<=s*(1/4)?i=0:e<=.5*s?i=1:e<=s*(3/4)&&(i=2),i}(this._stats.fps,this._flvMetaDataFps),this._allStatsData.performance=L;const e=this.checkVideoSmooth(this._allStatsData);x=e.reason,C=e.result,this._allStatsData.videoSmooth=C}this.emit(yt.stats,this._allStatsData),this._allStatsData.streamBuffer>this._opt.flvDemuxBufferSizeMaxLarge&&this.getDemuxType()===k&&this.emit(vt.flvDemuxBufferSizeTooLarge,this._allStatsData.streamBuffer),this._opt.hasVideo?(this.updateHistoryFpsList(this._stats.fps,this._allStatsData.videoCurrentTimeDiff),Ho(L)&&this.emit(yt.performance,L),Ho(C)&&this.emit(yt.videoSmooth,C,x)):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._tempTsList=[],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={},this._tempTsList=[]}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&&xa(this._opt.isHls)&&(i="vbpsIsZero",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&e.isDropping&&(i="isDroppingIsTrue",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&this.visibility&&this._historyFpsList.length>=this._opt.heartTimeout){const s=function(e){const t=Math.max(...e),i=Math.min(...e);return e.filter((e=>e!==t&&e!==i))}(this._historyFpsList),r=s.reduce(((e,t)=>e+t),0)/s.length,o=.83*r;e.fps=1.5||e.videoCurrentTimeDiff<=.5)&&-1!==e.videoCurrentTimeDiff){if(i="videoCurrentTimeDiffIsNotNormal",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because videoCurrentTimeDiff is ${e.videoCurrentTimeDiff}`),0===Number(e.videoCurrentTimeDiff)){const e=this.isVideoPlaying(),t=this.getVideoCurrentTime(),i=this.getVideoBufferTimeRange();let s=-1,r=-1;i&&(s=i.start,r=i.end),this.debugLog(this.TAG_NAME,`checkVideoSmooth and videoCurrentTimeDiff is 0 so check\n videoCurrentTime is ${t} and isPlaying is ${e}\n bufferStartTime is ${s} and bufferEndTime is ${r}`)}t=!1}return{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(yt.beforeDestroy)}handlePlayToRenderTimes(){if(this.isDestroyedOrClosed())return void this.debugLog(this.TAG_NAME,"handlePlayToRenderTimes but player is closed or destroyed");const e=this.getPlayToRenderTimes();this.emit(yt.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===v}isPlayback(){return this._opt.playType===w}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()?z:this.isAliyunRtc()?V:this.isOldHls()?$:(t.useMSE&&(e+=U+" ",t.mseDecoderUseWorker&&(e+="worker")),t.useWCS&&(e+=O+" "),t.useWasm&&(e+=j+" ",t.useSIMD&&(e+=G+" "),t.useMThreading&&(e+=W+" ")),t.useOffscreen&&(e+=N+" "),e)}getDemuxType(){return this._opt.demuxType}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}isStreamTypeNotWorker(){return-1===this.getStreamType().indexOf(A)}getAllStatsData(){return this._allStatsData}isFlvDemux(){return this._opt.demuxType===k}isM7SDemux(){return this._opt.demuxType===L}isNakedFlowDemux(){return this._opt.demuxType===R}isMpeg4Demux(){return this._opt.demuxType===P}isTsDemux(){return this._opt.demuxType===M}isFmp4Demux(){return this._opt.demuxType===I}togglePerformancePanel(e){this.updateOption({showPerformance:e}),this.emit(yt.togglePerformancePanel,e)}setScaleMode(e){let t={isFullResize:!1,isResize:!1,aspectRatio:"default"};switch(e=Number(e)){case li:t.isFullResize=!1,t.isResize=!1;break;case di:t.isFullResize=!1,t.isResize=!0;break;case hi:t.isFullResize=!0,t.isResize=!0}this.updateOption(t),this.resize(),this.emit(yt.viewResizeChange,e)}startVisibilityHiddenTimeout(){this.clearVisibilityHiddenTimeout(),this._opt.pageVisibilityHiddenTimeout>0&&(this.visibilityHiddenTimeout=setTimeout((()=>{this.emit(yt.visibilityHiddenTimeout)}),1e3*this._opt.pageVisibilityHiddenTimeout))}clearVisibilityHiddenTimeout(){this._checkVisibleHiddenTimeout&&(clearTimeout(this._checkVisibleHiddenTimeout),this._checkVisibleHiddenTimeout=null)}faceDetect(e){this.faceDetectActive=e,xa(e)&&this.video&&this.video.addAiContentToCanvas([])}objectDetect(e){this.objectDetectActive=e,xa(e)&&this.video&&this.video.addAiContentToCanvas([])}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 s=!1;if(e&&t&&i){s=1e3/i*t>e}return s}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.video&&this.video.addContentToCanvas(e)}addContentToContainer(){}sendWebsocketMessage(e){const t=this.getStreamType();t===m||t===A+" "+m?this.stream.sendMessage(e):this.debugWarn(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="")}toggleControlHtml(e){this.control&&this.control.toggleControlHtml(e)}getControlHtmlIsShow(){return!!this.control&&this.control.getControlHtmlIsShow()}getControlHtml(){return this.control?this.control.getControlHtml():null}setExtendHtml(e){this.control&&(this.control.$extendDom?this.control.updateExtendDom(e):this.control.addExtendDom({html:e,showBeforePlay:!0}))}clearExtendHtml(){this.control&&this.control.removeExtendDom()}toggleExtendHtml(e){this.control&&this.control.toggleExtendDom(e)}getExtendHtmlIsShow(){return!!this.control&&this.control.getExtendDomIsShow()}getExtendHtml(){return this.control?this.control.getExtendDom():null}updateWatermark(e){this.singleWatermark||(this.singleWatermark=new tn(this)),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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(yt.error,e,t),this.emit(e,t)}updateHistoryFpsList(e,t){this.playbackPause||xa(this.visibility)||(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 Ca(this._opt.isHls)&&Ca(this._opt.supportHls265)}isHls(){return Ca(this._opt.isHls)}isOldHls(){return Ca(this._opt.isHls)&&xa(this._opt.supportHls265)}isWebrtcNotH265(){return Ca(this._opt.isWebrtc)&&xa(this._opt.isWebrtcH265)}isWebrtcH264(){return Ca(this._opt.isWebrtc)&&xa(this._opt.isWebrtcH265)}isWebrtcH265(){return Ca(this._opt.isWebrtc)&&Ca(this._opt.isWebrtcH265)}isAliyunRtc(){return Ca(this._opt.isAliyunRtc)}isUseHls265UseMse(){return this.isUseHls265()&&this.isUseMSE()}isStreamWebTransport(){return this.getStreamType()===y}isPlaybackCacheBeforeDecodeForFpsRender(){return this.isPlayback()&&Ca(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)&&Ca(this._opt.useWCS)}isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender(){return this.isPlayback()&&xa(this._opt.playbackConfig.isPlaybackPauseClearCache)&&Ca(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)}isPlaybackUseWCS(){return this.isPlayback()&&Ca(this._opt.useWCS)}isPlaybackUseMSE(){return this.isPlayback()&&Ca(this._opt.useMSE)}isPlaybackUseWASM(){return this.isPlayback()&&Ca(this._opt.useWasm)}isPlayUseMSE(){return this.isPlayer()&&Ca(this._opt.useMSE)}isMSEDecodeAudio(){return this._opt.useMSE&&this._opt.mseDecodeAudio}isWCSDecodeAudio(){this._opt.useWCS&&this._opt.wcsDecodeAudio}isInWebFullscreen(){return this._opt.useWebFullScreen&&To()&&this.fullscreen}getPlaybackRate(){let e=1;return Ca(this.isPlayback())&&this.playback&&(e=this.playback.rate),e}isPlaybackOnlyDecodeIFrame(){return Ca(this.isPlayback())&&this.getPlaybackRate()>=this._opt.playbackForwardMaxRateDecodeIFrame&&!this.isMSEDecodeAudio()}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}getVideoBufferTimeRange(){let e=null;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.getVideoBufferTimeRange():this.isMseDecoderUseWorker()&&(e=this.video.getVideoBufferTimeRange()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.getVideoBufferTimeRange():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.getVideoBufferTimeRange())),e}isVideoPlaying(){let e=!0;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.isVideoPlaying():this.isMseDecoderUseWorker()&&(e=this.video.isVideoPlaying()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.isVideoPlaying():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.isVideoPlaying())),e}addMemoryLog(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s0){const e=t/1e3;this._flvMetaDataFps=e}}Vo(e.hasAudio)&&xa(e.hasAudio)&&(this.debugLog("updateMetaData","hasAudio",e.hasAudio,"and update _opt.hasAudio"),this._opt.hasAudio=e.hasAudio),Vo(e.hasVideo)&&xa(e.hasVideo)&&(this.debugLog("updateMetaData","hasVideo",e.hasVideo,"and update _opt.hasVideo"),this._opt.hasVideo=e.hasVideo),e.server&&(this._serverInfo=(e.server+"").substring(0,10)),e.MetaDataCreator&&(this._serverInfo=e.MetaDataCreator)}this.emit(yt.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===T}isRecordTypeMp4(){return this.recorder&&this._opt.recordType===S}isRecordTypeWebm(){return this.recorder&&this._opt.recordType===E}isDemuxInWorker(){return this._opt.useWasm||this._opt.demuxUseWorker}isUseMSE(){return Ca(this._opt.useMSE)}isUseWCS(){return Ca(this._opt.useWCS)}isUseWASM(){return Ca(this._opt.useWasm)}isMseDecoderUseWorker(){return this.isUseMSE()&&Ca(this._opt.mseDecoderUseWorker)}getAudioSyncVideoDiff(){return this.audioTimestamp-this.getRenderCurrentPts()}getCurrentVideoAndAudio(){return{video:this.getRenderCurrentPts(),audio:this.audioTimestamp}}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(yt.currentPts,e),this.emitVideSeiSyncPts(e)}emitVideoSei(e){this.emit(yt.videoSEI,e),this._seiList.push(e)}emitVideSeiSyncPts(e){if(0===this._seiList.length||xa(this._opt.isEmitSEI))return;const t=1e3*this._opt.videoSEISyncPtsDiff,i=e-t,s=e+t,r=[];this._seiList.forEach((t=>{t.ts>=i&&t.ts<=s&&(t.pts=e,r.push(t))})),r.forEach((e=>{this.emit(yt.videoSEISyncPts,e)})),this._seiList=this._seiList.filter((e=>e.ts>s))}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(){Ca(this._opt.checkFirstIFrame)&&(this.mseDecoder?this.mseDecoder.isDecodeFirstIIframe=!1:this.webcodecsDecoder&&(this.webcodecsDecoder.isDecodeFirstIIframe=!1))}isHlsCanVideoPlay(){return this._canPlayAppleMpegurl&&this.isOldHls()}setPtzPosition(e){this.control&&this.control.updatePtzPosition(e)}setRotate(e){this.updateOption({rotate:e}),this.resize()}setPlayFailedAndPaused(){this.isPlayFailedAndPaused=!0}getMseMineType(){let e={};return this.mseDecoder&&(e=this.mseDecoder.getMimeType()),e}getMaxDelayTs(){return this._opt.videoBuffer+this._opt.videoBufferDelay}isMseVideoStateInited(){return!this.video||this.video.getReadyStateInited()}showPlayBtn(){this.control&&this.control.showPlayBtn()}toggleControlExtendBtn(e,t){this.control&&this.control.toggleExtendBtn(e,t)}getControlExtendBtnActive(e){let t=!1;return this.control&&(t=this.control.getExtendBtnActive(e)),t}useVideoPlayAudio(){return this._opt.hasAudio&&(this._opt.useWCS&&this._opt.wcsDecodeAudio||this._opt.useWasm&&this._opt.wasmPlayAudioUseVideoRender)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}debugLog(e){if(this._opt.debug&&this.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s1?t-1:0),s=1;s1?t-1:0),s=1;s1&&0===e[e.length-1]&&0===e[e.length-2]}getShowVideoRect(){let e=this.width,t=this.height;const i=this.getControlHeight();return To()&&this.fullscreen&&(this._opt.useWebFullScreen||this._opt.androidMobileFullscreenRotate)?e-=i:t-=i,{width:e,height:t}}updateControlSize(e){this.updateOption({controlSize:e}),this.control&&this.control.updateControlSize(),this.resize()}isStreamEnd(){let e=!1;return xa(this._opt.checkStreamEnd)&&(e=this._isStreamEnd),e}updateStreamEndInner(){this._isStreamEnd=!0}checkPlaybackEnd(){return this.isPlayback()&&xa(this._opt.checkStreamEnd),!1}getWebrtcVideo(){let e=null;return this.webrtc&&(e=this.webrtc.$videoElement),e}}class Gv{constructor(e){this.player=e,this.globalSetting=null;const t=Mo();this.defaultSettings={watermark_id:`JbPro_${t}`,watermark_prefix:`JbPro_mask_${t}`,watermark_txt:"JbPro 测试水印",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.load({text:decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),color:"white"}),this.player.debugLog("Watermark","int")}destroy(){this._removeMark(),this.globalSetting=null,this.defaultSettings=null,this.player.debugLog("Watermark","destroy")}remove(){}load(e){this.globalSetting=e,this._loadMark(e)}resize(){this.player.debugLog("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 s="string"==typeof e.watermark_parent_node?document.getElementById(e.watermark_parent_node):e.watermark_parent_node,r=s||document.body;const o=r.getBoundingClientRect();var a=Math.max(r.scrollWidth,r.clientWidth,o.width),n=Math.max(r.scrollHeight,r.clientHeight,o.height),l=arguments[0]||{},d=r;(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=r.children,p=Math.floor(Math.random()*(u.length-1))+1;u[p]?r.insertBefore(h,u[p]):r.appendChild(h)}e.watermark_cols=parseInt((a-e.watermark_x)/(e.watermark_width+e.watermark_x_space));var f,m=parseInt((a-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((n-e.watermark_y)/(e.watermark_height+e.watermark_y_space));var g,y,A,b=parseInt((n-e.watermark_y-e.watermark_height*e.watermark_rows)/e.watermark_rows);e.watermark_y_space=b?e.watermark_y_space:b,s?(f=e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),g=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),g=0+e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1));for(var v=0;v\n \n \n ${m.watermark_txt}\n \n \n ${m.watermark_txt}\n \n \n \n \n `,_=window.btoa(unescape(encodeURIComponent(v)));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=a+"px",w.style.height=n+"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,s=document.createElement("span");s.innerHTML=e,s.setAttribute("style",`font-family: ${t}; font-size: ${i}px; visibility: hidden; display: inline-block`),document.querySelector("body").appendChild(s);const r={width:s.offsetWidth,height:s.offsetHeight};return s.remove(),r}}const zv="right",$v="left",Vv="up",Hv="down",Jv="leftUp",qv="leftDown",Kv="rightUp",Yv="rightDown",Qv="zoomExpand",Xv="zoomNarrow",Zv="apertureFar",e_="apertureNear",t_="focusFar",i_="focusNear",s_="setPos",r_="calPos",o_="delPos",a_="wiperOpen",n_="wiperClose",l_="cruiseStart",d_={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,setCruise:132,decCruise:133,cruiseStart:136,cruiseStop:0},h_=[25,50,75,100,125,150,175,200,225,250],c_=[1,2,3,4,5,6,7,8,9,16],u_=[16,48,80,112,144,160,176,192,208,224];function p_(e){const{type:t,speed:i=5,index:s=0}=e,r=function(e){return h_[(e=e||5)-1]||h_[4]}(i);let o,a,n,l;if(o=d_[t],!o)return"";switch(t){case Vv:case Hv:case Zv:case e_:n=r;break;case zv:case $v:case t_:case i_:a=r;break;case Jv:case qv:case Kv:case Yv:a=r,n=r;break;case Qv:case Xv:l=function(e){return u_[(e=e||5)-1]||u_[4]}(i);break;case r_:case o_:case s_:n=f_(s);break;case n_:case a_:a=1;break;case l_:a=f_(s)}return function(e,t,i,s){let r=[];r[0]=165,r[1]=15,r[2]=1,r[3]=0,r[4]=0,r[5]=0,r[6]=0,e&&(r[3]=e);t&&(r[4]=t);i&&(r[5]=i);s&&(r[6]=s);return r[7]=(r[0]+r[1]+r[2]+r[3]+r[4]+r[5]+r[6])%256,function(e){let t="";for(let i=0;it)){for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i===t?s[r]=g_(e[r]):"object"==typeof e[r]?s[r]=y_(e[r],t,i+1):s[r]=e[r]);return s}}function A_(){return(new Date).toLocaleString()}class b_{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player=e,this.TAG_NAME="MemoryLogger",this.logMaxSize=(null==t?void 0:t.logMaxSize)||204800,this.logSize=0,this.logTextArray=[],this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.clear(),this.player.debugLog(this.TAG_NAME,"destroy")}clear(){this.logSize=0,this.logTextArray=[]}logCache(){let e="";try{for(var t=arguments.length,i=new Array(t),s=0;sy_(e)));e="[JbPro] "+A_()+JSON.stringify(r)}catch(e){return}if(this.logSize+=e.length,this.logTextArray.push(e),this.logSize>this.logMaxSize){const e=this.logTextArray.shift();this.logSize-=e.length}}getLog(){return this.logTextArray.join("\n")}getLogBlob(){const e=this.getLog();return new Blob([e],{type:"text/plain"})}download(){const e=this.getLog();this.clear();const t=new Blob([e],{type:"text/plain"});dn(t,"JbPro-"+A_()+".log")}}class v_ extends o{constructor(e){super(),this.player=e,this.TAG_NAME="Network",this.online=this.isOnline(),this.prevOnline=this.online,this.interval=null,this._initListener(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.off(),this._stopCheck(),window.removeEventListener("online",this._updateOnlineStatus),window.removeEventListener("offline",this._updateOfflineStatus),this.player.debugLog(this.TAG_NAME,"destroy")}_initListener(){window.addEventListener("online",this._updateOnlineStatus.bind(this)),window.addEventListener("offline",this._updateOfflineStatus.bind(this))}_stopCheck(){this.interval&&(clearInterval(this.interval),this.interval=null)}_startCheck(){this.interval=setInterval((()=>{this.isOnline()!==this.prevOnline&&(this.isOnline()?this._updateOnlineStatus():this._updateOfflineStatus())}),1e3)}_updateOnlineStatus(){this.prevOnline=this.online,this.online=!0,this.logStatus(),this.emit("online")}_updateOfflineStatus(){this.prevOnline=this.online,this.online=!1,this.logStatus(),this.emit("offline")}logStatus(){const e=this.prevOnline?"online":"offline",t=this.online?"online":"offline";this.player.debugLog(this.TAG_NAME,`prevOnline: ${this.prevOnline}, online: ${this.online}, status: ${e} -> ${t}`)}isOnline(){return void 0===navigator.onLine||navigator.onLine}isOffline(){return!this.isOnline()}}class __ extends o{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this._opt={},this.TAG_NAME="JbPro",this.$container=null,Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`JbPro option "${t}" can not be undefined`)})),this.originalOptions=e;const t=Ta();let i=Object.assign({},t,e);i.url="",i.isMulti&&(i.debugUuid=Sa()),this.debug=new jr(this);let s=e.container;if("string"==typeof e.container&&(s=document.querySelector(e.container)),!s)throw this.debugError("JbPro","JbPro need container option and now container is",e.container),new Error("JbPro need container option");if(xa(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%",s.appendChild(e),this.$videoElement=e,this.$container=s,void(this._opt=i)}if(i.decoder&&xa(-1!==i.decoder.indexOf("decoder-pro.js")||-1!==i.decoder.indexOf("decoder-pro-simd.js")))throw this.debugError("JbPro",`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`),new Error(`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`);if("CANVAS"===s.nodeName||"VIDEO"===s.nodeName)throw this.debugError("JbPro",`JbPro container type can not be ${s.nodeName} type`),new Error(`JbPro container type can not be ${s.nodeName} type`);if(i.videoBuffer>=i.heartTimeout)throw this.debugError("JbPro",`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`),new Error(`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`);if(!s.classList)throw this.debugError(this.TAG_NAME,"JbPro container is invalid, must be a DOM Element",s),new Error("JbPro container is invalid, must be a DOM Element",s);if(this._checkHasCreated(s))throw this.debugError("JbPro","JbPro container has been created and can not be created again",s),new Error("JbPro container has been created and can not be created again",s);if(s.classList.add("jb-pro-container"),Da(s,se,Mo()),delete i.container,Ho(i.videoBuffer)&&(i.videoBuffer=1e3*Number(i.videoBuffer)),Ho(i.videoBufferDelay)&&(i.videoBufferDelay=1e3*Number(i.videoBufferDelay)),Ho(i.networkDelay)&&(i.networkDelay=1e3*Number(i.networkDelay)),Ho(i.aiFaceDetectInterval)&&(i.aiFaceDetectInterval=1e3*Number(i.aiFaceDetectInterval)),Ho(i.aiObjectDetectInterval)&&(i.aiObjectDetectInterval=1e3*Number(i.aiObjectDetectInterval)),Ho(i.timeout)&&($o(i.loadingTimeout)&&(i.loadingTimeout=i.timeout),$o(i.heartTimeout)&&(i.heartTimeout=i.timeout)),Ho(i.autoWasm)&&($o(i.decoderErrorAutoWasm)&&(i.decoderErrorAutoWasm=i.autoWasm),$o(i.hardDecodingNotSupportAutoWasm)&&(i.hardDecodingNotSupportAutoWasm=i.autoWasm),$o(i.mseWaitVideoCanplayAutoWasm)&&(i.mseWaitVideoCanplayAutoWasm=i.autoWasm)),Ho(i.aiFaceDetectLevel)&&$o(i.aiFaceDetectWidth)){const e=or[i.aiFaceDetectLevel];e&&(i.aiFaceDetectWidth=e)}if(Ho(i.aiObjectDetectLevel)&&$o(i.aiObjectDetectWidth)){const e=ar[i.aiObjectDetectLevel];e&&(i.aiObjectDetectWidth=e)}Ca(i.isCrypto)&&(i.isM7sCrypto=!0),this._opt=i,this.debugLog("JbPro","init"),i.videoBuffer>1e4&&this.debugWarn(this.TAG_NAME,`videoBuffer ${i.videoBuffer/1e3}s is too long, will black screen for ${i.videoBuffer/1e3}s , it is recommended to set it to less than 10s`),this._destroyed=!1,this._destroyLock=!1,this.$container=s,this._tempPlayBgObj={},this._tempVideoLastIframeInfo={},this._tempPlayerIsMute=!0,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this.events=new Wa(this),this._opt.isUseNewFullscreenWatermark?this.watermark=new Wv(this):this.watermark=new Gv(this),this.memoryLogger=new b_(this),this.network=new v_(this),this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[],this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.widthOrHeightChangeReplayDelayTimeout=null,this.streamErrorReplayDelayTimeout=null,this.streamEndReplayDelayTimeout=null,this.playbackPauseTimeout=null,this.playbackResumeTimeout=null,this.initDecoderWorkerTimeout=null,this.$loadingBgImage=null,this.$loadingBg=null,this._initOnLock(),this._initPlayer(s,i),this._initWatermark(),this._initNetwork(),this.debugLog("JbPro",'init success and version is "9-1-2024"'),console.log('JbPro Version is "9-1-2024" '+(xa(Eo)?"and is Trial Version[试用版本]":""))}destroy(){return new Promise(((e,t)=>{if(this.debugLog("JbPro","destroy()"),this._destroyLock)return t("JbPro is destroying");this._destroyLock=!0,this._destroyed=!0,this.off(),this._removeTimeout(),this._clearInitDecoderWorkerTimeout(),this._initOnLock(),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._removeLoadingBackgroundForIOS(),this.player?this.player.destroy().then((()=>{this.player=null,this._destroy(),this._destroyLock=!1,e()})).catch((e=>{this._destroyLock=!1,t(e)})):(this._destroy(),this._destroyLock=!1,e())}))}_removeTimeout(){this.widthOrHeightChangeReplayDelayTimeout&&(clearTimeout(this.widthOrHeightChangeReplayDelayTimeout),this.widthOrHeightChangeReplayDelayTimeout=null),this.streamErrorReplayDelayTimeout&&(clearTimeout(this.streamErrorReplayDelayTimeout),this.streamErrorReplayDelayTimeout=null),this.streamEndReplayDelayTimeout&&(clearTimeout(this.streamEndReplayDelayTimeout),this.streamEndReplayDelayTimeout=null),this.playbackPauseTimeout&&(clearTimeout(this.playbackPauseTimeout),this.playbackPauseTimeout=null),this.playbackResumeTimeout&&(clearTimeout(this.playbackResumeTimeout),this.playbackResumeTimeout=null)}_destroy(){this.events&&(this.events.destroy(),this.events=null),this.watermark&&(this.watermark.destroy(),this.watermark=null),this.network&&(this.network.destroy(),this.network=null),this.memoryLogger&&(this.memoryLogger.destroy(),this.memoryLogger=null),this.$container&&(this.$container.classList.remove("jb-pro-container"),this.$container.classList.remove("jb-pro-fullscreen-web"),Ia(this.$container,se),this.$container=null),this._tempPlayBgObj=null,this._tempVideoLastIframeInfo=null,this._isNetworkOfflinePaused=!1,this._playerOnLock=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this._tempPlayerIsMute=!0,this._resetReplayTimes(),this.debugLog("JbPro","destroy end"),this._opt={},this.debug=null}_resetReplayTimes(){this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[]}_getOriginalOpt(){const e=Ta();return Object.assign({},e,this.originalOptions)}_initPlayer(e,t){this.player=new jv(e,t),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(((t,i)=>{try{this.debugLog(this.TAG_NAME,"_resetPlayer()",JSON.stringify(e))}catch(t){this.debugLog(this.TAG_NAME,"_resetPlayer()",e)}const s=()=>{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,s(),this.debugLog(this.TAG_NAME,"_resetPlayer() end"),t()})).catch((e=>{this.debugError(this.TAG_NAME,"_resetPlayer() error",e),i(e)})):(s(),this.debugLog(this.TAG_NAME,"_resetPlayer() end"),t())}))}_bindEvents(){var e=this;Object.keys(At).forEach((t=>{this.player.on(At[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.player&&this.player.showTipsMessageByCode(e)})),this.player.once(yt.beforeDestroy,(()=>{this.emit(yt.close),this.destroy().then((()=>{})).catch((e=>{}))})),this.player.on(yt.resize,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(yt.fullscreen,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(yt.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(yt.memoryLog,(function(){e.memoryLogger.logCache(...arguments)})),this.player.on(yt.downloadMemoryLog,(()=>{this.downloadMemoryLog()}))}_initWatermark(){if(this._opt.fullscreenWatermarkConfig.text=decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),this._opt.fullscreenWatermarkConfig.color="white",oa(this._opt.fullscreenWatermarkConfig)){const e=qo(this.$container,this._opt.fullscreenWatermarkConfig);if(!e.watermark_txt)return void this.debugWarn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(e)}}_initNetwork(){this.network.on(yt.online,(()=>{if(this.emit(yt.networkState,yt.online),this.isDestroyed())this.debugLog(this.TAG_NAME,"network online and JbPro is destroyed");else if(this.debugLog(this.TAG_NAME,"network online"),this._isNetworkOfflinePaused&&this._isNetworkOfflinePausedAndNextPlayConfig&&this._isNetworkOfflinePausedAndNextPlayConfig.url){const e=this._isNetworkOfflinePausedAndNextPlayConfig.url,t=this._isNetworkOfflinePausedAndNextPlayConfig.playOptions;this._streamErrorReplayTimes++;const i=this._isNetworkOfflinePausedAndNextPlayConfig.type||"unknown";this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.debugLog(this.TAG_NAME,`${i} and network online and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and reset player and play`),this.play(e,t).then((()=>{this.debugLog(this.TAG_NAME,`${i} and network online and play success`)})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.fetchError,{},e),this.debugError(this.TAG_NAME,`${i} and network online and play error`,e.toString(),e)}))}})),this.network.on(yt.offline,(()=>{this.emit(yt.networkState,yt.offline),this.debugLog(this.TAG_NAME,"network offline")}))}_checkHasCreated(e){if(!e)return!1;return!!Ra(e,se)}_initOnLock(){this.webglAlignmentErrorOnLock=!1,this.webglContextLostErrorOnLock=!1,this.mediaSourceH265NotSupportOnLock=!1,this.mediaSourceFullOnLock=!1,this.mediaSourceAppendBufferErrorOnLock=!1,this.mseSourceBufferErrorOnLock=!1,this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.mseAddSourceBufferErrorOnLock=!1,this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.mediaSourceTsIsMaxDiffOnLock=!1,this.mseWidthOrHeightChangeOnLock=!1,this.mediaSourceAudioG711NotSupportOnLock=!1,this.mediaSourceAudioInitTimeoutOnLock=!1,this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.mseWorkerAddSourceBufferErrorOnLock=!1,this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.webcodecsH265NotSupportOnLock=!1,this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.webcodecsDecodeConfigureErrorOnLock=!1,this.webcodecsDecodeErrorOnLock=!1,this.wcsWidthOrHeightChangeOnLock=!1,this.webcodecsAudioNoDataTimeoutOnLock=!1,this.webcodecsAudioInitTimeoutOnLock=!1,this.simdDecodeErrorOnLock=!1,this.wasmWidthOrHeightChangeOnLock=!1,this.wasmUseVideoRenderErrorOnLock=!1,this.videoElementPlayingFailedOnLock=!1,this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.networkDelayTimeoutOnLock=!1,this.flvDemuxBufferSizeTooLargeOnLock=!1,this.fetchErrorOnLock=!1,this.streamEndOnLock=!1,this.websocketErrorOnLock=!1,this.webrtcErrorOnLock=!1,this.hlsErrorOnLock=!1,this.aliyunRtcErrorOnLock=!1,this.decoderWorkerInitErrorOnLock=!1,this.decoderWorkerWasmErrorOnLock=!1,this.videoElementPlayingFailedForWebrtcOnLock=!1,this.videoInfoErrorOnLock=!1,this.playbackEndOnLock=!1,this.webrtcStreamH265OnLock=!1,this.mseWaitVideoCanplayTimeoutOnLock=!1}isDestroyed(){return this._destroyed}getOption(){return this.player?this.player.getOption():{}}setDebug(e){this.debugLog("JbPro",`setDebug() ${e}`),this._opt.debug=!!e,this.player?this.player.updateOption({debug:!!e},!0):this.debugWarn("JbPro","player is not init")}getIsDebug(){let e=!1;return this.player&&(e=this.player._opt.debug),e}mute(){this.debugLog("JbPro","mute()"),this.player&&this.player.mute(!0)}cancelMute(){this.debugLog("JbPro","cancelMute() and is mute is ",this.isMute()),this.player&&this.player.isAudioMute()&&this.player.mute(!1)}setVolume(e){this.debugLog("JbPro",`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.debugLog("JbPro","audioResume() and call cancelMute()"),this.cancelMute()}setTimeout(e){this.debugLog("JbPro",`setTimeout() ${e}`),e=Number(e),isNaN(e)?this.debugWarn("JbPro",`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.debugLog("JbPro",`setScaleMode() ${e}`),this.player?this.player.setScaleMode(e):this.debugWarn("JbPro","setScaleMode() player is null")}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{this.debugLog("JbPro",`pause() ${e}`),this.isDestroyed()&&i("JbPro is destroyed"),(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&(this._tempPlayBgObj=this._getVideoLastIframeInfo()),this._tempPlayerIsMute=this.isMute(),this._pause(e).then((e=>{t(e)})).catch((e=>{i(e)}))}))}_pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{if(this.debugLog("JbPro",`_pause() ${e}`),this.isDestroyed())return i("JbPro is destroyed");this._resetReplayTimes(),this.player?this.player.pause(e).then((e=>{t(e)})).catch((e=>{i(e)})):i("player is null")}))}close(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("JbPro is destroyed");this.debugLog("JbPro","close() and inner destroy()"),this.destroy().then((()=>{e()})).catch((e=>{t(e)}))}))}clearView(){this.debugLog("JbPro","clearView()"),this.player&&this.player.video?this.getRenderType()===H?this.player.video.clearView():this.debugWarn("JbPro","clearView","render type is video, not support clearView, please use canvas render type"):this.debugWarn("JbPro","clearView","player is null")}play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debugLog("JbPro",`play() ${e}`,JSON.stringify(t))}catch(i){this.debugLog("JbPro",`play() ${e}`,t)}if(!e&&!this._opt.url)return this.emit(yt.error,vt.playError),void s("url is null and this._opt.url is null");if(e&&(e=(""+e).trim(),-1===e.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 s(`url ${e} must be "http:" or "https:" or "webrtc:" or "ws:" or "wss:" or "wt:" or "artc:" protocol`);if(xa(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 r=t.cryptoKey||this._opt.playOptions.cryptoKey,o=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.m7sCryptoKey&&(!r||!o)){const e=this._opt.m7sCryptoKey.split(".");r=_a(e[0]),o=_a(e[1])}if(!r||!o){const r=e||this._opt.url;return void this._cryptoPlay(r).then((r=>{let{cryptoIV:o,cryptoKey:a}=r;this._opt.playOptions.cryptoKey=a,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=a,this._playBefore(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}this._opt.playOptions.cryptoKey=r,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=r}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=_a(t[0]),i=_a(t[1])}e&&i&&(this._opt.playOptions.cryptoKey=e,this._opt.playOptions.cryptoIV=i,t.cryptoIV=i,t.cryptoKey=e)}else if(this._opt.isSm4Crypto){let e=t.cryptoKey||this._opt.playOptions.cryptoKey,i=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.sm4CryptoKey&&(!e||!i)){const t=this._opt.sm4CryptoKey.split(".");2===t.length&&(e=wl(t[0]),i=wl(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=>{s(e)}))}))}_playBefore(e,t){return new Promise(((i,s)=>{if(this.player)if(e)if(this._opt.url)if(e===this._opt.url)if(this.player.playing)this.debugLog("JbPro","_playBefore","playing and resolve()"),i();else{this.debugLog("JbPro","_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)),xa(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore this.player.play error",e),this.emit(yt.crashLog,this.getCrashLog("this.player.play 1",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e),s(e)}))}else{this.debugLog("JbPro","_playBefore",`\n this._url.url is ${this._opt.url}\n and new url is ${e}\n and destroy and play new url`);const r=this._getOriginalOpt();this._resetPlayer(r).then((()=>{this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(yt.crashLog,this.getCrashLog("this.player.play 2",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e)}))}else this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(yt.crashLog,this.getCrashLog("this.player.play 3",e)),s(e)}));else{let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj)),xa(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(yt.crashLog,this.getCrashLog("this.player.play 4",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e)}))}else e?this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(yt.crashLog,this.getCrashLog("this.player.play 5",e)),s(e)})):this._play(this._opt.url,this._opt.playOptions).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(yt.crashLog,this.getCrashLog("this.player.play 6",e)),s(e)}))}))}_cryptoPlay(e){return new Promise(((t,i)=>{const s=function(e){const t=(e||document.location.toString()).split("//"),i=t[1].indexOf("/");let s=t[1].substring(i);return-1!=s.indexOf("?")&&(s=s.split("?")[0]),s}(e);let r=this._opt.cryptoKeyUrl,o="";const a=wa(e);if(r){if(o=r,this._opt.isM7sCrypto&&-1===o.indexOf("/crypto/?stream=")){const e=wa(r);o=e.origin+ie+`?stream=${s}`}}else r=a.origin+ie,o=r+`?stream=${s}`;var n;this.player.debugLog("JbPro",`_cryptoPlay() cryptoKeyUrl: ${o} and opt.cryptoKeyUrl: ${this._opt.cryptoKeyUrl}`),(n=o,new Promise(((e,t)=>{Hl.get(n).then((t=>{e(t)})).catch((e=>{t(e)}))}))).then((e=>{if(e){const s=e.split("."),r=_a(s[0]),o=_a(s[1]);o&&r?t({cryptoIV:o,cryptoKey:r}):i("get cryptoIV or cryptoKey error")}else i(`cryptoKeyUrl: getM7SCryptoStreamKey ${o} res is null`)})).catch((e=>{i(e)}))}))}playback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debugLog("JbPro",`playback() ${e}, options: `,JSON.stringify(t))}catch(i){this.debugLog("JbPro",`playback() ${e}, options: `,t)}if(xa(this._opt.isLive))return s("this._opt.isLive is false, can not playback");const r=ka(),o=Object.assign({},r.playbackConfig,this._opt.playbackConfig,t);xa(o.isUseFpsRender)&&o.isCacheBeforeDecodeForFpsRender&&(o.isCacheBeforeDecodeForFpsRender=!1,this.debugWarn("JbPro","playbackConfig.isUseFpsRender is false, isCacheBeforeDecodeForFpsRender can not be ture, isCacheBeforeDecodeForFpsRender is set to false")),0===o.rateConfig.length&&o.showRateBtn&&(o.showRateBtn=!1,this.debugWarn("JbPro","playbackConfig.rateConfig.length is 0, showRateBtn can not be ture, showRateBtn is set to false")),o.controlType,X.simple,this._resetPlayer({videoBuffer:0,playbackConfig:o,playType:w,openWebglAlignment:!0,useMSE:o.useMSE,useWCS:o.useWCS,useSIMD:!0}).then((()=>{this.play(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}))}playbackPause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro",`playbackPause() ${e}`),this._opt.playType===v?Promise.reject("playType is player, can not call playbackPause method"):new Promise(((t,i)=>{if(!this.player)return i("player is null");Ca(e)?this._pause().then((()=>{t()})).catch((e=>{i(e)})):(this.player.playbackPause=!0,this.player.recording=!1,this.player.zooming=!1,this.playbackPauseTimeout=setTimeout((()=>{this.playbackPauseTimeout=null,t()}),100))})))}playbackResume(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro","playbackResume()"),this._opt.playType===v?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,this.playbackResumeTimeout=setTimeout((()=>{this.playbackResumeTimeout=null,e()}),100)})))}forward(e){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro",`forward() ${e}`),xa(this._opt.isLive)||this._opt.playType===v?(this.debugLog("JbPro",`forward() and this._opt.isLive is ${this._opt.isLive} and this._opt.playType is ${this._opt.playType}`),Promise.reject("forward() method only just for playback type")):Oo(Number(e))?new Promise(((t,i)=>{this.player?(e=Ao(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&&xa(this.player.isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender())&&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.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((t,i)=>{this.forward(e).then((()=>{t()})).catch((e=>{i(e)}))}))}normal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.forward(1).then((()=>{e()})).catch((e=>{t(e)}))}))}playbackNormal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.normal().then((()=>{e()})).catch((e=>{t(e)}))}))}updatePlaybackForwardMaxRateDecodeIFrame(e){this.isDestroyed()||(this.debugLog("JbPro",`updatePlaybackForwardMaxRateDecodeIFrame() ${e}`),e=Number(e),e=Ao(e=parseInt(e,10),1,8),this._opt.playbackForwardMaxRateDecodeIFrame=e,this.player?this.player.updateOption({playbackForwardMaxRateDecodeIFrame:e},!0):this.debugWarn("JbPro","updatePlaybackForwardMaxRateDecodeIFrame() player is null"))}setPlaybackStartTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setPlaybackStartTime() ${e}`);const t=sa(e);this.player?this.player.isPlayback()?t<10&&0!==e&&this.player.playback.isControlTypeNormal()?this.debugWarn("JbPro",`setPlaybackStartTime() control type is normal and timestamp: ${e} is not valid`):this.player.playback.isControlTypeSimple()&&e>this.player.playback.totalDuration?this.debugWarn("JbPro",`setPlaybackStartTime() control type is simple and timestamp: ${e} is more than ${this.player.playback.totalDuration}`):this.player.playing&&(this.player.playback.isControlTypeNormal()&&10===t&&(e*=1e3),this.player.playback.setStartTime(e),this.playbackClearCacheBuffer()):this.debugWarn("JbPro","setPlaybackStartTime() playType is not playback"):this.debugWarn("JbPro","setPlaybackStartTime() player is null")}setPlaybackShowPrecision(e){this.isDestroyed()||(this.debugLog("JbPro",`setPlaybackShowPrecision() ${e}`),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.setShowPrecision(e):this.debugWarn("JbPro","control type is not normal , not support!"):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}playbackCurrentTimeScroll(){this.isDestroyed()||(this.debugLog("JbPro","playbackCurrentTimeScroll()"),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.currentTimeScroll():this.debugWarn("JbPro","control type is not normal , not support!"):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}playbackClearCacheBuffer(){this.isDestroyed()||(this.debugLog("JbPro","playbackClearCacheBuffer()"),this.player?this.player.isPlayback()?(this.player.video&&this.player.video.clear(),this.player.audio&&this.player.audio.clear(),this.clearBufferDelay()):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}getPlaybackCurrentRate(){return this.player?this.player.isPlayback()?this.player.getPlaybackRate():(this.debugWarn("JbPro","playType is not playback"),1):(this.debugWarn("JbPro","player is null"),1)}updatePlaybackLocalOneFrameTimestamp(e){this.isDestroyed()||(this.debugLog("JbPro",`updatePlaybackLocalOneFrameTimestamp() ${e}`),this.player?this.player.isPlayback()?this.player.playback.updateLocalOneFrameTimestamp(e):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}setStreamQuality(e){if(this.isDestroyed())return;if(this.debugLog("JbPro",`setStreamQuality() ${e}`),!this.player)return void this.debugWarn("JbPro","player is null");if(!this.player._opt.operateBtns.quality)return void this.debugWarn("JbPro","player._opt.operateBtns.quality is false");(this.player._opt.qualityConfig||[]).includes(e)?this.player.streamQuality=e:this.debugWarn("JbPro",`quality: ${e} is not in qualityList`)}_play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!this.player)return s("player is null");let r=!1;this._opt.url&&this._opt.url!==e&&(r=!0),this._opt.url=e,this._opt.playOptions=t;const o=e.split("?")[0],p=o.startsWith("http://")||o.startsWith("https://"),f=o.startsWith("webrtc://"),m=o.startsWith("artc://"),g=o.startsWith("wt://"),y=o.startsWith("ws://")||o.startsWith("wss://"),A=p||y,b=p&&o.endsWith(".m3u8"),v=A&&o.endsWith(".flv"),_=A&&(o.endsWith(".fmp4")||o.endsWith(".mp4")),w=A&&o.endsWith(".mpeg4"),S=A&&(o.endsWith(".h264")||o.endsWith(".h265")),E=A&&o.endsWith(".ts");let T=this._opt.isWebrtcForZLM||!1,F=this._opt.isWebrtcForSRS||!1,U=this._opt.isWebrtcForOthers||!1;f&&(-1!==e.indexOf("/index/api/webrtc")?(T=!0,F=!1,U=!1):-1!==e.indexOf("/rtc/v1/play/")&&(F=!0,T=!1,U=!1));let O=null,N=null;if(v&&xa(this._opt.isFlv)&&this._resetDemuxType("isFlv"),_&&xa(this._opt.isFmp4)&&this._resetDemuxType("isFmp4"),w&&xa(this._opt.isMpeg4)&&this._resetDemuxType("isMpeg4"),S&&xa(this._opt.isNakedFlow)&&this._resetDemuxType("isNakedFlow"),E&&xa(this._opt.isTs)&&this._resetDemuxType("isTs"),p?O=b?l:n:g?O=h:f?O=d:m?O=c:y&&(O=a),this._opt.isNakedFlow?N=R:this._opt.isFmp4?N=I:this._opt.isMpeg4?N=P:this._opt.isFlv?N=k:this._opt.isTs?N=M:b?N=C:f?N=x:m?N=B:g?N=D:y&&(N=L),!O||!N)return this._opt.playFailedAndPausedShowMessage&&this.showErrorMessageTips("url is not support"),s(`play url ${e} is invalid, protocol is ${u[O]}, demuxType is ${N}`);this.debugLog("JbPro",`play url ${e} protocol is ${u[O]}, demuxType is ${N}`);const j=()=>{this.player.on(vt.webglAlignmentError,this._handleWebglAlignmentError.bind(this)),this.player.on(vt.webglContextLostError,this._handleWebglContextLostError.bind(this)),this.player.on(vt.mediaSourceH265NotSupport,this._handleMediaSourceH265NotSupport.bind(this)),this.player.on(vt.mseWaitVideoCanplayTimeout,this._handleMseWaitVideoCanplayTimeout.bind(this)),this.player.on(vt.mediaSourceFull,this._handleMediaSourceFull.bind(this)),this.player.on(vt.mediaSourceAppendBufferError,this._handleMediaSourceAppendBufferError.bind(this)),this.player.on(vt.mseSourceBufferError,this._handleMseSourceBufferError.bind(this)),this.player.on(vt.mediaSourceBufferedIsZeroError,this._handleMediaSourceBufferedIsZeroError.bind(this)),this.player.on(vt.mseAddSourceBufferError,this._handleMseAddSourceBufferError.bind(this)),this.player.on(vt.mediaSourceDecoderConfigurationError,this._handleMediaSourceDecoderConfigurationError.bind(this)),this.player.on(vt.mediaSourceTsIsMaxDiff,this._handleMediaSourceTsIsMaxDiff.bind(this)),this.player.on(vt.mseWidthOrHeightChange,this._handleMseWidthOrHeightChange.bind(this)),this.player.on(vt.mediaSourceAudioG711NotSupport,this._handleMediaSourceAudioG711NotSupport.bind(this)),this.player.on(vt.mediaSourceAudioInitTimeout,this._handleMediaSourceAudioInitTimeout.bind(this)),this.player.once(vt.mediaSourceAudioNoDataTimeout,this._handleMediaSourceAudioNoDataTimeout.bind(this)),this.player.on(vt.mseWorkerAddSourceBufferError,this._handleMseWorkerAddSourceBufferError.bind(this)),this.player.on(vt.mediaSourceUseCanvasRenderPlayFailed,this._handleMediaSourceUseCanvasRenderPlayFailed.bind(this)),this.player.on(vt.webcodecsH265NotSupport,this._handleWebcodecsH265NotSupport.bind(this)),this.player.on(vt.webcodecsUnsupportedConfigurationError,this._handleWebcodecsUnsupportedConfigurationError.bind(this)),this.player.on(vt.webcodecsDecodeConfigureError,this._handleWebcodecsDecodeConfigureError.bind(this)),this.player.on(vt.webcodecsDecodeError,this._handleWebcodecsDecodeError.bind(this)),this.player.on(vt.wcsWidthOrHeightChange,this._handleWcsWidthOrHeightChange.bind(this)),this.player.on(vt.webcodecsAudioNoDataTimeout,this._handleWebcodecsAudioNoDataTimeout.bind(this)),this.player.on(vt.webcodecsAudioInitTimeout,this._handleWebcodecsAudioInitTimeout.bind(this)),this.player.on(vt.simdDecodeError,this._handleSimdDecodeError.bind(this)),this.player.on(vt.wasmWidthOrHeightChange,this._handleWasmWidthOrHeightChange.bind(this)),this.player.on(vt.wasmUseVideoRenderError,this._handleWasmUseVideoRenderError.bind(this)),this.player.on(vt.videoElementPlayingFailed,this._handleVideoElementPlayingFailed.bind(this)),this.player.on(vt.simdH264DecodeVideoWidthIsTooLarge,this._handleSimdH264DecodeVideoWidthIsTooLarge.bind(this)),this.player.on(yt.networkDelayTimeout,this._handleNetworkDelayTimeout.bind(this)),this.player.on(yt.flvDemuxBufferSizeTooLarge,this._handleFlvDemuxBufferSizeTooLarge.bind(this)),this.player.on(vt.fetchError,this._handleFetchError.bind(this)),this.player.on(yt.streamEnd,this._handleStreamEnd.bind(this)),this.player.on(vt.websocketError,this._handleWebsocketError.bind(this)),this.player.on(vt.webrtcError,this._handleWebrtcError.bind(this)),this.player.on(vt.hlsError,this._handleHlsError.bind(this)),this.player.on(vt.aliyunRtcError,this._handleAliyunRtcError.bind(this)),this.player.on(vt.decoderWorkerInitError,this._handleDecoderWorkerInitError.bind(this)),this.player.on(vt.decoderWorkerWasmError,this._handleDecoderWorkerWasmError.bind(this)),this.player.on(vt.videoElementPlayingFailedForWebrtc,this._handleVideoElementPlayingFailedForWebrtc.bind(this)),this.player.on(vt.videoInfoError,this._handleVideoInfoError.bind(this)),this.player.on(yt.webrtcStreamH265,this._handleWebrtcStreamH265.bind(this)),this.player.on(yt.playbackEnd,this._handlePlaybackEnd.bind(this)),this.player.on(yt.delayTimeout,this._handleDelayTimeout.bind(this)),this.player.on(yt.loadingTimeout,this._handleLoadingTimeout.bind(this)),this._hasLoaded()?(this.debugLog(this.TAG_NAME,"_playNext and _hasLoaded() is true"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_hasLoaded() and play error",e),this.emit(yt.crashLog,this.getCrashLog("_hasLoaded() and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debugError("JbPro","_hasLoaded() and play error and next pause error",e)}))}))):(this.debugLog(this.TAG_NAME,"_playNext and waiting decoderWorkerInit callback"),this._checkInitDecoderWorkerTimeout(),this.player.once(yt.decoderWorkerInit,(()=>{this._clearInitDecoderWorkerTimeout(),this.isDestroyed()?this.debugLog("JbPro","decoderWorkerInit but player is destroyed"):(this.debugLog(this.TAG_NAME,"_playNext and decoderWorkerInit callback and next play"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","decoderWorkerInit and play error",e),this.emit(yt.crashLog,this.getCrashLog("decoderWorkerInit and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debugError("JbPro","decoderWorkerInit and play error and next pause error",e)}))})))})))},G=this.player.getOption(),W=b&&xa(this._opt.supportHls265),z=f&&xa(this._opt.isWebrtcH265),$=b&&!!pa(),V=b&&G.demuxUseWorker;if(W||z||m||r||w||$||V)this.debugLog("JbPro",`need reset player and\n isOldHls is ${W} and isOldWebrtc is ${z} and\n isAliyunRtc is ${m} and\n needResetPlayer(url change) is ${r} and\n isMpeg4 is ${w} and\n isHlsCanVideoPlay is ${$} and\n isHlsButDemuxUseWorker is ${V}`),this._resetPlayer({protocol:O,demuxType:N,isHls:b,isWebrtc:f,isWebrtcForZLM:T,isWebrtcForSRS:F,isWebrtcForOthers:U,isAliyunRtc:m,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||"",url:e,playOptions:t}).then((()=>{j()})).catch((e=>{s("reset player error")}));else{const e={protocol:O,demuxType:N,isHls:b,isWebrtc:f,isAliyunRtc:m,isFlv:this._opt.isFlv,isFmp4:this._opt.isFmp4,isMpeg4:this._opt.isMpeg4,isNakedFlow:this._opt.isNakedFlow,isTs:this._opt.isTs,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||""};this._opt.isNakedFlow&&(e.mseDecodeAudio=!1,e.wcsDecodeAudio=!1),this.player.updateOption(e),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.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)}resize(){this.isDestroyed()||(this.debugLog("JbPro","resize()"),this.player&&this.player.resize())}setBufferTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setBufferTime() ${e}`),(e=Number(e))>10&&this.debugWarn("JbPro",`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.debugWarn("JbPro","setBufferTime() player is null")}setBufferDelayTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setBufferDelayTime() ${e}`),(e=Number(e))<.2&&this.debugWarn("JbPro",`setBufferDelayTime() buffer time delay is ${e} second, is too small`);const t=1e3*(e=Ao(e,.2,100));this._opt.videoBufferDelay=t,this.player?this.player.updateOption({videoBufferDelay:t},!0):this.debugWarn("JbPro","setBufferDelayTime() player is null")}setRotate(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.setRotate(e):this.debugWarn("JbPro","setRotate() player is null")):this.debugWarn("JbPro",`setRotate() rotate is ${e} and this._opt.rotate is ${this._opt.rotate}`)}setMirrorRotate(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.debugWarn("JbPro","setMirrorRotate() player is null")):this.debugWarn("JbPro",`setMirrorRotate() mirrorRotate is ${e} and this._opt.mirrorRotate is ${this._opt.mirrorRotate}`)}setAspectRatio(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.debugWarn("JbPro","setAspectRatio() player is null")):this.debugWarn("JbPro",`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.isDestroyed()||(this.debugLog("JbPro","setKeepScreenOn()"),this._opt.keepScreenOn=!0,this.player?this.player.updateOption({keepScreenOn:!0}):this.debugWarn("JbPro","setKeepScreenOn() player is not ready"))}setFullscreen(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setFullscreen() ${e}`);const t=!!e;this.player?this.player.fullscreen!==t?this.player.fullscreen=t:this.debugWarn("JbPro",`setFullscreen() fullscreen is ${t} and this.player.fullscreen is ${this.player.fullscreen}`):this.debugWarn("JbPro","setFullscreen() player is not ready")}setWebFullscreen(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setWebFullscreen() ${e}`);const t=!!e;this.player?this.player.webFullscreen=t:this.debugWarn("JbPro","setWebFullscreen() player is not ready")}screenshot(e,t,i,s){if(!this.isDestroyed())return this.debugLog("JbPro",`screenshot() ${e} ${t} ${i} ${s}`),this.player&&this.player.video?this.player.video.screenshot(e,t,i,s):(this.debugWarn("JbPro","screenshot() player is not ready"),null)}screenshotWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debugLog("JbPro","screenshotWatermark()",e),this.player&&this.player.video?this.player.video.screenshotWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debugWarn("JbPro","screenshotWatermark() player is not ready"),i("player is not ready"))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debugLog("JbPro","screenshotCopyrightWatermark()",e),this.player&&this.player.video?this.player.video.screenshotCopyrightWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debugWarn("JbPro","screenshotCopyrightWatermark() player is not ready"),i("player is not ready"))}))}startRecord(e,t){return new Promise(((i,s)=>this.isDestroyed()?s("player is destroyed"):(this.debugLog("JbPro",`startRecord() ${e} ${t}`),this.player?void(this.player.playing?(this.player.startRecord(e,t),i()):(this.debugWarn("JbPro","startRecord() player is not playing"),s("not playing"))):(this.debugWarn("JbPro","startRecord() player is not ready"),s("player is not ready")))))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{if(this.isDestroyed())return s("player is destroyed");this.debugLog("JbPro",`stopRecordAndSave() ${e} ${t}`),this.player&&this.player.recording?this.player.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{s(e)})):s("not recording")}))}cancelRecord(){return new Promise(((e,t)=>this.isDestroyed()?t("player is destroyed"):(this.debugLog("JbPro","cancelRecord()"),this.player?void this.player.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})):(this.debugWarn("JbPro","cancelRecord() player is not ready"),t("player is not ready")))))}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===v?e=!this.isPlaying()&&!this.isLoading():this._opt.playType===w&&this.player&&(e=this.player.playbackPause),e}isPaused(){return this.isPause()}isPlaybackPause(){let e=!1;return this._opt.playType===w&&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.isDestroyed()||(this.debugLog("JbPro","clearBufferDelay()"),this.player?this.player.clearBufferDelay():this.debugWarn("JbPro","clearBufferDelay() player is not init"))}setNetworkDelayTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setNetworkDelayTime() ${e}`),(e=Number(e))<1&&this.debugWarn("JbPro",`setNetworkDelayTime() network delay is ${e} second, is too small`);const t=1e3*(e=Ao(e,1,100));this._opt.networkDelay=t,this.player?this.player.updateOption({networkDelay:t},!0):this.debugWarn("JbPro","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=Ls;return this.player&&(e=this.player.loading?Es:this.player.playing?Ts:ks),e}getPlayType(){return this.player?this.player._opt.playType:v}togglePerformancePanel(e){if(this.isDestroyed())return;this.debugLog("JbPro",`togglePerformancePanel() ${e}`);const t=this.player._opt.showPerformance;let i=!t;Vo(e)&&(i=e),i!==t?this.player?this.player.togglePerformancePanel(i):this.debugWarn("JbPro","togglePerformancePanel() failed, this.player is not init"):this.debugWarn("JbPro",`togglePerformancePanel() failed, showPerformance is prev: ${t} === now: ${i}`)}openZoom(){if(!this.isDestroyed())if(this.debugLog("JbPro","openZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debugWarn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!0}else this.debugWarn("JbPro","openZoom() failed, this.player is not init")}closeZoom(){if(!this.isDestroyed())if(this.debugLog("JbPro","closeZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debugWarn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!1}else this.debugWarn("JbPro","closeZoom() failed, this.player is not init")}isZoomOpen(){let e=!1;return this.player&&(e=this.player.zooming),e}toggleZoom(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleZoom() ${e}`),Vo(e)||(e=!this.isZoomOpen()),Ca(e)?this.openZoom():xa(!1)&&this.closeZoom())}expandZoom(){this.isDestroyed()||(this.debugLog("JbPro","expandZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.expandPrecision():this.debugWarn("JbPro","expandZoom() failed, zoom is not open or not init"))}narrowZoom(){this.isDestroyed()||(this.debugLog("JbPro","narrowZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.narrowPrecision():this.debugWarn("JbPro","narrowZoom failed, zoom is not open or not init"))}updateCurrentZoom(e){this.isDestroyed()||(this.debugLog("JbPro","updateCurrentZoom()",e),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.updateCurrentZoom(e):this.debugWarn("JbPro","narrowZoom failed, zoom is not open or not init"))}getCurrentZoomIndex(){if(this.isDestroyed())return;let e=1;return this.player&&this.player.zoom&&(e=this.player.zoom.currentZoom),e}setNakedFlowFps(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");if(this.debugLog("JbPro","setNakedFlowFps()",e),$o(e))return i("setNakedFlowFps() fps is empty");let s=Number(e);s=Ao(s,1,100),this._opt.nakedFlowFps=s,this.player?this.player.updateOption({nakedFlowFps:s}):this.debugWarn("JbPro","setNakedFlowFps() player is null"),t()}))}getCrashLog(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!this.player)return;const i=this.player.getAllStatsData(),s=this.player;let r={url:this._opt.url,playType:s.isPlayback()?"playback":"live",demuxType:s.getDemuxType(),decoderType:s.getDecodeType(),renderType:s.getRenderType(),videoInfo:{encType:"",width:"",height:""},audioInfo:{encType:"",sampleRate:"",channels:""},audioEngine:s.getAudioEngineType(),allTimes:i.pTs,timestamp:yo(),type:e,error:ba(t)||e};if(s.video){const e=s.video.videoInfo||{};r.videoInfo={encType:e.encType||"",width:e.width||"",height:e.height||""}}if(s.audio){const e=s.audio.audioInfo||{};r.audioInfo={encType:e.encType||"",sampleRate:e.sampleRate||"",channels:e.channels||""}}return r}updateDebugLevel(e){this.isDestroyed()||(this.debugLog("JbPro","updateDebugLevel()",e),e===q||e===K?e!==this.player._opt.debugLevel?(this._opt.debugLevel=e,this.player?this.player.updateOption({debugLevel:e},!0):this.debugWarn("JbPro","updateDebugLevel() player is null")):this.debugWarn("JbPro",`updateDebugLevel() level is same, level: ${e}`):this.debugWarn("JbPro",`updateDebugLevel() level is not valid, level: ${e}`))}updateWatermark(e){this.isDestroyed()||(this.debugLog("JbPro","updateWatermark()",e),this.player?this.player.updateWatermark(e):this.debugWarn("JbPro","updateWatermark() player is not init"))}removeWatermark(){this.isDestroyed()||(this.debugLog("JbPro","removeWatermark()"),this.player?this.player.removeWatermark():this.debugWarn("JbPro","removeWatermark() player is not init"))}updateFullscreenWatermark(e){if(!this.isDestroyed())if(this.debugLog("JbPro","updateFullscreenWatermark()",e),oa(e)){this._opt.fullscreenWatermarkConfig=e;const t=qo(this.$container,e);if(!t.watermark_txt)return void this.debugWarn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(t)}else this.debugWarn("JbPro",`updateFullscreenWatermark() config is not valid, config: ${e}`)}removeFullscreenWatermark(){this.isDestroyed()||(this.debugLog("JbPro","removeFullscreenWatermark()"),this.watermark?this.watermark.remove():this.debugWarn("JbPro","removeFullscreenWatermark() watermark is not init"))}faceDetectOpen(){this.isDestroyed()||(this.debugLog("JbPro","faceDetectOpen()"),this.player?this.player.faceDetect(!0):this.debugWarn("JbPro","faceDetectOpen() player is not init"))}faceDetectClose(){this.isDestroyed()||(this.debugLog("JbPro","faceDetectClose()"),this.player?this.player.faceDetect(!1):this.debugWarn("JbPro","faceDetectClose() player is not init"))}objectDetectOpen(){this.isDestroyed()||(this.debugLog("JbPro","objectDetectOpen()"),this.player?this.player.objectDetect(!0):this.debugWarn("JbPro","objectDetectOpen() player is not init"))}objectDetectClose(){this.isDestroyed()||(this.debugLog("JbPro","objectDetectClose()"),this.player?this.player.objectDetect(!1):this.debugWarn("JbPro","objectDetectClose() player is not init"))}sendWebsocketMessage(e){this.isDestroyed()||(this.debugLog("JbPro","sendWebsocketMessage()",e),this.player?this.player.sendWebsocketMessage(e):this.debugWarn("JbPro","sendWebsocketMessage() player is not init"))}addContentToCanvas(e){this.isDestroyed()||(this.debugLog("JbPro","addContentToCanvas()"),this.player?this.player.addContentToCanvas(e):this.debugWarn("JbPro","addContentToCanvas() player is not init"))}clearContentToCanvas(){this.isDestroyed()||(this.debugLog("JbPro","clearContentToCanvas()"),this.player?this.player.addContentToCanvas([]):this.debugWarn("JbPro","clearContentToCanvas() player is not init"))}addContentToContainer(e){this.isDestroyed()||(this.debugLog("JbPro","addContentToContainer()"),this.player?this.player.addContentToContainer(e):this.debugWarn("JbPro","addContentToContainer() player is not init"))}clearContentToContainer(){this.isDestroyed()||(this.debugLog("JbPro","clearContentToContainer()"),this.player?this.player.addContentToContainer([]):this.debugWarn("JbPro","clearContentToContainer() player is not init"))}setControlHtml(e){this.isDestroyed()||(this.debugLog("JbPro","setControlHtml()",e),this.player?this.player.setControlHtml(e):this.debugWarn("JbPro","setControlHtml() player is not init"))}clearControlHtml(){this.isDestroyed()||(this.debugLog("JbPro","clearControlHtml()"),this.player?this.player.clearControlHtml():this.debugWarn("JbPro","clearControlHtml() player is not init"))}toggleControlHtml(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleControlHtml() ${e}`),this.player?this.player.toggleControlHtml(e):this.debugWarn("JbPro","toggleControlHtml() player is not init"))}getControlHtmlIsShow(){return!!this.player&&this.player.getControlHtmlIsShow()}getControlHtml(){return this.player?this.player.getControlHtml():null}setExtendHtml(e){this.isDestroyed()||(this.debugLog("JbPro","setExtendHtml()",e),this.player?this.player.setExtendHtml(e):this.debugWarn("JbPro","setExtendHtml() player is not init"))}clearExtendHtml(){this.isDestroyed()||(this.debugLog("JbPro","clearExtendHtml()"),this.player?this.player.clearExtendHtml():this.debugWarn("JbPro","clearExtendHtml() player is not init"))}toggleExtendHtml(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleExtendHtml() ${e}`),this.player?this.player.toggleExtendHtml(e):this.debugWarn("JbPro","toggleExtendHtml() player is not init"))}getExtendHtmlIsShow(){return!!this.player&&this.player.getExtendHtmlIsShow()}getExtendHtml(){return this.player?this.player.getExtendHtml():null}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){if(this.isDestroyed())return;this.debugLog("JbPro","setSm4CryptoKey()",e);const t=(e=""+e).split(".");if(32!==e.length&&2!==t.length)return void this.debugWarn("JbPro",`setSm4CryptoKey() key is invalid and length is ${e.length} !== 32`);if(2===t.length&&(32!==t[0].length||32!==t[1].length))return void this.debugWarn("JbPro",`setSm4CryptoKey() key is invalid and key length is ${t[0].length} !== 32 or iv length ${t[1].length} !== 32`);this._opt.sm4CryptoKey=e;let i=2===t.length;if(i&&(this._opt.playOptions.cryptoKey=wl(t[0]),this._opt.playOptions.cryptoIV=wl(t[1])),this.player){const t={sm4CryptoKey:e};i&&(t.cryptoKey=this._opt.playOptions.cryptoKey,t.cryptoIV=this._opt.playOptions.cryptoIV),this.player.updateOption(t,!0)}else this.debugWarn("JbPro","setSm4CryptoKey() player is null")}setM7sCryptoKey(e){this.isDestroyed()||(this.debugLog("JbPro","setM7sCryptoKey()",e),e=""+e,this._opt.m7sCryptoKey=e,this.player?this.player.updateOption({m7sCryptoKey:e},!0):this.debugWarn("JbPro","setM7sCryptoKey() player is null"))}setXorCryptoKey(e){this.isDestroyed()||(this.debugLog("JbPro","setXorCryptoKey()",e),e=""+e,this._opt.xorCryptoKey=e,this.player?this.player.updateOption({xorCryptoKey:e},!0):this.debugWarn("JbPro","setXorCryptoKey() player is null"))}updateLoadingText(e){this.isDestroyed()||(this.debugLog("JbPro","updateLoadingText()",e),this.player?this.player.updateLoadingText(e):this.debugWarn("JbPro","updateLoadingText() player is null"))}updateIsEmitSEI(e){this.isDestroyed()||(this.debugLog("JbPro","updateIsEmitSEI()",e),this._opt.isEmitSEI=e,this.player?this.player.updateOption({isEmitSEI:e},!0):this.debugWarn("JbPro","updateIsEmitSEI() player is null"))}getPTZCmd(e,t){return this.debugLog("JbPro","getPTZCmd()",e),e?this.player?p_({type:e,index:0,speed:t}):(this.debugWarn("JbPro","getPTZCmd() player is null"),null):(this.debugWarn("JbPro","getPTZCmd() ptz is null"),null)}downloadTempNakedFlowFile(){return new Promise(((e,t)=>{this.player?(this.player.downloadNakedFlowFile(),e()):t("player is not init")}))}downloadTempFmp4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadFmp4File(),e()):t("player is not init")}))}downloadTempMpeg4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadMpeg4File(),e()):t("player is not init")}))}downloadMemoryLog(){this.isDestroyed()||this.memoryLogger&&this.memoryLogger.download()}_getVideoLastIframeInfo(){const e=this.getVideoInfo()||{},t={loadingBackground:this.screenshot("","png",.92,"base64"),loadingBackgroundWidth:e.width||0,loadingBackgroundHeight:e.height||0};return t.loadingBackground&&t.loadingBackgroundWidth&&t.loadingBackgroundHeight&&(this._tempVideoLastIframeInfo=t),this._tempVideoLastIframeInfo||{}}getExtendBtnList(){this.debugLog("JbPro","getExtendBtnList()");let e=[];return this.player?e=this.player.getExtendBtnList():this.debugWarn("JbPro","getExtendBtnList() player is null"),e}getFlvMetaData(){this.debugLog("JbPro","getFlvMetaData()");let e=null;return this.player?e=this.player.getMetaData():this.debugWarn("JbPro","getFlvMetaData() player is null"),e}updateAiFaceDetectInterval(e){if(this.isDestroyed())return;this.debugLog("JbPro","updateAiFaceDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiFaceDetectInterval=t,this.player?this.player.updateOption({aiFaceDetectInterval:t}):this.debugWarn("JbPro","updateAiFaceDetectInterval() player is null")}updateAiFaceDetectLevel(e){if(this.isDestroyed())return;if(this.debugLog("JbPro","updateAiFaceDetectLevel()",e),!or[e])return void this.debugWarn("JbPro",`'updateAiFaceDetectLevel() level ${e} is invalid'`);const t=or[e];this._opt.aiFaceDetectWidth=t,this.player?(this.player.updateOption({aiFaceDetectWidth:t}),this.player.ai&&this.player.ai.updateFaceDetectorConfig({detectWidth:t})):this.debugWarn("JbPro","updateAiFaceDetectLevel() player is null")}updateAiObjectDetectInterval(e){if(this.isDestroyed())return;this.debugLog("JbPro","updateAiObjectDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiObjectDetectInterval=t,this.player?this.player.updateOption({aiObjectDetectInterval:t}):this.debugWarn("JbPro","updateAiObjectDetectInterval() player is null")}updateAiObjectDetectLevel(e){if(this.isDestroyed())return;if(this.debugLog("JbPro","updateAiObjectDetectLevel()",e),!ar[e])return void this.debugWarn("JbPro",`'updateAiObjectDetectLevel() level ${e} is invalid'`);const t=ar[e];this._opt.aiObjectDetectWidth=t,this.player?(this.player.updateOption({aiObjectDetectWidth:t}),this.player.ai&&this.player.ai.updateObjectDetectorConfig({detectWidth:t})):this.debugWarn("JbPro","updateAiObjectDetectLevel() player is null")}setCryptoKeyUrl(e){this.isDestroyed()||(this.debugLog("JbPro","setCryptoKeyUrl()",e),e&&(this._opt.cryptoKeyUrl=e))}showErrorMessageTips(e){this.isDestroyed()||(this.debugLog("JbPro","showErrorMessageTips()",e),e&&(this.player?this.player.showTipsMessageByContent(e):this.debugWarn("JbPro","showErrorMessageTips() player is null")))}setPtzPosition(e){this.debugLog("JbPro","setPtzPosition()",e),e&&!ra(e)&&(this.player?this.player.setPtzPosition(e):this.debugWarn("JbPro","setPtzPosition() player is null"))}hideErrorMessageTips(){this.isDestroyed()||(this.debugLog("JbPro","hideErrorMessageTips()"),this.player?this.player.hideTipsMessage():this.debugWarn("JbPro","hideErrorMessageTips() player is null"))}getContainerRect(){return this._getContainerRect()}proxy(e,t,i,s){return this.events.proxy(e,t,i,s)}getUrl(){return this._opt.url}toggleControlExtendBtn(e,t){this.isDestroyed()||(this.debugLog(this.TAG_NAME,`toggleControlExtendBtn() ${e} ${t}`),this.player?this.player.toggleControlExtendBtn(e,t):this.debugWarn(this.TAG_NAME,"toggleControlExtendBtn() player is null"))}getControlExtendBtnActive(e){if(this.isDestroyed())return;this.debugLog(this.TAG_NAME,`getControlExtendBtnActive() ${e}`);let t=!1;return this.player?t=this.player.getControlExtendBtnActive(e):this.debugWarn(this.TAG_NAME,"getControlExtendBtnActive() player is null"),t}toggleControlBar(e){this.isDestroyed()||(this.debugLog(this.TAG_NAME,`toggleControlBar() ${e}`),this.player?this.player.toggleControlBar(e):this.debugWarn(this.TAG_NAME,"toggleControlBar() player is null"))}getControlBarShow(){if(this.isDestroyed())return!1;this.debugLog(this.TAG_NAME,"getControlBarShow()");let e=!1;return this.player?e=this.player.getControlBarShow():this.debugWarn(this.TAG_NAME,"getControlBarShow() player is null"),e}static getCopyrightWatermarkHash(e){return Yo(e)}static extractScreenshotCopyrightWatermark(e){return function(e){for(var t=e,i=0,s=0,r=0;r<32;r++)s|=(1&t[i])<=5){const s=i[0],r=i[i.length-1],o=r-s;o<=1e4&&(this.debugWarn(this.TAG_NAME,`retry type is ${e}, and retry length is ${i.length}, and start is ${s} and end is ${r} and diff is ${o}`),t=!1)}return t}_initLoadingBackgroundForIOS(e){(Do()||Ro())&&e.loadingBackground&&e.loadingBackgroundWidth&&e.loadingBackgroundHeight&&(this._initLoadingBg(),"default"===this.player._opt.aspectRatio||To()?this.player.getRenderType()===H?this._doInitLoadingBackgroundForCanvas(e):this.player.getRenderType()===J&&this._doInitLoadingBackgroundForVideo(e):this._doInitLoadingBackgroundForRatio(e))}_doInitLoadingBackgroundForVideo(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForVideo");const t=this._getContainerRect();let i=t.width,s=t.height;const r=this.player._opt;s-=this.player.getControlHeight();let o=i,a=s;const n=r.rotate;270!==n&&90!==n||(o=s,a=i),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,this.$loadingBgImage.src=e.loadingBackground;let l=(i-o)/2,d=(s-a)/2,h="contain";r.isResize||(h="fill"),r.isFullResize&&(h="none");let c="";"none"===r.mirrorRotate&&n&&(c+=" rotate("+n+"deg)"),"level"===r.mirrorRotate?c+=" rotateY(180deg)":"vertical"===r.mirrorRotate&&(c+=" rotateX(180deg)"),this._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=h),this.$loadingBgImage.style.transform=c,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px",this.$loadingBgImage.complete?vc(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{vc(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_doInitLoadingBackgroundForCanvas(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForCanvas");const t=this._getContainerRect();let i=t.width,s=t.height;const r=this.player._opt;s-=this.player.getControlHeight();let o=i,a=s;const n=r.rotate;let l=(i-o)/2,d=(s-a)/2;270!==n&&90!==n||(o=s,a=i),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,this.$loadingBgImage.src=e.loadingBackground;const h=i/o,c=s/a;let u=h>c?c:h;xa(r.isResize)&&h!==c&&(u=h+","+c),r.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===r.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===r.mirrorRotate?p+=" rotateY(180deg)":"vertical"===r.mirrorRotate&&(p+=" rotateX(180deg)"),this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.transform=p,this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px",this.$loadingBgImage.complete?vc(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{vc(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_doInitLoadingBackgroundForRatio(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForRatio");const t=this.player._opt.aspectRatio.split(":").map(Number),i=this._getContainerRect();let s=i.width,r=i.height,o=this.player.getControlHeight();r-=o;const a=e.loadingBackgroundWidth,n=e.loadingBackgroundHeight,l=a/n,d=t[0]/t[1];if(this.$loadingBgImage.src=e.loadingBackground,l>d){const e=d*n/a;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${o}px)`,this.$loadingBgImage.style.padding=`0 ${(s-s*e)/2}px`}else{const e=a/d/n;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${o}px)`,this.$loadingBgImage.style.padding=(r-r*e)/2+"px 0"}this.$loadingBgImage.complete?vc(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{vc(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_initLoadingBg(){if(!this.$loadingBg){const e=document.createElement("div"),t=document.createElement("img");e.className="jb-pro-loading-bg-for-ios",this.$loadingBg=e,this.$loadingBgImage=t,e.appendChild(t),this.$container.appendChild(e)}}_removeLoadingBackgroundForIOS(){if(this.$loadingBg){this.debugLog(this.TAG_NAME,"_removeLoadingBackgroundForIOS()");if(!kc(this.$loadingBg)){const e=this.$container.querySelector(".jb-pro-loading-bg-for-ios");e&&this.$container&&this.$container.removeChild(e)}this.$loadingBg=null,this.$loadingBgImage=null}}_getContainerRect(){let e={};return this.$container&&(e=this.$container.getBoundingClientRect(),e.width=Math.max(e.width,this.$container.clientWidth),e.height=Math.max(e.height,this.$container.clientHeight)),e}_isNeedNetworkDisconnectReplay(){return this._opt.networkDisconnectReplay&&this.network.isOffline()}_handleWebglAlignmentError(e){if(this.isDestroyed())this.debugLog("JbPro","webglAlignmentError but player is destroyed");else if(this.webglAlignmentErrorOnLock)this.debugLog("JbPro","webglAlignmentErrorOnLock is true");else if(this.emit(yt.crashLog,this.getCrashLog(vt.webglAlignmentError,e)),this.webglAlignmentErrorOnLock=!0,this.player&&this.player._opt.webglAlignmentErrorReplay){this.debugLog("JbPro","webglAlignmentError");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({openWebglAlignment:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webglAlignmentError and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.webglAlignmentError,{},e),this.debugError("JbPro","webglAlignmentError and play error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))})).catch((e=>{this.webglAlignmentErrorOnLock=!1,this.debugError("JbPro","webglAlignmentError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.webglAlignmentError,{},e),this.debugLog("JbPro","webglAlignmentError and webglAlignmentErrorReplay is false")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.webglAlignmentError,{},e),this.debugError("JbPro","webglAlignmentError and pause error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))}}_handleWebglContextLostError(e){if(this.isDestroyed())return void this.debugLog("JbPro","webglContextLostError but player is destroyed");if(this.webglContextLostErrorOnLock)return void this.debugLog("JbPro","webglContextLostErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.webglContextLostError,e));const t=this._getVideoLastIframeInfo();if(this.webglContextLostErrorOnLock=!0,this.player&&this.player._opt.webglContextLostErrorReplay){this.debugLog("JbPro","webglContextLostError");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","webglContextLostError and play success")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.webglContextLostError,t,e),this.debugError("JbPro","webglContextLostError and play error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))})).catch((i=>{this.webglContextLostErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.webglContextLostError,t,e),this.debugError("JbPro","webglContextLostError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.webglContextLostError,t,e),this.debugLog("JbPro","webglContextLostError and webglContextLostErrorReplay is false")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.webglContextLostError,t,e),this.debugError("JbPro","webglAlignmentError and pause error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))}}_handleMediaSourceH265NotSupport(e){if(this.isDestroyed())this.debugLog("JbPro","mediaSourceH265NotSupport but player is destroyed");else if(this.mediaSourceH265NotSupportOnLock)this.debugLog("JbPro","mediaSourceH265NotSupportOnLock is true");else if(this.emit(yt.crashLog,this.getCrashLog(vt.mediaSourceH265NotSupport,e)),this.mediaSourceH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceH265NotSupport,e),this.debugError("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))})).catch((t=>{this.mediaSourceH265NotSupportOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceH265NotSupport,{},e),this.debugLog("JbPro","mediaSourceH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))}}_handleMseWaitVideoCanplayTimeout(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mseWaitVideoCanplayTimeout but player is destroyed");else if(this.mseWaitVideoCanplayTimeoutOnLock)this.debugLog("JbPro","mseWaitVideoCanplayTimeoutOnLock is true");else if(this.emit(yt.crashLog,this.getCrashLog(vt.mseWaitVideoCanplayTimeout,e)),this.mseWaitVideoCanplayTimeoutOnLock=!0,this.player&&this.player._opt.mseWaitVideoCanplayAutoWasm){this.debugLog("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.mseWaitVideoCanplayTimeout,e),this.debugError("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))})).catch((t=>{this.mseWaitVideoCanplayTimeoutOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mseWaitVideoCanplayTimeout,{},e),this.debugError("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.mseWaitVideoCanplayTimeout,{},e),this.debugLog("JbPro","mseWaitVideoCanplayTimeout and autoWasm is false")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))}}_handleMediaSourceFull(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceFull but player is destroyed"));if(this.mediaSourceFullOnLock)return void this.debugLog("JbPro","mediaSourceFullOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.mediaSourceFull,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceFullOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Dr)?this._mseDecodeErrorRetryLog.push(yo()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mediaSourceFull and auto wasm ${xa(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceFull and reset player and play success")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and reset player and play error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))})).catch((i=>{this.mediaSourceFullOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceFull,t,e),this.debugLog("JbPro","mediaSourceFull and autoWasm is false")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and pause error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))}}_handleMediaSourceAppendBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAppendBufferError but player is destroyed"));if(this.mediaSourceAppendBufferErrorOnLock)return void this.debugLog("JbPro","mediaSourceAppendBufferErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.mediaSourceAppendBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceAppendBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Dr)?this._mseDecodeErrorRetryLog.push(yo()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEAudioDecoderError&&(this.player.debugLog("JbPro","mediaSourceAppendBufferError and isMSEAudioDecoderError is true so set mseDecodeAudio = false"),r.mseDecodeAudio=!1),this.debugLog("JbPro",`mediaSourceAppendBufferError and auto wasm ${xa(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceAppendBufferError and reset player and play success")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and reset player and play error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))})).catch((i=>{this.mediaSourceAppendBufferErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAppendBufferError,t,e),this.debugLog("JbPro","mediaSourceAppendBufferError and autoWasm is false")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and pause error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))}}_handleMseSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseSourceBufferError but player is destroyed"));if(this.mseSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseSourceBufferErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.mseSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseSourceBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={};if(this.player._opt.mseDecoderUseWorker)r={mseDecoderUseWorker:!1},this.debugLog("JbPro","mseSourceBufferError auto wasm [mse worker -> mse] reset player and play");else{let e=this.player._opt.decoderErrorAutoWasm,t=!0;e?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Dr)?this._mseDecodeErrorRetryLog.push(yo()):(e=!0,t=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc&&(this.debugLog("JbPro","mseSourceBufferError and isMSEVideoDecoderInitializationFailedNotSupportHevc is true so auto wasm"),r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mseSourceBufferError auto wasm ${xa(t)?" and is not meaningful Retry":""} [mse-> ${e?"wasm":"mse"}] reset player and play`)}this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mseSourceBufferError reset player and play success")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError reset player and play error",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseSourceBufferErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.mseSourceBufferError,t,e),this.debugLog("JbPro","mseSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError and pause error:",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))}}_handleMediaSourceBufferedIsZeroError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceBufferedIsZeroError but player is destroyed"));if(this.mediaSourceBufferedIsZeroErrorOnLock)return void this.debugLog("JbPro","mediaSourceBufferedIsZeroErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.mediaSourceBufferedIsZeroError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceBufferedIsZeroErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Dr)?this._mseDecodeErrorRetryLog.push(yo()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mediaSourceBufferedIsZeroError auto wasm ${xa(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceBufferedIsZeroError reset player and play success")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError reset player and play error",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))})).catch((i=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceBufferedIsZeroError,t,e),this.debugLog("JbPro","mediaSourceBufferedIsZeroError and autoWasm is false")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError and pause error:",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))}}_handleMseAddSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseAddSourceBufferError but player is destroyed"));if(this.mseAddSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseAddSourceBufferErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.mseAddSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useWCS:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play success")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseAddSourceBufferErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.mseAddSourceBufferError,t,e),this.debugLog("JbPro","mseAddSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError and pause error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceDecoderConfigurationError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mediaSourceDecoderConfigurationError but player is destroyed");else if(this.mediaSourceDecoderConfigurationErrorOnLock)this.debugLog("JbPro","mediaSourceDecoderConfigurationErrorOnLock is true");else if(this.emit(yt.crashLog,this.getCrashLog(vt.mediaSourceDecoderConfigurationError,e)),this.mediaSourceDecoderConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;let s={useMSE:!1,useWCS:!1};this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))})).catch((t=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceDecoderConfigurationError,e),this.debugLog("JbPro","mediaSourceDecoderConfigurationError and autoWasm is false")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError and pause error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))}}_handleMediaSourceTsIsMaxDiff(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceTsIsMaxDiff but player is destroyed"));if(this.mediaSourceTsIsMaxDiffOnLock)return void this.debugLog("JbPro","mediaSourceTsIsMaxDiffOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.mediaSourceTsIsMaxDiff,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceTsIsMaxDiffOnLock=!0,this.player&&this.player._opt.mediaSourceTsIsMaxDiffReplay){this.debugLog("JbPro","mediaSourceTsIsMaxDiff reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceTsIsMaxDiff replay success")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff replay error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))})).catch((i=>{this.mediaSourceTsIsMaxDiffOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceTsIsMaxDiff,t,e),this.debugLog("JbPro","mediaSourceTsIsMaxDiff and replay is false")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff and pause error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))}}_handleMseWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseWidthOrHeightChange but player is destroyed"));if(this.mseWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","mseWidthOrHeightChangeOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.mseWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.mseWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.player._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","mseWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}),1e3*this.player._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.mseWidthOrHeightChangeOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(yt.playFailedAndPaused,vt.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange error and pause error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}}_handleMediaSourceAudioG711NotSupport(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioG711NotSupport but player is destroyed"));if(this.mediaSourceAudioG711NotSupportOnLock)return void this.debugLog("JbPro","mediaSourceAudioG711NotSupportOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioG711NotSupportOnLock=!0,this.player&&this.player._opt.mediaSourceAudioG711NotSupportReplay){this.debugLog("JbPro","mediaSourceAudioG711NotSupport and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioG711NotSupport and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))})).catch((e=>{this.mediaSourceAudioG711NotSupportOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport error and pause error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))}}_handleMediaSourceAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioInitTimeout but player is destroyed"));if(this.mediaSourceAudioInitTimeoutOnLock)return void this.debugLog("JbPro","mediaSourceAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioInitTimeoutReplay){this.debugLog("JbPro","mediaSourceAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioInitTimeout,i,t),this.debugError("JbPro","mediaSourceAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioInitTimeoutOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioInitTimeout,i,t),this.debugError("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioInitTimeout,i),this.debugError("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioInitTimeout,i),this.debugError("JbPro","mediaSourceAudioInitTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))}}_handleMediaSourceAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioNoDataTimeout but player is destroyed"));if(this.mediaSourceAudioNoDataTimeoutOnLock)return void this.debugLog("JbPro","mediaSourceAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioNoDataTimeoutReplay){this.debugLog("JbPro","mediaSourceAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioNoDataTimeout,i,t),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioNoDataTimeout,i,t),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioNoDataTimeout,i),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceAudioNoDataTimeout,i),this.debugError("JbPro","mediaSourceAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))}}_handleMseWorkerAddSourceBufferError(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseWorkerAddSourceBufferError but player is destroyed"));if(this.mseWorkerAddSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseWorkerAddSourceBufferErrorOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mseWorkerAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mseWorkerAddSourceBufferError and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecoderUseWorker:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mseWorkerAddSourceBufferError and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.mseWorkerAddSourceBufferError,i,t),this.debugError("JbPro","mseWorkerAddSourceBufferError and reset player and play error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))})).catch((e=>{this.mseWorkerAddSourceBufferErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mseWorkerAddSourceBufferError,i,t),this.debugError("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.mseWorkerAddSourceBufferError,i),this.debugError("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.mseWorkerAddSourceBufferError,i),this.debugError("JbPro","mseWorkerAddSourceBufferError error and pause error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceUseCanvasRenderPlayFailed(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed but player is destroyed");else if(this.mediaSourceUseCanvasRenderPlayFailedOnLock)this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailedOnLock is true");else if(this.emit(yt.crashLog,this.getCrashLog(vt.mediaSourceUseCanvasRenderPlayFailed,e)),this.mediaSourceUseCanvasRenderPlayFailedOnLock=!0,this.player&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplay&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType){this.debugLog("JbPro",`mediaSourceUseCanvasRenderPlayFailed relayType is ${this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType} and reset player and play`);const t=this._opt.url,i=this._opt.playOptions;let s={};const r=this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType;r===H?s={useMSE:!1,useWCS:!1}:r===J&&(s={useVideoRender:!0,useCanvasRender:!1}),this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play error",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))})).catch((t=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.emit(yt.playFailedAndPaused,vt.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed auto and _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause player success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))}}_handleWebcodecsH265NotSupport(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsH265NotSupport but player is destroyed");else if(this.webcodecsH265NotSupportOnLock)this.debugLog("JbPro","webcodecsH265NotSupportOnLock is true");else if(this.emit(yt.crashLog,this.getCrashLog(vt.webcodecsH265NotSupport,e)),this.webcodecsH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.webcodecsH265NotSupport,e),this.debugError("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))})).catch((e=>{this.webcodecsH265NotSupportOnLock=!1,this.debugError("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.webcodecsH265NotSupport,e),this.debugLog("JbPro","webcodecsH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.webcodecsH265NotSupport,e),this.debugError("JbPro","webcodecsH265NotSupport and pause error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))}}_handleWebcodecsUnsupportedConfigurationError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsUnsupportedConfigurationError but player is destroyed");else if(this.webcodecsUnsupportedConfigurationErrorOnLock)this.debugLog("JbPro","webcodecsUnsupportedConfigurationErrorOnLock is true");else if(this.emit(yt.crashLog,this.getCrashLog(vt.webcodecsUnsupportedConfigurationError,e)),this.webcodecsUnsupportedConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))})).catch((t=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.webcodecsUnsupportedConfigurationError,e),this.debugLog("JbPro","webcodecsUnsupportedConfigurationError and autoWasm is false")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError and pause error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))}}_handleWebcodecsDecodeConfigureError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsDecodeConfigureError but player is destroyed");else if(this.webcodecsDecodeConfigureErrorOnLock)this.debugLog("JbPro","webcodecsDecodeConfigureErrorOnLock is true");else if(this.emit(yt.crashLog,this.getCrashLog(vt.webcodecsDecodeConfigureError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))})).catch((t=>{this.webcodecsDecodeConfigureErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.webcodecsDecodeConfigureError,e),this.debugLog("JbPro","webcodecsDecodeConfigureError and autoWasm is false")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError and pause error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))}}_handleWebcodecsDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsDecodeError but player is destroyed"));if(this.webcodecsDecodeErrorOnLock)return void this.debugLog("JbPro","webcodecsDecodeErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.webcodecsDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.webcodecsDecodeErrorOnLock=!0,this.player&&this.player._opt.wcsDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Rr)?this._wcsDecodeErrorRetryLog.push(yo()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`webcodecs decode error autoWasm ${xa(a)?" and is not meaningful Retry":""} [wcs-> ${o?"wasm":"wcs"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","webcodecs decode error reset player and play success")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error reset player and play error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))})).catch((()=>{this.webcodecsDecodeErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.webcodecsDecodeError,t,e),this.debugLog("JbPro","webcodecs decode error and autoWasm is false")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error and pause error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))}}_handleWcsWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wcsWidthOrHeightChange but player is destroyed"));if(this.wcsWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","wcsWidthOrHeightChangeOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.wcsWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wcsWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","wcsWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wcsWidthOrHeightChangeOnLock=!1,this.emit(yt.playFailedAndPaused,vt.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(yt.playFailedAndPaused,vt.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}}_handleWebcodecsAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsAudioNoDataTimeout but player is destroyed"));if(this.webcodecsAudioNoDataTimeoutOnLock)return void this.debugLog("JbPro","webcodecsAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioNoDataTimeoutReplay){this.debugLog("JbPro","webcodecsAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","webcodecsAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.webcodecsAudioNoDataTimeout,i,t),this.debugError("JbPro","webcodecsAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioNoDataTimeoutOnLock=!1,this.emit(yt.playFailedAndPaused,vt.webcodecsAudioNoDataTimeout,i,t),this.debugError("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.webcodecsAudioNoDataTimeout,i),this.debugError("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.webcodecsAudioNoDataTimeout,i),this.debugError("JbPro","webcodecsAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))}}_handleWebcodecsAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsAudioInitTimeout but player is destroyed"));if(this.webcodecsAudioInitTimeoutOnLock)return void this.debugLog("JbPro","webcodecsAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioInitTimeoutReplay){this.debugLog("JbPro","webcodecsAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","webcodecsAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.webcodecsAudioInitTimeout,i,t),this.debugError("JbPro","webcodecsAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioInitTimeoutOnLock=!1,this.emit(yt.playFailedAndPaused,vt.webcodecsAudioInitTimeout,i,t),this.debugError("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.webcodecsAudioInitTimeout,i),this.debugError("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.webcodecsAudioInitTimeout,i),this.debugError("JbPro","webcodecsAudioInitTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))}}_handleSimdDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","simdDecodeError but player is destroyed"));if(this.simdDecodeErrorOnLock)return void this.debugLog("JbPro","simdDecodeErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.simdDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.simdDecodeErrorOnLock=!0,this.player&&this.player._opt.simdDecodeErrorReplay){this.debugLog("JbPro",`simdDecodeError error simdDecodeErrorReplayType is ${this.player._opt.simdDecodeErrorReplayType} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.simdDecodeErrorReplayType===j&&(r={useSIMD:!1}),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","simdDecodeError and reset player and play success")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and reset player and play error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))})).catch((i=>{this.simdDecodeErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and simdDecodeErrorReplay is false")})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError error and pause error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))}}_handleWasmWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wasmWidthOrHeightChange but player is destroyed"));if(this.wasmWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","wasmWidthOrHeightChangeOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.wasmWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wasmWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","wasmWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wasmWidthOrHeightChangeOnLock=!1,this.emit(yt.playFailedAndPaused,vt.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(yt.playFailedAndPaused,vt.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(yt.playFailedAndPaused,vt.wasmWidthOrHeightChange,i),this.debugError("JbPro","wasmWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}}_handleWasmUseVideoRenderError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wasmUseVideoRenderError but player is destroyed"));if(this.wasmUseVideoRenderErrorOnLock)return void this.debugLog("JbPro","wasmUseVideoRenderErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.wasmUseVideoRenderError,e)),this.debugLog("JbPro","wasmUseVideoRenderError and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.wasmUseVideoRenderErrorOnLock=!0,this._resetPlayer({useVideoRender:!1,useCanvasRender:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","wasmUseVideoRenderError and reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.wasmUseVideoRenderError,{},e),this.debugError("JbPro","wasmUseVideoRenderError and reset player and play error",t)})).finally((()=>{this.wasmUseVideoRenderErrorOnLock=!1}))})).catch((t=>{this.wasmUseVideoRenderErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.wasmUseVideoRenderError,{},e),this.debugError("JbPro","wasmUseVideoRenderError and _resetPlayer error",t)}))}_handleVideoElementPlayingFailed(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoElementPlayingFailed but player is destroyed"));if(this.videoElementPlayingFailedOnLock)return void this.debugLog("JbPro","videoElementPlayingFailedOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.videoElementPlayingFailed,e));const t=this._getVideoLastIframeInfo();if(this.videoElementPlayingFailedOnLock=!0,this.player&&this.player._opt.videoElementPlayingFailedReplay){this.debugLog("JbPro",`videoElementPlayingFailed and useMSE is ${this._opt.useMSE} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useVideoRender:!1,useCanvasRender:!0};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","videoElementPlayingFailed and reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and reset player and play error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))})).catch((t=>{this.videoElementPlayingFailedOnLock=!1,this.emit(yt.playFailedAndPaused,vt.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and videoElementPlayingFailedReplay is false")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and _pause error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))}}_handleSimdH264DecodeVideoWidthIsTooLarge(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge but player is destroyed");else if(this.simdH264DecodeVideoWidthIsTooLargeOnLock)this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLargeOnLock is true");else if(this.emit(yt.crashLog,this.getCrashLog(vt.simdH264DecodeVideoWidthIsTooLarge,e)),this.simdH264DecodeVideoWidthIsTooLargeOnLock=!0,this.player&&this.player._opt.simdH264DecodeVideoWidthIsTooLargeReplay){this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useSIMD:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))})).catch((t=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.emit(yt.playFailedAndPaused,vt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and simdDecodeErrorReplay is false")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and pause error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))}}_handleNetworkDelayTimeout(e){if(this.player._opt.networkDelayTimeoutReplay){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","networkDelayTimeout but player is destroyed"));if(this.networkDelayTimeoutOnLock)return void this.debugLog("JbPro","networkDelayTimeoutOnLock is true");this.emit(yt.crashLog,this.getCrashLog(yt.networkDelayTimeout,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","network delay time out and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this.networkDelayTimeoutOnLock=!0,this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(yt.playFailedAndPaused,yt.networkDelayTimeout,t,e),this.debugError("JbPro","wasm decode error and reset player and play error",i)})).finally((()=>{this.networkDelayTimeoutOnLock=!1}))})).catch((()=>{this.networkDelayTimeoutOnLock=!1,this.emit(yt.playFailedAndPaused,yt.networkDelayTimeout,t,e),this.debugError("JbPro","wasm decode error and _resetPlayer error")}))}}_handleFlvDemuxBufferSizeTooLarge(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","flvDemuxBufferSizeTooLarge but player is destroyed"));if(this.flvDemuxBufferSizeTooLargeOnLock)return void this.debugLog("JbPro","flvDemuxBufferSizeTooLargeOnLock is true");const t=this._getVideoLastIframeInfo();if(this.flvDemuxBufferSizeTooLargeOnLock=!0,this.player._opt.flvDemuxBufferSizeTooLargeReplay){this.emit(yt.crashLog,this.getCrashLog(yt.flvDemuxBufferSizeTooLarge,e)),this.debugLog("JbPro","flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeReplay = true and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play success")})).catch((i=>{this.emit(yt.playFailedAndPaused,yt.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play error",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))})).catch((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1,this.emit(yt.playFailedAndPaused,yt.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large and _resetPlayer error")}))}else if(this._opt.flvDemuxBufferSizeTooLargeEmitFailed){this.debugLog(this.TAG_NAME,"flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeEmitFailed = true and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.flvDemuxBufferSizeTooLarge,t,e)})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))}}_handleFetchError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","fetchError but player is destroyed"));if(this.fetchErrorOnLock)return void this.debugLog("JbPro","fetchErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.fetchError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.fetchErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debugLog("JbPro","fetch error and network is disconnect and reset player and play"):this.debugLog("JbPro",`fetch error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes}, streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())this.debug&&this.debugLog("JbPro","fetch error and _resetPlayer but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","fetch error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:vt.fetchError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debugLog("JbPro","fetch error and reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.fetchError,{},e),this.debugError("JbPro","fetch error and reset player and play error",t)})).finally((()=>{this.fetchErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.fetchErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.fetchError,{},e),this.debugError("JbPro","fetch error and _resetPlayer error",t)}))}else{this.debugLog("JbPro","fetch error and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.fetchError,t,e)})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.fetchError,t,e),this.debugError("JbPro","fetch error and pause",i)})).finally((()=>{this.fetchErrorOnLock=!1}))}}_handleStreamEnd(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","streamEnd but player is destroyed and return"));if(this.streamEndOnLock)return void this.debugLog("JbPro","streamEndOnLock is true");this.emit(yt.crashLog,this.getCrashLog(yt.streamEnd,e));const t=this._getVideoLastIframeInfo(),i=""+e=="1006"&&this.player._opt.websocket1006ErrorReplay,s=!!i&&this._checkIsMeaningfulRetry(xr),r=i&&s,o=this.player._opt.streamEndReplay,a=this._isNeedNetworkDisconnectReplay();if(this.streamEndOnLock=!0,r||o||a){a?this.debugLog("JbPro","streamEnd and network is disconnect and reset player and play"):r?this.debugLog("JbPro",`streamEnd and websocket1006ErrorReplay is true and error is 1006 and _websocket1006ErrorReplayTimes is ${this._websocket1006ErrorReplayTimes} , delay ${this._opt.websocket1006ErrorReplayDelayTime}s reset player and play`):this.debugLog("JbPro",`streamEnd and isStreamEndReplay is true and and _streamEndReplayTimes is ${this._streamEndReplayTimes} , delay ${this._opt.streamEndReplayDelayTime}s reset player and play`);const s=this._opt.playOptions,o=this._opt.url;i&&this._websocket1006ErrorRetryLog.push(yo());let n={};this.player._opt.replayUseLastFrameShow&&(n=Object.assign({},n,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(n.isNotMute=!0);let l=r?this._opt.websocket1006ErrorReplayDelayTime:this._opt.streamEndReplayDelayTime;a&&(l=1),this._resetPlayer(n).then((()=>{this.streamEndReplayDelayTimeout=setTimeout((()=>{if(this.streamEndReplayDelayTimeout=null,this._removeLoadingBackgroundForIOS(),this.isDestroyed())a?this.debug&&this.debugLog("JbPro","streamEnd and network is disconnect and _resetPlayer() but player is destroyed and return"):r?this.debug&&this.debugLog("JbPro","streamEnd and 1006 error and _resetPlayer() but player is destroyed and return"):this.debug&&this.debugLog("JbPro","streamEnd and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return r?this.debugLog("JbPro","streamEnd and 1006 error network is offline and wait network online to play , so return"):this.debugLog("JbPro","streamEnd and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:s,type:r?vt.websocket1006Error:vt.streamEnd});r?this._websocket1006ErrorReplayTimes++:this._streamEndReplayTimes++,this.play(o,s).then((()=>{r?this.debugLog("JbPro","streamEnd and 1006 error and reset player and play success"):this.debugLog("JbPro","streamEnd and reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.streamEnd,{},e),r?this.debugError("JbPro","streamEnd and 1006 error and reset player and play error",t):this.debugError("JbPro","streamEnd and reset player and play error",t)})).finally((()=>{this.streamEndOnLock=!1}))}}),1e3*l)})).catch((t=>{this.streamEndOnLock=!1,this.emit(yt.playFailedAndPaused,vt.streamEnd,{},e),r?this.debugError("JbPro","streamEnd and 1006 and _resetPlayer error",t):this.debugError("JbPro","streamEnd and _resetPlayer error",t)}))}else{i?this.debugLog("JbPro","streamEnd pause player "+(xa(s)?"and is not meaningful retry":"")):this.debugLog("JbPro","streamEnd pause player");const r=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(r).then((()=>{this.emit(yt.playFailedAndPaused,yt.streamEnd,t,e)})).catch((i=>{this.emit(yt.playFailedAndPaused,yt.streamEnd,t,e),this.debugError("JbPro","streamEnd pause",i)})).finally((()=>{this.streamEndOnLock=!1}))}}_handleWebsocketError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","websocketError but player is destroyed"));if(this.websocketErrorOnLock)return void this.debugLog("JbPro","websocketErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.websocketError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.websocketErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debugLog("JbPro","websocketError error and network is disconnect and reset player and play"):this.debugLog("JbPro",`websocketError error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())i?this.debug&&this.debugLog("JbPro","websocketError error and network is disconnect and _resetPlayer() but player is destroyed and return"):this.debug&&this.debugLog("JbPro","websocketError error and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","websocketError error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:vt.websocketError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debugLog("JbPro","websocketError error and reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.fetchError,{},e),this.debugError("JbPro","websocketError error and reset player and play error",t)})).finally((()=>{this.websocketErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.websocketErrorOnLock=!1,this.emit(yt.playFailedAndPaused,vt.fetchError,{},e),this.debugError("JbPro","websocketError error and _resetPlayer error",t)}))}else{this.debugLog("JbPro","websocketError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.websocketError,t,e)})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.websocketError,t,e),this.debugError("JbPro","websocketError and pause",i)})).finally((()=>{this.websocketErrorOnLock=!1}))}}_handleWebrtcError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webrtcError but player is destroyed"));if(this.webrtcErrorOnLock)return void this.debugLog("JbPro","webrtcErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.webrtcError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debugLog("JbPro","webrtcError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:vt.webrtcError}})).catch((()=>{this.emit(yt.playFailedAndPaused,vt.webrtcError,t,e),this.debugError("JbPro","webrtcError and _resetPlayer error")})).finally((()=>{this.webrtcErrorOnLock=!1}))}else{this.debugLog("JbPro","webrtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.webrtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.webrtcError,t,e)})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.webrtcError,t,e),this.debugError("JbPro","webrtcError and pause",i)})).finally((()=>{this.webrtcErrorOnLock=!1}))}}_handleHlsError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","hlsError but player is destroyed"));if(this.hlsErrorOnLock)return void this.debugLog("JbPro","hlsErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.hlsError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debugLog("JbPro","hlsError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),xa(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:vt.hlsError}})).catch((()=>{this.emit(yt.playFailedAndPaused,vt.hlsError,t,e),this.debugError("JbPro","hlsError and _resetPlayer error")})).finally((()=>{this.hlsErrorOnLock=!1}))}else{this.debugLog("JbPro","hlsError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.hlsErrorOnLock=!0,this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.hlsError,t,e)})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.hlsError,t,e),this.debugError("JbPro","hlsError and pause",i)})).finally((()=>{this.hlsErrorOnLock=!1}))}}_handleAliyunRtcError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","aliyunRtcError but player is destroyed"));if(this.aliyunRtcErrorOnLock)return void this.debugLog("JbPro","aliyunRtcErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.aliyunRtcError,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","aliyunRtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.aliyunRtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.aliyunRtcError,t,e)})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.aliyunRtcError,t,e),this.debugError("JbPro","aliyunRtcError and pause",i)})).finally((()=>{this.aliyunRtcErrorOnLock=!1}))}_handleDecoderWorkerInitError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","decoderWorkerInitError but player is destroyed"));if(this.decoderWorkerInitErrorOnLock)return void this.debugLog("JbPro","decoderWorkerInitErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.decoderWorkerInitError,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","decoderWorkerInitError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerInitErrorOnLock=!0,this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.decoderWorkerInitError,t,e)})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.decoderWorkerInitError,t,e),this.debugError("JbPro","decoderWorkerInitError and pause",i)})).finally((()=>{this.decoderWorkerInitErrorOnLock=!1}))}_handleDecoderWorkerWasmError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","decoderWorkerWasmError but player is destroyed"));if(this.decoderWorkerWasmErrorOnLock)return void this.debugLog("JbPro","decoderWorkerWasmErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.decoderWorkerWasmError,e)),this.debugLog("JbPro","decoderWorkerWasmError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerWasmErrorOnLock=!0,this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.decoderWorkerWasmError,{},e)})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.decoderWorkerWasmError,{},e),this.debugError("JbPro","decoderWorkerWasmError and pause",t)})).finally((()=>{this.decoderWorkerWasmErrorOnLock=!1}))}_handleVideoElementPlayingFailedForWebrtc(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoElementPlayingFailedForWebrtc but player is destroyed"));if(this.videoElementPlayingFailedForWebrtcOnLock)return void this.debugLog("JbPro","videoElementPlayingFailedForWebrtcOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.videoElementPlayingFailedForWebrtc,e)),this.debugLog("JbPro","videoElementPlayingFailedForWebrtc and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoElementPlayingFailedForWebrtcOnLock=!0,this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.videoElementPlayingFailedForWebrtc,{},e)})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.videoElementPlayingFailedForWebrtc,{},e),this.debugError("JbPro","videoElementPlayingFailedForWebrtc and pause",t)})).finally((()=>{this.videoElementPlayingFailedForWebrtcOnLock=!1}))}_handleVideoInfoError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoInfoError but player is destroyed"));if(this.videoInfoErrorOnLock)return void this.debugLog("JbPro","videoInfoErrorOnLock is true");this.emit(yt.crashLog,this.getCrashLog(vt.videoInfoError,e)),this.debugLog("JbPro","videoInfoError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoInfoErrorOnLock=!0,this._pause(t).then((()=>{this.emit(yt.playFailedAndPaused,vt.videoInfoError,{},e)})).catch((t=>{this.emit(yt.playFailedAndPaused,vt.videoInfoError,{},e),this.debugError("JbPro","videoInfoError and pause",t)})).finally((()=>{this.videoInfoErrorOnLock=!1}))}_handleWebrtcStreamH265(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webrtcStreamH265 but player is destroyed"));if(this.webrtcStreamH265OnLock)return void this.debugLog("JbPro","webrtcStreamH265OnLock is true");this.debugLog("JbPro","webrtcStreamH265 and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.webrtcStreamH265OnLock=!0,this._resetPlayer({isWebrtcH265:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webrtcStreamH265 and reset player and play success")})).catch((t=>{this.emit(yt.playFailedAndPaused,yt.webrtcStreamH265,{},e),this.debugError("JbPro","webrtcStreamH265 and reset player and play error",t)})).finally((()=>{this.webrtcStreamH265OnLock=!1}))})).catch((()=>{this.webrtcStreamH265OnLock=!1,this.emit(yt.playFailedAndPaused,yt.webrtcStreamH265,{},e),this.debugError("JbPro","webrtcStreamH265 and _resetPlayer error")}))}_handlePlaybackEnd(){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","playbackEnd but player is destroyed"));if(this.playbackEndOnLock)return void this.debugLog("JbPro","playbackEndOnLock is true");const e=!1===this._opt.playFailedUseLastFrameShow,t=this._getVideoLastIframeInfo();this.player.setPlayFailedAndPaused(),this.playbackEndOnLock=!0,this._pause(e).then((()=>{this.emit(yt.playFailedAndPaused,yt.playbackEnd,t,"")})).catch((e=>{this.emit(yt.playFailedAndPaused,yt.playbackEnd,t,""),this.debugError("JbPro","playbackEnd and pause",e)})).finally((()=>{this.playbackEndOnLock=!1}))}_handleDelayTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debugWarn("JbPro","delay timeout replay but player is destroyed"));this.emit(yt.crashLog,this.getCrashLog(yt.delayTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","delayTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:yt.delayTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(yt.playFailedAndPaused,yt.delayTimeout,t,e),this.debugError("JbPro","delay timeout replay error",i)}))})).catch((i=>{this.emit(yt.playFailedAndPaused,yt.delayTimeout,t,e),this.debugError("JbPro","delay timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,yt.delayTimeout,t,e),this.player&&(this.emit(yt.delayTimeoutRetryEnd),this.emit(yt.playFailedAndPaused,yt.delayTimeoutRetryEnd)),this.debugWarn("JbPro",`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(yt.playFailedAndPaused,yt.delayTimeout,t,e),this.debugError("JbPro","delay timeout and pause error",i)}))}}_handleLoadingTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","loading timeout but player is destroyed"));this.emit(yt.crashLog,this.getCrashLog(yt.loadingTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","loadingTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:yt.loadingTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(yt.playFailedAndPaused,yt.loadingTimeout,t,e),this.debugError("JbPro","loading timeout replay error",i)}))})).catch((i=>{this.emit(yt.playFailedAndPaused,yt.loadingTimeout,t,e),this.debugError("JbPro","loading timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,yt.loadingTimeout,t,e),this.player&&(this.emit(yt.loadingTimeoutRetryEnd),this.emit(yt.playFailedAndPaused,yt.loadingTimeoutRetryEnd,t,e),this._opt.loadingTimeoutRetryEndShowPlayBtn&&this.player.showPlayBtn()),this.debugLog("JbPro",`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((i=>{this.emit(yt.playFailedAndPaused,yt.loadingTimeout,t,e),this.debugError("JbPro","loading timeout and pause error",i)}))}}_handleInitDecoderWorkerTimeout(e){if(this.isDestroyed())return void this.debugLog("JbPro","InitDecoderWorkerTimeout but player is destroyed");this.emit(yt.crashLog,this.getCrashLog(vt.initDecoderWorkerTimeout,e)),this.debugLog("JbPro","InitDecoderWorkerTimeout and pause player");const t=this._getVideoLastIframeInfo(),i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(yt.playFailedAndPaused,vt.initDecoderWorkerTimeout,t,e)})).catch((i=>{this.emit(yt.playFailedAndPaused,vt.initDecoderWorkerTimeout,t,e),this.debugError("JbPro","videoInfoError and pause",i)}))}_checkInitDecoderWorkerTimeout(){this._clearInitDecoderWorkerTimeout(),this.initDecoderWorkerTimeout=setTimeout((()=>{this._handleInitDecoderWorkerTimeout(vt.initDecoderWorkerTimeout)}),1e3*this._opt.initDecoderWorkerTimeout)}_clearInitDecoderWorkerTimeout(){this.initDecoderWorkerTimeout&&(clearTimeout(this.initDecoderWorkerTimeout),this.initDecoderWorkerTimeout=null)}debugLog(e){if(this._opt.debug&&this.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s1?t-1:0),s=1;s1?t-1:0),s=1;s{if(this.isDestroyed())return t("player is destroyed");this.debugLog("JbPro","resetPlayer()");const i=this._getOriginalOpt();this._resetPlayer(i).then((()=>{this.debugLog("JbPro","resetPlayer() success"),e()})).catch((e=>{this.debugWarn("JbPro","resetPlayer() error",e.toString(),e),t(e)}))}))}}__.ERROR=vt,__.EVENTS=At,window.JessibucaPro=__,window.JbPro=__,window.WebPlayerPro=__;Cc('.jb-pro-multi-container .jb-pro-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)}.jb-pro-multi-container .jb-pro-multi-player-container-v2 .jb-pro-multi-player{overflow:hidden;position:relative;width:100%;height:100%}.jb-pro-multi-container .jb-pro-multi-player-container-v2 .jb-pro-multi-player .jb-pro-multi-player-draw-window{position:absolute;z-index:1;width:calc(100% - 2px);height:calc(100% - 2px);color:#fff;transition:all .25s}.jb-pro-multi-container .jb-pro-multi-player-container-v2 .jb-pro-multi-player .jb-pro-multi-player-video-window{position:absolute;left:1px;top:1px;z-index:2;width:calc(100% - 2px);height:calc(100% - 2px)}.jb-pro-multi-container .jb-pro-multi-player[fullscreen="1"]{grid-column-start:1;grid-column-end:9;grid-row-start:1;grid-row-end:9;z-index:1}.jb-pro-multi-container .jb-pro-multi-layout-6 .jb-pro-multi-player[order="0"]{grid-column-start:1;grid-column-end:3;grid-row-start:1;grid-row-end:3}.jb-pro-multi-container .jb-pro-multi-layout-6 .jb-pro-multi-player[fullscreen="1"]{grid-column-start:1;grid-column-end:9;grid-row-start:1;grid-row-end:9;z-index:1}.jb-pro-multi-container .jb-pro-multi-layout-9 .jb-pro-multi-player[order="0"]{grid-column-start:1;grid-column-end:4;grid-row-start:1;grid-row-end:4}.jb-pro-multi-container .jb-pro-multi-layout-9 .jb-pro-multi-player[fullscreen="1"]{grid-column-start:1;grid-column-end:9;grid-row-start:1;grid-row-end:9;z-index:1}');class w_ extends o{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this._opt={},Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`jb-pro-multi option "${t}" can not be undefined`)}));const t=Ea(Ms);this._opt=Object.assign({},t,e),this.LOG_TAG="jbProMulti",this.debug=new jr(this);let i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw this.debugError(this.TAG_NAME,"Jb-pro-multi need container option"),new Error("Jb-pro-multi need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jb-pro-multi container type can not be ${i.nodeName} type`);if(!i.classList)throw this.debugError(this.TAG_NAME,"Jb-pro-multi container is invalid, must be a DOM Element",i),new Error("Jb-pro-multi container is invalid, must be a DOM Element",i);if(this._checkHasCreated(i))throw this.debugError(this.TAG_NAME,"Jb-pro-multi container has been created and can not be created again",i),new Error("Jb-pro-multi container has been created and can not be created again",i);i.classList.add("jb-pro-multi-container"),Da(i,re,Mo()),delete this._opt.container,this.maxWindowSize=this._opt.maxSplit*this._opt.maxSplit,this.currentWindowIndex=-1,this.currentWindowUuid=null,this.specialLayoutType=null,this.startDragWindowItem=null,this.checkRectInterval=null,this.windowList=[],this.$container=i,this.events=new Wa(this),this._opt.split||(this._opt.split=1),Ca(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.debugLog(this.LOG_TAG,"destroy()"),this.off(),this.events&&(this.events.destroy(),this.events=null),this.checkRectInterval&&(clearInterval(this.checkRectInterval),this.checkRectInterval=null),this.specialLayoutType=null,this.startDragWindowItem=null,this.currentWindowUuid=null,this.currentWindowIndex=-1,this.$container&&(this.$container.classList.remove("jb-pro-multi-container"),Ia(this.$container,re),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.debugLog(this.LOG_TAG,"destroy")}))}_createPlayer(e){var t=this;const i=this._findWindowItemIndex(e),s=e.uuid,r=this._opt;r.supportDblclickContainerFullscreen&&(r.supportDblclickFullscreen=!1);const o=new __({...r,isMulti:!0,multiIndex:i,multiUuid:s,container:e.$player});return Object.keys(At).forEach((e=>{o.on(At[e],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.emit(yt.close,i),e.player=null})),o}_initWindows(){let e="";for(let t=0;t\n
    \n
    \n \n `;const t=`
    ${e}
    `;this.$container.innerHTML=t;const i=this.$container.querySelectorAll(".jb-pro-multi-player");for(let e=0;e\n
    \n
    \n \n `;const i=`
    \n ${e}\n
    `;this.$container.innerHTML=i,this.$multiContainer=this.$container.querySelector(".jb-pro-multi-player-container-v2");const s=this.$container.querySelectorAll(".jb-pro-multi-player");for(let e=0;e{const s=t.$playerContainer,r=e(s,"click",(e=>{e.preventDefault();const t=Ra(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerClickDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);if(this.emit(Fs.selected,i,e),this.getSelectedWindowUuid()===t){if(this._getWindowItem(t).isContainerFullscreen)return}1!==this._opt.split&&this._handleWindowSelect(i)})),o=e(s,"dblclick",(e=>{e.preventDefault();const t=Ra(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"dblclickDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Fs.dblSelected,i,e),this._opt.supportDblclickContainerFullscreen&&1!==this._opt.split&&this._handleWindowContainerFullscreen(i)})),a=e(s,"mouseup",(e=>{const t=Ra(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerMouseupDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Fs.mouseup,i,e)})),n=e(s,"mouseover",(e=>{const t=Ra(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerMouseoverDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Fs.mouseover,i,e)})),l=e(s,"mouseout",(e=>{const t=Ra(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerMouseoutDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Fs.mouseout,i,e)})),d=e(s,"mousedown",(e=>{const t=Ra(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerMousedownDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Fs.mousedown,i,e)})),h=e(s,"dragover",(e=>{e.preventDefault()})),c=e(s,"dragenter",(e=>{const t=Ra(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerDragEnterDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this._getWindowItem(t),this.emit(Fs.dragenter,i,e,{uuid:t})})),u=e(s,"dragleave",(e=>{const t=Ra(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerDragLeaveDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this._getWindowItem(t),this.emit(Fs.dragleave,i,e,{uuid:t})})),p=e(s,"drop",(e=>{e.preventDefault();const t=Ra(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerDropDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t),r={};if(this._opt.draggable&&this.startDragWindowItem){const e=this.startDragWindowItem.$playerContainer,i=this.startDragWindowItem.player,o=this.startDragWindowItem.uuid,a=e.style.order;e.style.order=s.style.order,e.setAttribute("order",e.style.order),s.style.order=a,s.setAttribute("order",a);const n=this.getWindowItem(t);this.debugLog(this.LOG_TAG,`player Drop ${a} -> ${e.style.order}`),this._sortWindows(),r.fromUuid=o,r.toUuid=t,r.fromOrderIndex=Bo(a),r.toOrderIndex=Bo(e.style.order),i&&i._updateMultiIndex(Bo(e.style.order)),n.player&&n.player._updateMultiIndex(Bo(a))}this.emit(Fs.drop,i,e,r)}));if(t.$playerContainerEvents=[r,a,n,l,d,o,h,c,u,p],this._opt.draggable){const i=e(s,"dragstart",(e=>{const t=Ra(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerDragStartDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this._handleWindowSelect(i),this.startDragWindowItem=this._getWindowItem(i),this.emit(Fs.dragstart,i,e,{uuid:t})}));t.$playerContainerEvents.push(i)}if(this._opt.supportMousemoveEvent){const i=e(s,"mousemove",(e=>{const t=Ra(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerMousemoveDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Fs.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,s=this._opt.split,r=t%s,o=i%s,a=(t-r-2*s)/s,n=(i-o-2*s)/s,l=(t-r)/s,d=(i-o)/s;let h=this._getCurrentMaxSplit();for(let e=0;e=Math.pow(s,2)?o:0),f=l+(e%s==s-1?r:0),m=d+(e+s>=Math.pow(s,2)?o:0);i.style.width=f+"px",i.style.height=m+"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,s=e.$playerBorder,r=t.style.width.replace("px",""),o=t.style.height.replace("px",""),a=i.style.width.replace("px",""),n=i.style.height.replace("px","");let l,d,c,u;this.specialLayoutType===Us?(l=2*r,d=2*o,c=2*a+2,u=2*n+2):this.specialLayoutType===Os&&(l=3*r,d=3*o,c=3*a+4,u=3*n+4),t.style.width=l+"px",t.style.height=d+"px",i.style.width=c+"px",i.style.height=u+"px",s.style.width=c+"px",s.style.height=u+"px",e.player&&e.player.resize(),h=this._getSpecialMaxSplit()}for(let e=h;e{0===t&&bo(e.$playerContainer,"display","block"),e.$playerContainer.setAttribute("fullscreen","0"),e.$playerContainer.style.fullscreen="0",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.debugWarn(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(Vo(t)&&t===i.isContainerFullscreen)return;if(this._opt.draggable){if(i.isContainerFullscreen){if(i.$playerContainer.setAttribute("fullscreen","0"),i.$playerContainer.style.fullscreen="0",this.specialLayoutType){bo(this.windowList[0].$playerContainer,"display","block")}}else if(i.$playerContainer.setAttribute("fullscreen","1"),i.$playerContainer.style.fullscreen="1",this.specialLayoutType){if(0!==this._findWindowItemIndexByUuid(i.uuid)){bo(this.windowList[0].$playerContainer,"display","none")}}}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,s=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=s+"px",i.$player.style.width=t+"px",i.$player.style.height=s+"px",i.$playerBorder.style.display="none"}i.isContainerFullscreen=!i.isContainerFullscreen,i.player&&i.player.resize()}else this.debugWarn(this.LOG_TAG,`handleWindowContainerFullscreen() ${e} is not exist`)}_handleFullscreenResize(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5,t=this._getContainerRect(),i=0;this.checkRectInterval=setInterval((()=>{const s=zr.isFullscreen,r=this._getContainerRect(),o={width:screen.width,height:screen.height};this.debugLog(this.LOG_TAG,`isInFullscreen ${s} , checkRectInterval times : ${i} nowRect:${JSON.stringify(r)}, prevRect:${JSON.stringify(t)} ,window screen rect:${JSON.stringify(o)}`);const a=r.width===t.width&&r.height===t.height,n=!s||o.width-r.width<10&&o.height-r.height<10;if(a&&n||i>=e)return this.checkRectInterval&&(clearInterval(this.checkRectInterval),this.checkRectInterval=null),void this.resize();t=r,i++}),1e3)}_listenFullscreenChange(){try{const e=e=>{da(e)===this.$container&&(this.emit(Fs.multiFullscreen,zr.isFullscreen),zr.isFullscreen||-1!==window.navigator.userAgent.indexOf("Edg")?this._handleFullscreenResize():this.resize())};zr.on("change",e),this.events.destroys.push((()=>{zr.off("change",e)}))}catch(e){}}play(e,t,i){return new Promise(((s,r)=>{(Oo(t)||aa(t))&&(i=t,t={});const o=this._getWindowItem(i);if(o)if(o.player)o.player.play(e,t).then((()=>{s()})).catch((e=>{r(e)}));else{const i=this._createPlayer(o);o.player=i,i.play(e,t).then((()=>{s()})).catch((e=>{r(e)}))}else r(`play() windowIndex ${i} is not exist`)}))}getOption(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getOption():(this.debugWarn(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.debugWarn(this.LOG_TAG,`setDebug() windowIndex ${t} is not exist`)}mute(e){const t=this._getWindowItem(e);t&&t.player?t.player.mute():this.debugWarn(this.LOG_TAG,`mute() windowIndex ${e} is not exist`)}cancelMute(e){const t=this._getWindowItem(e);t&&t.player?t.player.cancelMute():this.debugWarn(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.debugWarn(this.LOG_TAG,`setVolume() windowIndex ${t} is not exist`)}audioResume(e){const t=this._getWindowItem(e);t&&t.player?t.player.audioResume():this.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`setScaleMode() windowIndex ${t} is not exist`)}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{const r=this._getWindowItem(t);r&&r.player?r.player.pause(e).then((()=>{i()})).catch((e=>{s(e)})):s(`pause() windowIndex ${t} is not exist`)}))}close(e){return new Promise(((t,i)=>{const s=this._getWindowItem(e);s&&s.player?s.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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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(((s,r)=>{const o=this._getWindowItem(i);o&&o.player?o.player.startRecord(e,t).then((()=>{s()})).catch((e=>{r(e)})):(this.debugWarn(this.LOG_TAG,`startRecord() windowIndex ${i} is not exist`),r(`windowIndex ${i} is not exist`))}))}stopRecordAndSave(e,t,i){return new Promise(((s,r)=>{const o=this._getWindowItem(i);o&&o.player?o.player.stopRecordAndSave(e,t).then((e=>{s(e)})).catch((e=>{r(e)})):(this.debugWarn(this.LOG_TAG,`stopRecordAndSave() windowIndex ${i} is not exist`),r(`windowIndex ${i} is not exist`))}))}isPlaying(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isPlaying():(this.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`windowIndex ${e} is not exist`),!1)}isMute(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isMute():(this.debugWarn(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.debugWarn(this.LOG_TAG,`isRecording() windowIndex ${e} is not exist`),!1)}clearBufferDelay(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearBufferDelay():this.debugWarn(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.debugWarn(this.LOG_TAG,`setNetworkDelayTime() windowIndex ${t} is not exist`)}getDecodeType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getDecodeType():(this.debugWarn(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.debugWarn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getAudioEngineType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getAudioEngineType():(this.debugWarn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getPlayingTimestamp(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getPlayingTimestamp():(this.debugWarn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getStatus(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getStatus():(this.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`togglePerformancePanel() windowIndex ${t} is not exist`)}openZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.openZoom():this.debugWarn(this.LOG_TAG,`openZoom() windowIndex ${e} is not exist`)}closeZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.closeZoom():this.debugWarn(this.LOG_TAG,`closeZoom() windowIndex ${e} is not exist`)}isZoomOpen(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isZoomOpen():(this.debugWarn(this.LOG_TAG,`isZoomOpen() windowIndex ${e} is not exist`),!1)}expandZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.expandZoom():this.debugWarn(this.LOG_TAG,`expandZoom() windowIndex ${e} is not exist`)}narrowZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.narrowZoom():this.debugWarn(this.LOG_TAG,`narrowZoom() windowIndex ${e} is not exist`)}getCurrentZoomIndex(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getCurrentZoomIndex():(this.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`updateWatermark() windowIndex ${t} is not exist`)}removeWatermark(e){const t=this._getWindowItem(e);t&&t.player?t.player.removeWatermark():this.debugWarn(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.debugWarn(this.LOG_TAG,`updateFullscreenWatermark() windowIndex ${t} is not exist`)}removeFullscreenWatermark(e){const t=this._getWindowItem(e);t&&t.player?t.player.removeFullscreenWatermark():this.debugWarn(this.LOG_TAG,`removeFullscreenWatermark() windowIndex ${e} is not exist`)}faceDetectOpen(e){const t=this._getWindowItem(e);t&&t.player?t.player.faceDetectOpen():this.debugWarn(this.LOG_TAG,`faceDetectOpen() windowIndex ${e} is not exist`)}faceDetectClose(e){const t=this._getWindowItem(e);t&&t.player?t.player.faceDetectClose():this.debugWarn(this.LOG_TAG,`faceDetectClose() windowIndex ${e} is not exist`)}objectDetectOpen(e){const t=this._getWindowItem(e);t&&t.player?t.player.objectDetectOpen():this.debugWarn(this.LOG_TAG,`objectDetectOpen() windowIndex ${e} is not exist`)}objectDetectClose(e){const t=this._getWindowItem(e);t&&t.player?t.player.objectDetectClose():this.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`addContentToCanvas() windowIndex ${t} is not exist`)}clearContentToCanvas(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearContentToCanvas():this.debugWarn(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.debugWarn(this.LOG_TAG,`setControlHtml() windowIndex ${t} is not exist`)}clearControlHtml(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearControlHtml():this.debugWarn(this.LOG_TAG,`clearControlHtml() windowIndex ${e} is not exist`)}getFlvMetaData(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getFlvMetaData():(this.debugWarn(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.debugWarn(this.LOG_TAG,`getExtendBtnList() windowIndex ${e} is not exist`),null)}updateAiFaceDetectInterval(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`hideErrorMessageTips() windowIndex ${e} is not exist`),null;t.player.hideErrorMessageTips()}destroySingle(e){return new Promise(((t,i)=>{const s=this._getWindowItem(e);s?s.player&&s.player.destroy().then((()=>{s.player=null,t()})).catch((e=>{i(e)})):(i("windowIndex is not exist"),this.debugWarn(this.LOG_TAG,`destroySingle() windowIndex ${e} is not exist`))}))}initSingle(e){return new Promise(((t,i)=>{const s=this._getWindowItem(e);if(s)if(s.player)s.player.destroy().then((()=>{s.player=null;const e=this._createPlayer(s);s.player=e,t()})).catch((e=>{i(e)}));else{const e=this._createPlayer(s);s.player=e,t()}else i("windowIndex is not exist"),this.debugWarn(this.LOG_TAG,`destroySingle() windowIndex ${e} is not exist`)}))}setFullscreenMulti(e){return new Promise(((t,i)=>{if(this.debugLog(this.LOG_TAG,"setFullscreenMulti",e),e)try{zr.request(this.$container).then((()=>{t()})).catch((e=>{this.debugError(this.LOG_TAG,"fullscreen request inner error",e),i(e)}))}catch(e){this.debugError(this.LOG_TAG,"fullscreen request error",e),i(e)}else try{zr.exit().then((()=>{t()})).catch((e=>{this.debugError(this.LOG_TAG,"fullscreen exit inner error",e),i(e)}))}catch(e){this.debugError(this.LOG_TAG,"fullscreen exit error",e),i(e)}}))}toggleSingleWindowContainerFullscreen(e,t){this.debugLog(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.debugLog(this.LOG_TAG,"selectWindow",e),this._handleWindowSelect(e)}arrangeWindow(e){this.debugLog(this.LOG_TAG,"arrangeWindow",e),this._innerArrangeWindow(e)}_innerArrangeWindow(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return void this.debugWarn(this.LOG_TAG,`arrangeWindow() split ${e} is not valid`);if([Us,Os].includes(e))this._arrangeSpecialWindow(e);else{if(this._opt.split===e&&null===this.specialLayoutType&&xa(t))return void this.debugWarn(this.LOG_TAG,`arrangeWindow() split ${e} is not changed`);this.specialLayoutType=null,this._arrangeWindow(e)}}_arrangeWindow(e){(e=Bo(e))<1||!Oo(e)?this.debugWarn(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===Os||this._opt.maxSplit<=2&&e===Us?this.debugWarn(this.LOG_TAG,`_arrangeSpecialWindow() type ${e} is not valid because maxSplit is ${this._opt.maxSplit}`):this.specialLayoutType&&this.specialLayoutType===e?this.debugWarn(this.LOG_TAG,`_arrangeSpecialWindow() type ${e} is not changed`):(this.specialLayoutType=e,e===Us?this._arrangeWindow(3):e===Os?this._arrangeWindow(4):this.debugWarn(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===Us?e=9:this.specialLayoutType===Os&&(e=16),e}return this._opt.split*this._opt.split}_getCurrentMaxSplitV2(){return this.specialLayoutType?this._getSpecialMaxSplit():this._opt.split*this._opt.split}_getSpecialMaxSplit(){let e=0;return this.specialLayoutType===Us?e=6:this.specialLayoutType===Os&&(e=8),e}getSelectedWindowIndex(){return this.currentWindowIndex}getSelectedWindowUuid(){return this.currentWindowUuid}getWindowItem(e){let t=this._getWindowItem(e),i=this._findWindowItemIndexByUuid(t.uuid),s=null;return t&&(s={index:i,$player:t.$player,$playerContainer:t.$playerContainer,player:t.player,uuid:t.uuid}),s}getNextWindowItem(e){this.debugLog(this.LOG_TAG,"getNextWindowItem",e);let t=null,i=this._getWindowItem(e);if(i){const e=this._getWindowUuidList()||[],s=e.findIndex((e=>e===i.uuid));if(se===i.uuid));if(s>0){const i=s-1,r=this._findWindowItemByUuid(e[i]);if(r){t={index:this._findWindowItemIndexByUuid(r.uuid),$player:r.$player,$playerContainer:r.$playerContainer,player:r.player,uuid:r.uuid}}}}return t}getWindowUuidList(){return this._getWindowUuidList()||[]}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||!Oo(e)?this._findWindowItemByUuid(i?e:this.currentWindowUuid):this.windowList[e]||this.windowList[this.currentWindowIndex],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))}_checkHasCreated(e){if(!e)return!1;return!!Ra(e,re)}debugLog(e){if(this._opt.debug&&this.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s1?t-1:0),s=1;s1?t-1:0),s=1;s1?i-1:0),r=1;r{delete i[e]})),void delete this.e;const s=i[e],r=[];if(s&&t)for(let e=0,i=s.length;e1?i-1:0),r=1;r1?i-1:0),r=1;r1?s-1:0),o=1;o32&&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 s=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-s;return this._current_word<<=s,this._current_word_bits_left-=s,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)}}const Hr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Jr=Hr,qr=Hr;function Kr(e){let{profile:t,sampleRate:i,channel:s}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|s<<3])}function Yr(e){return Qr(e)&&e[1]===xs}function Qr(e){return e[0]>>4===Bt}function Xr(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 Zr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return 1024*t/e}const eo=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function to(e){let t=new Uint8Array(e),i=null,s=0,r=0,o=0,a=null;if(s=r=t[0]>>>3,o=(7&t[0])<<1|t[1]>>>7,o<0||o>=eo.length)return void console.error("Flv: AAC invalid sampling frequency index!");let n=eo[o],l=(120&t[1])>>>3;if(l<0||l>=8)return void console.log("Flv: AAC invalid channel configuration");5===s&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let d=jr.navigator.userAgent.toLowerCase();return-1!==d.indexOf("firefox")?o>=6?(s=5,i=new Array(4),a=o-3):(s=2,i=new Array(2),a=o):-1!==d.indexOf("android")?(s=2,i=new Array(2),a=o):(s=5,a=o,i=new Array(4),o>=6?a=o-3:1===l&&(s=2,i=new Array(2),a=o)),i[0]=s<<3,i[0]|=(15&o)>>>1,i[1]=(15&o)<<7,i[1]|=(15&l)<<3,5===s&&(i[1]|=(15&a)>>>1,i[2]=(1&a)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:n,channelCount:l,objectType:s,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+r}}class io{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,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}read_golomb(){let e;for(e=0;0==this.read(1)&&!this.iserro;e++);return(1<=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(8&e[i+1])>>>3,r=(6&e[i+1])>>>1,o=1&e[i+1],a=(192&e[i+2])>>>6,n=(60&e[i+2])>>>2,l=(1&e[i+2])<<2|(192&e[i+3])>>>6,d=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+d>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let h=1===o?7:9,c=d-h;i+=h;let u=this.findNextSyncwordOffset(i+c);if(this.current_syncword_offset_=u,0!==s&&1!==s||0!==r)continue;let p=e.subarray(i,i+c);t={},t.audio_object_type=a+1,t.sampling_freq_index=n,t.sampling_frequency=Jr[n],t.channel_config=l,t.data=p}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class lo{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let s=0;s<=t;s++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let s=this.current_syncword_offset_,r=(31&t[s+1])<<8|t[s+2];if(s+3+r>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let o=new Vr(t.subarray(s+3,s+3+r)),a=null;if(o.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(s+3+r),o.destroy();continue}a=e}else{let e=o.readBool();if(e&&o.readBool()){console.error("audioMuxVersionA is Not Supported"),o.destroy();break}if(e&&this.getLATMValue(o),!o.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),o.destroy();break}if(0!==o.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),o.destroy();break}if(0!==o.readBits(4)){console.error("more than 2 numProgram Not Supported"),o.destroy();break}if(0!==o.readBits(3)){console.error("more than 2 numLayer Not Supported"),o.destroy();break}let t=e?this.getLATMValue(o):0,i=o.readBits(5);t-=5;let s=o.readBits(4);t-=4;let r=o.readBits(4);t-=4,o.readBits(3),t-=3,t>0&&o.readBits(t);let n=o.readBits(3);if(0!==n){console.error(`frameLengthType = ${n}. Only frameLengthType = 0 Supported`),o.destroy();break}o.readByte();let l=o.readBool();if(l)if(e)this.getLATMValue(o);else{let e=0;for(;;){e<<=8;let t=o.readBool();if(e+=o.readByte(),!t)break}console.log(e)}o.readBool()&&o.readByte(),a={},a.audio_object_type=i,a.sampling_freq_index=s,a.sampling_frequency=Jr[a.sampling_freq_index],a.channel_config=r,a.other_data_present=l}let n=0;for(;;){let e=o.readByte();if(n+=e,255!==e)break}let l=new Uint8Array(n);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function co(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return[];const i=e.length,s=[];let r,o=0;for(;o+t>>=8),o+=t,r){if(o+r>i)break;s.push(e.subarray(o,o+r)),o+=r}return s}function uo(e,t){const i=e.length;let s=t?2:1,r=0,o=0,a="";for(;255===e[s];)r+=255,s++;for(r+=e[s++];255===e[s];)o+=255,s++;if(o+=e[s++],5===r&&i>s+16)for(let t=0;t<16;t++)a+=e[s].toString(16),s++;return{payload:e.subarray(s),type:r,size:o,uuid:a}}function po(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 s=new Uint8Array(t+4);return s.set(i,0),s.set(e,4),s}function fo(){}function mo(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let s=0;for(;!t&&s0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),s=t[0].replace("data:","").replace(";base64","");let r=i.length,o=new Uint8Array(r);for(;r--;)o[r]=i.charCodeAt(r);return new File([o],"file",{type:s})}function Ao(){return(new Date).getTime()}function bo(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function vo(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{vo(e,i,t[i])})),e.style[t]=i,e}function _o(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const s=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(s):s}function wo(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function So(e){let t=0,i=wo();return s=>{if(!No(s))return;t+=s;const r=wo(),o=r-i;o>=1e3&&(e(t/o*1e3),i=r,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 Eo='"9-2-2024"',To=!1;function ko(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function Lo(){return!(ko()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))}function Co(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}function xo(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function Do(){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 s in i)if(i[s]){let i="";if("IE"===s){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"===s){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(s="360");const t=e.match(/chrome\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Firefox"===s){const t=e.match(/firefox\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Opera"===s){const t=e.match(/opera\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Safari"===s){const t=e.match(/version\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Edge"===s){const t=e.match(/edge\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("QQBrowser"===s){const t=e.match(/qqbrowser\/([\d.]+)/);t&&t.length>1&&(i=t[1])}t.type=s,t.version=parseInt(i)}return t}function Ro(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function Io(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function Po(e,t){if(0===arguments.length)return null;var i,s=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 r={y:i.getFullYear(),m:i.getMonth()+1,d:i.getDate(),h:i.getHours(),i:i.getMinutes(),s:i.getSeconds(),a:i.getDay()},o=s.replace(/{(y|m|d|h|i|s|a)+}/g,((e,t)=>{var i=r[t];return"a"===t?["一","二","三","四","五","六","日"][i-1]:(e.length>0&&i<10&&(i="0"+i),i||0)}));return o}function Bo(){return"VideoFrame"in window}function Mo(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function Fo(){return"xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function Uo(e,t){let i,s,r=!1;return function o(){for(var a=arguments.length,n=new Array(a),l=0;l{r=!1,i&&(o.apply(s,i),i=null,s=null)}),t)}}function Oo(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 s=parseFloat(e);i=Math.floor(Math.log(s)/Math.log(1024));var r=s/Math.pow(1024,i);return(r=r.toFixed(2))+t[i]}function No(e){return"[object Number]"===Object.prototype.toString.call(e)}function jo(){let e=!1;return"MediaSource"in jr&&jr.MediaSource&&(jr.MediaSource.isTypeSupported(Si)||jr.MediaSource.isTypeSupported(Ei)||jr.MediaSource.isTypeSupported(Ti)||jr.MediaSource.isTypeSupported(ki)||jr.MediaSource.isTypeSupported(Li))&&(e=!0),e}function Go(){const e=Do();return"chrome"===e.type.toLowerCase()&&e.version>=107}function Wo(){let e=!1;return"MediaStreamTrackGenerator"in window&&(e=!0),e}function zo(){let e=!1;return"MediaStream"in window&&(e=!0),e}function $o(e,t){let i=window.URL.createObjectURL(t),s=window.document.createElement("a");s.download=e,s.href=i;let r=window.document.createEvent("MouseEvents");r.initEvent("click",!0,!0),s.dispatchEvent(r),setTimeout((()=>{window.URL.revokeObjectURL(i)}),Ro()?1e3:0)}function Vo(e){return null==e}function Ho(e){return!0===e||!1===e}function Jo(e){return!Vo(e)}function qo(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||{}),s=Object.assign(t.text,e.text||{}),r=Object.assign(t.rect,e.rect||{}),o=Object.assign(t.line,e.line||{});return t=Object.assign(t,e,{image:i,text:s,rect:r,line:o}),t}function Ko(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 Yo(e,t){return new Promise(((i,s)=>{let r=qo(t);if(!r.image.src&&!r.text.content)return i(e);let o=document.createElement("canvas");o.width=t.width,o.height=t.height;let a=o.getContext("2d");a.imageSmoothingEnabled=!0,a.imageSmoothingEnabled&&(a.imageSmoothingQuality="high");let n=0,l=0;No(r.left)?n=r.left:No(r.right)&&(n=o.width-r.right),No(r.top)?l=r.top:No(r.bottom)&&(l=o.height-r.bottom);const d=new Image;d.src=e,d.onload=()=>{if(a.drawImage(d,0,0),r.image&&r.image.src){const e=new Image;e.src=r.image.src,e.setAttribute("crossOrigin","Anonymous"),e.onload=()=>{n-=r.image.width,a.drawImage(e,n,l,r.image.width,r.image.height),i(o.toDataURL(t.format,t.quality))},e.onerror=e=>{s()}}else r.text&&r.text.content&&(a.font=r.text.fontSize+"px 宋体",a.fillStyle=r.text.color,a.textAlign="right",a.fillText(r.text.content,n,l),i(o.toDataURL(t.format,t.quality)))},d.onerror=e=>{s(e)}}))}function Qo(e){var t,i=0;if(0===e.length)return i;for(t=0;t{if(!t.copyright)return i(e);let r=document.createElement("canvas");r.width=t.width,r.height=t.height;let o=r.getContext("2d");o.imageSmoothingEnabled=!0,o.imageSmoothingEnabled&&(o.imageSmoothingQuality="high");const a=new Image;a.src=e,a.onload=()=>{o.drawImage(a,0,0);const e=Qo(t.copyright),s=o.getImageData(0,0,r.width,r.height);!function(e,t){for(var i=e.data,s=0,r=0;r<32;r++){var o=t>>r&1,a=254&i[s]|o;i[s]=a,s+=4}}(s,e),o.putImageData(s,0,0),i(r.toDataURL(t.format,t.quality))},a.onerror=e=>{s(e)}}))}function Zo(e){var t;if(e>-1){var i=Math.floor(e/3600),s=Math.floor(e/60)%60,r=e%60;t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",(r=Math.round(r))<10&&(t+="0"),t+=r.toFixed(0)}return t}function ea(e,t){let i="";if(e>-1){const s=Math.floor(e/60)%60;let r=e%60;r=Math.round(r),i=s<10?"0"+s+":":s+":",r<10&&(i+="0"),i+=r,Vo(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function ta(e){let t="";if(e>-1){const i=Math.floor(e/60/60)%60;let s=Math.floor(e/60)%60,r=e%60;s=Math.round(s),t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",r<10&&(t+="0"),t+=r}return t}function ia(e,t){const i=Math.floor(t/60)%60,s=Math.floor(t%60);return new Date(e).setHours(i,s,0,0)}function sa(e,t){const i=Math.floor(t/60/60)%60,s=Math.floor(t/60)%60,r=t%60;return new Date(e).setHours(i,s,r,0)}function ra(e){return(""+e).length}function oa(e){return e&&0===Object.keys(e).length}function aa(e){return!oa(e)}function na(e){return"string"==typeof e}const la=()=>{const e=window.navigator.userAgent;return/MicroMessenger/i.test(e)},da=()=>{const e=window.navigator.userAgent;return/Chrome/i.test(e)};function ha(e){const t=e||window.event;return t.target||t.srcElement}function ca(){return xo()&&function(){const e=navigator.userAgent.toLowerCase();return/macintosh|mac os x/i.test(e)}()}function ua(e){return"function"==typeof e}function pa(e){if(ko()){let t=0,i=0;if(1===e.touches.length){let s=e.touches[0];t=s.clientX,i=s.clientY}return{posX:t,posY:i}}let t=0,i=0;const s=e||window.event;return s.pageX||s.pageY?(t=s.pageX,i=s.pageY):(s.clientX||s.clientY)&&(t=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft,i=e.clientY+document.documentElement.scrollTop+document.body.scrollTop),{posX:t,posY:i}}function fa(){let e=document.createElement("video"),t=e.canPlayType("application/vnd.apple.mpegurl");return e=null,t}function ma(e){let t=Da(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)&&Da(e.demuxUseWorker);return!!(Da(t)&&e.useMSE&&e.mseDecodeAudio&&Da(e.demuxUseWorker))||(!!(Da(t)&&e.useWCS&&e.wcsDecodeAudio)||t)}function ga(e){let t=null,i=31&e[0];return i!==Nt&&i!==jt||(t=It),t||(i=(126&e[0])>>1,i!==ei&&i!==ii&&i!==ri||(t=Pt)),t}function ya(e){e.close()}function Aa(e){e.close()}function ba(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function va(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 _a(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],s=null,r=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,r=2)}if(i)for(let o=r;o=1e3){e[o-1].ts-i.ts<1e3&&(s=o+1)}}}return s}function wa(e){for(var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(t),s=new Uint8Array(i.length),r=0;r>4===Ds&&e[1]===xs}function xa(e){return!0===e||"true"===e}function Da(e){return!0!==e&&"true"!==e}function Ra(e,t,i){e&&(e.dataset?e.dataset[t]=i:e.setAttribute("data-"+t,i))}function Ia(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}function Pa(e,t){e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t))}function Ba(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function Ma(){return/iphone/i.test(navigator.userAgent)}function Fa(){return window.performance&&window.performance.memory?window.performance.memory:null}function Ua(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}}function Oa(e){return e.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function Na(){let e=!1;return"requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e=!0),e}function ja(){let e=!1;return"PressureObserver"in window&&(e=!0),e}function Ga(e,t){const i=co(e.slice(5));let s=!1;return i.forEach((e=>{const i=t?e[0]>>>1&63:31&e[0];(t&&(i===qt||i===Yt||i===Xt)||Da(t)&&i===Gt)&&(s=!0)})),s}function Wa(){let e={down:"mousedown",move:"mousemove",up:"mouseup",click:"click"};return ko()&&(e={down:"touchstart",move:"touchmove",up:"touchend",click:"click"}),e}class za{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,s)));e.addEventListener(t,i,s);const r=()=>{ua(e.removeEventListener)&&e.removeEventListener(t,i,s)};return this.destroys.push(r),r}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}var $a=1e-6,Va="undefined"!=typeof Float32Array?Float32Array:Array;function Ha(){var e=new Va(16);return Va!=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 Ja(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 qa,Ka=function(e,t,i,s,r,o,a){var n=1/(t-i),l=1/(s-r),d=1/(o-a);return e[0]=-2*n,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)*n,e[13]=(r+s)*l,e[14]=(a+o)*d,e[15]=1,e};function Ya(e,t,i){var s=new Va(3);return s[0]=e,s[1]=t,s[2]=i,s}qa=new Va(3),Va!=Float32Array&&(qa[0]=0,qa[1]=0,qa[2]=0);class Qa{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,this.gl=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,s=i.createShader(e);return i.shaderSource(s,t),i.compileShader(s),i.getShaderParameter(s,i.COMPILE_STATUS)?s:(console.log("An error occurred compiling the shaders: "+i.getShaderInfoLog(s)),i.deleteShader(s),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 s=[];s=s.concat([0,1],[1,1],[1,0],[0,0]);const r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(s),e.STATIC_DRAW);const o=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,o);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{positions:i,position:t,texPosition:r,indices:o}}_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,s,r,o){let a=2*e/r-1,n=2*(o-t-s)/o-1,l=2*(e+i)/r-1,d=2*(o-t)/o-1;return[a,n,l,n,l,d,a,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,s,r){const o=this.gl;this._clear(),o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._ytexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,t,0,o.LUMINANCE,o.UNSIGNED_BYTE,i),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this._utexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,s),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this._vtexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,r),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}renderYUV(e,t,i){let s=i.slice(0,e*t),r=i.slice(e*t,e*t*5/4),o=i.slice(e*t*5/4,e*t*3/2);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,s),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,o),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}drawDom(e,t,i,s,r){const o=this.gl;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._rgbatexture),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,r),this._buffers.positions=this._calRect(i,s,r.width,r.height,e,t),this._drawScene(e,t,!1)}}const Xa=1,Za=2,en=4;class tn{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.isDestroyed=!1,this._initPipeline().then((e=>{this.isDestroyed||(this.pipeline=e,this.matrixGroupInfo=this._initMatrixGroupInfo(),this.matrixGroupInfo&&(this.hasInited=!0))}))}destroy(){this.isDestroyed=!1,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 s=new Float32Array([0,1,1,1,1,0,0,0]),r=e.createBuffer({size:s.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(r,0,s);const o=new Uint16Array([0,1,2,0,2,3]),a=e.createBuffer({size:o.byteLength,usage:window.GPUBufferUsage.INDEX|window.GPUBufferUsage.COPY_DST});return e.queue.writeBuffer(a,0,o),{positionBuffer:i,texpositionBuffer:r,indexBuffer:a}}_initPipeline(){return new Promise(((e,t)=>{const i=this.gpu.device,s=this.gpu.format,r={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 pixelType: i32;\n @group(1) @binding(2) var yTexture: texture_2d;\n @group(1) @binding(3) var uTexture: texture_2d;\n @group(1) @binding(4) var vTexture: texture_2d;\n @group(1) @binding(5) var uvTexture: texture_2d;\n @group(1) @binding(6) var rgbaTexture: 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 if(pixelType == 1){\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 } else if (pixelType == 2) {\n\n var y : f32= textureSample(yTexture, mySampler, vTexturePosition).r;\n var u : f32 = textureSample(uvTexture, mySampler, vTexturePosition).r;\n var v : f32 = textureSample(uvTexture, mySampler, vTexturePosition).g;\n\n return vec4(y, u, v, 1.0)*YUV2RGB;\n } else {\n\n return textureSample(rgbaTexture, mySampler, vTexturePosition);\n }\n\n }\n\n "}),entryPoint:"main",targets:[{format:s}]},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}};i.createRenderPipelineAsync(r).then((t=>{e(t)})).catch((e=>{t(e)}))}))}_initMatrixGroupInfo(){if(!this.gpu)return null;const e=this.gpu.device,t=this.pipeline,i=Ha();Ka(i,-1,1,-1,1,.1,100);const s=Ha();Ja(s);const r=Ha();!function(e,t,i,s){var r,o,a,n,l,d,h,c,u,p,f=t[0],m=t[1],g=t[2],y=s[0],A=s[1],b=s[2],v=i[0],_=i[1],w=i[2];Math.abs(f-v)<$a&&Math.abs(m-_)<$a&&Math.abs(g-w)<$a?Ja(e):(h=f-v,c=m-_,u=g-w,r=A*(u*=p=1/Math.hypot(h,c,u))-b*(c*=p),o=b*(h*=p)-y*u,a=y*c-A*h,(p=Math.hypot(r,o,a))?(r*=p=1/p,o*=p,a*=p):(r=0,o=0,a=0),n=c*a-u*o,l=u*r-h*a,d=h*o-c*r,(p=Math.hypot(n,l,d))?(n*=p=1/p,l*=p,d*=p):(n=0,l=0,d=0),e[0]=r,e[1]=n,e[2]=h,e[3]=0,e[4]=o,e[5]=l,e[6]=c,e[7]=0,e[8]=a,e[9]=d,e[10]=u,e[11]=0,e[12]=-(r*f+o*m+a*g),e[13]=-(n*f+l*m+d*g),e[14]=-(h*f+c*m+u*g),e[15]=1)}(r,Ya(0,0,0),Ya(0,0,-1),Ya(0,1,0));const o=e.createBuffer({size:64,usage:window.GPUBufferUsage.UNIFORM|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(o,0,s);const a=e.createBuffer({size:64,usage:window.GPUBufferUsage.UNIFORM|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(a,0,r);const n=e.createBuffer({size:64,usage:window.GPUBufferUsage.UNIFORM|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(n,0,i);return{modelMatrixBuffer:o,viewMatrixBuffer:a,projectMatrixBuffer:n,group:e.createBindGroup({label:"group0",layout:t.getBindGroupLayout(0),entries:[{binding:0,resource:{buffer:o}},{binding:1,resource:{buffer:a}},{binding:2,resource:{buffer:n}}]})}}_initTextureGroupInfo(e,t){const i=this.gpu.device,s=this.pipeline,r=i.createTexture({size:[e,t],format:"r8unorm",usage:window.GPUTextureUsage.TEXTURE_BINDING|window.GPUTextureUsage.COPY_DST|window.GPUTextureUsage.RENDER_ATTACHMENT}),o=i.createTexture({size:[e/2,t/2],format:"r8unorm",usage:window.GPUTextureUsage.TEXTURE_BINDING|window.GPUTextureUsage.COPY_DST|window.GPUTextureUsage.RENDER_ATTACHMENT}),a=i.createTexture({size:[e/2,t/2],format:"r8unorm",usage:window.GPUTextureUsage.TEXTURE_BINDING|window.GPUTextureUsage.COPY_DST|window.GPUTextureUsage.RENDER_ATTACHMENT}),n=i.createTexture({size:[e/2,t/2],format:"rg8unorm",usage:window.GPUTextureUsage.TEXTURE_BINDING|window.GPUTextureUsage.COPY_DST|window.GPUTextureUsage.RENDER_ATTACHMENT}),l=i.createTexture({size:[e,t],format:"rgba8unorm",usage:window.GPUTextureUsage.TEXTURE_BINDING|window.GPUTextureUsage.COPY_DST|window.GPUTextureUsage.RENDER_ATTACHMENT}),d=i.createBuffer({size:4,usage:window.GPUBufferUsage.UNIFORM|window.GPUBufferUsage.COPY_DST}),h=i.createSampler({magFilter:"linear",minFilter:"linear"}),c=i.createBindGroup({label:"group1",layout:s.getBindGroupLayout(1),entries:[{binding:0,resource:h},{binding:1,resource:{buffer:d}},{binding:2,resource:r.createView()},{binding:3,resource:o.createView()},{binding:4,resource:a.createView()},{binding:5,resource:n.createView()},{binding:6,resource:l.createView()}]});return{yTexture:r,uTexture:o,vTexture:a,uvTexture:n,rgbaTexture:l,pixelTypeBuffer:d,group:c}}_drawScene(){const e=this.gpu.device,t=this.gpu.context,i=e.createCommandEncoder(),s={colorAttachments:[{view:t.getCurrentTexture().createView(),clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"}],depthStencilAttachment:{view:this.depthTexture.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}},r=i.beginRenderPass(s);r.setPipeline(this.pipeline),r.setBindGroup(0,this.matrixGroupInfo.group),r.setBindGroup(1,this.textureGroupInfo.group),r.setVertexBuffer(0,this.buffers.positionBuffer),r.setVertexBuffer(1,this.buffers.texpositionBuffer),r.setIndexBuffer(this.buffers.indexBuffer,"uint16"),r.drawIndexed(6),r.end(),e.queue.submit([i.finish()])}renderYUV(e,t,i){if(!this.hasInited)return;let s=i.slice(0,e*t),r=i.slice(e*t,e*t*5/4),o=i.slice(e*t*5/4,e*t*3/2);const a=this.gpu.device;this.depthTexture||(this.depthTexture=this.gpu.device.createTexture({size:[e,t],format:"depth24plus",usage:window.GPUTextureUsage.RENDER_ATTACHMENT})),this.textureGroupInfo||(this.textureGroupInfo=this._initTextureGroupInfo(e,t)),a.queue.writeBuffer(this.textureGroupInfo.pixelTypeBuffer,0,new Uint32Array([Xa])),a.queue.writeTexture({texture:this.textureGroupInfo.yTexture},s,{bytesPerRow:e,rowsPerImage:t},[e,t]),a.queue.writeTexture({texture:this.textureGroupInfo.uTexture},r,{bytesPerRow:e/2,rowsPerImage:t/2},[e/2,t/2]),a.queue.writeTexture({texture:this.textureGroupInfo.vTexture},o,{bytesPerRow:e/2,rowsPerImage:t/2},[e/2,t/2]),this._drawScene()}renderYUV_NV12(e,t,i){if(!this.hasInited)return;const s=this.gpu.device;this.depthTexture||(this.depthTexture=this.gpu.device.createTexture({size:[e,t],format:"depth24plus",usage:window.GPUTextureUsage.RENDER_ATTACHMENT})),this.textureGroupInfo||(this.textureGroupInfo=this._initTextureGroupInfo(e,t));let r=i.slice(0,e*t),o=i.slice(e*t,e*t*3/2);s.queue.writeBuffer(this.textureGroupInfo.pixelTypeBuffer,0,new Uint32Array([Za])),s.queue.writeTexture({texture:this.textureGroupInfo.yTexture},r,{bytesPerRow:e,rowsPerImage:t},[e,t]),s.queue.writeTexture({texture:this.textureGroupInfo.uvTexture},o,{bytesPerRow:e,rowsPerImage:t/2},[e/2,t/2]),this._drawScene()}render(e){if(!this.hasInited)return;const t=this.gpu.device,i=e.displayWidth,s=e.displayHeight;this.depthTexture||(this.depthTexture=this.gpu.device.createTexture({size:[i,s],format:"depth24plus",usage:window.GPUTextureUsage.RENDER_ATTACHMENT})),this.textureGroupInfo||(this.textureGroupInfo=this._initTextureGroupInfo(i,s)),t.queue.writeBuffer(this.textureGroupInfo.pixelTypeBuffer,0,new Uint32Array([en])),t.queue.copyExternalImageToTexture({source:e},{texture:this.textureGroupInfo.rgbaTexture},[i,s]),this._drawScene()}clear(){}}class sn{constructor(e){this.player=e,this.TAG_NAME="SingleWatermark",this.configList=[],this.shadowRoot=null,this.shadowRootRealDom=null,this.shadowRootInnerDom=null,this.scale=1,this.isDynamic=!1,this._initDom(),this.player.debugLog(this.TAG_NAME,"int")}destroy(){this.configList=[],this.shadowRootInnerDom=null,this.isDynamic=!1,this.scale=1,this.shadowRoot&&(this.player.$container.removeChild(this.shadowRootRealDom),this.shadowRoot=null,this.shadowRootRealDom=null),this.player.debugLog(this.TAG_NAME,"destroy")}resize(){this.player.debugLog(this.TAG_NAME,"resize()"),"default"===this.player._opt.aspectRatio||ko()?this.player.getRenderType()===H?this._resizeDomForCanvas():this.player.getRenderType()===J&&this._resizeDomForVideo():this._resizeDomRatio()}_initDom(){const e=this.player.$container;let t=null;const i=document.createElement("div");i.setAttribute("style","pointer-events: none !important;display: block !important;"),t="function"==typeof i.attachShadow?i.attachShadow({mode:"open"}):i.shadowRoot?i.shadowRoot:i;const s=document.createElement("div");s.setAttribute("style","position: absolute; top: 0; left: 0; width: 0; height: 0;display: none;"),t.appendChild(s);const r=e.children,o=Math.floor(Math.random()*(r.length-1))+1;r[o]?e.insertBefore(i,r[o]):e.appendChild(i),this.shadowRootInnerDom=s,this.shadowRootRealDom=i,this.shadowRoot=t}update(e){this._removeDom();let t=[];Array.isArray(e)?t=e:aa(e)&&t.push(e);let i=t.map((e=>qo(e)));this.configList=i,this._updateDom()}_resizeDomForVideo(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;let t=e.width,i=e.height;const s=this.player._opt,r=this.player.getShowVideoRect();let o=r.height,a=r.width;const n=s.rotate;let l=(a-t)/2,d=(o-i)/2;270!==n&&90!==n||(t=e.height,i=e.width);const h=a/t,c=o/i;let u=h>c?c:h;s.isResize||h!==c&&(u=h+","+c),s.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===s.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===s.mirrorRotate?p+=" rotateY(180deg)":"vertical"===s.mirrorRotate&&(p+=" rotateX(180deg)"),this.scale=-1!==(""+u).indexOf(",")?h:u,this.shadowRootInnerDom.style.transform=p,this.shadowRootInnerDom.style.left=l+"px",this.shadowRootInnerDom.style.top=d+"px",this.shadowRootInnerDom.style.width=e.width+"px",this.shadowRootInnerDom.style.height=e.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,i=this.player.getShowVideoRect();let s=i.width,r=i.height,o=e.width,a=e.height;const n=t.rotate;let l=(s-o)/2,d=(r-a)/2;270!==n&&90!==n||(o=e.height,a=e.width);const h=s/o,c=r/a;let u=h>c?c:h;t.isResize||h!==c&&(u=h+","+c),t.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===t.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===t.mirrorRotate?p+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(p+=" 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=p,this.shadowRootInnerDom.style.left=l+"px",this.shadowRootInnerDom.style.top=d+"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),i=this.player.getShowVideoRect();let s=i.width,r=i.height,o=this.player.getControlHeight();const a=e.width/e.height,n=t[0]/t[1];if(a>n){const t=n*e.height/e.width;this.shadowRootInnerDom.style.width=100*t+"%",this.shadowRootInnerDom.style.height=`calc(100% - ${o}px)`,this.shadowRootInnerDom.style.padding=`0 ${(s-s*t)/2}px`}else{const t=e.width/n/e.height;this.shadowRootInnerDom.style.width="100%",this.shadowRootInnerDom.style.height=`calc(${100*t}% - ${o}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,Jo(e.left)&&(No(e.left)?t.style.left=e.left+"px":t.style.left=e.left),Jo(e.right)&&(No(e.right)?t.style.right=e.right+"px":t.style.right=e.right),Jo(e.top)&&(No(e.top)?t.style.top=e.top+"px":t.style.top=e.top),Jo(e.bottom)&&(No(e.bottom)?t.style.bottom=e.bottom+"px":t.style.bottom=e.bottom),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 s=e.polygon.color,r=e.polygon.lineWidth;if(i=i.sort(((e,t)=>(e.index||0)-(t.index||0))),e.polygon.fill){const s=document.createElement("div");s.style.position="absolute",s.style.width="100%",s.style.height="100%";const r="polygon("+i.map((e=>`${e.x}px ${e.y}px`)).join(", ")+")";s.style.clipPath=r,s.style.backgroundColor=e.polygon.fill,e.polygon.fillOpacity&&(s.style.opacity=e.polygon.fillOpacity),t.appendChild(s)}i.forEach(((e,o)=>{const a=document.createElement("div");if(o===i.length-1){const o=i[0],n={x1:e.x,y1:e.y,x2:o.x,y2:o.y,color:s,lineWidth:r};return this.settingLine(a,n),void t.appendChild(a)}const n=i[o+1],l={x1:e.x,y1:e.y,x2:n.x,y2:n.y,color:s,lineWidth:r};this.settingLine(a,l),t.appendChild(a)}))}this.isDynamic&&(this.shadowRootDynamicDom=t),this.shadowRootInnerDom.appendChild(t)}}))}settingLine(e,t){const i=t.x1,s=t.y1,r=t.x2,o=t.y2;var a=Math.sqrt((i-r)**2+(s-o)**2),n=180*Math.atan2(o-s,r-i)/Math.PI;e.style.backgroundColor=t.color,e.style.width=a+"px",e.style.height=t.lineWidth+"px",e.style.position="absolute",e.style.top=s+"px",e.style.left=i+"px",e.style.transform="rotate("+n+"deg)",e.style.transformOrigin="0 0"}remove(){this._removeDom()}_removeDom(){this.shadowRootInnerDom&&(this.shadowRootInnerDom.innerHTML="")}}class rn extends o{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){Jo(e.encTypeCode)&&(this.videoInfo.encType=xt[e.encTypeCode],this.videoInfo.encTypeCode=e.encTypeCode),Jo(e.encType)&&(this.videoInfo.encType=e.encType),Jo(e.width)&&(this.videoInfo.width=e.width),Jo(e.height)&&(this.videoInfo.height=e.height),Jo(this.videoInfo.encType)&&Jo(this.videoInfo.height)&&Jo(this.videoInfo.width)&&!this.init&&(this.player.emit(At.videoInfo,this.videoInfo),this.init=!0)}getVideoInfo(){return this.videoInfo}clearView(){this.tempContentList=[],this.tempAiContentList=[]}resize(){if(this.player.debugLog("CommonVideo","resize()"),"default"===this.player._opt.aspectRatio||ko()?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.debugLog("CommonVideo","_resizeRatio()");const e=this.player._opt.aspectRatio.split(":").map(Number),t=this.player.getShowVideoRect();let i=t.width,s=t.height,r=this.player.getControlHeight();const o=this.videoInfo,a=o.width/o.height,n=e[0]/e[1];if(this.getType()===H&&(this.$videoElement.style.left="0",this.$videoElement.style.top="0",this.$videoElement.style.transform="none"),this.getType()===J&&this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit="fill"),a>n){const e=n*o.height/o.width;this.$videoElement.style.width=100*e+"%",this.$videoElement.style.height=`calc(100% - ${r}px)`,this.$videoElement.style.padding=`0 ${(i-i*e)/2}px`}else{const e=o.width/n/o.height;this.$videoElement.style.width="100%",this.$videoElement.style.height=`calc(${100*e}% - ${r}px)`,this.$videoElement.style.padding=(s-s*e)/2+"px 0"}}play(){}pause(){}setRate(e){}getType(){return""}getCanvasType(){return""}getCurrentTime(){return 0}getStreamFps(){return this.streamFps}isPlaying(){return!0}isVideoPlaying(){return this.isPlaying()}getPlaybackQuality(){return null}setStreamFps(e){this.player.debugLog("CommonVideo","setStreamFps",e),this.streamFps=e}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempContentList=e,this.doAddContentToWatermark()}addAiContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempAiContentList=e,this.doAddAiContentToWatermark()}doAddContentToWatermark(){if(this.tempContentList.length>0){this.contentWatermark||(this.contentWatermark=new sn(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 sn(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}getReadyStateInited(){return!0}screenshotByCurrentWatermark(){}initCanvasViewSize(){}bindMediaStream(){}}var on="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0;function an(e,t,i){var s=new XMLHttpRequest;s.open("GET",e),s.responseType="blob",s.onload=function(){hn(s.response,t,i)},s.onerror=function(){console.error("could not download file")},s.send()}function nn(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function ln(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 dn=on.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),hn="object"!=typeof window||window!==on?function(){}:"download"in HTMLAnchorElement.prototype&&!dn?function(e,t,i){var s=on.URL||on.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?nn(r.href)?an(e,t,i):ln(r,r.target="_blank"):ln(r)):(r.href=s.createObjectURL(e),setTimeout((function(){s.revokeObjectURL(r.href)}),4e4),setTimeout((function(){ln(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(nn(e))an(e,t,i);else{var s=document.createElement("a");s.href=e,s.target="_blank",setTimeout((function(){ln(s)}))}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,s){if((s=s||open("","_blank"))&&(s.document.title=s.document.body.innerText="downloading..."),"string"==typeof e)return an(e,t,i);var r="application/octet-stream"===e.type,o=/constructor/i.test(on.HTMLElement)||on.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||r&&o||dn)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),s?s.location.href=e:location=e,s=null},n.readAsDataURL(e)}else{var l=on.URL||on.webkitURL,d=l.createObjectURL(e);s?s.location=d:location.href=d,s=null,setTimeout((function(){l.revokeObjectURL(d)}),4e4)}};function cn(e){return new Promise(((t,i)=>{navigator.gpu?navigator.gpu.requestAdapter().then((s=>{s?s.requestDevice().then((r=>{if(r){const o=e.getContext("webgpu");if(o){const e=navigator.gpu.getPreferredCanvasFormat();o.configure({device:r,format:e,alphaMode:"opaque"}),t({adapter:s,device:r,context:o,format:e})}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!!")}))}class un{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 s=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(s,"\n varying highp vec2 uv;\n uniform sampler2D texture;\n void main(void) {\n gl_FragColor = texture2D(texture, uv);\n }\n "),t.compileShader(s),!t.getShaderParameter(s,t.COMPILE_STATUS))throw t.getShaderInfoLog(s);const r=t.createProgram();if(t.attachShader(r,i),t.attachShader(r,s),t.linkProgram(r),!t.getProgramParameter(r,t.LINK_STATUS))throw t.getProgramInfoLog(r);t.useProgram(r);const o=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),t.STATIC_DRAW);const a=t.getAttribLocation(r,"xy");t.vertexAttribPointer(a,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(a);const n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n),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=r,this.buffer=o,this.vertexShader=i,this.fragmentShader=s,this.texture=n}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,this.gl=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 pn extends rn{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.isWcsWebgpu=!1,this.bitmaprenderer=null,this.renderType=null,this.proxyDestroyList=[],this._initCanvasRender()}destroy(){super.destroy(),this.proxyDestroyList.length>0&&(this.proxyDestroyList.forEach((e=>{e&&e()})),this.proxyDestroyList=[]),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.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height),this.context2D=null),this.renderType=null,this.isWebglContextLost=!1,this.isWcsWebgpu=!1,this.isWcsWebgl2=!1,this.videoInfo={width:"",height:"",encType:""},this.$videoElement.width=0,this.$videoElement.height=0,this.player.$container.removeChild(this.$videoElement),this.$videoElement=null,this.init=!1,this.off()}_initContext2D(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.context2D=this.$videoElement.getContext("2d",e)}_initContextGl(){if(this.player.events,this.contextGl=mo(this.$videoElement),!this.contextGl)throw this.player.debugError("CommonCanvasLoader","_initContextGl() createContextGL error"),new Error("CommonCanvasLoader and _initContextGl createContextGL error");this._bindContextGlEvents(),this.webglRender=new Qa(this.contextGl,this.player._opt.openWebglAlignment)}_initContextGl2(){if(this.contextGl=go(this.$videoElement),this.contextGl){this._bindContextGlEvents(2);try{this.webglRender=new un(this.$videoElement,this.contextGl)}catch(e){this.player.debugError("CommonCanvasLoader",`create webgl2Render error is ${e} and next use context2d.draw render`),this.contextGl=null,this.webglRender=null,this._initContext2D()}}else this.player.debugError("CommonCanvasLoader","_initContextGl2() createContextGL2 error")}_bindContextGlEvents(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const{proxy:t}=this.player.events,i=t(this.$videoElement,"webglcontextlost",(t=>{t.preventDefault(),this.player.debugError("canvasVideo","webglcontextlost error",t),this.isWebglContextLost=!0,this.webglRender&&(this.player.debugLog("CommonCanvasLoader","webglcontextlost error and destroy webglRender"),this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.player.debugLog("CommonCanvasLoader","webglcontextlost error and destroy webglRectRender"),this.webglRectRender.destroy(),this.webglRectRender=null),this.contextGl=null,setTimeout((()=>{if(this.player.debugLog("CommonCanvasLoader",`createContextGL() version ${e}`),1===e?this.contextGl=mo(this.$videoElement):2===e&&(this.contextGl=go(this.$videoElement)),this.player.debugLog("CommonCanvasLoader","createContextGL success"),this.contextGl&&this.contextGl.getContextAttributes){const t=this.contextGl.getContextAttributes();t&&t.stencil?(1===e?this.webglRender=new Qa(this.contextGl,this.player._opt.openWebglAlignment):2===e&&(this.webglRender=new un(this.$videoElement,this.contextGl)),this.isWebglContextLost=!1,this.player.debugLog("CommonCanvasLoader","webglcontextlost error reset and getContextAttributes().stencil is true")):(this.player.debugError("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(_t.webglContextLostError))}else this.player.debugError("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(_t.webglContextLostError)}),500)})),s=t(this.$videoElement,"webglcontextrestored",(e=>{e.preventDefault(),this.player.debugLog("CommonCanvasLoader","webglcontextrestored ",e)}));this.proxyDestroyList.push(i,s)}_initContextGPU(){cn(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new tn(e),this.player.debugLog("CommonCanvasLoader","webGPURender init success")):(this.player.debugWarn("CommonCanvasLoader","webGPURender init failed because context is null and next use webgl render"),this.renderType=pi,this._initContextGl()))})).catch((e=>{this.player.isDestroyedOrClosed()||(this.player.debugWarn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=pi,this._initContextGl())}))}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}screenshot(e,t,i,s){e=e||Ao(),s=s||kt.download;let r=.92;!ts[t]&&kt[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=ts[t]||ts.png,a=this.$videoElement.toDataURL(o,r);if(s===kt.base64)return a;{const t=yo(a);if(s===kt.blob)return t;if(s===kt.download){const i=o.split("/")[1];hn(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{na(e)&&(e={filename:e}),(e=e||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||Ao(),e.format=e.format?ts[e.format]:ts.png,e.quality=Number(e.quality)||.92,e.type=e.type||kt.download;const s=this.$videoElement.toDataURL(e.format,e.quality);Yo(s,e).then((i=>{if(e.type===kt.base64)t(s);else{const s=yo(i);if(e.type===kt.blob)t(s);else if(e.type===kt.download){t();const i=e.format.split("/")[1];hn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(na(e)){(e=(e={filename:e})||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||Ao(),e.format=e.format?ts[e.format]:ts.png,e.quality=Number(e.quality)||.92,e.type=e.type||kt.download;const s=this.$videoElement.toDataURL(e.format,e.quality);Xo(s,e).then((i=>{if(e.type===kt.base64)t(s);else{const s=yo(i);if(e.type===kt.blob)t(s);else if(e.type===kt.download){t();const i=e.format.split("/")[1];hn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}}))}screenshotByCurrentWatermark(e){}render(){}clearView(){super.clearView()}play(){}pause(){}_resize(){this.player.debugLog("canvasVideo","_resize()");const e=this.player._opt,t=this.player.getShowVideoRect();let i=t.width,s=t.height,r=this.$videoElement.width,o=this.$videoElement.height;const a=e.rotate;let n=(i-r)/2,l=(s-o)/2;270!==a&&90!==a||(r=this.$videoElement.height,o=this.$videoElement.width);const d=i/r,h=s/o;let c=d>h?h:d;Da(e.isResize)&&d!==h&&(c=d+","+h),e.isFullResize&&(c=d>h?d:h);let u="scale("+c+")";"none"===e.mirrorRotate&&a&&(u+=" rotate("+a+"deg)"),"level"===e.mirrorRotate?u+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(u+=" 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=u,this.$videoElement.style.left=n+"px",this.$videoElement.style.top=l+"px"}initFps(){}setStreamFps(e){}getStreamFps(){return 25}getType(){return H}getCanvasType(){let e=this.renderType===mi?mi:pi;return this.isWcsWebgl2?e=fi:this.isWcsWebgpu&&(e=mi),e}}class fn extends pn{constructor(e){super(e),this.TAG_NAME="CanvasVideo",this.yuvList=[],this.tempTextCanvas=null,this.tempTextCanvasCtx=null,this.player.debugLog("CanvasVideo","init")}async 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.debugLog("CanvasVideoLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=ui,this.player._opt.useWebGPU?cn(this.$videoElement).then((e=>{this.player.isDestroyedOrClosed()||(e?(this.webGPURender=new tn(e),this.isWcsWebgpu=!0,this.player.debugLog(this.TAG_NAME,"webGPURender init success")):(this.player.debugWarn(this.TAG_NAME,"webGPURender init failed because context is null and next use webgl render"),this._initWebglRenderForWCS()))})).catch((()=>{this.player.isDestroyedOrClosed()||(this.player.debugWarn(this.TAG_NAME,`createWebGPUContext error is ${e} and next use webgl render`),this._initWebglRenderForWCS())})):this._initWebglRenderForWCS()):this.player._opt.useMSE&&this.player._opt.mseUseCanvasRender?(this.renderType=yi,this._initContext2D()):this.player.isOldHls()&&this.player._opt.useCanvasRender?(this.renderType=Ai,this._initContext2D()):this.player.isWebrtcH264()&&this.player._opt.webrtcUseCanvasRender?(this.renderType=bi,this._initContext2D()):this._supportOffscreen()?(this.renderType=gi,this._bindOffscreen()):this.player._opt.useWebGPU?(this.renderType=mi,this._initContextGPU()):(this.renderType=pi,this._initContextGl())}_initWebglRenderForWCS(){this.player._opt.wcsUseWebgl2Render&&Ua()?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()}_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!==yi){const t={ts:e.ts||0,fps:!0};this.player.updateStats(t)}switch(this.renderType){case gi:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case pi:case mi:if(this.isWebglContextLost)return void this.player.debugWarn("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=Ao());const i=Ao();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=Ao());const i=Ao();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=Ao());const t=Ao();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(At.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(At.aiImageDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debugLog("CanvasVideoLoader",`doRender() and ai image detect result type is ${t.type} and drop`)}if(this.renderType===mi)try{if(!this.webGPURender)return void this.player.debugWarn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debugError("CanvasVideoLoader",`doRender webgpu render and error: ${e.toString()}`)}else if(this.renderType===pi)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debugError("CanvasVideoLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}break;case ui:if(this.webGPURender)this.webGPURender.render(e.videoFrame),ya(e.videoFrame);else if(this.webglRender)this.webglRender.render(e.videoFrame),ya(e.videoFrame);else if(this.context2D)if(ua(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.debugWarn("CanvasVideoLoader","doRender() and webcodecs context is lost");break;case yi:case Ai:case bi:this.context2D.drawImage(e.$video,0,0,this.$videoElement.width,this.$videoElement.height)}let t=e.ts||0;this.renderType===yi&&(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 gi:(function(e,t){const i=document.createElement("canvas");i.width=e,i.height=t;const s=window.createImageBitmap(i,0,0,e,t);return i.width=0,i.height=0,s})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case pi:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case mi:this.webGPURender.clear();break;case ui:this.webGPURender?this.webGPURender.clear():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 yi:case Ai:case bi: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(e){let{ctx:t,list:i}=e;t.save(),(i||[]).forEach((e=>{"text"===e.type?(t.font=`${e.fontSize||12}px Arial`,t.fillStyle=e.color||"green",t.fillText(e.text,e.x,e.y)):"rect"===e.type&&(t.strokeStyle=e.color||"green",t.lineWidth=e.lineWidth||2,t.strokeRect(e.x,e.y,e.width,e.height))})),t.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 r=e.width,o=e.height,a=(s=e.color||"#008000",[parseInt(s.substring(1,3),16)/255,parseInt(s.substring(3,5),16)/255,parseInt(s.substring(5,7),16)/255,1]),n=e.lineWidth||4;if(!r||!o)return;this.webglRectRender.drawBox({x:t,y:i,width:r,height:o,lineColor:a,lineWidth:n,canvasWidth:this.$videoElement.width,canvasHeight:this.$videoElement.height})}else if("text"===e.type){const s=e.text||"";if(!s)return;const r=e.fontSize||20,o=e.color||"#008000";this.tempTextCanvas||this._initTempTextCanvas(),this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvasCtx.font=`${r}px Arial`,this.tempTextCanvasCtx.fillStyle=o,this.tempTextCanvasCtx.textBaseline="top",this.tempTextCanvasCtx.fillText(s,0,0),this.webglRender.drawDom(this.$videoElement.width,this.$videoElement.height,t,i,this.tempTextCanvas)}var s}))}}class mn extends rn{constructor(e){super(),this.player=e,this.TAG_NAME="Video";const t=document.createElement("video");t.muted=!0,t.disablePictureInPicture=!0,Co()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.$videoElement=t,this.$canvasElement=null,this.canvasContext=null,this.mediaStream=null,this.vwriter=null,this.awriter=null,this.trackGenerator=null,this.audioTrackGenerator=null,this.fixChromeVideoFlashBug(),this.fixMobileAutoFullscreen(),this.resize(),this.eventListenList=[],this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.progressProxyDestroy=null,this.checkVideoCanplayTimeout=null,this.visibilityChangePlayTimeout=null,this.pauseDelayTimeout=null,this.replayTimeout=null,this.detectAndFixStuckPlaybackStartTime=null;const i=Na();this.supportVideoFrameCallbackHandle=null;const{proxy:s}=this.player.events,r=s(this.$videoElement,"canplay",(()=>{this.player.debugLog("Video","canplay"),this.player.isDestroyedOrClosed()||(this.canplayReceived=!0,this._delayPlay?(this.clearCheckVideoCanplayTimeout(),this._play(),Na()?this.supportVideoFrameCallbackHandle||(this.player.debugLog("Video","support requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.debugWarn("Video","not support requestVideoFrameCallback and use timeupdate event to update stats")):this.$videoElement.paused&&(this.player.isMSEPlaybackRateChangePause?(this.player.debugLog("Video",`canplay and video is paused and isMSEPlaybackRateChangePause is ${this.player.isMSEPlaybackRateChangePause} so next try to play`),this.player.isMSEPlaybackRateChangePause=!1,this._play()):this.player.isMSECurrentMoreThanBufferedPause?(this.player.debugLog("Video",`canplay and video is paused and isMSECurrentMoreThanBufferedPause is ${this.player.isMSECurrentMoreThanBufferedPause} so next try to play`),this.player.isMSECurrentMoreThanBufferedPause=!1,this._play()):(this.player.debugWarn("Video","canplay and video is paused and try to play"),this._play())))})),o=s(this.$videoElement,"waiting",(()=>{this.player.debugLog("Video","waiting")})),a=s(this.$videoElement,"loadedmetadata",(()=>{this.player.debugLog("Video","loadedmetadata")})),n=s(this.$videoElement,"timeupdate",(t=>{if(!this.player.isDestroyedOrClosed()){if(Da(i)){const t=parseInt(1e3*this.getCurrentTime(),10);if(e.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc())this.player.emit(At.timeUpdate,t),e.handleRender(),e.updateStats({fps:!0,ts:t,dts:t}),this.player.updateCurrentPts(t);else if(xa(this.player._opt.useMSE)&&Da(this.player._opt.mseUseCanvasRender))if(this.player.mseDecoder){let e=parseInt(1e3*this.getCurrentTime(),10)+(this.player.mseDecoder.firstRenderTime||0);this.player.updateCurrentPts(e)}else if(this.player._opt.mseDecoderUseWorker){let e=parseInt(1e3*this.getCurrentTime(),10)+(this.player._mseWorkerData.firstRenderTime||0);this.player.updateCurrentPts(e)}this.doAddContentToWatermark()}this.player.isMseDecoderUseWorker()&&(this.player.decoderWorker.updateVideoTimestamp(this.getCurrentTime()),this._handleUpdatePlaybackRate())}})),l=s(this.$videoElement,"error",(e=>{if(!this.$videoElement.error)return void this.player.debugError(this.TAG_NAME,"on error",e);let t={};if(this.player.isUseMSE()&&(t=this.player.getMseMineType()),this.player.debugError("Video","Error Code "+this.$videoElement.error.code+" "+ur[this.$videoElement.error.code]+"; Details: "+this.$videoElement.error.message+"; Video Info: "+JSON.stringify(this.videoInfo)+"; Mse Mine Type: "+t.video+"; "),this.player.isUseMSE()){this.$videoElement.error.code;const e=this.$videoElement.error.message;-1!==e.indexOf(pr)&&(this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc=!0),-1!==e.indexOf(fr)&&(this.player.isMSEAudioDecoderError=!0)}this.player.isHlsCanVideoPlay()})),d=s(this.$videoElement,"stalled",(()=>{this._detectAndFixStuckPlayback(!0)}));if(this.progressProxyDestroy=s(this.$videoElement,"progress",(()=>{this._detectAndFixStuckPlayback()})),this.eventListenList.push(r,o,n,l,a,d),this.player.isUseMSE()){const e=s(this.$videoElement,cs,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"ratechange and video is paused and sent isMSEPlaybackRateChangePause true"),this.player.isMSEPlaybackRateChangePause=!0)}));this.eventListenList.push(e),this.player.on(At.visibilityChange,(e=>{e&&(this.visibilityChangePlayTimeout=setTimeout((()=>{if(this.clearVisibilityChangePlayTimeout(),this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getBufferMaxDelayTime()&&(this.player.debugLog(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.player.debugLog("Video","init")}async destroy(){if(super.destroy(),this.clearCheckVideoCanplayTimeout(),this.clearReplayTimeout(),this.clearVisibilityChangePlayTimeout(),this.clearPauseDelayTimeout(),this._cancelVideoFrameCallback(),this._removeProgressProxyDestroy(),this.eventListenList.length&&(this.eventListenList.forEach((e=>{e()})),this.eventListenList=[]),this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="none",e.style.transform="none"}if(this.$canvasElement&&(this.$canvasElement.height=0,this.$canvasElement.width=0,this.$canvasElement=null),this.canvasContext=null,this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),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.audioTrackGenerator&&(this.audioTrackGenerator.stop(),this.audioTrackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.awriter&&(await this.awriter.close(),this.awriter=null),this._delayPlay=!1,this.mediaStream&&(this.mediaStream.getTracks().forEach((e=>e.stop())),this.mediaStream=null),this.off(),this.player.debugLog("Video","destroy")}_createScreenShotCanvas(){const e=document.createElement("canvas");this.$canvasElement=e,this.canvasContext=e.getContext("2d"),this.canvasContext.imageSmoothingEnabled=!0,this.canvasContext.imageSmoothingEnabled&&(this.canvasContext.imageSmoothingQuality="high")}bindMediaStream(){if(this.player.canVideoTrackWritter()&&Wo()&&zo()&&!this.mediaStream){this.player.debugLog(this.TAG_NAME,"bindMediaStream"),this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),this.player.useVideoPlayAudio()&&(this.audioTrackGenerator=new MediaStreamTrackGenerator({kind:"audio"}),this.awriter=this.audioTrackGenerator.writable.getWriter());const e=[this.trackGenerator];this.audioTrackGenerator&&e.push(this.audioTrackGenerator),this.mediaStream=new MediaStream(e),this.$videoElement.srcObject=this.mediaStream,this.vwriter=this.trackGenerator.writable.getWriter()}}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog("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=Ao(),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(At.timeUpdate,e),Da(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(At.timeUpdate,i),Da(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.videoInfo.encTypeCode||this.player.isOldHls()||(e.encTypeCode=Dt),this.updateVideoInfo(e)}this.player.updateStats({fps:!0,ts:i,dts:i}),this.player.updateCurrentPts(i),this.doAddContentToWatermark()}else if(xa(this.player._opt.useMSE)&&Da(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=Ro(),t=Co();(e||t)&&(this.player.debugLog("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"))}_detectAndFixStuckPlayback(e){const t=this.$videoElement,i=t.buffered,s=t.readyState;if(this.player.debugLog(this.TAG_NAME,`_detectAndFixStuckPlayback() and isStalled is ${e} ,canplayReceived is ${this.canplayReceived} ,videoReadyState is ${s} and bufferedLength is ${i.length} and startTime is ${i.length>0?i.start(0):"null"} and currentTime is ${t.currentTime}`),e||Da(this.canplayReceived)||s<2){if(i.length>0&&t.currentTime=1e3*this.player._opt.mseWaitVideoCanplayTimeout&&(this.player.debugWarn(this.TAG_NAME,`_detectAndFixStuckPlayback() and video is stuck and currentTime is ${t.currentTime} , diff is ${e} and timeout`),this.player.emit(_t.mseWaitVideoCanplayTimeout,e))}}else this._removeProgressProxyDestroy()}_removeProgressProxyDestroy(){this.progressProxyDestroy&&(this.player.debugLog(this.TAG_NAME,"_removeProgressProxyDestroy()"),this.progressProxyDestroy(),this.progressProxyDestroy=null),this.detectAndFixStuckPlaybackStartTime=null}_isNeedAddBackDropFilter(){const e=Do().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.debugLog("Video",`play and readyState: ${e}`),0===e)return this.player.debugLog("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()&&Da(this.isPlaying())){const e=this._getBufferStore();this.player.debugWarn("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.debugLog("Video","_play success"),this.isPlaying()?(this.player.emit(At.removeLoadingBgImage),this.isRetryPlayingTimes=0,this.isRetryPlaying=!1):this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100)})).catch((e=>{this.player.isDestroyedOrClosed()?this.player.debugLog("Video","_play error and player is isDestroyedOrClosed and return"):(this.player.debugLog("Video",`_play error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debugError("Video","_play error",e),this.isRetryPlaying=!1,this.replayTimeout=setTimeout((()=>{this.clearReplayTimeout(),this._replay()}),100))}))}_replay(){if(!this.isPlaying()&&Da(this.player.isDestroyedOrClosed())&&Da(this.isRetryPlaying)){if(this.isRetryPlaying=!0,this.isRetryPlayingTimes>=3){let e="";return void(this.player.isWebrtcH264()?(e=`_replay(webrtc H264) then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error`,this.player.debugError("Video",e),this.player.emitError(_t.videoElementPlayingFailedForWebrtc,e)):(e=`_replay then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error to use canvas render`,this.player.debugError("Video",e),this.player.emitError(_t.videoElementPlayingFailed,e)))}this.player.debugWarn("Video",`_play then but not playing and retry play and isRetryPlayingTimes is ${this.isRetryPlayingTimes}`),this._play(),this.isRetryPlayingTimes++}else this.player.debugLog("Video",`_replay() and isPlaying is ${this.isPlaying()} and isRetryPlaying is ${this.isRetryPlaying} and isDestroyedOrClosed is ${this.player.isDestroyedOrClosed()} and return;`)}pause(e){this.player.debugLog(this.TAG_NAME,"pause and isNow is "+e),this.isPlaying()&&(e?(this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()):this.pauseDelayTimeout=setTimeout((()=>{this.clearPauseDelayTimeout(),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,s){if(!this._canScreenshot())return this.player.debugWarn("Video",`screenshot failed, video is not ready and stats is ${this._getVideoReadyState()}`),null;e=e||Ao(),s=s||kt.download;let r=.92;!ts[t]&&kt[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const o=this.$videoElement;this.$canvasElement||this._createScreenShotCanvas();let a=this.$canvasElement;a.width=o.videoWidth,a.height=o.videoHeight,this.canvasContext.drawImage(o,0,0,a.width,a.height);const n=ts[t]||ts.png,l=a.toDataURL(n,r);if(this.canvasContext.clearRect(0,0,a.width,a.height),a.width=0,a.height=0,s===kt.base64)return l;{const t=yo(l);if(s===kt.blob)return t;if(s===kt.download){const i=n.split("/")[1];hn(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{if(na(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debugWarn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||Ao(),e.format=e.format?ts[e.format]:ts.png,e.quality=Number(e.quality)||.92,e.type=e.type||kt.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,Yo(o,e).then((i=>{if(e.type===kt.base64)t(o);else{const s=yo(i);if(e.type===kt.blob)t(s);else if(e.type===kt.download){t();const i=e.format.split("/")[1];hn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(na(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debugWarn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||Ao(),e.format=e.format?ts[e.format]:ts.png,e.quality=Number(e.quality)||.92,e.type=e.type||kt.download,this.$canvasElement||this._createScreenShotCanvas();let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const o=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,Xo(o,e).then((i=>{if(e.type===kt.base64)t(o);else{const s=yo(i);if(e.type===kt.blob)t(s);else if(e.type===kt.download){t();const i=e.format.split("/")[1];hn(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}screenshotByCurrentWatermark(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.debugWarn("Video","render() error, video is paused and readyState is "+e),4===e&&Da(this.isRenderRetryPlaying)){if(this.isRenderRetryPlaying=!0,this.isRenderRetryPlayingTimes>3){const t="render() error, video is paused and readyState is "+e+", retry times is "+this.isRenderRetryPlayingTimes+", emit error and use canvas render";return this.player.debugError("Video",t),void this.player.emitError(_t.videoElementPlayingFailed,t)}this.$videoElement.play().then((()=>{this.isRenderRetryPlayingTimes=0,this.isRenderRetryPlaying=!1,this.player.debugLog("Video","render() video is paused and replay success")})).catch((e=>{this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes++,this.player.debugLog("Video",`_play error render() error, video is paused and replay error and\n e.name is ${e.name},\n e.message is ${e.message},\n e.toString() is ${e.toString()}`),this.player.debugError("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 s=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=Ao());const t=Ao();t-this.prevAiFaceDetectTime>this.player._opt.aiFaceDetectInterval&&(s=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=Ao());const t=Ao();t-this.prevAiObjectDetectTime>this.player._opt.aiObjectDetectInterval&&(s=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=Ao());const t=Ao();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.debugLog("Video","render() and ai occlusion detect result is true"),this.player.emit(At.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(At.aiImageDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debugLog("Video",`render() and ai image detect result type is ${t.type} and drop`)}try{const r=(t=s,i={format:"I420",codedWidth:this.videoInfo.width,codedHeight:this.videoInfo.height,timestamp:1e3*e.ts},new VideoFrame(t,i));this.vwriter.write(r),ya(r)}catch(e){this.player.debugError("Video","render error",e),this.player.emitError(_t.wasmUseVideoRenderError,`code is ${e.code} and message is ${e.message}`)}}this.player.updateCurrentPts(e.ts||0),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}else this.player.debugWarn("Video","render and this.vwriter is null");var t,i}_resize(){this.player.debugLog("Video","_resize()");const e=this.player._opt,t=e.rotate,i=this.player.getShowVideoRect();let s=i.width,r=i.height;this.$videoElement.width=s,this.$videoElement.height=r,this.$videoElement.style.width=s+"px",this.$videoElement.style.height=r+"px",270!==t&&90!==t||(this.$videoElement.width=r,this.$videoElement.height=s,this.$videoElement.style.width=r+"px",this.$videoElement.style.height=s+"px");let o=(s-this.$videoElement.width)/2,a=(r-this.$videoElement.height)/2,n="contain";Da(e.isResize)&&(n="fill"),e.isFullResize&&(n="none");let l="";"none"===e.mirrorRotate&&t&&(l+=" rotate("+t+"deg)"),"level"===e.mirrorRotate?l+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(l+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit=n),this.$videoElement.style.transform=l,this.$videoElement.style.padding="0",this.$videoElement.style.left=o+"px",this.$videoElement.style.top=a+"px"}getType(){return J}getCurrentTime(){return this.$videoElement.currentTime}isPlaying(){return this.$videoElement&&Da(this.$videoElement.paused)&&Da(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}isVideoPlaying(){return this.isPlaying()}_canScreenshot(){return this.$videoElement&&this.$videoElement.readyState>=1}getPlaybackQuality(){let e=null;if(this.$videoElement){if(ua(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:Ao()};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)}clearReplayTimeout(){this.replayTimeout&&(clearTimeout(this.replayTimeout),this.replayTimeout=null)}clearVisibilityChangePlayTimeout(){this.visibilityChangePlayTimeout&&(clearTimeout(this.visibilityChangePlayTimeout),this.visibilityChangePlayTimeout=null)}clearPauseDelayTimeout(){this.pauseDelayTimeout&&(clearTimeout(this.pauseDelayTimeout),this.pauseDelayTimeout=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,t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),r>o)this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debugWarn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(_t.mediaSourceBufferedIsZeroError,"video.buffered is empty");if(s>1){const t=this._getPlaybackRate(i-s);e.playbackRate!==t&&(this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${t} `),e.playbackRate=t)}}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?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,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debugWarn(this.TAG_NAME,`checkVideoSourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debugWarn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}getBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}getReadyStateInited(){return this._getVideoReadyState()>=1}}class gn extends pn{constructor(e){super(e),this.TAG_NAME="CanvasPlaybackLoader",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(At.playbackPause,(e=>{e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()})),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){this._stopSync(),this.clear(),this._firstTimestamp=null,this.playing=!1,this.playbackRate=1,this.fps=1,this.preFps=1,this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}_initCanvasRender(){this.player._opt.useWCS?(this.renderType=ui,Ua()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useWebGPU?(this.renderType=mi,this._initContextGPU()):(this.renderType=pi,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(ua(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()===pi)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debugError(this.TAG_NAME,`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}else if(this.getCanvasType()===mi)try{if(!this.webGPURender)return void this.player.debugWarn(this.TAG_NAME,"doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debugError(this.TAG_NAME,`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.debugLog(this.TAG_NAME,"initFps, has calc fps"):(this.preFps=bo(this.player.playback.fps,1,100),this.fps=this.preFps)}setFps(e){e!==this.fps?(e>100&&this.player.debugWarn(this.TAG_NAME,"setFps max",e),e<0&&this.player.debugWarn(this.TAG_NAME,"setFps min",e),this.fps=bo(e,1,100),this.player.debugLog(this.TAG_NAME,`setFps ${this.preFps} -> ${this.fps}`),this.player.playback.isUseFpsRender&&this._sync()):this.player.debugLog(this.TAG_NAME,`setFps, same fps ${e}`)}setStreamFps(e){this.player.debugLog(this.TAG_NAME,"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.debugWarn(this.TAG_NAME,`buffer size is ${this.bufferSize}`),this._doPlay()),this.bufferList.push(t),!this._hasCalcFps){const e=_a(this.bufferList);null!==e&&e!==this.preFps&&(this.player.debugLog(this.TAG_NAME,`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.debugLog(this.TAG_NAME,"rate is",t),t<=1?this.setFps(this.preFps):(this.setFps(this.fps+Math.floor(t*this.playbackRate)),this.player.debugWarn(this.TAG_NAME,"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 yn{constructor(e){return new(yn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE?e.mseUseCanvasRender?fn:mn:e.isHls&&Da(e.supportHls265)||e.isWebrtc&&Da(e.isWebrtcH265)?e.useCanvasRender?fn:mn:e.isAliyunRtc?mn:e.useWCS?e.playType===w?gn:!e.useOffscreen&&e.wcsUseVideoRender?mn:fn:e.playType===w?gn:e.wasmUseVideoRender&&!e.useOffscreen?mn:fn}}class An extends o{constructor(e){super(),this.bufferList=[],this.player=e,this.$audio=null,this.scriptNode=null,this.workletProcessorNode=null,this.workletWorkerCloseTimeout=null,this.hasInitScriptNode=!1,this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:Fr}),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._prevVolume=null,this.playing=!1,this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1,this.hasAudio=!1,this.audioResumeStateTimeout=null,this.audioContextContextResumeLock=!1}async destroy(){return this.closeAudio(),this.resetInit(),this.clearAudioResumeStateTimeout(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.disconnect(),this.scriptNode.onaudioprocess=fo,this.scriptNode=null),await this._destroyWorklet(),this.workletProcessorNode&&(this.workletProcessorNode.disconnect(),this.workletProcessorNode.port.onmessage=fo,this.workletProcessorNode=null),this.audioBufferSourceNode&&(this.audioBufferSourceNode.stop(),this.audioBufferSourceNode=null),this.mediaStreamAudioDestinationNode&&(this.mediaStreamAudioDestinationNode.disconnect(),this.mediaStreamAudioDestinationNode=null),this.hasInitScriptNode=!1,this._prevVolume=null,this.audioContextContextResumeLock=!1,this.off(),!0}_destroyWorklet(){return new Promise(((e,t)=>{this.workletProcessorNode?(this.workletProcessorNode.port.postMessage({type:"destroy"}),this.workletWorkerCloseTimeout=setTimeout((()=>{this.player.debugLog(this.TAG_NAME,"send close and wait 10ms destroy directly"),this.workletWorkerCloseTimeout&&(clearTimeout(this.workletWorkerCloseTimeout),this.workletWorkerCloseTimeout=null),e()}),10)):e()}))}resetInit(){this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1}getAudioInfo(){return this.audioInfo}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encTypeCode=e.encTypeCode,this.audioInfo.encType=Ot[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(At.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value||this.isStateSuspended()}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){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=bo(e,0,1),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(At.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(At.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(At.mute,!0),this.gainNode.gain.value=e,this.player.emit(At.volumechange,this.player.volume),this.player.emit(At.volume,this.player.volume),this._prevVolume=e))}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){if(e&&this.isStateSuspended()){if(this.audioContextContextResumeLock)return;this.audioContextContextResumeLock=!0,this.audioContext.resume().then((()=>{this.player.emit(At.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})})).finally((()=>{this.audioContextContextResumeLock=!1})),this.audioResumeStateTimeout=setTimeout((()=>{this.clearAudioResumeStateTimeout(),this.audioContextContextResumeLock=!1,this.isStateSuspended()&&this.player.emit(At.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})}),1e3)}}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 bn{constructor(e,t,i,s){this.player=e,this.audio=t,this.channel=i,this.bufferSize=s}destroy(){this.buffer=null,this.channel=null}extract(e,t){let i=this.provide(t);for(let t=0;t=a){try{for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:0;const s=2*(t=t||0);i>=0||(i=(e.length-s)/2);const r=2*i;this.ensureCapacity(i+this._frameCount);const o=this.endIndex;this.vector.set(e.subarray(s,s+r),o),this._frameCount+=i}putBuffer(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]: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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=2*t,s=this.startIndex;e.set(this._vector.subarray(s,s+i)),this.receive(t)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=this.startIndex+2*t,r=2*i;e.set(this._vector.subarray(s,s+r))}ensureCapacity(){const e=parseInt(2*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0));if(this._vector.length0&&void 0!==arguments[0]?arguments[0]:0;this.ensureCapacity(this._frameCount+e)}rewind(){this._position>0&&(this._vector.set(this._vector.subarray(this.startIndex,this.endIndex)),this._position=0)}}class _n{constructor(e){e?(this._inputBuffer=new vn,this._outputBuffer=new vn):this._inputBuffer=this._outputBuffer=null}destroy(){this.clear(),this._outputBuffer&&(this._outputBuffer.destroy(),this._outputBuffer=null),this._inputBuffer&&(this._inputBuffer.destroy(),this._inputBuffer=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 wn extends _n{constructor(e){super(e),this.reset(),this._rate=1}destroy(){super.destroy()}set rate(e){this._rate=e}reset(){this.slopeCount=0,this.prevSampleL=0,this.prevSampleR=0}clone(){const e=new wn;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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e)return 0;const t=this._inputBuffer.vector,i=this._inputBuffer.startIndex,s=this._outputBuffer.vector,r=this._outputBuffer.endIndex;let o=0,a=0;for(;this.slopeCount<1;)s[r+2*a]=(1-this.slopeCount)*this.prevSampleL+this.slopeCount*t[i],s[r+2*a+1]=(1-this.slopeCount)*this.prevSampleR+this.slopeCount*t[i+1],a+=1,this.slopeCount+=this._rate;if(this.slopeCount-=1,1!==e)e:for(;;){for(;this.slopeCount>1;)if(this.slopeCount-=1,o+=1,o>=e-1)break e;const n=i+2*o;s[r+2*a]=(1-this.slopeCount)*t[n]+this.slopeCount*t[n+2],s[r+2*a+1]=(1-this.slopeCount)*t[n+1]+this.slopeCount*t[n+3],a+=1,this.slopeCount+=this._rate}return this.prevSampleL=t[i+2*e-2],this.prevSampleR=t[i+2*e-1],a}}const Sn=function(){};class En extends class{constructor(e){this._pipe=e}destroy(){}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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;for(;this.outputBuffer.frameCount2&&void 0!==arguments[2]?arguments[2]:Sn;super(t),this.callback=i,this.sourceSound=e,this.historyBufferSize=22050,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}destroy(){this.clear(),this.sourceSound.destroy(),this.sourceSound=null,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}get position(){return this._position}set position(e){if(e>this._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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]: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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.fillOutputBuffer(this.outputBufferPosition+t);const i=Math.min(t,this.outputBuffer.frameCount-this.outputBufferPosition);this.outputBuffer.extract(e,this.outputBufferPosition,i);const s=this.outputBufferPosition+i;return this.outputBufferPosition=Math.min(this.historyBufferSize,s),this.outputBuffer.receive(Math.max(s-this.historyBufferSize,0)),this._position+=i,i}handleSampleData(e){this.extract(e.data,4096)}clear(){super.clear(),this.outputBufferPosition=0}}const Tn=[[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]],kn=-10/1.5;class Ln extends _n{constructor(e){super(e),this._quickSeek=!0,this.midBufferDirty=!1,this.midBuffer=null,this.refMidBuffer=null,this.overlapLength=0,this.autoSeqSetting=!0,this.autoSeekSetting=!0,this._tempo=1,this.setParameters(44100,0,0,8)}destroy(){this.clear(),super.destroy()}clear(){super.clear(),this.clearMidBuffer(),this.refMidBuffer=null}clearMidBuffer(){this.midBufferDirty&&(this.midBufferDirty=!1),this.midBuffer=null}setParameters(e,t,i,s){e>0&&(this.sampleRate=e),s>0&&(this.overlapMs=s),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(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;e=this.sampleRate*t/1e3,e=e<16?16:e,e-=e%8,this.overlapLength=e,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+kn*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 Ln;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,s=0;for(this.preCalculateCorrelationReferenceStereo(),e=0,t=Number.MIN_VALUE;st&&(t=i,e=s);return e}seekBestOverlapPositionStereoQuick(){let e,t,i,s,r,o=0;for(this.preCalculateCorrelationReferenceStereo(),t=Number.MIN_VALUE,e=0,s=0,r=0;o<4;o+=1){let a=0;for(;Tn[o][a]&&(r=s+Tn[o][a],!(r>=this.seekLength));)i=this.calculateCrossCorrelationStereo(2*r,this.refMidBuffer),i>t&&(t=i,e=r),a+=1;s=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 s=this._inputBuffer.startIndex+2*(e+this.seekWindowLength-this.overlapLength);this.midBuffer.set(this._inputBuffer.vector.subarray(s,s+2*this.overlapLength)),this.skipFract+=this.nominalSkip,i=Math.floor(this.skipFract),this.skipFract-=i,this._inputBuffer.receive(i)}}}const Cn=function(e,t){return(e>t?e-t:t-e)>1e-10};class xn{constructor(){this.transposer=new wn(!1),this.stretch=new Ln(!1),this._inputBuffer=new vn,this._intermediateBuffer=new vn,this._outputBuffer=new vn,this._rate=0,this._tempo=0,this.virtualPitch=1,this.virtualRate=1,this.virtualTempo=1,this.calculateEffectiveRateAndTempo()}destroy(){this.clear(),this._inputBuffer.destroy(),this._intermediateBuffer.destroy(),this._outputBuffer.destroy(),this._inputBuffer=null,this._intermediateBuffer=null,this._outputBuffer=null}clear(){this.transposer.clear(),this.stretch.clear()}clone(){const e=new xn;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,Cn(this._tempo,e)&&(this.stretch.tempo=this._tempo),Cn(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 Dn{constructor(e,t,i){this.player=e,this.audio=t,this.soundTouch=new xn,this.soundTouch.tempo=1,this.soundTouch.rate=1,this.filter=new En(i,this.soundTouch)}destroy(){this.filter&&(this.filter.destroy(),this.filter=null),this.soundTouch&&(this.soundTouch.destroy(),this.soundTouch=null)}setRate(e){e!==this.soundTouch.rate&&(this.soundTouch.tempo=e)}provide(e){let t=new Float32Array(2*e),i=this.filter.extract(t,e),s=new Float32Array(i),r=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=Is,this.player.debugLog("AudioContext","destroy"),!0}isAudioPlaying(){return this.$audio&&Da(this.$audio.paused)&&Da(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.debugLog("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.debugLog("AudioContext",`play and readyState: ${e}`),!(0!==e||la()&&Ro()))return this.player.debugWarn("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.debugLog("AudioContext","_audioElementPlay success"),setTimeout((()=>{this.isAudioPlaying()||(this.player.debugWarn("AudioContext","play failed and retry play"),this._audioElementPlay())}),100),this.isAudioPlaying()&&(this.player.debugLog("AudioContext","play success and remove document click event listener"),document.removeEventListener("click",this._audioElementPlay.bind(this)))})).catch((e=>{this.player.debugError("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===Ps}getBufferListDuration(){return this.bufferList.length*this.oneBufferDuration}isMoreThanMinBufferDuration(){return this.getBufferListDuration()>=100*this.playbackRate}initProcessor(){this.processor=new bn(this.player,this,this.audioInfo.channels,this.audioBufferSize),this.rateProcessor=new Dn(this.player,this,this.processor)}getAutoAudioEngineType(){let e=this.player._opt.audioEngine||Is;const t=()=>{e=la()&&Co()?Ps:(Ro()&&this.player._opt.supportLockScreenPlayAudio||ba()&&this.supportAudioWorklet(),Is)};return this.player._opt.audioEngine?this.player._opt.audioEngine===Rs&&ba()&&this.supportAudioWorklet()?e=Is:this.player._opt.audioEngine===Ps?e=Ps:this.player._opt.audioEngine===Is?e=Is:t():t(),e}getAudioBufferSizeByType(){const e=this.engineType;this.player._opt.hasVideo;const t=this.player._opt.weiXinInAndroidAudioBufferSize;return e===Rs?1024:e===Ps?t||4800:1024}supportAudioWorklet(){return this.audioContext&&this.audioContext.audioWorklet&&"function"==typeof this.audioContext.audioWorklet.addModule}initScriptNode(){this.playing=!0,this.hasInitScriptNode||(this.initProcessor(),this.engineType===Rs?this.initWorkletScriptNode():this.engineType===Ps?this.initIntervalScriptNode():this.engineType===Is&&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||Da(this.playing)||this.isMute)return void(this.playing&&Da(this.isMute)&&this.player.debugLog("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 s=t[0][0],r=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.debugLog("AudioContext","initWorkletScriptNode() player is destroyed");if(!this.audioContext)return void this.player.debugWarn("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.debugError("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.debugError("AudioContext","workletProcessorNode is null")})})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(this.workletUrl),this.workletUrl=null,this.clearWorkletUrlTimeout=null}),oe)}tierDownToProcessScript(){this.player.debugLog("AudioContext","tierDownToProcessScript"),this.engineType=Is,this.audioBufferSize=this.getAudioBufferSizeByType(),this.initProcessScriptNode(),this.audioElementPlay()}handleScriptNodeCallback(e,t){let i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t=t||fo;let r=e.length;s&&(i=e,r=this.audioBufferSize);const o=this.audioInfo.channels;if(this.playing&&this.isMoreThanMinBufferDuration()){if(this.player._opt,this.player.openSyncAudioAndVideo()&&xa(this.player.visibility)){this.calcPlaybackRateBySync();const r=this.player.getAudioSyncVideoDiff();if(r>this.player._opt.syncAudioAndVideoDiff){const a=this.player.getCurrentVideoAndAudio();return this.player.debugWarn("AudioContext",`audioSyncVideoOption more than diff :${r},\n and video is ${a.video} ,\n and audio is ${a.audio} , waiting and bufferList is ${this.bufferList.length}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t()}}let a=this._provide(r);if(0===a.size)return Da(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debugWarn("AudioContext",`bufferList size is ${this.bufferList.length} outputBufferLength is ${r},and bufferItem.size is 0, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),void t();a&&a.ts&&(this.player.audioTimestamp=a.ts),s?i.port.postMessage({message:"data",buffer:a}):this.fillScriptNodeOutputBuffer(e,o,a),t()}else 0===this.bufferList.length&&this.playing&&Da(this.isMute)&&Da(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debugWarn("AudioContext",`bufferList size is 0 and outputBufferLength is ${r}, fill zero`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,o),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),s=e.getChannelData(1);i?0===i.size?(t.fill(0),s.fill(0)):(t.set(i.left),s.set(i.right)):(t.fill(0),s.fill(0))}}play(e,t){this.isMute||(this.hasInitScriptNode?(this.hasAudio=!0,this.player.latestAudioTimestamp=t,this.bufferList.push({buffer:e,ts:t}),Da(this.player.openSyncAudioAndVideo())&&this.calcPlaybackRateByBuffer()):this.player.debugWarn("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.debugWarn("AudioContext",`bufferList length ${this.bufferList.length} more than ${e}, and drop`),void this.clear();const t=this.player.getAudioSyncVideoDiff();if(this.getEngineType()===Ps){if(t<-this.player._opt.syncAudioAndVideoDiff){this.player.debugWarn("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.debugLog("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.debugLog("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.debugLog("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 s=Math.floor(t/this.oneBufferDuration),r=Math.floor(i/this.oneBufferDuration);if(this.bufferList.length>r)return this.player.debugWarn("AudioContext",`bufferList length ${this.bufferList.length} more than ${r}, and drop`),void this.clear();this.getEngineType()!==Ps&&(this.bufferList.length>s?(e=this.defaultPlaybackRate+.2,this.player.debugLog("AudioContext",`bufferList length ${this.bufferList.length} more than ${s}, speed up, playbackRate is ${e}`)):this.bufferList.length0?this.player.emit(At.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(At.mute,!0),this.$video.volume=e,this.player.emit(At.volumechange,this.player.volume),this.player.emit(At.volume,this.player.volume),this._prevVolume=e))}clear(){}play(e,t){const i=this.player.video.awriter;if(i)if(e.close)try{i.write(e),Aa(e)}catch(e){this.player.debugError("Video","play audio error",e)}else try{const s=function(e,t){const i={...t,format:"f32-planar",data:new Float32Array(0)};if(i.numberOfFrames=e[0].length,1===e.length)i.data=new Float32Array(e[0]);else if(2===e.length){const t=new Float32Array(e[0].length+e[1].length);t.set(e[0],0),t.set(e[1],e[0].length),i.data=t}return new AudioData(i)}(e,{sampleRate:Fr,numberOfChannels:this.audioInfo.channels,timestamp:1e3*t});i.write(s),Aa(s)}catch(e){this.player.debugError("Video","play audio error",e)}else this.player.debugWarn("Audio","play and this.awriter is null")}pause(){}resume(){}getEngineType(){return"audio"}isPlaybackRateSpeed(){return!1}setRate(){}initScriptNode(){}initScriptNodeDelay(){}audioEnabled(){this.mute(!1)}getAudioBufferSize(){return 2048}}class Pn extends Rn{constructor(e){super(e),this.delayTimeout=null,this.player.on(At.playbackPause,(e=>{this.listenPlaybackPause(e)})),this.player.debugLog("AudioPlaybackContext","init")}async destroy(){return this.delayTimeout&&(clearTimeout(this.delayTimeout),this.delayTimeout=null),await super.destroy(),this.player.debugLog("AudioPlaybackLoader","destroy"),!0}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.debugLog("AudioPlaybackContext","setRate",e),this.defaultPlaybackRate=e,this.updatePlaybackRate(e))}}class Bn extends Rn{constructor(e){super(e),this.TAG_NAME="AudioPlayerLoader",this.isAudioPlayer=!0,this.player.debugLog(this.TAG_NAME,"init")}async destroy(){return await super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy"),!0}play(e,t){Da(this.playing)||super.play(e,t)}pause(){this.player.debugLog(this.TAG_NAME,"pause"),this.playing=!1,this.clear()}resume(){this.player.debugLog(this.TAG_NAME,"resume"),this.playing=!0}}class Mn extends o{constructor(e){super(),this.TAG_NAME="AudioWebrtcPlayerLoader",this.$video=new Audio,this.player=e,this.init=!1,this._prevVolume=null,this.eventsDestroy=[],this._handleDocumentClickPlay=this._handleClickPlay.bind(this),this._initAudioEvents(),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){return this.resetInit(),this.off(),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this._prevVolume=null,this.$video&&(this.$video.pause(),this.$video.srcObject=null,this.$video=null),this.player.debugLog(this.TAG_NAME,"destroy"),!0}_initAudioEvents(){const{proxy:e}=this.player.events,t=e(this.$video,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t})}));this.eventsDestroy.push(t)}resetInit(){this.init=!1}_handleClickPlay(){this.$video&&(this.$video.play(),document.removeEventListener("click",this._handleDocumentClickPlay))}bindStream(e){this.$video.srcObject=e,this.$video.volume=1,this.$video.play().catch((e=>{this.player.debugWarn(this.TAG_NAME,"audio play error",e),document.addEventListener("click",this._handleDocumentClickPlay)}))}getEngineType(){return"audio"}get isPlaying(){return!0}get volume(){return xa(this.$video.muted)?0:this.$video.volume}get isMute(){return 0===this.$video.volume||xa(this.$video.muted)}mute(e){this.setVolume(e?0:this.player.lastVolume||.5)}setVolume(e){e=parseFloat(e),isNaN(e)||null===this.$video||(this.$video.muted&&(this.$video.muted=!1),e=bo(e,0,1),Ro()&&(this.$video.muted=0===e),null!==this._prevVolume&&this._prevVolume===e||(null===this._prevVolume?this.player.emit(At.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(At.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(At.mute,!0),this.$video.volume=e,this.player.emit(At.volumechange,this.player.volume),this.player.emit(At.volume,this.player.volume),this._prevVolume=e))}pause(){}resume(){}audioEnabled(){this.mute(!1)}}class Fn{constructor(e){return new(Fn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.playType===w?e.useMSE&&e.mseDecodeAudio?In:Pn:e.playType===_?e.isWebrtc?Mn:Bn:e.isHls&&Da(e.supportHls265)||e.isWebrtc&&Da(e.isWebrtcH265)||e.useMSE&&e.mseDecodeAudio||e.isAliyunRtc||e.useWCS&&e.wcsDecodeAudio||e.useWasm&&e.wasmPlayAudioUseVideoRender?In:Rn}}class Un extends o{constructor(e){super(),this.player=e,this.playing=!1,this._requestAbort=!1,this._status=dr,this.writableStream=null,this.abortController=new AbortController,this.streamRate=So((t=>{e.emit(At.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("FetchStream","init")}async destroy(){return this.abort(),await this._closeWritableStream(),this.off(),this._status=dr,this.streamRate=null,this.stopStreamRateInterval(),this.player.debugLog("FetchStream","destroy"),!0}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}async _closeWritableStream(){if(this.writableStream&&Da(this.writableStream.locked))try{await this.writableStream.close(),this.writableStream=null,this.player.debugLog("FetchStream","close writableStream success")}catch(e){this.player.debugLog("FetchStream","destroy and writableStream.close()",e)}}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player._times.streamStart=Ao();const s=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,s).then((e=>{if(this._requestAbort)return this._status=dr,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return this.player.debugError("FetchStream",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),this.abort(),void this.emit(_t.fetchError,`fetch response status is ${e.status} and ok is ${e.ok}`);if(this.emit(At.streamSuccess),this.startStreamRateInterval(),"undefined"!=typeof WritableStream)this.player.debugLog("FetchStream","use WritableStream() to read stream"),this.writableStream=new WritableStream({write:e=>this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debugLog("FetchStream","writableStream.write() and this.abortController.signal.aborted so return"),void(this._status=cr)):xa(this._requestAbort)?(this.player.debugLog("FetchStream","writableStream.write() and this._requestAbort is true so return"),this._status=cr,void this.abort()):"string"!=typeof e?(this._status=hr,this.streamRate&&this.streamRate(e.byteLength),i.dispatch(e)):void this.player.debugWarn("FetchStream",`writableStream.write() and value is "${e}" string so return`),close:()=>{this._status=cr,i.close(),this.emit(At.streamEnd,"fetch done")},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debugLog("FetchStream","writableStream.abort() and this.abortController.signal.aborted so return"),void(this._status=cr);i.close();const t=e.toString();-1===t.indexOf(ws)&&-1===t.indexOf(Ss)&&e.name!==Es&&(this.abort(),this.emit(_t.fetchError,e))}}),e.body.pipeTo(this.writableStream).catch((e=>{"AbortError"!==e.name&&this.player.debugLog("FetchStream","res.body.pipeTo() error",e.name,e.toString())}));else{this.player.debugLog("FetchStream","not support WritableStream and use getReader() to read stream");const t=e.body.getReader(),s=()=>{t.read().then((e=>{let{done:t,value:r}=e;return t?(this._status=cr,i.close(),void this.emit(At.streamEnd,"fetch done")):this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debugLog("FetchStream","reader.read() and this.abortController.signal.aborted so return"),void(this._status=cr)):xa(this._requestAbort)?(this.player.debugLog("FetchStream","reader.read() and this._requestAbort is true so return"),this._status=cr,void this.abort()):void("string"!=typeof r?(this._status=hr,this.streamRate&&this.streamRate(r.byteLength),i.dispatch(r),s()):this.player.debugWarn("FetchStream",`reader.read() and value is "${r}" string so return`))})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debugLog("FetchStream","reader.read().catch() and this.abortController.signal.aborted so return"),void(this._status=cr);i.close();const t=e.toString();-1===t.indexOf(ws)&&-1===t.indexOf(Ss)&&e.name!==Es&&(this.abort(),this.emit(_t.fetchError,e))}))};s()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(_t.fetchError,e))}))}abort(){if(this._requestAbort=!0,this.abortController)try{this.abortController.abort(),this.abortController=null,this.player.debugLog("FetchStream","abortController.abort() success")}catch(e){this.abortController=null,this.player.debugLog("FetchStream","abortController.abort() error",e)}}getStreamType(){return p}}class On extends o{constructor(e){super(),this.TAG_NAME="FetchWorkerLoader",this.player=e,this.playing=!1,this.fetchWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.destroyResolve=null,this.decoderWorkerCloseTimeout=null,this.streamRate=So((t=>{e.emit(At.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initFetchWorker(),e.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.fetchWorker?(this.player.debugLog(this.TAG_NAME,"send destroy"),this.fetchWorker.postMessage({cmd:rt}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn(this.TAG_NAME,"send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)):(this._destroy(),setTimeout((()=>{e()}),0))}))}_destroy(){this.off(),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._stopStreamRateInterval(),this.streamRate=null,this.fetchWorker&&(this.fetchWorker.terminate(),this.fetchWorker.onmessage=null,this.fetchWorker=null),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.player.debugLog(this.TAG_NAME,"destroy")}_initFetchWorker(){const e=Oa(function(){function e(e){return!0===e||"true"===e}const t="The user aborted a request",i="AbortError",s="AbortError",r="fetch",o="destroy",a="destroyEnd",n="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(){var e;this.abort(),this.writableStream&&(!1===(e=this.writableStream.locked)||"false"===e)&&this.writableStream.close().catch((e=>{})),this.writableStream=null,this._status=c}fetchStream(r){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=Object.assign({signal:this.abortController.signal},{headers:o.headers||{}});fetch(r,a).then((r=>{if(this._requestAbort)return this._status=c,void r.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(r))return this.abort(),void postMessage({cmd:l,message:`fetch response status is ${r.status} and ok is ${r.ok}`});if(postMessage({cmd:h}),"undefined"!=typeof WritableStream)this.writableStream=new WritableStream({write:t=>{if(!(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted))return e(this._requestAbort)?(this._status=p,void this.abort()):void("string"!=typeof t&&(this._status=u,postMessage({cmd:n,buffer:t},[t.buffer])));this._status=p},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 r=e.toString();-1===r.indexOf(t)&&-1===r.indexOf(i)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}}),r.body.pipeTo(this.writableStream).catch((e=>{}));else{const o=r.body.getReader(),a=()=>{o.read().then((t=>{let{done:i,value:s}=t;return i?(this._status=p,void postMessage({cmd:d})):this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?void(this._status=p):e(this._requestAbort)?(this._status=p,void this.abort()):void("string"!=typeof s&&(this._status=u,postMessage({cmd:n,buffer:s},[s.buffer]),a()))})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=p);const r=e.toString();-1===r.indexOf(t)&&-1===r.indexOf(i)&&e.name!==s&&(this.abort(),postMessage({cmd:l,message:e.toString()}))}))};a()}})).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.abortController)try{this.abortController.abort(),this.abortController=null}catch(e){this.abortController=null}}};self.onmessage=t=>{const i=t.data;switch(i.cmd){case r:f.isChrome=e(i.isChrome),f.fetchStream(i.url,JSON.parse(i.options));break;case o:f.destroy(),f=null,postMessage({cmd:a})}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),oe),s.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case at:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case dt:this.emit(At.streamSuccess),this._startStreamRateInterval();break;case lt:t.close(),this.emit(At.streamEnd,"fetch done");break;case nt:t.close(),this.emit(_t.fetchError,i.message);break;case ot:this._destroy()}},this.fetchWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player._times.streamStart=Ao(),this.fetchWorker.postMessage({cmd:st,url:e,isChrome:da(),options:JSON.stringify(t)})}getStreamType(){return p}}class Nn extends o{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=wt,this.wsUrl=null,this.requestAbort=!1,this.socketDestroyFnList=[],this.streamRate=So((t=>{e.emit(At.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("WebsocketStream","init")}async destroy(){this._closeWebSocket(),this.stopStreamRateInterval(),this.wsUrl=null,this.off(),this.player.debugLog("WebsocketStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebSocket(e){const t=this.player,{events:{proxy:i},demux:s}=t,r=e.protocols||[];this.socket=new WebSocket(this.wsUrl,r),this.socket.binaryType="arraybuffer";const o=i(this.socket,"open",(()=>{this.player.debugLog("WebsocketStream","socket open"),this.socketStatus=St,this.emit(At.streamSuccess),this.player.emit(At.websocketOpen),this.startStreamRateInterval()})),a=i(this.socket,"message",(e=>{"string"!=typeof e.data?(this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)):this.player.debugWarn("WebsocketStream",`websocket handle message message is "${e.data}" string so return`)})),n=i(this.socket,"close",(e=>{if(!this.player.isDestroyedOrClosed())return xa(this.requestAbort)?(this.requestAbort=!1,void this.player.debugLog("WebsocketStream","socket close and requestAbort is true")):void(this.socketStatus!==Tt?(this.player.debugLog("WebsocketStream",`socket close and code is ${e.code}`),1006===e.code&&this.player.debugError("WebsocketStream",`socket close abnormally and code is ${e.code}`),s.close(),this.socketStatus=Et,this.player.emit(At.websocketClose,e.code),this.emit(At.streamEnd,e.code)):this.player.debugLog("WebsocketStream","socket close and status is error, so return"))})),l=i(this.socket,"error",(e=>{if(this.player.isDestroyedOrClosed())return;if(xa(this.requestAbort))return this.requestAbort=!1,void this.player.debugLog("WebsocketStream","socket close and requestAbort is true");this.player.debugError("WebsocketStream","socket error",e),this.socketStatus=Tt;const t=e.isTrusted?"websocket user aborted":"websocket error";this.emit(_t.websocketError,t),s.close(),this.player.debugLog("WebsocketStream","socket error:",t)}));this.socketDestroyFnList.push(o,a,n,l)}_closeWebSocket(){!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState?this.socket&&this.player.debugLog("WebsocketStream",`_closeWebSocket() socket is null or socket status is ${this.socket&&this.socket.readyState}`):(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socketDestroyFnList.forEach((e=>e())),this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.socketStatus=wt,this.streamRate=null}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debugWarn("WebsocketStream","websocket handle message demux is null so return")}fetchStream(e,t){this.player._times.streamStart=Ao(),this.wsUrl=e,this._createWebSocket(t)}sendMessage(e){this.socket?this.socketStatus===St?this.socket.send(e):this.player.debugError("WebsocketStream",`websocket send message error and socket status is ${this.socketStatus}`):this.player.debugError("WebsocketStream","websocket send message socket is null")}getStreamType(){return m}}class jn extends o{constructor(e){super(),this.player=e,this.TAG_NAME="WebsocketWorkerLoader",this.wsUrl=null,this.socketStatus=wt,this.websocketWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.destroyResolve=null,this.decoderWorkerCloseTimeout=null,this.streamRate=So((t=>{e.emit(At.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initWebsocketWorker(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.websocketWorker?(this.player.debugLog(this.TAG_NAME,"send destroy"),this._closeWebSocket(),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn(this.TAG_NAME,"send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),e()}),2e3)):(this._destroy(),e())}))}_destroy(){this.off(),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._stopStreamRateInterval(),this.streamRate=null,this.websocketWorker&&(this.websocketWorker.terminate(),this.websocketWorker.onmessage=null,this.websocketWorker=null),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.wsUrl=null,this.player.debugLog(this.TAG_NAME,"destroy")}_initWebsocketWorker(){const e=Oa(function(){function e(e){return!0===e||"true"===e}const t={fetch:"fetch",sendMessage:"sendMessage",destroy:"destroy",destroyEnd:"destroyEnd",buffer:"buffer",websocketError:"websocketError",websocketClose:"websocketClose",websocketOpen:"websocketOpen"};let i=new class{constructor(){this.socket=null,this.wsUrl=null,this.requestAbort=!1}destroy(){!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState||(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socket.onopen=null,this.socket.onclose=null,this.socket.onerror=null,this.socket.onmessage=null,this.socket=null}fetchStream(e,t){this.wsUrl=e,this._createWebSocket(t)}sendMessage(e){this.socket&&1===this.socket.readyState&&this.socket.send(e)}_createWebSocket(e){const t=e.protocols||[];this.socket=new WebSocket(this.wsUrl,t),this.socket.binaryType="arraybuffer",this.socket.onopen=this._handleWebsocketOpen.bind(this),this.socket.onclose=this._handleWebsocketClose.bind(this),this.socket.onerror=this._handleWebsocketError.bind(this),this.socket.onmessage=this._handleWebsocketMessage.bind(this)}_handleWebsocketOpen(){postMessage({cmd:t.websocketOpen})}_handleWebsocketClose(i){e(this.requestAbort)?this.requestAbort=!1:postMessage({cmd:t.websocketClose,code:i.code})}_handleWebsocketError(i){e(this.requestAbort)?this.requestAbort=!1:postMessage({cmd:t.websocketError,isTrusted:i.isTrusted})}_handleWebsocketMessage(e){if("string"==typeof e.data)return;const i=new Uint8Array(e.data);postMessage({cmd:t.buffer,buffer:i},[i.buffer])}};self.onmessage=e=>{const s=e.data;switch(s.cmd){case t.fetch:i.fetchStream(s.url,s.options);break;case t.destroy:i.destroy(),i=null,postMessage({cmd:t.destroyEnd});break;case t.send:i.sendMessage(s.message)}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),oe),s.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case ft:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case yt:this.player.debugLog(this.TAG_NAME,"socket open"),this.socketStatus=St,this.emit(At.streamSuccess),this.player.emit(At.websocketOpen),this._startStreamRateInterval();break;case gt:if(this.player.isDestroyedOrClosed())return;if(this.socketStatus===Tt)return void this.player.debugLog(this.TAG_NAME,"socket close and status is error, so return");this.player.debugLog(this.TAG_NAME,`socket close and code is ${i.code}`),1006===i.code&&this.player.debugError(this.TAG_NAME,`socket close abnormally and code is ${i.code}`),t.close(),this.socketStatus=Et,this.player.emit(At.websocketClose,i.code),this.emit(At.streamEnd,i.code);break;case mt:if(this.player.isDestroyedOrClosed())return;this.player.debugError(this.TAG_NAME,"socket error"),this.socketStatus=Tt;const e=i.isTrusted?"websocket user aborted":"websocket error";this.emit(_t.websocketError,e),t.close(),this.player.debugLog(this.TAG_NAME,"socket error:",e);break;case pt:this._destroy()}},this.websocketWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_closeWebSocket(){this.websocketWorker&&this.websocketWorker.postMessage({cmd:ut})}fetchStream(e,t){this.player._times.streamStart=Ao(),this.wsUrl=e,this.websocketWorker&&this.websocketWorker.postMessage({cmd:ht,url:e,options:t})}sendMessage(e){this.websocketWorker&&this.websocketWorker.postMessage({cmd:ct,message:e})}getStreamType(){return m}}class Gn extends o{constructor(e){super(),this.player=e,e.debugLog("HlsStream","init")}async destroy(){return this.off(),this.player.debugLog("HlsStream","destroy"),!0}fetchStream(e){const{hlsDecoder:t,debug:i}=this.player;this.player._times.streamStart=Ao(),t.loadSource(e).then((()=>{this.player.debugLog("HlsStream","loadSource success"),this.emit(At.streamSuccess)})).catch((e=>{this.emit(_t.hlsError,e)}))}getStreamType(){return f}}class Wn extends o{constructor(e){super(),this.player=e,this.webrctUrl=null,e.debugLog("WebrtcStream","init")}async destroy(){return this.webrctUrl=null,this.off(),this.player.debugLog("WebrtcStream","destroy"),!0}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{webrtc:i,debug:s}=this.player;if(this.player._times.streamStart=Ao(),this.webrctUrl=e.replace("webrtc:",window.location.protocol),this.player.isWebrtcForM7S()&&-1===this.webrctUrl.indexOf("/webrtc/play")){const t=new URL(this.webrctUrl),i="/webrtc/play"+t.pathname;this.webrctUrl=t.origin+i+t.search,this.player.debugLog("WebrtcStream",`original url is ${e}, and new url is: ${this.webrctUrl}`)}i.loadSource(this.webrctUrl,t).then((()=>{this.player.debugLog("WebrtcStream","loadSource success"),this.emit(At.streamSuccess)})).catch((e=>{this.player.debugError("WebrtcStream","loadSource error",e),this.emit(_t.webrtcError,e)}))}getStreamType(){return g}}class zn extends o{constructor(e){super(),this.player=e,this.transport=null,this.wtUrl=null,this.streamRate=So((t=>{e.emit(At.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debugLog("WebTransportLoader","init")}async destroy(){return this.abort(),this.off(),this.player.debugLog("WebTransportLoader","destroy"),!0}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:s}=e;try{this.transport=new WebTransport(this.wtUrl),this.transport.ready.then((()=>{this.emit(At.streamSuccess),this.startStreamRateInterval(),this.transport.createBidirectionalStream().then((e=>{e.readable.pipeTo(new WritableStream(s.input))}))})).catch((e=>{this.player.debugWarn("WebTransportLoader","_createWebTransport-ready",e)}))}catch(e){this.player.debugWarn("WebTransportLoader","_createWebTransport",e)}}fetchStream(e){this.player._times.streamStart=Ao(),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 y}}class $n extends o{constructor(e){super(),this.player=e,this.workUrl=null,e.debugLog("WorkerStream","init")}async destroy(){return this.workUrl=null,this.off(),this.player.debugLog("WorkerStream","destroy"),!0}sendMessage(e){this.player.decoderWorker.workerSendMessage(e)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.workUrl=e,this.player._times.streamStart=Ao(),this.player.decoderWorker.workerFetchStream(e,t)}getStreamType(){const e=this.player._opt.protocol;return A+" "+(e===n?p:m)}}class Vn extends o{constructor(e){super(),this.TAG_NAME="AliyunRtcLoader",this.player=e,e.debugLog(this.TAG_NAME,"init")}async destroy(){return this.off(),this.player.debugLog(this.TAG_NAME,"destroy"),!0}fetchStream(e){const{aliyunRtcDecoder:t}=this.player;this.player._times.streamStart=Ao(),t.loadSource(e).then((()=>{this.player.debugLog(this.TAG_NAME,"loadSource success"),this.emit(At.streamSuccess)})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource error",e),this.emit(_t.aliyunRtcError,e)}))}getStreamType(){return b}}class Hn{constructor(e){return new(Hn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){const{protocol:t,useWasm:i,playType:s,useWCS:r,useMSE:o,demuxUseWorker:u,mainThreadFetchUseWorker:p}=e;return t===n?s===_?$n:s===v?i&&!ma(e)||u?$n:p?On:Un:r||o?u?$n:p?On:Un:$n:t===a?s===_?$n:s===v?i&&!ma(e)||u?$n:p?jn:Nn:r||o?u?$n:p?jn:Nn:$n:t===l?Gn:t===d?Wn:t===h?zn:t===c?Vn:void 0}}var Jn=zr((function(e){function t(e,r){if(!e)throw"First parameter is required.";r=new i(e,r=r||{type:"video"});var o=this;function a(t){t&&(r.initCallback=function(){t(),t=r.initCallback=null});var i=new s(e,r);(p=new i(e,r)).record(),u("recording"),r.disableLogs||console.log("Initialized recorderType:",p.constructor.name,"for output-type:",r.type)}function n(e){if(e=e||function(){},p){if("paused"===o.state)return o.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===o.state||r.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',o.state),r.disableLogs||console.log("Stopped recording "+r.type+" stream."),"gif"!==r.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]&&(o[e]=p[e])}));var i=p.blob;if(!i){if(!t)throw"Recording failed.";p.blob=i=t}if(i&&!r.disableLogs&&console.log(i.type,"->",y(i.size)),e){var s;try{s=h.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(o,s):e(s)}r.autoWriteToDisk&&d((function(e){var t={};t[r.type+"Blob"]=e,x.Store(t)}))}else"function"==typeof e.call?e.call(o,""):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 r.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 s=new FileReader;s.readAsDataURL(i),s.onload=function(t){e(t.target.result)}}else{var o=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);o.onmessage=function(t){e(t.data)},o.postMessage(i)}}function c(e){e=e||0,"paused"!==o.state?"stopped"!==o.state&&(e>=o.recordingDuration?n(o.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){o&&(o.state=e,"function"==typeof o.onStateChanged.call?o.onStateChanged.call(o,e):o.onStateChanged(e))}var p,f='It seems that recorder is destroyed or "startRecording" is not invoked for '+r.type+" recorder.";function m(){!0!==r.disableLogs&&console.warn(f)}var g={startRecording:function(t){return r.disableLogs||console.log("RecordRTC version: ",o.version),t&&(r=new i(e,t)),r.disableLogs||console.log("started recording "+r.type+" stream."),p?(p.clearRecordedData(),p.record(),u("recording"),o.recordingDuration&&c(),o):(a((function(){o.recordingDuration&&c()})),o)},stopRecording:n,pauseRecording:function(){p?"recording"===o.state?(u("paused"),p.pause(),r.disableLogs||console.log("Paused recording.")):r.disableLogs||console.warn("Unable to pause the recording. Recording state: ",o.state):m()},resumeRecording:function(){p?"paused"===o.state?(u("recording"),p.resume(),r.disableLogs||console.log("Resumed recording.")):r.disableLogs||console.warn("Unable to resume the recording. Recording state: ",o.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return o.recordingDuration=e,o.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){o.onRecordingStopped=e}}},clearRecordedData:function(){p?(p.clearRecordedData(),r.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(r.type,e):m()},setAdvertisementArray:function(e){r.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),f=!u&&!c&&!!navigator.webkitGetUserMedia||b()||-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 g=window.MediaStream;function y(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 s=t.split(".");t=s[0],i=s[1]}var r=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,r);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,r);var o=document.createElement("a");o.href=h.createObjectURL(e),o.download=r,o.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(o),"function"==typeof o.click?o.click():(o.target="_blank",o.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),h.revokeObjectURL(o.href)}function b(){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 v(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===g&&"undefined"!=typeof webkitMediaStream&&(g=webkitMediaStream),void 0!==g&&void 0===g.prototype.stop&&(g.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),t.invokeSaveAsDialog=A,t.getTracks=v,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,s=new EBML.Decoder,r=EBML.tools,o=new FileReader;o.onload=function(e){s.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var o=r.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([o,a],{type:"video/webm"});t(n)},o.readAsArrayBuffer(e)},t.bytesToSize=y,t.isElectron=b;var w={};function S(){if(p||m||c)return!0;var e,t,i=navigator.userAgent,s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10);return(f||u)&&(e=i.indexOf("Chrome"),s=i.substring(e+7)),-1!==(t=s.indexOf(";"))&&(s=s.substring(0,t)),-1!==(t=s.indexOf(" "))&&(s=s.substring(0,t)),r=parseInt(""+s,10),isNaN(r)&&(s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10)),r>=49}function E(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 s;if(v(e,"video").length&&v(e,"audio").length)navigator.mozGetUserMedia?(s=new g).addTrack(v(e,"audio")[0]):s=new g(v(e,"audio")),e=s;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 r,o=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return r&&r.mimeType?r.mimeType:e.mimeType||"video/webm"}function l(){o=[],r=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return o},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],o=[];var s=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",s),r&&(r=null),f&&!S()&&(s="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&s.mimeType&&(MediaRecorder.isTypeSupported(s.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType),s.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{r=new MediaRecorder(e,s),t.mimeType=s.mimeType}catch(t){r=new MediaRecorder(e)}s.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in r&&!1===r.canRecordMimeType(s.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType)),r.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+y(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:n(s)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(o.push(e.data),a(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)});t.ondataavailable(r)}},r.onstart=function(){d.push("started")},r.onpause=function(){d.push("paused")},r.onresume=function(){d.push("resumed")},r.onstop=function(){d.push("stopped")},r.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 (",s.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&&r&&"inactive"===r.state)return delete t.timeslice,void r.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==r.state&&"stopped"!==r.state&&r.stop())},"number"==typeof t.timeSlice?(a(),r.start(t.timeSlice)):r.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,r&&(this.recordingCallback=e,"recording"===r.state&&r.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(o,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){r&&"recording"===r.state&&r.pause()},this.resume=function(){r&&"paused"===r.state&&r.resume()},this.clearRecordedData=function(){r&&"recording"===r.state&&i.stop(l),l()},this.getInternalRecorder=function(){return r},this.blob=null,this.getState=function(){return r&&r.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function s(){if(r&&!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(s,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function T(e,i){if(!v(e,"audio").length)throw"Your stream has no audio tracks.";var s,r=this,o=[],a=[],n=!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,s=e.numberOfAudioChannels,r=e.leftBuffers.slice(0),o=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,l=e.desiredSampRate;function d(e,t,i){var s=Math.round(e.length*(t/i)),r=[],o=Number((e.length-1)/(s-1));r[0]=e[0];for(var a=1;a96e3)&&(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 b=!1;function _(){o=[],a=[],l=0,S=!1,n=!1,b=!1,f=null,r.leftchannel=o,r.rightchannel=a,r.numberOfAudioChannels=d,r.desiredSampRate=c,r.sampleRate=A,r.recordingLength=l,E={left:[],right:[],recordingLength:0}}function w(){s&&(s.onaudioprocess=null,s.disconnect(),s=null),m&&(m.disconnect(),m=null),_()}this.pause=function(){b=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();b=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,n&&this.stop(w),w()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var S=!1;s.onaudioprocess=function(e){if(!b)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),s.disconnect(),n=!1),n){S||(S=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),h=new Float32Array(t);if(o.push(h),2===d){var c=e.inputBuffer.getChannelData(1),p=new Float32Array(c);a.push(p)}l+=y,r.recordingLength=l,void 0!==i.timeSlice&&(E.recordingLength+=y,E.left.push(h),2===d&&E.right.push(p))}else m&&(m.disconnect(),m=null)},f.createMediaStreamDestination?s.connect(f.createMediaStreamDestination()):s.connect(f.destination),this.leftchannel=o,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=A,r.recordingLength=l;var E={left:[],right:[],recordingLength:0};function T(){n&&"function"==typeof i.ondataavailable&&void 0!==i.timeSlice&&(E.left.length?(p({desiredSampRate:c,sampleRate:A,numberOfAudioChannels:d,internalInterleavedLength:E.recordingLength,leftBuffers:E.left,rightBuffers:1===d?[]:E.right},(function(e,t){var s=new Blob([t],{type:"audio/wav"});i.ondataavailable(s),setTimeout(T,i.timeSlice)})),E={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 s,r,o,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&l&&l[2]&&(n=parseInt(l[2],10)),a&&n<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)s=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";s=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(o=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in s?e=s.captureStream(25):"mozCaptureStream"in s?e=s.mozCaptureStream(25):"webkitCaptureStream"in s&&(e=s.webkitCaptureStream(25));try{var a=new g;a.addTrack(v(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(r=new E(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 s=p.frames.length;p.frames.forEach((function(e,i){var r=s-i;t.disableLogs||console.log(r+"/"+s+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(r,s);var o=e.image.toDataURL("image/webp",1);p.frames[i].image=o})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){o=!1;var s=this;i&&r?r.stop(e):this.getWebPImages((function(){p.compile((function(i){t.disableLogs||console.log("Recording finished!"),s.blob=i,s.blob.forEach&&(s.blob=new Blob([],{type:"video/webm"})),e&&e(s.blob),p.frames=[]}))}))};var d=!1;function h(){p.frames=[],o=!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:(s=document.createElement("canvas"),r=s.getContext("2d"),s.width=e.width,s.height=e.height,r.drawImage(e,0,0),s),duration:i}),void(o&&setTimeout(c,t.frameInterval))}var s,r;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}),o&&setTimeout(c,t.frameInterval)}})}this.pause=function(){d=!0,r instanceof E&&r.pause()},this.resume=function(){d=!1,r instanceof E?r.resume():o||this.record()},this.clearRecordedData=function(){o&&this.stop(h),h()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),p=new C.Video(100)}function L(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-l;return t?o?(l=(new Date).getTime(),setTimeout(i,100)):(l=(new Date).getTime(),n.paused&&n.play(),c.drawImage(n,0,0,h.width,h.height),d.frames.push({duration:t,image:h.toDataURL("image/webp")}),void(r||setTimeout(i,e,e))):setTimeout(i,e,e)}function s(e,t,i,s,r){var o=document.createElement("canvas");o.width=h.width,o.height=h.height;var a=o.getContext("2d"),n=[],l=-1===t,d=t&&t>0&&t<=e.length?t:e.length,c=0,u=0,p=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),m=i&&i>=0&&i<=1?i:0,g=s&&s>=0&&s<=1?s:0,y=!1;!function(e){var t=-1,i=e.length;!function s(){++t!==i?setTimeout((function(){e.functionToLoop(s,t)}),1):e.callback()}()}({length:d,functionToLoop:function(t,i){var s,r,o,d=function(){!y&&o-s<=o*g||(l&&(y=!0),n.push(e[i])),t()};if(y)d();else{var A=new Image;A.onload=function(){a.drawImage(A,0,0,h.width,h.height);var e=a.getImageData(0,0,h.width,h.height);s=0,r=e.data.length,o=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({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 s(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*o[0].width:o[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),r.height=o[0].height*n}else r.width=a.width||360,r.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),o.forEach((function(e,t){u(e,t)})),setTimeout(c,a.frameInterval)}}function u(e,t){if(!s){var i=0,r=0,a=e.width,n=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&&(n=e.stream.height),o.drawImage(e,i,r,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(o,i,r,a,n,t)}}function p(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function f(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=p(e);t.stream=e,i.push(t)}}))}void 0!==n?h.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(h.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){c()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var s=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var r=p(t);r.stream=t,i.push(r),s.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var o=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),o.connect(a.audioDestination),s.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(s)}))},this.releaseStreams=function(){i=[],s=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,o.clearRect(0,0,r.width,r.height),r.stream&&(r.stream.stop(),r.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),f(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){s=!1;var t=function(){var e;f(),"captureStream"in r?e=r.captureStream():"mozCaptureStream"in r?e=r.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),r.stream=t,t}(),i=function(){h.AudioContextConstructor||(h.AudioContextConstructor=new h.AudioContext);a.audioContext=h.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.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=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.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,s,r=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 r;i=new R(e,t.elementClass||"multi-streams-mixer"),(r=[],e.forEach((function(e){v(e,"video").forEach((function(e){r.push(e)}))})),r).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()),(s=new E(i.getMixedStream(),t)).record()},this.stop=function(e){s&&s.stop((function(t){r.blob=t,e(t),r.clearRecordedData()}))},this.pause=function(){s&&s.pause()},this.resume=function(){s&&s.resume()},this.clearRecordedData=function(){s&&(s.clearRecordedData(),s=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(r){if(!r)throw"First parameter is required.";r instanceof Array||(r=[r]),e.concat(r),s&&i&&(i.appendStreams(r),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,s,r;function o(){return new ReadableStream({start:function(s){var r=document.createElement("canvas"),o=document.createElement("video"),a=!0;o.srcObject=e,o.muted=!0,o.height=t.height,o.width=t.width,o.volume=0,o.onplaying=function(){r.width=t.width,r.height=t.height;var e=r.getContext("2d"),n=1e3/t.frameRate,l=setInterval((function(){if(i&&(clearInterval(l),s.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(o,0,0),"closed"!==s._controlledReadableStream.state)try{s.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},o.play()}})}function a(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){a(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."),(s=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),s.addEventListener("message",(function(e){"READY"===e.data?(s.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),o().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):s.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(r||n.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(){n=[],r=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){s?(s.addEventListener("message",(function(t){null===t.data&&(s.terminate(),s=null,e&&e())})),s.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],r=!1,this.blob=null},this.blob=null}t.DiskStorage=x,t.GifRecorder=D,t.MultiStreamRecorder=I,t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var s=this;s.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{s.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{s.recordRTC.stopRecording((function(i){s.blob=s.recordRTC.getBlob(),s.blob&&s.blob.size?e(i):t("Empty blob.",s.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{s.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{s.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{s.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(s.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(s.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(s.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(s.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(s.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},t.WebAssemblyRecorder=P}));class qn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseSPS(e){let t=qn._ebsp2rbsp(e),i=new Vr(t);i.readByte();let s=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let o=qn.getProfileString(s),a=qn.getLevelString(r),n=1,l=420,d=[0,420,422,444],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)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(l=d[n]),h=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],_=s[e-1]):255===e&&(v=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(),E=t,T=2*e,w=E/T}}let k=1;1===v&&1===_||(k=v/_);let L=0,C=0;if(0===n)L=1,C=2-m;else{L=3===n?1:2,C=(1===n?2:1)*(2-m)}let x=16*(p+1),D=16*(f+1)*(2-m);x-=(g+y)*L,D-=(A+b)*C;let R=Math.ceil(x*k);return i.destroy(),i=null,{profile_string:o,level_string:a,bit_depth:h,ref_frames:u,chroma_format:l,chroma_format_string:qn.getChromaFormatString(l),frame_rate:{fixed:S,fps:w,fps_den:T,fps_num:E},sar_ratio:{width:v,height:_},codec_size:{width:x,height:D},present_size:{width:R,height:D}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let s=t[e].toString(16);s.length<2&&(s="0"+s),i+=s}let s=qn._ebsp2rbsp(e),r=new Vr(s);r.readByte();let o=r.readByte();r.readByte();let a=r.readByte();r.readUEG();let n=qn.getProfileString(o),l=qn.getLevelString(a),d=1,h=420,c=[0,420,422,444],u=8,p=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(d=r.readUEG(),3===d&&r.readBits(1),d<=3&&(h=c[d]),u=r.readUEG()+8,p=r.readUEG()+8,r.readBits(1),r.readBool())){let e=3!==d?8:12;for(let t=0;t0&&e<16?(S=t[e-1],E=i[e-1]):255===e&&(S=r.readByte()<<8|r.readByte(),E=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);k=r.readBool(),L=t,C=2*e,T=L/C}}let x=1;1===S&&1===E||(x=S/E);let D=0,R=0;if(0===d)D=1,R=2-A;else{D=3===d?1:2,R=(1===d?2:1)*(2-A)}let I=16*(g+1),P=16*(y+1)*(2-A);I-=(b+v)*D,P-=(_+w)*R;let B=Math.ceil(I*x);return r.destroy(),r=null,{codec_mimetype:i,profile_idc:o,level_idc:a,profile_string:n,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:qn.getChromaFormatString(h),frame_rate:{fixed:k,fps:T,fps_den:C,fps_num:L},sar_ratio:{width:S,height:E},codec_size:{width:I,height:P},present_size:{width:B,height:P}}}static _skipScalingList(e,t){let i=8,s=8,r=0;for(let o=0;o=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,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}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]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.sps,4),t.sps=s}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.pps,4),t.pps=s}return t}function Qn(e){let{sps:t,pps:i}=e,s=8+t.byteLength+1+2+i.byteLength,r=!1;const o=qn.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(r=!0,s+=4);let a=new Uint8Array(s);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let n=t.byteLength;a[6]=n>>>8,a[7]=255&n;let l=8;a.set(t,8),l+=n,a[l]=1;let d=i.byteLength;a[l+1]=d>>>8,a[l+2]=255&d,a.set(i,l+3),l+=3+d,r&&(a[l]=252|o.chroma_format_idc,a[l+1]=248|o.bit_depth_luma-8,a[l+2]=248|o.bit_depth_chroma-8,a[l+3]=0,l+=4);const h=[23,0,0,0,0],c=new Uint8Array(h.length+a.byteLength);return c.set(h,0),c.set(a,h.length),c}function Xn(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function Zn(e){return 31&e[0]}function el(e){return e===$t}function tl(e){return!function(e){return e===Nt||e===jt}(e)&&!el(e)}function il(e){return e===Gt}class sl{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H264 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=31&e[i],r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,s>=Jt||0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class rl{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const ol=e=>{let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)},al=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"}};class nl{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseVPS(e){let t=nl._ebsp2rbsp(e),i=new Vr(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=nl._ebsp2rbsp(e),i=new Vr(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=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(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),w=[],S=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<=16?(B=t[e-1],M=s[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(U=i.readBits(32),O=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool()){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();F=r;let o=!0,a=1;r||(o=i.readBool());let n=!1;if(o?i.readUEG():n=i.readBool(),n||(a=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 s=e[22],r=e.slice(23);for(let e=0;e0)for(let t=i;t<8;t++)e.read(2);s.sub_layer_profile_space=[],s.sub_layer_tier_flag=[],s.sub_layer_profile_idc=[],s.sub_layer_profile_compatibility_flag=[],s.sub_layer_progressive_source_flag=[],s.sub_layer_interlaced_source_flag=[],s.sub_layer_non_packed_constraint_flag=[],s.sub_layer_frame_only_constraint_flag=[],s.sub_layer_level_idc=[];for(let t=0;t{let t=ol(e),i=new Vr(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()}})(t),a=(e=>{let t=ol(e),i=new Vr(t);i.readByte(),i.readByte();let s=0,r=0,o=0,a=0;i.readBits(4);let n=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(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),w=[],S=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(B=t[e-1],M=s[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&&(s+=i.readUEG(),r+=i.readUEG(),o+=i.readUEG(),a+=i.readUEG()),i.readBool()&&(U=i.readBits(32),O=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();F=r;let o=!1,a=1;r||(o=i.readBool());let n=!1;if(o?i.readSEG():n=i.readBool(),n||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=ol(e),i=new Vr(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 s=i.readBool(),r=i.readBool(),o=1;return r&&s?o=0:r?o=3:s&&(o=2),{parallelismType:o}})(i);r=Object.assign(r,o,a,n);let l=23+(5+t.byteLength)+(5+s.byteLength)+(5+i.byteLength),d=new Uint8Array(l);d[0]=1,d[1]=(3&r.general_profile_space)<<6|(r.general_tier_flag?1:0)<<5|31&r.general_profile_idc,d[2]=r.general_profile_compatibility_flags_1||0,d[3]=r.general_profile_compatibility_flags_2||0,d[4]=r.general_profile_compatibility_flags_3||0,d[5]=r.general_profile_compatibility_flags_4||0,d[6]=r.general_constraint_indicator_flags_1||0,d[7]=r.general_constraint_indicator_flags_2||0,d[8]=r.general_constraint_indicator_flags_3||0,d[9]=r.general_constraint_indicator_flags_4||0,d[10]=r.general_constraint_indicator_flags_5||0,d[11]=r.general_constraint_indicator_flags_6||0,d[12]=60,d[13]=240|(3840&r.min_spatial_segmentation_idc)>>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|ei,d[24]=0,d[25]=1,d[26]=(65280&t.byteLength)>>8,d[27]=(255&t.byteLength)>>0,d.set(t,28),d[23+(5+t.byteLength)+0]=128|ii,d[23+(5+t.byteLength)+1]=0,d[23+(5+t.byteLength)+2]=1,d[23+(5+t.byteLength)+3]=(65280&s.byteLength)>>8,d[23+(5+t.byteLength)+4]=(255&s.byteLength)>>0,d.set(s,23+(5+t.byteLength)+5),d[23+(5+t.byteLength+5+s.byteLength)+0]=128|ri,d[23+(5+t.byteLength+5+s.byteLength)+1]=0,d[23+(5+t.byteLength+5+s.byteLength)+2]=1,d[23+(5+t.byteLength+5+s.byteLength)+3]=(65280&i.byteLength)>>8,d[23+(5+t.byteLength+5+s.byteLength)+4]=(255&i.byteLength)>>0,d.set(i,23+(5+t.byteLength+5+s.byteLength)+5);const h=[28,0,0,0,0],c=new Uint8Array(h.length+d.byteLength);return c.set(h,0),c.set(d,h.length),c}function ul(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function pl(e){return(126&e[0])>>1}function fl(e){return!function(e){return e>=32&&e<=40}(e)}function ml(e){return e>=16&&e<=21}class gl{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H265 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=e[i]>>1&63,r=(128&e[i])>>>7,o=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=o,0===r&&(t={type:s,data:e.subarray(i,o)})}return t}}class yl{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}class Al extends o{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===Dt}get isH265(){return this.codecId===Rt}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,s){}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 s=e.slice(5);if(this.codecId=t,this.metaInfo.avcc=s,t===Dt)i=Yn(s);else if(t===Rt){i=function(e){let t=23;const i=e[t];if((63&i)!==ei)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and vpsTag is ${i}`),{};t+=2,t+=1;const s=e[t+1]|e[t]<<8;t+=2;const r=e.slice(t,t+s);t+=s;const o=e[t];if((63&o)!==ii)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and sps tag is ${o}`),{};t+=2,t+=1;const a=e[t+1]|e[t]<<8;t+=2;const n=e.slice(t,t+a);t+=a;const l=e[t];if((63&l)!==ri)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([a>>>24&255,a>>>16&255,a>>>8&255,255&a]),u=new Uint8Array([d>>>24&255,d>>>16&255,d>>>8&255,255&d]),p=new Uint8Array([s>>>24&255,s>>>16&255,s>>>8&255,255&s]),f=new Uint8Array(a+4);f.set(c,0),f.set(n,4);const m=new Uint8Array(d+4);m.set(u,0),m.set(h,4);const g=new Uint8Array(s+4);return g.set(p,0),g.set(r,4),{sps:f,pps:m,vps:g}}(s);const t=ll(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 s=null;t===Bt?(s=function(e){let t={},i=new io(e);return i.read(16),t.object_type=so(i),t.sample_rate=ro(i,t),t.chan_config=i.read(4),t.chan_config{r.onload=function(e){i.decode(this.result).forEach((function(e){t.read(e)})),t.stop();const r=s.makeMetadataSeekable(t.metadatas,t.duration,t.cues),a=this.result.slice(t.metadataSize),n=new Blob([r,a],{type:"video/webm"});o(n)},r.readAsArrayBuffer(e)}))}startRecord(){const e={type:"video",mimeType:"video/webm;codecs=h264",timeSlice:1e3,onTimeStamp:e=>{this.player&&this.player.debugLog("RecorderRTC","record timestamp :"+e),null===this._startRecordingTimestamp&&(this._startRecordingTimestamp=e),this._recordingTimestamp=(e-this._startRecordingTimestamp)/1e3},ondataavailable:e=>{this.totalByteLength+=e.size,this.player&&this.player.debugLog("RecorderRTC","ondataavailable",e.size)},disableLogs:!this.player._opt.debug};try{let t=null;if(this.player.getRenderType()===H)t=this.player.video.$videoElement.captureStream(25),this.player.debugLog(this.TAG_NAME,"startRecord and render type is canvas and use captureStream");else if(this.player.video.mediaStream)t=this.player.video.mediaStream,this.player.debugLog(this.TAG_NAME,"startRecord and video mediaStream");else{if(Da(this._startCanvasRender()))return void this.player.emitError(At.recordCreateError,"startCanvasRender error");this.player.isOldHls()||this.player._opt.useMSE||this.player._opt.useWCS?t=this.canvasElement.captureStream(25):this.player.isWebrtcH264()?t=this.player.webrtc.videoStream:this.player.isAliyunRtc()&&(t=this.canvasElement.captureStream(25)),this.player.debugLog(this.TAG_NAME,"startRecord and use local canvas render video and captureStream")}if(!t)return this.player.debugError("RecorderRTC","startRecord error and can not create stream"),void this.player.emitError(At.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 i=e.getAudioTracks()[0];i&&i.enabled&&t.addTrack(i)}}this.recorder=Jn(t,e)}catch(e){return this.player.debugError("RecorderRTC","startRecord error",e),void this.player.emitError(At.recordCreateError,e)}this.recorder&&(this._isRecording=!0,this.player.emit(At.recording,!0),this.recorder.startRecording(),this.player.debugLog("RecorderRTC","start recording"),this.player.emit(At.recordStart),this.startRecordingInterval())}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(At.recordingTimestamp,this._recordingTimestamp)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Lt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{this.recorder&&this._isRecording||s("recorder is not ready"),t&&this.setFileName(t),this.recorder.stopRecording((()=>{this.player.debugLog("RecorderRTC","stop recording");const t=(this.fileName||Ao())+"."+E;if(this.player._opt.recordWebMSupportSeek);else{if(e===Ct){const e=this.recorder.getBlob();i(e),this.player.emit(At.recordBlob,e)}else i(),this.recorder.save(t);this.player.emit(At.recordEnd),this._reset(),this.player.emit(At.recording,!1)}}))}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.recorder||!this._isRecording)return e();this.recorder.stopRecording((()=>{this._reset(),this.player.emit(At.recording,!1),this.player.emit(At.recordCancel),e()}))}))}getToTalByteLength(){return this.totalByteLength}getTotalDuration(){return this.recordTime}getType(){return E}initMetaData(){}_startCanvasRender(){return this._initCanvasRender(),this.canvasElement?(Na()?(this.player.debugLog(this.TAG_NAME,"use video frame callback"),this.supportVideoFrameCallbackHandle=this.player.video.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):(this.player.debugLog(this.TAG_NAME,"use setInterval"),this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.canvasElementCtx&&this.canvasElementCtx.drawImage(this.player.video.$videoElement,0,0,this.canvasElement.width,this.canvasElement.height)}),40)),!0):(this.player.debugError(this.TAG_NAME,"canvasElement is null"),!1)}_initCanvasRender(){const e=this.player.getVideoInfo();!this.canvasElement&&e&&(this.canvasElement=document.createElement("canvas"),this.canvasElementCtx=this.canvasElement.getContext("2d"),e.width&&e.height&&(this.canvasElement.width=e.width,this.canvasElement.height=e.height))}_removeCanvasRender(){this.canvasElementCtx&&(this.canvasElementCtx.clearRect(0,0,this.canvasElement.width,this.canvasElement.height),this.canvasElementCtx=null),this.canvasElement&&(this.canvasElement.width=0,this.canvasElement.height=0,this.canvasElement=null)}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_stopSupportVideoFrameCallback(){this.supportVideoFrameCallbackHandle&&this.player.video.$videoElement&&(this.player.video.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null)}videoFrameCallback(){this.player.isDestroyedOrClosed()?this.player.debugLog(this.TAG_NAME,"videoFrameCallback() player is destroyed"):(this.canvasElementCtx&&this.canvasElementCtx.drawImage(this.player.video.$videoElement,0,0,this.canvasElement.width,this.canvasElement.height),this.supportVideoFrameCallbackHandle=this.player.video.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)))}}class vl{static init(){vl.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 vl.types)vl.types.hasOwnProperty(e)&&(vl.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=vl.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,s=Array.prototype.slice.call(arguments,1),r=s.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 o=8;for(let e=0;e=Math.pow(2,32)-1?(o=16,a=new Uint8Array(i+o),a.set(new Uint8Array([0,0,0,1]),0),a.set(vl.types.mdat,4),a.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)):(a=new Uint8Array(i+o),a[0]=i+8>>>24&255,a[1]=i+8>>>16&255,a[2]=i+8>>>8&255,a[3]=i+8&255,a.set(vl.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 vl.box(vl.types.trak,vl.tkhd(e),vl.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return"video"===e.type?vl.box(vl.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,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0])):"audio"===e.type?vl.box(vl.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,1,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])):void 0}static edts(e,t){return vl.box(vl.types.edts,vl.elst(e,t))}static elst(e,t){let i=0;for(let s=0;s>>24&255,i>>>16&255,i>>>8&255,255&i,255,255,255,255,0,1,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s,0,0,0,0,0,1,0,0]))}static mdia(e){return vl.box(vl.types.mdia,vl.mdhd(e),vl.hdlr(e),vl.minf(e))}static mdhd(e){let t=e.timescale/e.refSampleDuration,i=t*e.duration/e.timescale;return vl.box(vl.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="audio"===e.type?vl.constants.HDLR_AUDIO:vl.constants.HDLR_VIDEO,vl.box(vl.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?vl.box(vl.types.smhd,vl.constants.SMHD):vl.box(vl.types.vmhd,vl.constants.VMHD),vl.box(vl.types.minf,t,vl.dinf(),vl.stbl(e))}static dinf(){return vl.box(vl.types.dinf,vl.box(vl.types.dref,vl.constants.DREF))}static stbl(e){let t=e.samples,i=[{No:1,num:0,sampleDelte:1,chunkNo:1,duration:t[0].duration}],s=[t[0].duration],r=t.length;for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+8*t);r.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]),s),s+=8;return vl.box(vl.types.stts,r)}static stss(e){let t=[],i=e.length;for(let s=0;s>>24&255,s>>>16&255,s>>>8&255,255&s]),o=r.byteLength,a=new Uint8Array(o+4*s);a.set(r,0);for(let e=0;e>>24&255,t[e]>>>16&255,t[e]>>>8&255,255&t[e]]),o),o+=4;return vl.box(vl.types.stss,a)}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]),s=i.byteLength,r=new Uint8Array(s+12*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t,o>>>24&255,o>>>16&255,o>>>8&255,255&o,a>>>24&255,a>>>16&255,a>>>8&255,255&a]),s),s+=12}return vl.box(vl.types.stsc,r)}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]),s=i.byteLength,r=new Uint8Array(s+4*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t]),s),s+=4}return vl.box(vl.types.stsz,r)}static stco(e,t){let i=t[0].chunkOffset;return vl.box(vl.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?vl.box(vl.types.stsd,vl.constants.STSD_PREFIX,vl.mp3(e)):vl.box(vl.types.stsd,vl.constants.STSD_PREFIX,vl.mp4a(e)):"avc"===e.videoType?vl.box(vl.types.stsd,vl.constants.STSD_PREFIX,vl.avc1(e)):vl.box(vl.types.stsd,vl.constants.STSD_PREFIX,vl.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.sampleRate,s=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 vl.box(vl.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.sampleRate,s=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 vl.box(vl.types.mp4a,s,vl.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=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 vl.box(vl.types.esds,s)}static avc1(e){let t=e.avcc,i=e.codecWidth,s=e.codecHeight,r=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,s>>>8&255,255&s,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 vl.box(vl.types.avc1,r,vl.box(vl.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 vl.box(vl.types.hvc1,r,vl.box(vl.types.hvcC,t))}static mvex(e){return vl.box(vl.types.mvex,vl.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 vl.box(vl.types.trex,i)}static moof(e,t){return vl.box(vl.types.moof,vl.mfhd(e.sequenceNumber),vl.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 vl.box(vl.types.mfhd,t)}static traf(e,t){let i=e.id,s=vl.box(vl.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=vl.box(vl.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=vl.sdtp(e),a=vl.trun(e,o.byteLength+16+16+8+16+8+8);return vl.box(vl.types.traf,s,r,a,o)}static sdtp(e){let t=e.samples||[],i=t.length,s=new Uint8Array(4+i);for(let e=0;e>>24&255,s>>>16&255,s>>>8&255,255&s,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,s>>>24&255,s>>>16&255,s>>>8&255,255&s,r.isLeading<<2|r.dependsOn,r.isDependedOn<<6|r.hasRedundancy<<4|r.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12+16*e)}return vl.box(vl.types.trun,o)}static mdat(e){return vl.box(vl.types.mdat,e)}}vl.init();class _l extends Al{constructor(e){super(e),this.TAG_NAME="recorderMP4",this._reset(),e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this._reset(),this.player.debugLog(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(){this._isRecording=!0,this.player.emit(At.recording,!0),this.player.debugLog(this.TAG_NAME,"start recording"),this.player.emit(At.recordStart),this._startRecordingInterval()}_startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(At.recordingTimestamp,this.getTotalDuration())}),1e3)}_formatFmp4Track(e,t,i,s){return{id:1,sequenceNumber:++this.sequenceNumber,size:e.byteLength,dts:i,cts:s,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,s){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,s)}handleAddAudioTrack(e,t){}_handleAddFmp4Track(e){if(!this.isRecording)return void this.player.debugError(this.TAG_NAME,"_handleAddFmp4Track, isRecording is false ");if((null===this.sps||null===this.pps)&&this.isH264)return void this.player.debugError(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.debugError(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 s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}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 s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}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 S}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Lt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debugError(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r={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},o={id:2,type:"audio",sequenceNumber:this.audioBufferList.length,samples:this.audioBufferList,...this.audioMetaInfo},a=[r];o.samples.length>0&&a.push(o),this.player.debugLog(this.TAG_NAME,`trackList length is ${a.length}`);const n=vl.generateInitSegment({timescale:1e3,duration:this.totalDuration},a,this.totalByteLength+this.totalAudioByteLength);this.player.debugLog(this.TAG_NAME,"stop recording");const l=new Blob([n],{type:"application/octet-stream"});if(e===Ct)i(l),this.player.emit(At.recordBlob,l);else{i();$o((this.fileName||Ao())+"."+S,l)}this._reset(),this.player.emit(At.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(At.recording,!1),this.player.emit(At.recordCancel),e()}))}_getBufferTs(e){}}function wl(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=new s((0|e.byteLength)+(0|t.byteLength));return i.set(e,0),i.set(t,0|e.byteLength),i}),new s)}function Sl(e){if((e=e.replace(/\s/g,"")).length%2!=0)return console.error("hexStringToUint8Array: invalid hexString length, must be even and bexString length is: ",e.length),null;const t=new Uint8Array(e.length/2);for(let i=0;i{this.player.emit(At.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,$e,i)}addAudio(e,t){this._setStartTime(t);const i=this._getBufferTs(t);this.hasAudio=!0,this._createBufferItem(e,ze,i)}_setStartTime(e){null===this.startTime&&this._isRecording&&(this.startTime=e,this.player.debugLog(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 s=this._createFlvPacket(e,t,i),r=this._createFlvTag(s);this.totalByteLength+=r.byteLength,this.bufferList.push(r)}_createFlvTag(e){let t=11+e.header.length,i=new Uint8Array(t+4);i[0]=e.header.type;let s=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,s.setUint32(t,t),i.set(e.payload.subarray(0,e.header.length),11),i}_createFlvPacket(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return{header:{length:e?e.length:0,timestamp:i,type:t},payload:e}}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Lt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debugError(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r=new Uint8Array([70,76,86,1,0,0,0,0,9,0,0,0,0]);this.hasVideo&&(r[4]|=1),this.hasAudio&&(r[4]|=4);let o=[r];if(this.flvMetaData){const e=this._createFlvPacket(this.flvMetaData,Ve),t=this._createFlvTag(e);o.push(t)}if(this.videoSequenceHeader){const e=this._createFlvPacket(this.videoSequenceHeader,$e),t=this._createFlvTag(e);o.push(t)}if(this.aacSequenceHeader){const e=this._createFlvPacket(this.aacSequenceHeader,ze),t=this._createFlvTag(e);o.push(t)}const a=function(e){const t=e[0].constructor;return e.reduce(((e,i)=>{const s=new t((0|e.byteLength)+(0|i.byteLength));return s.set(e,0),s.set(i,0|e.byteLength),s}),new t)}(o.concat(this.bufferList));this.player.debugLog(this.TAG_NAME,"stop recording");const n=new Blob([a],{type:"application/octet-stream"});if(e===Ct)i(n),this.player.emit(At.recordBlob,n);else{i();$o((this.fileName||Ao())+"."+T,n)}this._reset(),this.player.emit(At.recording,!1)}))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording)return e();this._reset(),this.player.emit(At.recording,!1),this.player.emit(At.recordCancel),e()}))}getTotalDuration(){let e=0;return null!==this.startTime&&null!==this.currentTime&&(e=this.currentTime-this.startTime),Math.round(e/1e3)}getType(){return T}getToTalByteLength(){return this.totalByteLength}}const Tl={init:0,findFirstStartCode:1,findSecondStartCode:2};class kl extends o{constructor(e){super(),this.player=e,this.isDestroyed=!1,this.reset()}destroy(){this.isDestroyed=!1,this.off(),this.reset()}reset(){this.stats=Tl.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==Tl.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=Tl.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Tl.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=Tl.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Tl.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=Tl.findFirstStartCode}}}}class Ll extends Al{constructor(e){super(e),this.TAG_NAME="recorderWasmMP4",this._reset(),this.wasmMp4Recorder=null,this.mp3Demuxer=null,e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.mp3Demuxer&&(this.mp3Demuxer.destroy(),this.mp3Demuxer=null),this._reset(),this.player.debugLog(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 S}isWasmMp4(){return!0}getTotalDuration(){return this.totalDuration/1e3}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}startRecord(){const e=this.player,t=this.player.getAudioInfo(),i=this.player.getVideoInfo(),s={};if(this.codecId){const e={type:this.codecId,width:i.width,height:i.height,extraData:this.metaInfo.avcc};s.video=e,this.hasVideo=!0}if(t.encTypeCode){const e={type:t.encTypeCode,sampleRate:t.sampleRate,channels:t.channels,extraData:this.audioMetaInfo.extraData,depth:t.depth};this.audioCodeId=t.encTypeCode,s.audio=e,this.hasAudio=!0}this.wasmMp4Recorder=new window.JessibucaProMp4Recorder({debug:e._opt.debug,debugLevel:e._opt.debugLevel,debugUuid:e._opt.debugUuid,decoder:e._opt.wasmMp4RecorderDecoder}),this.wasmMp4Recorder.on("recordingTimestamp",(e=>{this._recordingTimestamp=e/1e3})),this.wasmMp4Recorder.startRecord(s).then((()=>{this._isRecording=!0,this.player.emit(At.recording,!0),this.player.debugLog(this.TAG_NAME,"start recording"),this.player.emit(At.recordStart),this.startRecordingInterval()})).catch((e=>{this.player.debugError(this.TAG_NAME,"startRecord error",e),this.player.emitError(At.recordCreateError,e)}))}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(At.recordingTimestamp,this.recordTime)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Lt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>this.isRecording?0===this.totalDuration?(this.player.debugError(this.TAG_NAME,"stop recording fail, totalDuration is 0 "),s("stop recording fail, totalDuration is 0 ")):(t&&this.setFileName(t),void this.wasmMp4Recorder.stopRecord().then((t=>{if(e===Ct)i(t),this.player.emit(At.recordBlob,t);else{i();$o((this.fileName||Ao())+"."+S,t)}})).catch((e=>{this.player.debugError(this.TAG_NAME,"stopRecord error",e),s(e)})).finally((()=>{this._reset(),this.player.emit(At.recording,!1)}))):(this.player.debugError(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false "))))}cancelRecord(){return new Promise(((e,t)=>{if(this.player.debugLog(this.TAG_NAME,"cancel recording"),!this.isRecording||0===this.totalDuration)return e();this.wasmMp4Recorder.stopRecord().then((t=>{e()})).catch((e=>{this.player.debugError(this.TAG_NAME,"stopRecord error",e),t(e)})).finally((()=>{this._reset(),this.player.emit(At.recording,!1),this.player.emit(At.recordCancel)}))}))}handleAddAudioTrack(e,t){this.audioCodeId===Ft?(this.mp3Demuxer||(this.mp3Demuxer=new kl(this.player),this.mp3Demuxer.on("data",((e,t)=>{this._handleAddAudioTrack(e,t)}))),this.mp3Demuxer.dispatch(e,t)):this._handleAddAudioTrack(e,t)}_handleAddAudioTrack(e,t){Da(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,s){Da(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:s})}}class Cl{constructor(e){return new(Cl.getLoaderFactory(e,e._opt))(e)}static getLoaderFactory(e,t){if(e.isOldHls()||e.isWebrtcH264()||e.isAliyunRtc())return bl;if(t.recordType===S){if(t.useWasm||t.useMSE||t.useWCS)return window.JessibucaProMp4Recorder&&t.mp4RecordUseWasm?Ll:_l}else if(t.recordType===T)return El;return bl}}function xl(e,t,i){let s=e;if(t+i=128){t.push(String.fromCharCode(65535&e)),s+=2;continue}}}else if(i[s]<240){if(xl(i,s,2)){let e=(15&i[s])<<12|(63&i[s+1])<<6|63&i[s+2];if(e>=2048&&55296!=(63488&e)){t.push(String.fromCharCode(65535&e)),s+=3;continue}}}else if(i[s]<248&&xl(i,s,3)){let e=(7&i[s])<<18|(63&i[s+1])<<12|(63&i[s+2])<<6|63&i[s+3];if(e>65536&&e<1114112){e-=65536,t.push(String.fromCharCode(e>>>10|55296)),t.push(String.fromCharCode(1023&e|56320)),s+=4;continue}}t.push(String.fromCharCode(65533)),++s}return t.join("")}let Rl=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}();class Il{static parseScriptData(e,t,i){let s={};try{let r=Il.parseValue(e,t,i),o=Il.parseValue(e,t+r.size,i-r.size);s[r.data]=o.data}catch(e){console.error("AMF",e.toString())}return s}static parseObject(e,t,i){let s=Il.parseString(e,t,i),r=Il.parseValue(e,t+s.size,i-s.size),o=r.objectEnd;return{data:{name:s.data,value:r.data},size:s.size+r.size,objectEnd:o}}static parseVariable(e,t,i){return Il.parseObject(e,t,i)}static parseString(e,t,i){let s,r=new DataView(e,t,i).getUint16(0,!Rl);return s=r>0?Dl(new Uint8Array(e,t+2,r)):"",{data:s,size:2+r}}static parseLongString(e,t,i){let s,r=new DataView(e,t,i).getUint32(0,!Rl);return s=r>0?Dl(new Uint8Array(e,t+4,r)):"",{data:s,size:4+r}}static parseDate(e,t,i){let s=new DataView(e,t,i),r=s.getFloat64(0,!Rl);return r+=60*s.getInt16(8,!Rl)*1e3,{data:new Date(r),size:10}}static parseValue(e,t,i){let s,r=new DataView(e,t,i),o=1,a=r.getUint8(0),n=!1;try{switch(a){case 0:s=r.getFloat64(1,!Rl),o+=8;break;case 1:s=!!r.getUint8(1),o+=1;break;case 2:{let r=Il.parseString(e,t+1,i-1);s=r.data,o+=r.size;break}case 3:{s={};let a=0;for(9==(16777215&r.getUint32(i-4,!Rl))&&(a=3);o{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),oe)}this.decoderWorker=new Worker(t),this._initDecoderWorker(),this._listenPlaybackEvents(),e.debugLog("decoderWorker",`init and decoder url is ${t}`),e.on(At.visibilityChange,(()=>{this.updateWorkConfig({key:"visibility",value:e.visibility})}))}destroy(){return new Promise(((e,t)=>{if(this.player.loaded)if(this.player.debugLog("decoderWorker","has loaded and post message to destroy"),this.decoderWorker){const t={};this.player.isMseDecoderUseWorker()&&(t.isVideoInited=this.player.isMseVideoStateInited()),this.decoderWorker.postMessage({cmd:Ye,options:t}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debugWarn("decoderWorker","send close but not response and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)}else this.player.debugWarn("decoderWorker","has loaded but decoderWorker is null and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0);else this.player.debugLog("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.debugLog("decoderWorker","destroy"),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.isDestroyed=!0}_listenPlaybackEvents(){this.player.isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender()&&(this.player.debugLog(this.TAG_NAME,"listenPlaybackEvents"),this.player.on(At.playbackPause,(e=>{this.updatePlaybackIsPause(e)})))}_initDecoderWorker(){this.player,this.decoderWorker.onerror=e=>{const t=e.filename||"",i=e.message||"",s=t&&(-1!==t.indexOf(".wasm")||-1!==t.indexOf("wasm://"));s&&-1!==i.indexOf(mr)?this.player.debugLog("decoderWorker",`onerror and ignore filename: ${t},message: ${i}`,e):(this.player.debugError("decoderWorker",`onerror filename: ${t},message: ${i}`,e),s?this.player.emitError(_t.decoderWorkerWasmError,`filename: ${t},message: ${i}`):this.player.emitError(_t.decoderWorkerInitError,`filename: ${t},message: ${i}`))},this.decoderWorker.onmessageerror=e=>{this.player.debugError("decoderWorker","onmessageerror",e)},this.decoderWorker.onmessage=e=>{const t=e.data;switch(t.cmd){case le:this.player.debugLog("decoderWorker","onmessage:",le),this.decoderWorker&&this._initWork(),this.player.loaded||this.player.emit(At.load),this.player.emit(At.decoderWorkerInit);break;case ge:this.player.debugLog("decoderWorker","onmessage:",ge,t.code),this.player._times.decodeStart||(this.player._times.decodeStart=Ao()),this.player.video.updateVideoInfo({encTypeCode:t.code});break;case ye:this.player.debugLog("decoderWorker","onmessage:",ye,t.codecId),this.player.recorder&&this.player.recorder.initMetaData(t.buffer,t.codecId),this.player.video.updateVideoInfo({encTypeCode:t.codecId});break;case pe:this.player.debugLog("decoderWorker","onmessage:",pe,t.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:t.code});break;case me:this.player.debugLog("decoderWorker","onmessage:",me),this.player.recorder&&this.player.recorder.initAudioAacExtraData(t.buffer);break;case de:if(this.player.debugLog("decoderWorker","onmessage:",de,`width:${t.w},height:${t.h}`),Vo(t.w)||Vo(t.h))return void this.player.emitError(_t.videoInfoError,`video width ${t.w} or height ${t.h} is empty`);if(this.player.video.bindMediaStream(),this.player.video.updateVideoInfo({width:t.w,height:t.h}),!this.player._opt.openWebglAlignment&&t.w/2%4!=0&&this.player.getRenderType()===H)return void this.player.emitError(_t.webglAlignmentError);this.player.video.initCanvasViewSize(),this.player._opt.playType===w&&(this.player.video.initFps(),this.player.video.initVideoDelay());break;case ue:if(this.player.debugLog("decoderWorker","onmessage:",ue,`channels:${t.channels},sampleRate:${t.sampleRate}`),t.channels>2)return void this.player.emitError(_t.audioChannelError,`audio channel is ${t.channels}, max is 2`);this.player.audio&&(this.player.audio.updateAudioInfo(t),this.player._opt.playType===v?this.player.audio.initScriptNode():this.player._opt.playType===w&&this.player.audio.initScriptNodeDelay());break;case he:if(!this.player.video)return void this.player.debugWarn("decoderWorker","onmessage render but video is null");if(this.player.isPlayer()){if(Da(this.player.video.getHasInit()))return void this.player.debugWarn("decoderWorker","onmessage render but video has not init");this.player.video.render(t),this.player.handleRender(),this.player.emit(At.timeUpdate,t.ts),this.player.updateStats({dfps:!0,buf:t.delay}),this.player._times.videoStart||(this.player._times.videoStart=Ao(),this.player.handlePlayToRenderTimes())}else this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),Da(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData(t):this.player.video.render$2(t)):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender&&this.player.video.pushData(t));break;case Ae:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.handleAddNaluTrack(t.buffer,t.isIFrame,t.ts,t.cts);break;case fe:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.isWasmMp4()&&this.player.recorder.handleAddAudioTrack(t.buffer,t.ts);break;case be:const{webcodecsDecoder:e,mseDecoder:i}=this.player;this.player.updateStats({buf:t.delay});const s=new Uint8Array(t.payload);this.player._opt.useWCS&&!this.player._opt.useOffscreen?e.decodeVideo(s,t.ts,t.isIFrame,t.cts):this.player._opt.useMSE&&i.decodeVideo(s,t.ts,t.isIFrame,t.cts);break;case ve:if(this.player._opt.useMSE){const e=new Uint8Array(t.payload);this.player.mseDecoder.decodeAudio(e,t.ts,t.cts)}break;case ce:if(!this.player.audio)return void this.player.debugWarn("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===v||this.player._opt.playType===w&&(Da(this.player.playbackPause)||this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender))&&this.player.audio.play(t.buffer,t.ts));break;case _e:if(t.type===At.streamSuccess)this.player.stream?this.player.stream.emit(At.streamSuccess):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream success but stream is null");else if(t.type===At.streamRate)this.player.emit(At.kBps,(t.value/1024).toFixed(2));else if(t.type===At.streamEnd)this.player?(t.value===m&&this.player.emit(At.websocketClose,t.msg),this.player.stream?this.player.stream.emit(At.streamEnd,t.msg):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream end but player.stream is null")):this.player.debugWarn("decoderWorker","onmessage and workerFetch response stream end but player is null");else if(t.type===At.streamEndInner)this.player.updateStreamEndInner();else if(t.type===_t.websocketError)this.player&&this.player.stream?this.player.stream.emit(_t.websocketError,t.value):this.player.debugWarn("decoderWorker","onmessage and workerFetch response websocket error but stream is null");else if(t.type===_t.fetchError)this.player&&this.player.stream?this.player.stream.emit(_t.fetchError,t.value):this.player.debugWarn("decoderWorker","onmessage and workerFetch response fetch error but stream is null");else if(t.type===At.streamAbps)this.player.updateStats({abps:t.value});else if(t.type===At.streamVbps)this.player._times.demuxStart||(this.player._times.demuxStart=Ao()),this.player.updateStats({vbps:t.value});else if(t.type===At.streamDts)this.player.updateStats({dts:t.value});else if(t.type===At.netBuf)this.player.updateStats({netBuf:t.value});else if(t.type===At.networkDelayTimeout)this.player.emit(At.networkDelayTimeout,t.value);else if(t.type===At.streamStats){const e=JSON.parse(t.value);this.player.updateStats({workerStats:e})}else t.type===At.websocketOpen&&this.player.emit(At.websocketOpen);break;case we:this.player&&(this.player.videoIframeIntervalTs=t.value);break;case Se:this.player&&this.player.updateStats({isDropping:!0});break;case Fe:this.player.decoderCheckFirstIFrame();break;case Te:this.player&&this.player.video&&this.player.video.setStreamFps(t.value);break;case Ce:this.player.emitError(_t.simdH264DecodeVideoWidthIsTooLarge,t.value);break;case ke:this.player.emitError(_t.wasmWidthOrHeightChange,t.value);break;case Le:this.player.emitError(_t.simdDecodeError);break;case Ee:this.player.debugLog("decoderWorker","onmessage:",Ee),this.player.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload();break;case xe:this.player.debugLog("decoderWorker","onmessage:",xe),this._destroy();break;case De:this.player&&this.player.pushTempStream(t.buffer);break;case Re:this.player&&this.player.emitVideoSei({ts:t.ts,data:new Uint8Array(t.buffer)});break;case Ie:if(this.player){if(this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addMetaData(e)}const e=Pl(new Uint8Array(t.buffer));e&&e.onMetaData&&this.player.updateMetaData(e.onMetaData)}break;case Pe:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addAACSequenceHeader(e,t.ts)}break;case Be:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(t.buffer);this.player.recorder.addVideoSequenceHeader(e,t.ts)}break;case Me:if(this.player&&this.player.isRecordTypeFlv()&&this.player.recording){const e=new Uint8Array(t.buffer);t.type===We?this.player.recorder.addVideo(e,t.ts):t.type===Ge&&this.player.recorder.addAudio(e,t.ts)}break;case Ue:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Ue),this.player.video.$videoElement.srcObject=t.mseHandle);break;case Oe:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Oe,t.value),this.player._mseWorkerData.firstRenderTime=Number(t.value));break;case Ne:this.player&&(this.player.debugLog("decoderWorker","onmessage:",Ne,t.value,t.msg),this.player.emitError(t.value,t.msg));break;case je:this.player&&(this.player.debugLog(this.TAG_NAME,"onmessage:",je),this.player.emitError(_t.notSupportNewWasm));break;default:this.player[t.cmd]&&this.player[t.cmd](t)}}}_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||Fr,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,isSm4CryptoH265V2:this.player._opt.isSm4CryptoH265V2,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:da(),isFirefox:xo(),supportMSEDecodeHevc:jo(),isDropSameTimestampGop:this.player._opt.isDropSameTimestampGop,mseDecodeAudio:this.player._opt.mseDecodeAudio,wcsDecodeAudio:this.player._opt.wcsDecodeAudio,nakedFlowH265DemuxUseNew:this.player._opt.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:this.player._opt.mseDecoderUseWorker,mseAutoCleanupMinBackwardDuration:this.player._opt.mseAutoCleanupMinBackwardDuration,mseAutoCleanupMaxBackwardDuration:this.player._opt.mseAutoCleanupMaxBackwardDuration,mseCorrectTimeDuration:this.player._opt.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:this.player._opt.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:this.player._opt.nakedFlowDemuxUseNew,nakedFlowFps:this.player._opt.nakedFlowFps,checkStreamEnd:this.player._opt.checkStreamEnd};this.decoderWorker.postMessage({cmd:He,opt:JSON.stringify(e)}),this.player._opt.cryptoKey&&this.player._opt.cryptoKey.byteLength>0&&this.player._opt.cryptoIV&&this.player._opt.cryptoIV.byteLength>0&&(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===v?this.player.isUseHls265()?this._decodeVideoNoDelay(e,t,i):this._decodeVideo(e,t,i):this.player._opt.playType===w&&(this.player.isPlaybackOnlyDecodeIFrame()?i&&(this.player.debugLog("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 s={type:We,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:Je,buffer:e,options:s},[e.buffer])}_decodeVideoNoDelay(e,t,i){this.decoderWorker.postMessage({cmd:Ke,buffer:e,ts:Math.max(t,0),isIFrame:i},[e.buffer])}decodeAudio(e,t){this.player._opt.playType===v?this.player._opt.useWCS||this.player._opt.useMSE||this.player.isUseHls265()?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t):this.player._opt.playType===w&&(this.player.isPlaybackOnlyDecodeIFrame()||(1===this.player.video.rate?this._decodeAudio(e,t):this._decodeAudioNoDelay(e,t)))}_decodeAudio(e,t){const i={type:Ge,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:Je,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:qe,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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{_opt:i}=this.player;let s=[];t.protocols&&(s=t.protocols,delete t.protocols);const r={protocol:i.protocol,isFlv:i.isFlv,isFmp4:i.isFmp4,isMpeg4:i.isMpeg4,isNakedFlow:i.isNakedFlow,isTs:i.isTs,options:t};this.decoderWorker.postMessage({cmd:Ze,url:e,protocols:s,opt:JSON.stringify(r)})}clearWorkBuffer(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.decoderWorker.postMessage({cmd:Xe,needClear:e})}workerSendMessage(e){this.decoderWorker.postMessage({cmd:et,message:e})}updateVideoTimestamp(e){this.decoderWorker.postMessage({cmd:tt,message:e})}updatePlaybackIsPause(e){this.decoderWorker.postMessage({cmd:it,isPause:e})}}var Ml,Fl="application/json, text/javascript",Ul="text/html",Ol=/^(?:text|application)\/xml/i,Nl=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,jl=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Gl=/^\s*$/,Wl={},zl={},$l="",Vl={type:"GET",beforeSend:Hl,success:Hl,error:Hl,complete:Hl,context:null,xhr:function(){return new window.XMLHttpRequest},accepts:{json:Fl,xml:"application/xml, text/xml",html:Ul,text:"text/plain","*":"*/".concat("*")},crossDomain:!1,timeout:0,username:null,password:null,processData:!0,promise:Hl,contentType:"application/x-www-form-urlencoded; charset=UTF-8"};function Hl(){}var Jl=function(e,t){"object"==typeof e&&(t=e,e=void 0);var i=td({},t=t||{});for(var s in Vl)void 0===i[s]&&(i[s]=Vl[s]);try{var r={},o=new Promise((function(e,t){r.resolve=e,r.reject=t}));o.resolve=r.resolve,o.reject=r.reject,i.promise=o}catch(e){i.promise={resolve:Hl,reject:Hl}}var a=jl.exec(window.location.href.toLowerCase())||[];i.url=((e||i.url||window.location.href)+"").replace(/#.*$/,"").replace(/^\/\//,a[1]+"//");var n=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=Xl(i.url,d)}return function(e){var t,i=e.jsonpCallback||"jsonp"+rd(),s=window.document.createElement("script"),r={abort:function(){i in window&&(window[i]=Hl)}},o=window.document.getElementsByTagName("head")[0]||window.document.documentElement;function a(i){window.clearTimeout(t),r.abort(),Yl(i.type,r,i.type,e),n()}s.onerror=function(e){a(e)},window[i]=function(i){window.clearTimeout(t),ql(i,r,e),n()},Zl(e),s.src=e.url.replace(/=\?/,"="+i),s.src=Xl(s.src,"_="+(new Date).getTime()),s.async=!0,e.scriptCharset&&(s.charset=e.scriptCharset);o.insertBefore(s,o.firstChild),e.timeout>0&&(t=window.setTimeout((function(){r.abort(),Yl("timeout",r,"timeout",e),n()}),e.timeout));function n(){s.clearAttributes?s.clearAttributes():s.onload=s.onreadystatechange=s.onerror=null,s.parentNode&&s.parentNode.removeChild(s),s=null,delete window[i]}return e.promise.abort=function(){r.abort()},e.promise.xhr=r,e.promise}(i)}Zl(i);var h=i.accepts[l]||i.accepts["*"],c={};/^([\w-]+:)\/\//.test(i.url)?RegExp.$1:window.location.protocol;var u,p=Vl.xhr();i.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest"),i.ifModified&&(Wl[n]&&(c["If-Modified-Since"]=Wl[n]),zl[n]&&(c["If-None-Match"]=zl[n])),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(n)?n.replace(m,"$1_="+rd()):n+(/\?/.test(n)?"&":"?")+"_="+rd()}i.headers=td(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($l=p.getAllResponseHeaders(),i.ifModified){var s=Ql("Last-Modified");s&&(Wl[n]=s),(s=Ql("etag"))&&(zl[n]=s)}l=l||function(e){return e&&(e===Ul?"html":e===Fl?"json":Ol.test(e)&&"xml")||"text"}(p.getResponseHeader("content-type")),e=p.responseText;try{"xml"===l?e=p.responseXML:"json"===l&&(e=Gl.test(e)?null:JSON.parse(e))}catch(e){t=e}t?Yl(t,"parseerror",p,i):ql(e,p,i)}else Yl(null,"error",p,i)}};var g=!("async"in i)||i.async;if(p.open(i.type,i.url,g,i.username,i.password),i.xhrFields)for(var y in i.xhrFields)p[y]=i.xhrFields[y];for(var y in i.mimeType&&p.overrideMimeType&&p.overrideMimeType(i.mimeType),i.headers)void 0!==i.headers[y]&&p.setRequestHeader(y,i.headers[y]+"");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=Hl,p.abort(),Yl(null,"timeout",p,i)}),i.timeout)),p.send(i.data?i.data:null),i.promise.abort=function(){p.abort()},i.promise)};function ql(e,t,i){var s=i.context,r="success";i.success.call(s,e,r,t),i.promise.resolve(e,r,t),Kl(r,t,i)}function Kl(e,t,i){var s=i.context;i.complete.call(s,t,e)}function Yl(e,t,i,s){var r=s.context;s.error.call(r,i,t,e),s.promise.reject(i,t,e),Kl(t,i,s)}function Ql(e){var t;if(!Ml){for(Ml={};t=Nl.exec($l);)Ml[t[1].toLowerCase()]=t[2];t=Ml[e.toLowerCase()]}return null===t?null:t}function Xl(e,t){return(e+"&"+t).replace(/[&?]{1,2}/,"?")}function Zl(e){!id(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))},ed(i,e,t),i.join("&").replace("%20","+")}(e.data)),!e.data||e.type&&"GET"!==e.type.toUpperCase()||(e.url=Xl(e.url,e.data))}function ed(e,t,i,s){var r=function(e){return"[object Array]"===Object.prototype.toString.call(e)}(t);for(var o in t){var a=t[o];s&&(o=i?s:s+"["+(r?"":o)+"]"),!s&&r?e.add(a.name,a.value):(i?r(a):id(a))?ed(e,a,i,o):e.add(o,a)}}function td(e){for(var t=Array.prototype.slice,i=t.call(arguments,1),s=0,r=i.length;s255)return!1;return!0}function nd(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(!ad(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(od(e.length)&&ad(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function ld(e){return new Uint8Array(e)}function dd(e,t,i,s,r){null==s&&null==r||(e=e.slice?e.slice(s,r):Array.prototype.slice.call(e,s,r)),t.set(e,i)}Jl.get=function(e,t,i,s){return sd(t)&&(s=s||i,i=t,t=void 0),Jl({url:e,data:t,success:i,dataType:s})},Jl.post=function(e,t,i,s){return sd(t)&&(s=s||i,i=t,t=void 0),Jl({type:"POST",url:e,data:t,success:i,dataType:s})},Jl.getJSON=function(e,t,i){return sd(t)&&(i=t,t=void 0),Jl({url:e,data:t,success:i,dataType:"json"})},Jl.ajaxSetup=function(e,t){return t?td(td(e,Vl),t):td(Vl,e)};var hd={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&s<224?(t.push(String.fromCharCode((31&s)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&s)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},cd=function(){var e="0123456789abcdef";return{toBytes:function(e){for(var t=[],i=0;i>4]+e[15&r])}return i.join("")}}}(),ud={16:10,24:12,32:14},pd=[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],fd=[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],md=[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],gd=[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],yd=[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],Ad=[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],bd=[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],vd=[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],_d=[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],wd=[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],Sd=[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],Ed=[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],Td=[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],kd=[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],Ld=[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 Cd(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=o[t],this._Kd[e-i][t%4]=o[t];for(var a,n=0,l=r;l>16&255]<<24^fd[a>>8&255]<<16^fd[255&a]<<8^fd[a>>24&255]^pd[n]<<24,n+=1,8!=r)for(t=1;t>8&255]<<8^fd[a>>16&255]<<16^fd[a>>24&255]<<24;for(t=r/2+1;t>2,h=l%4,this._Ke[d][h]=o[t],this._Kd[e-d][h]=o[t++],l++}for(var d=1;d>24&255]^Td[a>>16&255]^kd[a>>8&255]^Ld[255&a]},xd.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],s=Cd(e),r=0;r<4;r++)s[r]^=this._Ke[0][r];for(var o=1;o>24&255]^yd[s[(r+1)%4]>>16&255]^Ad[s[(r+2)%4]>>8&255]^bd[255&s[(r+3)%4]]^this._Ke[o][r];s=i.slice()}var a,n=ld(16);for(r=0;r<4;r++)a=this._Ke[t][r],n[4*r]=255&(fd[s[r]>>24&255]^a>>24),n[4*r+1]=255&(fd[s[(r+1)%4]>>16&255]^a>>16),n[4*r+2]=255&(fd[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(fd[255&s[(r+3)%4]]^a);return n},xd.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],s=Cd(e),r=0;r<4;r++)s[r]^=this._Kd[0][r];for(var o=1;o>24&255]^_d[s[(r+3)%4]>>16&255]^wd[s[(r+2)%4]>>8&255]^Sd[255&s[(r+1)%4]]^this._Kd[o][r];s=i.slice()}var a,n=ld(16);for(r=0;r<4;r++)a=this._Kd[t][r],n[4*r]=255&(md[s[r]>>24&255]^a>>24),n[4*r+1]=255&(md[s[(r+3)%4]>>16&255]^a>>16),n[4*r+2]=255&(md[s[(r+2)%4]>>8&255]^a>>8),n[4*r+3]=255&(md[255&s[(r+1)%4]]^a);return n};var Dd=function(e){if(!(this instanceof Dd))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new xd(e)};Dd.prototype.encrypt=function(e){if((e=nd(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=ld(e.length),i=ld(16),s=0;sNumber.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)},Bd.prototype.setBytes=function(e){if(16!=(e=nd(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Bd.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Md=function(e,t){if(!(this instanceof Md))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Bd||(t=new Bd(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new xd(e)};Md.prototype.encrypt=function(e){for(var t=nd(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,s=0;s>>2]>>>24-o%4*8&255;t[s+o>>>2]|=a<<24-(s+o)%4*8}else for(var n=0;n>>2]=i[n>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,i=this.sigBytes;t[i>>>2]&=4294967295<<32-i%4*8,t.length=e.ceil(i/4)},clone:function(){var e=l.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],i=0;i>>2]>>>24-r%4*8&255;s.push((o>>>4).toString(16)),s.push((15&o).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new d.init(i,t/2)}},u=h.Latin1={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>24-r%4*8&255;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new d.init(i,t)}},p=h.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},f=n.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new d.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var i,s=this._data,r=s.words,o=s.sigBytes,a=this.blockSize,n=o/(4*a),l=(n=t?e.ceil(n):e.max((0|n)-this._minBufferSize,0))*a,h=e.min(4*l,o);if(l){for(var c=0;c>>2]|=e[r]<<24-r%4*8;t.call(this,s,i)}else t.apply(this,arguments)};s.prototype=e}}(),i.lib.WordArray)})),zr((function(e,t){var i;e.exports=(i=Ud,function(){var e=i,t=e.lib.WordArray,s=e.enc;function r(e){return e<<8&4278255360|e>>>8&16711935}s.Utf16=s.Utf16BE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>16-r%4*8&65535;s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var i=e.length,s=[],r=0;r>>1]|=e.charCodeAt(r)<<16-r%2*16;return t.create(s,2*i)}},s.Utf16LE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],o=0;o>>2]>>>16-o%4*8&65535);s.push(String.fromCharCode(a))}return s.join("")},parse:function(e){for(var i=e.length,s=[],o=0;o>>1]|=r(e.charCodeAt(o)<<16-o%2*16);return t.create(s,2*i)}}}(),i.enc.Utf16)})),zr((function(e,t){var i;e.exports=(i=Ud,function(){var e=i,t=e.lib.WordArray;function s(e,i,s){for(var r=[],o=0,a=0;a>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64={stringify:function(e){var t=e.words,i=e.sigBytes,s=this._map;e.clamp();for(var r=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,n=0;n<4&&o+.75*n>>6*(3-n)&63));var l=s.charAt(64);if(l)for(;r.length%4;)r.push(l);return r.join("")},parse:function(e){var t=e.length,i=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var o=0;o>>6-a%4*2;r[o>>>2]|=n<<24-o%4*8,o++}return t.create(r,o)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var i=e.words,s=e.sigBytes,r=t?this._safe_map:this._map;e.clamp();for(var o=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(i[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|i[a+2>>>2]>>>24-(a+2)%4*8&255,l=0;l<4&&a+.75*l>>6*(3-l)&63));var d=r.charAt(64);if(d)for(;o.length%4;)o.push(d);return o.join("")},parse:function(e,t){void 0===t&&(t=!0);var i=e.length,r=t?this._safe_map:this._map,o=this._reverseMap;if(!o){o=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(r<<24|r>>>8)}var o=this._hash.words,a=e[t+0],l=e[t+1],p=e[t+2],f=e[t+3],m=e[t+4],g=e[t+5],y=e[t+6],A=e[t+7],b=e[t+8],v=e[t+9],_=e[t+10],w=e[t+11],S=e[t+12],E=e[t+13],T=e[t+14],k=e[t+15],L=o[0],C=o[1],x=o[2],D=o[3];L=d(L,C,x,D,a,7,n[0]),D=d(D,L,C,x,l,12,n[1]),x=d(x,D,L,C,p,17,n[2]),C=d(C,x,D,L,f,22,n[3]),L=d(L,C,x,D,m,7,n[4]),D=d(D,L,C,x,g,12,n[5]),x=d(x,D,L,C,y,17,n[6]),C=d(C,x,D,L,A,22,n[7]),L=d(L,C,x,D,b,7,n[8]),D=d(D,L,C,x,v,12,n[9]),x=d(x,D,L,C,_,17,n[10]),C=d(C,x,D,L,w,22,n[11]),L=d(L,C,x,D,S,7,n[12]),D=d(D,L,C,x,E,12,n[13]),x=d(x,D,L,C,T,17,n[14]),L=h(L,C=d(C,x,D,L,k,22,n[15]),x,D,l,5,n[16]),D=h(D,L,C,x,y,9,n[17]),x=h(x,D,L,C,w,14,n[18]),C=h(C,x,D,L,a,20,n[19]),L=h(L,C,x,D,g,5,n[20]),D=h(D,L,C,x,_,9,n[21]),x=h(x,D,L,C,k,14,n[22]),C=h(C,x,D,L,m,20,n[23]),L=h(L,C,x,D,v,5,n[24]),D=h(D,L,C,x,T,9,n[25]),x=h(x,D,L,C,f,14,n[26]),C=h(C,x,D,L,b,20,n[27]),L=h(L,C,x,D,E,5,n[28]),D=h(D,L,C,x,p,9,n[29]),x=h(x,D,L,C,A,14,n[30]),L=c(L,C=h(C,x,D,L,S,20,n[31]),x,D,g,4,n[32]),D=c(D,L,C,x,b,11,n[33]),x=c(x,D,L,C,w,16,n[34]),C=c(C,x,D,L,T,23,n[35]),L=c(L,C,x,D,l,4,n[36]),D=c(D,L,C,x,m,11,n[37]),x=c(x,D,L,C,A,16,n[38]),C=c(C,x,D,L,_,23,n[39]),L=c(L,C,x,D,E,4,n[40]),D=c(D,L,C,x,a,11,n[41]),x=c(x,D,L,C,f,16,n[42]),C=c(C,x,D,L,y,23,n[43]),L=c(L,C,x,D,v,4,n[44]),D=c(D,L,C,x,S,11,n[45]),x=c(x,D,L,C,k,16,n[46]),L=u(L,C=c(C,x,D,L,p,23,n[47]),x,D,a,6,n[48]),D=u(D,L,C,x,A,10,n[49]),x=u(x,D,L,C,T,15,n[50]),C=u(C,x,D,L,g,21,n[51]),L=u(L,C,x,D,S,6,n[52]),D=u(D,L,C,x,f,10,n[53]),x=u(x,D,L,C,_,15,n[54]),C=u(C,x,D,L,l,21,n[55]),L=u(L,C,x,D,b,6,n[56]),D=u(D,L,C,x,k,10,n[57]),x=u(x,D,L,C,y,15,n[58]),C=u(C,x,D,L,E,21,n[59]),L=u(L,C,x,D,m,6,n[60]),D=u(D,L,C,x,w,10,n[61]),x=u(x,D,L,C,p,15,n[62]),C=u(C,x,D,L,v,21,n[63]),o[0]=o[0]+L|0,o[1]=o[1]+C|0,o[2]=o[2]+x|0,o[3]=o[3]+D|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;i[r>>>5]|=128<<24-r%32;var o=e.floor(s/4294967296),a=s;i[15+(r+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),i[14+(r+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(i.length+1),this._process();for(var n=this._hash,l=n.words,d=0;d<4;d++){var h=l[d];l[d]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return n},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function d(e,t,i,s,r,o,a){var n=e+(t&i|~t&s)+r+a;return(n<>>32-o)+t}function h(e,t,i,s,r,o,a){var n=e+(t&s|i&~s)+r+a;return(n<>>32-o)+t}function c(e,t,i,s,r,o,a){var n=e+(t^i^s)+r+a;return(n<>>32-o)+t}function u(e,t,i,s,r,o,a){var n=e+(i^(t|~s))+r+a;return(n<>>32-o)+t}t.MD5=o._createHelper(l),t.HmacMD5=o._createHmacHelper(l)}(Math),i.MD5)})),zr((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=Ud).lib,r=s.WordArray,o=s.Hasher,a=i.algo,n=[],l=a.SHA1=o.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],l=i[4],d=0;d<80;d++){if(d<16)n[d]=0|e[t+d];else{var h=n[d-3]^n[d-8]^n[d-14]^n[d-16];n[d]=h<<1|h>>>31}var c=(s<<5|s>>>27)+l+n[d];c+=d<20?1518500249+(r&o|~r&a):d<40?1859775393+(r^o^a):d<60?(r&o|r&a|o&a)-1894007588:(r^o^a)-899497514,l=a,a=o,o=r<<30|r>>>2,r=s,s=c}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+l|0},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=Math.floor(i/4294967296),t[15+(s+64>>>9<<4)]=i,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=o._createHelper(l),i.HmacSHA1=o._createHmacHelper(l),d.SHA1)})),zr((function(e,t){var i;e.exports=(i=Ud,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=[],l=[];!function(){function t(t){for(var i=e.sqrt(t),s=2;s<=i;s++)if(!(t%s))return!1;return!0}function i(e){return 4294967296*(e-(0|e))|0}for(var s=2,r=0;r<64;)t(s)&&(r<8&&(n[r]=i(e.pow(s,.5))),l[r]=i(e.pow(s,1/3)),r++),s++}();var d=[],h=a.SHA256=o.extend({_doReset:function(){this._hash=new r.init(n.slice(0))},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=0;p<64;p++){if(p<16)d[p]=0|e[t+p];else{var f=d[p-15],m=(f<<25|f>>>7)^(f<<14|f>>>18)^f>>>3,g=d[p-2],y=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;d[p]=m+d[p-7]+y+d[p-16]}var A=s&r^s&o^r&o,b=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),v=u+((n<<26|n>>>6)^(n<<21|n>>>11)^(n<<7|n>>>25))+(n&h^~n&c)+l[p]+d[p];u=c,c=h,h=n,n=a+v|0,a=o,o=r,r=s,s=v+(b+A)|0}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+o|0,i[3]=i[3]+a|0,i[4]=i[4]+n|0,i[5]=i[5]+h|0,i[6]=i[6]+c|0,i[7]=i[7]+u|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;return i[r>>>5]|=128<<24-r%32,i[14+(r+64>>>9<<4)]=e.floor(s/4294967296),i[15+(r+64>>>9<<4)]=s,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(h),t.HmacSHA256=o._createHmacHelper(h)}(Math),i.SHA256)})),zr((function(e,t){var i,s,r,o,a,n;e.exports=(s=(i=n=Ud).lib.WordArray,r=i.algo,o=r.SHA256,a=r.SHA224=o.extend({_doReset:function(){this._hash=new s.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=o._createHelper(a),i.HmacSHA224=o._createHmacHelper(a),n.SHA224)})),zr((function(e,t){var i;e.exports=(i=Ud,function(){var e=i,t=e.lib.Hasher,s=e.x64,r=s.Word,o=s.WordArray,a=e.algo;function n(){return r.create.apply(r,arguments)}var l=[n(1116352408,3609767458),n(1899447441,602891725),n(3049323471,3964484399),n(3921009573,2173295548),n(961987163,4081628472),n(1508970993,3053834265),n(2453635748,2937671579),n(2870763221,3664609560),n(3624381080,2734883394),n(310598401,1164996542),n(607225278,1323610764),n(1426881987,3590304994),n(1925078388,4068182383),n(2162078206,991336113),n(2614888103,633803317),n(3248222580,3479774868),n(3835390401,2666613458),n(4022224774,944711139),n(264347078,2341262773),n(604807628,2007800933),n(770255983,1495990901),n(1249150122,1856431235),n(1555081692,3175218132),n(1996064986,2198950837),n(2554220882,3999719339),n(2821834349,766784016),n(2952996808,2566594879),n(3210313671,3203337956),n(3336571891,1034457026),n(3584528711,2466948901),n(113926993,3758326383),n(338241895,168717936),n(666307205,1188179964),n(773529912,1546045734),n(1294757372,1522805485),n(1396182291,2643833823),n(1695183700,2343527390),n(1986661051,1014477480),n(2177026350,1206759142),n(2456956037,344077627),n(2730485921,1290863460),n(2820302411,3158454273),n(3259730800,3505952657),n(3345764771,106217008),n(3516065817,3606008344),n(3600352804,1432725776),n(4094571909,1467031594),n(275423344,851169720),n(430227734,3100823752),n(506948616,1363258195),n(659060556,3750685593),n(883997877,3785050280),n(958139571,3318307427),n(1322822218,3812723403),n(1537002063,2003034995),n(1747873779,3602036899),n(1955562222,1575990012),n(2024104815,1125592928),n(2227730452,2716904306),n(2361852424,442776044),n(2428436474,593698344),n(2756734187,3733110249),n(3204031479,2999351573),n(3329325298,3815920427),n(3391569614,3928383900),n(3515267271,566280711),n(3940187606,3454069534),n(4118630271,4000239992),n(116418474,1914138554),n(174292421,2731055270),n(289380356,3203993006),n(460393269,320620315),n(685471733,587496836),n(852142971,1086792851),n(1017036298,365543100),n(1126000580,2618297676),n(1288033470,3409855158),n(1501505948,4234509866),n(1607167915,987167468),n(1816402316,1246189591)],d=[];!function(){for(var e=0;e<80;e++)d[e]=n()}();var h=a.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],o=i[2],a=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=s.high,f=s.low,m=r.high,g=r.low,y=o.high,A=o.low,b=a.high,v=a.low,_=n.high,w=n.low,S=h.high,E=h.low,T=c.high,k=c.low,L=u.high,C=u.low,x=p,D=f,R=m,I=g,P=y,B=A,M=b,F=v,U=_,O=w,N=S,j=E,G=T,W=k,z=L,$=C,V=0;V<80;V++){var H,J,q=d[V];if(V<16)J=q.high=0|e[t+2*V],H=q.low=0|e[t+2*V+1];else{var K=d[V-15],Y=K.high,Q=K.low,X=(Y>>>1|Q<<31)^(Y>>>8|Q<<24)^Y>>>7,Z=(Q>>>1|Y<<31)^(Q>>>8|Y<<24)^(Q>>>7|Y<<25),ee=d[V-2],te=ee.high,ie=ee.low,se=(te>>>19|ie<<13)^(te<<3|ie>>>29)^te>>>6,re=(ie>>>19|te<<13)^(ie<<3|te>>>29)^(ie>>>6|te<<26),oe=d[V-7],ae=oe.high,ne=oe.low,le=d[V-16],de=le.high,he=le.low;J=(J=(J=X+ae+((H=Z+ne)>>>0>>0?1:0))+se+((H+=re)>>>0>>0?1:0))+de+((H+=he)>>>0>>0?1:0),q.high=J,q.low=H}var ce,ue=U&N^~U&G,pe=O&j^~O&W,fe=x&R^x&P^R&P,me=D&I^D&B^I&B,ge=(x>>>28|D<<4)^(x<<30|D>>>2)^(x<<25|D>>>7),ye=(D>>>28|x<<4)^(D<<30|x>>>2)^(D<<25|x>>>7),Ae=(U>>>14|O<<18)^(U>>>18|O<<14)^(U<<23|O>>>9),be=(O>>>14|U<<18)^(O>>>18|U<<14)^(O<<23|U>>>9),ve=l[V],_e=ve.high,we=ve.low,Se=z+Ae+((ce=$+be)>>>0<$>>>0?1:0),Ee=ye+me;z=G,$=W,G=N,W=j,N=U,j=O,U=M+(Se=(Se=(Se=Se+ue+((ce+=pe)>>>0>>0?1:0))+_e+((ce+=we)>>>0>>0?1:0))+J+((ce+=H)>>>0>>0?1:0))+((O=F+ce|0)>>>0>>0?1:0)|0,M=P,F=B,P=R,B=I,R=x,I=D,x=Se+(ge+fe+(Ee>>>0>>0?1:0))+((D=ce+Ee|0)>>>0>>0?1:0)|0}f=s.low=f+D,s.high=p+x+(f>>>0>>0?1:0),g=r.low=g+I,r.high=m+R+(g>>>0>>0?1:0),A=o.low=A+B,o.high=y+P+(A>>>0>>0?1:0),v=a.low=v+F,a.high=b+M+(v>>>0>>0?1:0),w=n.low=w+O,n.high=_+U+(w>>>0>>0?1:0),E=h.low=E+j,h.high=S+N+(E>>>0>>0?1:0),k=c.low=k+W,c.high=T+G+(k>>>0>>0?1:0),C=u.low=C+$,u.high=L+z+(C>>>0<$>>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[30+(s+128>>>10<<5)]=Math.floor(i/4294967296),t[31+(s+128>>>10<<5)]=i,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(h),e.HmacSHA512=t._createHmacHelper(h)}(),i.SHA512)})),zr((function(e,t){var i,s,r,o,a,n,l,d;e.exports=(s=(i=d=Ud).x64,r=s.Word,o=s.WordArray,a=i.algo,n=a.SHA512,l=a.SHA384=n.extend({_doReset:function(){this._hash=new o.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=n._createHelper(l),i.HmacSHA384=n._createHmacHelper(l),d.SHA384)})),zr((function(e,t){var i;e.exports=(i=Ud,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.x64.Word,n=t.algo,l=[],d=[],h=[];!function(){for(var e=1,t=0,i=0;i<24;i++){l[e+5*t]=(i+1)*(i+2)/2%64;var s=(2*e+3*t)%5;e=t%5,t=s}for(e=0;e<5;e++)for(t=0;t<5;t++)d[e+5*t]=t+(2*e+3*t)%5*5;for(var r=1,o=0;o<24;o++){for(var n=0,c=0,u=0;u<7;u++){if(1&r){var p=(1<>>24)|4278255360&(o<<24|o>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(C=i[r]).high^=a,C.low^=o}for(var n=0;n<24;n++){for(var u=0;u<5;u++){for(var p=0,f=0,m=0;m<5;m++)p^=(C=i[u+5*m]).high,f^=C.low;var g=c[u];g.high=p,g.low=f}for(u=0;u<5;u++){var y=c[(u+4)%5],A=c[(u+1)%5],b=A.high,v=A.low;for(p=y.high^(b<<1|v>>>31),f=y.low^(v<<1|b>>>31),m=0;m<5;m++)(C=i[u+5*m]).high^=p,C.low^=f}for(var _=1;_<25;_++){var w=(C=i[_]).high,S=C.low,E=l[_];E<32?(p=w<>>32-E,f=S<>>32-E):(p=S<>>64-E,f=w<>>64-E);var T=c[d[_]];T.high=p,T.low=f}var k=c[0],L=i[0];for(k.high=L.high,k.low=L.low,u=0;u<5;u++)for(m=0;m<5;m++){var C=i[_=u+5*m],x=c[_],D=c[(u+1)%5+5*m],R=c[(u+2)%5+5*m];C.high=x.high^~D.high&R.high,C.low=x.low^~D.low&R.low}C=i[0];var I=h[n];C.high^=I.high,C.low^=I.low}},_doFinalize:function(){var t=this._data,i=t.words;this._nDataBytes;var s=8*t.sigBytes,o=32*this.blockSize;i[s>>>5]|=1<<24-s%32,i[(e.ceil((s+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var a=this._state,n=this.cfg.outputLength/8,l=n/8,d=[],h=0;h>>24)|4278255360&(u<<24|u>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),d.push(p),d.push(u)}return new r.init(d,n)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),i=0;i<25;i++)t[i]=t[i].clone();return e}});t.SHA3=o._createHelper(u),t.HmacSHA3=o._createHmacHelper(u)}(Math),i.SHA3)})),zr((function(e,t){var i;e.exports=(i=Ud,function(e){var t=i,s=t.lib,r=s.WordArray,o=s.Hasher,a=t.algo,n=r.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),l=r.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),d=r.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),h=r.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=r.create([0,1518500249,1859775393,2400959708,2840853838]),u=r.create([1352829926,1548603684,1836072691,2053994217,0]),p=a.RIPEMD160=o.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=0;i<16;i++){var s=t+i,r=e[s];e[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var o,a,p,v,_,w,S,E,T,k,L,C=this._hash.words,x=c.words,D=u.words,R=n.words,I=l.words,P=d.words,B=h.words;for(w=o=C[0],S=a=C[1],E=p=C[2],T=v=C[3],k=_=C[4],i=0;i<80;i+=1)L=o+e[t+R[i]]|0,L+=i<16?f(a,p,v)+x[0]:i<32?m(a,p,v)+x[1]:i<48?g(a,p,v)+x[2]:i<64?y(a,p,v)+x[3]:A(a,p,v)+x[4],L=(L=b(L|=0,P[i]))+_|0,o=_,_=v,v=b(p,10),p=a,a=L,L=w+e[t+I[i]]|0,L+=i<16?A(S,E,T)+D[0]:i<32?y(S,E,T)+D[1]:i<48?g(S,E,T)+D[2]:i<64?m(S,E,T)+D[3]:f(S,E,T)+D[4],L=(L=b(L|=0,B[i]))+k|0,w=k,k=T,T=b(E,10),E=S,S=L;L=C[1]+p+T|0,C[1]=C[2]+v+k|0,C[2]=C[3]+_+w|0,C[3]=C[4]+o+S|0,C[4]=C[0]+a+E|0,C[0]=L},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e.sigBytes=4*(t.length+1),this._process();for(var r=this._hash,o=r.words,a=0;a<5;a++){var n=o[a];o[a]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}return r},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function f(e,t,i){return e^t^i}function m(e,t,i){return e&t|~e&i}function g(e,t,i){return(e|~t)^i}function y(e,t,i){return e&i|t&~i}function A(e,t,i){return e^(t|~i)}function b(e,t){return e<>>32-t}t.RIPEMD160=o._createHelper(p),t.HmacRIPEMD160=o._createHmacHelper(p)}(),i.RIPEMD160)})),zr((function(e,t){var i,s,r;e.exports=(s=(i=Ud).lib.Base,r=i.enc.Utf8,void(i.algo.HMAC=s.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=r.parse(t));var i=e.blockSize,s=4*i;t.sigBytes>s&&(t=e.finalize(t)),t.clamp();for(var o=this._oKey=t.clone(),a=this._iKey=t.clone(),n=o.words,l=a.words,d=0;d>>2];e.sigBytes-=t}};s.BlockCipher=h.extend({cfg:h.cfg.extend({mode:p,padding:f}),reset:function(){var e;h.reset.call(this);var t=this.cfg,i=t.iv,s=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=s.createEncryptor:(e=s.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,i&&i.words):(this._mode=e.call(s,this,i&&i.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=s.CipherParams=r.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),g=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,i=e.salt;return(i?o.create([1398893684,1701076831]).concat(i).concat(t):t).toString(l)},parse:function(e){var t,i=l.parse(e),s=i.words;return 1398893684==s[0]&&1701076831==s[1]&&(t=o.create(s.slice(2,4)),s.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:t})}},y=s.SerializableCipher=r.extend({cfg:r.extend({format:g}),encrypt:function(e,t,i,s){s=this.cfg.extend(s);var r=e.createEncryptor(i,s),o=r.finalize(t),a=r.cfg;return m.create({ciphertext:o,key:i,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:s.format})},decrypt:function(e,t,i,s){return s=this.cfg.extend(s),t=this._parse(t,s.format),e.createDecryptor(i,s).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),A=(t.kdf={}).OpenSSL={execute:function(e,t,i,s,r){if(s||(s=o.random(8)),r)a=d.create({keySize:t+i,hasher:r}).compute(e,s);else var a=d.create({keySize:t+i}).compute(e,s);var n=o.create(a.words.slice(t),4*i);return a.sigBytes=4*t,m.create({key:a,iv:n,salt:s})}},b=s.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:A}),encrypt:function(e,t,i,s){var r=(s=this.cfg.extend(s)).kdf.execute(i,e.keySize,e.ivSize,s.salt,s.hasher);s.iv=r.iv;var o=y.encrypt.call(this,e,t,r.key,s);return o.mixIn(r),o},decrypt:function(e,t,i,s){s=this.cfg.extend(s),t=this._parse(t,s.format);var r=s.kdf.execute(i,e.keySize,e.ivSize,t.salt,s.hasher);return s.iv=r.iv,y.decrypt.call(this,e,t,r.key,s)}})}())})),zr((function(e,t){var i;e.exports=((i=Ud).mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,i,s){var r,o=this._iv;o?(r=o.slice(0),this._iv=void 0):r=this._prevBlock,s.encryptBlock(r,0);for(var a=0;a>24&255)){var t=e>>16&255,i=e>>8&255,s=255&e;255===t?(t=0,255===i?(i=0,255===s?s=0:++s):++i):++t,e=0,e+=t<<16,e+=i<<8,e+=s}else e+=1<<24;return e}function s(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var r=e.Encryptor=e.extend({processBlock:function(e,t){var i=this._cipher,r=i.blockSize,o=this._iv,a=this._counter;o&&(a=this._counter=o.slice(0),this._iv=void 0),s(a);var n=a.slice(0);i.encryptBlock(n,0);for(var l=0;l>>2]|=r<<24-o%4*8,e.sigBytes+=r},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)})),zr((function(e,t){var i;e.exports=((i=Ud).pad.Iso10126={pad:function(e,t){var s=4*t,r=s-e.sigBytes%s;e.concat(i.lib.WordArray.random(r-1)).concat(i.lib.WordArray.create([r<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)})),zr((function(e,t){var i;e.exports=((i=Ud).pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)})),zr((function(e,t){var i;e.exports=((i=Ud).pad.ZeroPadding={pad:function(e,t){var i=4*t;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){var t=e.words,i=e.sigBytes-1;for(i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},i.pad.ZeroPadding)})),zr((function(e,t){var i;e.exports=((i=Ud).pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)})),zr((function(e,t){var i;e.exports=(i=Ud,function(e){var t=i,s=t.lib.CipherParams,r=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(r)},parse:function(e){var t=r.parse(e);return s.create({ciphertext:t})}}}(),i.format.Hex)})),zr((function(e,t){var i;e.exports=(i=Ud,function(){var e=i,t=e.lib.BlockCipher,s=e.algo,r=[],o=[],a=[],n=[],l=[],d=[],h=[],c=[],u=[],p=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var i=0,s=0;for(t=0;t<256;t++){var f=s^s<<1^s<<2^s<<3^s<<4;f=f>>>8^255&f^99,r[i]=f,o[f]=i;var m=e[i],g=e[m],y=e[g],A=257*e[f]^16843008*f;a[i]=A<<24|A>>>8,n[i]=A<<16|A>>>16,l[i]=A<<8|A>>>24,d[i]=A,A=16843009*y^65537*g^257*m^16843008*i,h[f]=A<<24|A>>>8,c[f]=A<<16|A>>>16,u[f]=A<<8|A>>>24,p[f]=A,i?(i=m^e[e[e[y^m]]],s^=e[e[s]]):i=s=1}}();var f=[0,1,2,4,8,16,32,64,128,27,54],m=s.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,i=e.sigBytes/4,s=4*((this._nRounds=i+6)+1),o=this._keySchedule=[],a=0;a6&&a%i==4&&(d=r[d>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d]):(d=r[(d=d<<8|d>>>24)>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d],d^=f[a/i|0]<<24),o[a]=o[a-i]^d);for(var n=this._invKeySchedule=[],l=0;l>>24]]^c[r[d>>>16&255]]^u[r[d>>>8&255]]^p[r[255&d]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,n,l,d,r)},decryptBlock:function(e,t){var i=e[t+1];e[t+1]=e[t+3],e[t+3]=i,this._doCryptBlock(e,t,this._invKeySchedule,h,c,u,p,o),i=e[t+1],e[t+1]=e[t+3],e[t+3]=i},_doCryptBlock:function(e,t,i,s,r,o,a,n){for(var l=this._nRounds,d=e[t]^i[0],h=e[t+1]^i[1],c=e[t+2]^i[2],u=e[t+3]^i[3],p=4,f=1;f>>24]^r[h>>>16&255]^o[c>>>8&255]^a[255&u]^i[p++],g=s[h>>>24]^r[c>>>16&255]^o[u>>>8&255]^a[255&d]^i[p++],y=s[c>>>24]^r[u>>>16&255]^o[d>>>8&255]^a[255&h]^i[p++],A=s[u>>>24]^r[d>>>16&255]^o[h>>>8&255]^a[255&c]^i[p++];d=m,h=g,c=y,u=A}m=(n[d>>>24]<<24|n[h>>>16&255]<<16|n[c>>>8&255]<<8|n[255&u])^i[p++],g=(n[h>>>24]<<24|n[c>>>16&255]<<16|n[u>>>8&255]<<8|n[255&d])^i[p++],y=(n[c>>>24]<<24|n[u>>>16&255]<<16|n[d>>>8&255]<<8|n[255&h])^i[p++],A=(n[u>>>24]<<24|n[d>>>16&255]<<16|n[h>>>8&255]<<8|n[255&c])^i[p++],e[t]=m,e[t+1]=g,e[t+2]=y,e[t+3]=A},keySize:8});e.AES=t._createHelper(m)}(),i.AES)})),zr((function(e,t){var i;e.exports=(i=Ud,function(){var e=i,t=e.lib,s=t.WordArray,r=t.BlockCipher,o=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],n=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],d=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],h=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=o.DES=r.extend({_doReset:function(){for(var e=this._key.words,t=[],i=0;i<56;i++){var s=a[i]-1;t[i]=e[s>>>5]>>>31-s%32&1}for(var r=this._subKeys=[],o=0;o<16;o++){var d=r[o]=[],h=l[o];for(i=0;i<24;i++)d[i/6|0]|=t[(n[i]-1+h)%28]<<31-i%6,d[4+(i/6|0)]|=t[28+(n[i+24]-1+h)%28]<<31-i%6;for(d[0]=d[0]<<1|d[0]>>>31,i=1;i<7;i++)d[i]=d[i]>>>4*(i-1)+3;d[7]=d[7]<<5|d[7]>>>27}var c=this._invSubKeys=[];for(i=0;i<16;i++)c[i]=r[15-i]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,i){this._lBlock=e[t],this._rBlock=e[t+1],u.call(this,4,252645135),u.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),u.call(this,1,1431655765);for(var s=0;s<16;s++){for(var r=i[s],o=this._lBlock,a=this._rBlock,n=0,l=0;l<8;l++)n|=d[l][((a^r[l])&h[l])>>>0];this._lBlock=a,this._rBlock=o^n}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,u.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(e,t){var i=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=i,this._lBlock^=i<>>e^this._lBlock)&t;this._lBlock^=i,this._rBlock^=i<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),r=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=c.createEncryptor(s.create(t)),this._des2=c.createEncryptor(s.create(i)),this._des3=c.createEncryptor(s.create(r))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=r._createHelper(f)}(),i.TripleDES)})),zr((function(e,t){var i;e.exports=(i=Ud,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=s.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,i=e.sigBytes,s=this._S=[],r=0;r<256;r++)s[r]=r;r=0;for(var o=0;r<256;r++){var a=r%i,n=t[a>>>2]>>>24-a%4*8&255;o=(o+s[r]+n)%256;var l=s[r];s[r]=s[o],s[o]=l}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,i=this._j,s=0,r=0;r<4;r++){i=(i+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[i],e[i]=o,s|=e[(e[t]+e[i])%256]<<24-8*r}return this._i=t,this._j=i,s}e.RC4=t._createHelper(r);var a=s.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(a)}(),i.RC4)})),zr((function(e,t){var i;e.exports=(i=Ud,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,i=0;i<4;i++)e[i]=16711935&(e[i]<<8|e[i]>>>24)|4278255360&(e[i]<<24|e[i]>>>8);var s=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,i=0;i<4;i++)l.call(this);for(i=0;i<8;i++)r[i]^=s[i+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(r[0]^=d,r[1]^=c,r[2]^=h,r[3]^=u,r[4]^=d,r[5]^=c,r[6]^=h,r[7]^=u,i=0;i<4;i++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(n)}(),i.Rabbit)})),zr((function(e,t){var i;e.exports=(i=Ud,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],o=[],a=[],n=s.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var r=0;r<4;r++)l.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var o=t.words,a=o[0],n=o[1],d=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(s[0]^=d,s[1]^=c,s[2]^=h,s[3]^=u,s[4]^=d,s[5]^=c,s[6]^=h,s[7]^=u,r=0;r<4;r++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)o[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);a[i]=l^d}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(n)}(),i.RabbitLegacy)})),zr((function(e,t){var i;e.exports=(i=Ud,function(){var e=i,t=e.lib.BlockCipher,s=e.algo;const r=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var n={pbox:[],sbox:[]};function l(e,t){let i=t>>24&255,s=t>>16&255,r=t>>8&255,o=255&t,a=e.sbox[0][i]+e.sbox[1][s];return a^=e.sbox[2][r],a+=e.sbox[3][o],a}function d(e,t,i){let s,o=t,a=i;for(let t=0;t1;--t)o^=e.pbox[t],a=l(e,o)^a,s=o,o=a,a=s;return s=o,o=a,a=s,a^=e.pbox[1],o^=e.pbox[0],{left:o,right:a}}function c(e,t,i){for(let t=0;t<4;t++){e.sbox[t]=[];for(let i=0;i<256;i++)e.sbox[t][i]=a[t][i]}let s=0;for(let a=0;a=i&&(s=0);let n=0,l=0,h=0;for(let t=0;t>>2]|=e[i]<<24-i%4*8;return Od.lib.WordArray.create(t,e.length)}const Gd=16,Wd=[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],zd=[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 $d(e){const t=[];for(let i=0,s=e.length;i1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Hd(e){const t=[];for(let i=0,s=e.length;i>>6),t.push(128|63&s);else if(s<=55295||s>=57344&&s<=65535)t.push(224|s>>>12),t.push(128|s>>>6&63),t.push(128|63&s);else{if(!(s>=65536&&s<=1114111))throw t.push(s),new Error("input is not supported");i++,t.push(240|s>>>18&28),t.push(128|s>>>12&63),t.push(128|s>>>6&63),t.push(128|63&s)}}return t}function Jd(e){const t=[];for(let i=0,s=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("")}function qd(e,t){const i=31&t;return e<>>32-i}function Kd(e){return(255&Wd[e>>>24&255])<<24|(255&Wd[e>>>16&255])<<16|(255&Wd[e>>>8&255])<<8|255&Wd[255&e]}function Yd(e){return e^qd(e,2)^qd(e,10)^qd(e,18)^qd(e,24)}function Qd(e){return e^qd(e,13)^qd(e,23)}function Xd(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[4*t],r[1]=255&e[4*t+1],r[2]=255&e[4*t+2],r[3]=255&e[4*t+3],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];for(let e,t=0;t<32;t+=4)e=s[1]^s[2]^s[3]^i[t+0],s[0]^=Yd(Kd(e)),e=s[2]^s[3]^s[0]^i[t+1],s[1]^=Yd(Kd(e)),e=s[3]^s[0]^s[1]^i[t+2],s[2]^=Yd(Kd(e)),e=s[0]^s[1]^s[2]^i[t+3],s[3]^=Yd(Kd(e));for(let e=0;e<16;e+=4)t[e]=s[3-e/4]>>>24&255,t[e+1]=s[3-e/4]>>>16&255,t[e+2]=s[3-e/4]>>>8&255,t[e+3]=255&s[3-e/4]}function Zd(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[0+4*t],r[1]=255&e[1+4*t],r[2]=255&e[2+4*t],r[3]=255&e[3+4*t],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];s[0]^=2746333894,s[1]^=1453994832,s[2]^=1736282519,s[3]^=2993693404;for(let e,i=0;i<32;i+=4)e=s[1]^s[2]^s[3]^zd[i+0],t[i+0]=s[0]^=Qd(Kd(e)),e=s[2]^s[3]^s[0]^zd[i+1],t[i+1]=s[1]^=Qd(Kd(e)),e=s[3]^s[0]^s[1]^zd[i+2],t[i+2]=s[2]^=Qd(Kd(e)),e=s[0]^s[1]^s[2]^zd[i+3],t[i+3]=s[3]^=Qd(Kd(e));if(0===i)for(let e,i=0;i<16;i++)e=t[i],t[i]=t[31-i],t[31-i]=e}function eh(e,t,i){let{padding:s="pkcs#7",mode:r,iv:o=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===r&&("string"==typeof o&&(o=$d(o)),16!==o.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=$d(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==i?Hd(e):$d(e):[...e],("pkcs#5"===s||"pkcs#7"===s)&&0!==i){const t=Gd-e.length%Gd;for(let i=0;i=Gd;){const t=e.slice(c,c+16),s=new Array(16);if("cbc"===r)for(let e=0;ee.length&&s+r<=i.length?e.length-t:s+r>i.length&&t+r<=e.length?i.length-s:t+r<=e.length&&s+r<=i.length?r:i.length>24&255,e>>16&255,e>>8&255,255&e)}function hh(e,t){return t+3>>19)^(s<<23|s>>>9)}function ph(e,t){var i=new Array(36);i[0]=hh(t,0),i[1]=hh(t,4),i[2]=hh(t,8),i[3]=hh(t,12);for(var s=0;s<32;s++)i[s+4]=i[s]^fh(i[s+1]^i[s+2]^i[s+3]^e[s]);var r=new Array(4);for(s=35;s>=32;s--)r[35-s]=i[s];var o=function(e){for(var t=new Array(4*e.length),i=0;i>>30)^(s<<10|s>>>22)^(s<<18|s>>>14)^(s<<24|s>>>8)}function mh(e,t,i){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==i||null==i||i.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var s=ch(e),r=Math.ceil(i.length/16),o=new Array(i.length),a=t.slice(),n=0;ne)return this.preDelayTimestamp-e>1e3&&this.player.debugWarn("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===Ge)return this.pushLatestDelay;if(this.preDelayTimestamp&&this.preDelayTimestamp-e>1e3)return this.player.debugWarn("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,s=e-this.firstTimestamp;t=i>=s?i-s:s-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.debugLog("CommonDemux","initInterval() and is hls and support hls265 so return"):-1===this.player.getStreamType().indexOf(A)?this.player.isPlaybackCacheBeforeDecodeForFpsRender()?this.player.debugLog("CommonDemux","initInterval() and playback and playbackIsCacheBeforeDecodeForFpsRender is true so return"):(this.player.debugLog("CommonDemux","setInterval()"),this._loop(),this.stopId=setInterval((()=>{if(this.player.isDestroyedOrClosed())return;let e=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=e);const t=e-this.preLoopTimestamp;this.updateHistoryIntervalDiffTimeList(t),t>100&&this.player.debugWarn("CommonDemux",`loop demux diff time is ${t}`),this._loop(),this.preLoopTimestamp=(new Date).getTime()}),20)):this.player.debugLog("CommonDemux","initInterval() and is worker stream so return")}clearStopInterval(){this.stopId&&(clearInterval(this.stopId),this.stopId=null)}startPlaybackLoopInterval(){this.initPlaybackCacheLoop()}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.debugLog("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,s=this.player._opt.playType===v;if(this.bufferList.length){if(this.isPushDropping)return void this.player.debugWarn("CommonDemux",`_loop isPushDropping is true and bufferList length is ${this.bufferList.length}`);if(this.dropping){for(e=this.bufferList.shift(),this.player.debugWarn("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.debugLog("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.debugLog("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&&s)this.hasIframeInBufferList()?(this.player.debugWarn("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.debugWarn("CommonDemux",`_loop delay is ${this.delay} bufferList is ${this.bufferList}`);break}this.bufferList.shift(),this._doDecoderDecode(e)}}else-1!==this.delay&&this.player.debugLog("CommonDemux","loop() bufferList is empty and reset delay"),this.resetAllDelay()}_doDecode(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;const o=this.player;let a={ts:i,cts:r,type:t,isIFrame:!1};this.player.isPlayer()?(t===We&&o._opt.playType===v&&this.calcNetworkDelay(i),o._opt.useWCS&&!o._opt.useOffscreen||o._opt.useMSE?(t===We&&(a.isIFrame=s),this.pushBuffer(e,a)):t===We?o.decoderWorker&&o.decoderWorker.decodeVideo(e,i,s):t===Ge&&o._opt.hasAudio&&o.decoderWorker&&o.decoderWorker.decodeAudio(e,i)):this.player.isPlayback()&&(t===We&&(a.isIFrame=s),this.player.isPlaybackOnlyDecodeIFrame()?t===We&&s&&this.pushBuffer(e,a):this.player.isPlaybackCacheBeforeDecodeForFpsRender()||1===this.player.getPlaybackRate()?this.pushBuffer(e,a):this.pushBuffer(e,a,!1))}_doDecodeByHls(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=!1;if(t===Ge&&Yr(e)&&(this.player.debugLog("CommonDemux",`hls pushBuffer audio ts is ${i}, isAacCodecPacket is true`),o=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(t,i)}let a=!1;if(t===We&&s&&Ca(e)&&(this.player.debugLog("CommonDemux",`hls pushBuffer video ts is ${i}, isVideoSequenceHeader is true`),a=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(t,i)}this.player.recording&&Da(a)&&Da(o)&&this.handleRecording(e,t,i,s,r),t===We?this._doDecoderDecode({ts:i,cts:r,payload:e,type:We,isIFrame:s}):t===Ge&&this._doDecoderDecode({ts:i,payload:e,type:Ge})}_doDecodeByFmp4(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByTs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByPs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_decodeNext(e){const t=e.ts;if(0===this.bufferList.length)return;let i=this.bufferList[0];const s=i.ts-t,r=e.type===We&&i.type===Ge,o=e.type===We&&Ca(e.payload);(s<=20||r||o)&&(this.player.debugLog("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 ${s} and isVideoAndNextAudio is ${r} and isVideoSqeHeader is ${o}`),this.bufferList.shift(),this._doDecoderDecode(i))}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:s}=t;this.player.isPlayer()&&this.player.updateStats({buf:this.delay}),e.type===Ge?t._opt.hasAudio&&(t._opt.useMSE&&t._opt.mseDecodeAudio?s.decodeAudio(e.payload,e.ts):t._opt.useWCS&&t._opt.wcsDecodeAudio?i.decodeAudio(e.payload,e.ts):t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts)):e.type===We&&(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?s.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t.decoderWorker&&t.decoderWorker.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const s=this.player._opt.videoBuffer,r=this.player._opt.videoBufferDelay,o=this.player.isPlayer();if(t.type===Ge&&Yr(e)){if(this.player.debugLog("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:Ge})}else if(t.type===We&&t.isIFrame&&Ca(e)){if(this.player.debugLog("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:We,isIFrame:t.isIFrame,cts:t.cts})}else{if(this.player.recording&&this.handleRecording(e,t.type,t.ts,t.isIFrame,t.cts),o){if(t.type===We){if(this.preTimestampDuration>0){const e=t.ts-this.preTimestamp,i=this.preTimestampDuration+this.preTimestampDuration/2;e>=i&&this.player.debugLog("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${this.preTimestamp},\n diff is ${e} and preTsDuration is ${this.preTimestampDuration} and maxDiff is ${i}\n maybe trigger black screen or flower screen`)}if(null!==this.preTimestamp&&this.preTimestamp>=t.ts&&(this.player.debugWarn("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts} less than (or equal) preTs is ${this.preTimestamp} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${this.prevPayloadBufferSize}`),this.preTimestamp-t.ts>te&&(this.player.debugWarn("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()),this.player._opt.isDropSameTimestampGop&&Da(t.isIFrame)&&this.player.isDemuxDecodeFirstIIframeInit())){const e=this.hasIframeInBufferList(),t=Da(this.isPushDropping);return this.player.debugLog("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))}this.preTimestamp>0&&(this.preTimestampDuration=t.ts-this.preTimestamp),this.prevPayloadBufferSize=e.byteLength,this.preTimestamp=t.ts}if(this.player.isDemuxDecodeFirstIIframeInit()){let e=this.getDelayNotUpdateDelay(t.ts,t.type);this.pushLatestDelay=e;const i=r+s;this.player._opt.useMSE?this.delay>0&&e>i&&this.delay ${r+s}, bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):this.delay>0&&e>i&&this.delay ${r+s},bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()),this.isHistoryIntervalDiffTimeAllLarge()&&Da(this.player.visibility)&&(this.player._opt.useMSE?this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debugWarn("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.debugWarn("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()))}}i?t.type===Ge?this.bufferList.push({ts:t.ts,payload:e,type:Ge}):t.type===We&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:We,isIFrame:t.isIFrame}):t.type===We?this._doDecoderDecode({ts:t.ts,cts:t.cts,payload:e,type:We,isIFrame:t.isIFrame}):t.type===Ge&&this._doDecoderDecode({ts:t.ts,payload:e,type:Ge}),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&this.calcPlaybackStreamFps()}}calcPlaybackStreamFps(){if(Vo(this.playbackStreamVideoFps)||Vo(this.playbackStreamAudioFps)){let e=this.playbackStreamVideoFps,t=this.playbackStreamAudioFps;if(Vo(this.playbackStreamVideoFps)&&(e=_a(this.bufferList,We),e>0&&(this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),this.playbackStreamFps=t?e+t:e,Da(this.player._opt.hasAudio)&&(this.player.debugLog(this.TAG_NAME,"playbackCacheBeforeDecodeForFpsRender,_opt.hasAudio is false and set streamAudioFps is 0"),this.playbackStreamAudioFps=0),this.initPlaybackCacheLoop())),Vo(this.playbackStreamAudioFps)&&(t=_a(this.bufferList,Ge),t>0&&(this.playbackStreamAudioFps=t,this.playbackStreamFps=e?e+t:t,this.initPlaybackCacheLoop())),Vo(this.playbackStreamVideoFps)&&Vo(this.playbackStreamAudioFps)){const i=this.bufferList.map((e=>({type:e.type,ts:e.ts})));this.player.debugLog("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,s=i?60:40;this.bufferList.length>=s&&(this.player.debugWarn("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${this.bufferList.length} more than ${s}, 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=>xa(e.isIFrame)&&e.type===We));if(this.isAllIframeInBufferList())for(let t=0;t=this.getNotDroppingDelayTs()){this.player.debugLog("CommonDemux",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} 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.debugLog("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(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.player.debugLog("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(),xa(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=Ao()):et?i-t:0;s>this.player._opt.networkDelay&&this.player._opt.playType===v&&(this.player.debugWarn("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 ${s}, _opt.networkDelay is ${this.player._opt.networkDelay}`),this.player.emit(At.networkDelayTimeout,s)),this.player.updateStats({netBuf:s})}calcIframeIntervalTimestamp(e){if(null===this.preIframeTs)this.preIframeTs=e;else if(this.preIframeTs{t.type===We&&(e+=1)})),e}getAudioBufferLength(){let e=0;return this.bufferList.forEach((t=>{t.type===Ge&&(e+=1)})),e}hasIframeInBufferList(){return this.bufferList.some((e=>e.type===We&&e.isIFrame))}isAllIframeInBufferList(){const e=this.getVideoBufferLength();let t=0;return this.bufferList.forEach((e=>{e.type===We&&e.isIFrame&&(t+=1)})),e===t}getInputByteLength(){return 0}getIsStreamTsMoreThanLocal(){return this.isStreamTsMoreThanLocal}close(){}reset(){}findSei(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=4;Jo(this.nalUnitSize)&&(s=this.nalUnitSize);const r=co(e.slice(5),s);if(Da(i)){const e=this.player.getVideoInfo();e&&e.encType&&(i=e.encType===Pt)}r.forEach((e=>{const s=i?e[0]>>>1&63:31&e[0],r=i&&(s===li||s===ni),o=Da(i)&&s===$t;if(r||o){const s=uo(e,i);this.player.emitVideoSei({ts:t,data:s.payload})}}))}handleRecording(e,t,i,s,r){if(this.player.isRecordTypeFlv()){const s=new Uint8Array(e);t===We?this.player.recorder.addVideo(s,i):t===Ge&&this.player.recorder.addAudio(s,i)}else if(this.player.isRecordTypeMp4()){const o=new Uint8Array(e);if(this.player.recorder.isWasmMp4()){if(t===We)this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r);else if(t===Ge){const t=new Uint8Array(e);this.player.recorder.handleAddAudioTrack(Qr(t)?t.slice(2):t.slice(1),i)}}else t===We&&this.player.recorder.handleAddNaluTrack(o.slice(5),s,i,r)}}updateNalUnitSize(e){const t=15&e[0];this.player.video.updateVideoInfo({encTypeCode:t});const i=t===Rt;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.debugLog(this.TAG_NAME,`demux() isVideoSequenceHeader is true and isHevc is ${i} and nalUnitSize is ${this.nalUnitSize}`)}cryptoPayload(e,t){let i=this.player,s=e;if(i._opt.isM7sCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();t.encTypeCode?s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),i=new Uint8Array(i);const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=e.slice(o+4+2,o+4+a);let r=new Fd.ModeOfOperation.ctr(t,new Fd.Counter(i));const n=r.decrypt(s);r=null,e.set(n,o+4+2)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===Rt):i.debugWarn(this.TAG_NAME,`videoInfo.encTypeCode is ${t.encTypeCode}`)}else i.debugError(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`);else if(i._opt.isSm4Crypto)if(i._opt.sm4CryptoKey){const t=this.player.video.getVideoInfo().encTypeCode===Rt,r=this.player._opt.isSm4CryptoH265V2;s=i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0?function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),i=new Uint8Array(i);const o=e.byteLength;let a=5;for(;ao)break;let l=e[a+4],d=!1,h=2;if(s?(r&&(h=3),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 s=mh(t,i,e.slice(a+4+h,a+4+n));e.set(s,a+4+h)}a=a+4+n}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t,r):function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=new Uint8Array(e.slice(0,5)),a=5;for(;ar){const t=new Uint8Array(o.length+e.length-a);t.set(o,0),t.set(e.slice(a),o.length),o=t;break}let d=e[a+4],h=!1,c=2;if(i?(s&&(c=3),d=d>>>1&63,h=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(d)):(d&=31,h=1===d||5===d),h){const i=eh(e.slice(a+4+c,a+4+l),t,0,{padding:"none",output:"array"});let s=i[i.length-1];if(s>0&&s<16){let e=!0;for(let t=1;t<=s;t++)if(i[i.length-t]!==s){e=!1;break}e&&i.splice(i.length-s,s)}const r=new Uint8Array(c);r.set(e.slice(a+4,a+4+c),0);const n=po(wl(r,new Uint8Array(i))),d=new Uint8Array(o.length+n.length);d.set(o,0),d.set(n,o.length),o=d}else{const t=e.slice(a+4,a+4+l),i=new Uint8Array(o.length+4+t.length);i.set(o,0),i.set(n,o.length),i.set(t,o.length+4),o=i}a=a+4+l}return o}(e,i._opt.sm4CryptoKey,t,r)}else i._opt.sm4CryptoKey||i.debugError(this.TAG_NAME,"isSm4Crypto opt.sm4CryptoKey is null");else if(i._opt.isXorCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();s=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let o=5;for(;or)break;let n=e[o+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=ih(e.slice(o+4,o+4+a),t,i);e.set(s,o+4)}o=o+4+a}return e}(e,i._opt.cryptoKey,i._opt.cryptoIV,t.encTypeCode===Rt)}else i.debugError(this.TAG_NAME,"isXorCrypto opt.xorCryptoKey is null");return s}cryptoPayloadAudio(e){let t=this.player;if(Da(t._opt.isCryptoAudio))return e;let i=e;if(t._opt.isM7sCrypto)if(t._opt.cryptoKey&&t._opt.cryptoKey.byteLength>0&&t._opt.cryptoIV&&t._opt.cryptoIV.byteLength>0){e[0]>>4===Bt&&(i=function(e,t,i){if(e.byteLength<=30)return e;const s=e.slice(32);let r=new Fd.ModeOfOperation.ctr(t,new Fd.Counter(i));const o=r.decrypt(s);return r=null,e.set(o,32),e}(e,t._opt.cryptoKey,t._opt.cryptoIV))}else t.debugError(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${t._opt.cryptoKey&&t._opt.cryptoKey.byteLength} or cryptoIV.length is ${t._opt.cryptoIV&&t._opt.cryptoIV.byteLength} null`);return i}_decodeEnhancedH265Video(e,t){const i=e[0],s=48&i,r=15&i,o=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),l="a"==String.fromCharCode(o[0]);if(r===Ar){if(s===_r){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.debugLog(this.TAG_NAME,`demux() isVideoSequenceHeader(enhancedH265) is true and nalUnitSize is ${this.nalUnitSize}`),this._doDecode(e,We,0,!0,0)}}}else if(r===br){let i=e,r=0;const o=s===_r;if(o&&this.calcIframeIntervalTimestamp(t),l);else{n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,r=n[0];i=ul(e.slice(8),o),i=this.cryptoPayload(i,o),this._doDecode(i,We,t,o,r)}}else if(r===vr){const i=s===_r,r=e.slice(5);i&&this.calcIframeIntervalTimestamp(t);let o=ul(r,i);o=this.cryptoPayload(o,i),this._doDecode(o,We,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}handlePlaybackPause(e){xa(e)?this.clearStopInterval():this.startPlaybackLoopInterval()}}var yh=function(e,t,i,s){return new(i||(i=Promise))((function(r,o){function a(e){try{l(s.next(e))}catch(e){o(e)}}function n(e){try{l(s.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(a,n)}l((s=s.apply(e,t||[])).next())}))};const Ah=Symbol(32),bh=Symbol(16),vh=Symbol(8);class _h{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 yh(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var s;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(s=this.pull)||void 0===s||s.call(this,e)}))}))}readU32(){return this.read(Ah)}readU16(){return this.read(bh)}readU8(){return this.read(vh)}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 s=e=>t.length<(i=e);if("number"==typeof this.need){if(s(this.need))return;e=t.subarray(0,i)}else if(this.need===Ah){if(s(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===bh){if(s(2))return;e=t[0]<<8|t[1]}else if(this.need===vh){if(s(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(s(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(s(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}}_h.U32=Ah,_h.U16=bh,_h.U8=vh;class wh extends gh{constructor(e){super(e),this.TAG_NAME="FlvDemux",this.input=new _h(this.demux()),e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.input&&(this.input.close(),this.input=null),this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){this.input?this.input.write(e):this.player&&this.player.debugWarn(this.TAG_NAME,"dispatch() this.input is null")}*demux(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),s=this.player;for(;;){if(!this.input)return;t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const o=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let a=i[0];const n=(yield o).slice();if(!s)return;switch(r){case ze:if(s._opt.hasAudio&&(s.updateStats({abps:n.byteLength}),n.byteLength>0)){let e=this.cryptoPayloadAudio(n);this._doDecode(e,Ge,a)}break;case $e:if(s._opt.hasVideo&&n.length>=6){let e=a;s.updateStats({vbps:n.byteLength,dts:e}),s._times.demuxStart||(s._times.demuxStart=Ao());const t=n[0];if(this._isEnhancedH265Header(t))this._decodeEnhancedH265Video(n,e);else{const e=15&t;let s=(t>>4&15)===js;const r=e===Rt,o=e===Dt;if(Da(r||o))return void this.player.debugWarn(this.TAG_NAME,`demux() codecId is ${e} and ignore`);Da(s)&&xa(Ga(n,r))&&(this.player.debugLog(this.TAG_NAME,"demux() isIFrame is false and unit type is IDR and update to true"),s=!0),s&&(this.calcIframeIntervalTimestamp(a),null===this.nalUnitSize&&Ca(n)&&this.updateNalUnitSize(n)),i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let l=i[0],d=this.cryptoPayload(n,s);this._doDecode(d,We,a,s,l)}}else n.length<6&&s.debugWarn(this.TAG_NAME,`payload.length is ${n.length} less than 6 and ignore`);break;case Ve:if(this.player.isRecordTypeFlv()){const e=new Uint8Array(n);this.player.recorder.addMetaData(e)}const e=Pl(n);e&&e.onMetaData&&s.updateMetaData(e.onMetaData);break;default:s.debugLog(this.TAG_NAME,`demux() type is ${r}`)}}}close(){this.input&&(this.input.close(),this.input=null)}getInputByteLength(){let e=0;return this.input&&this.input.buffer&&(e=this.input.buffer.byteLength),e}}class Sh extends gh{constructor(e){super(e),this.TAG_NAME="M7sDemux",e.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){const t=this.player,i=new DataView(e),s=i.getUint8(0),r=i.getUint32(1,!1),o=new ArrayBuffer(4),a=new Uint32Array(o);switch(s){case Ge:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,s,r)}break;case We:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=Ao()),i.byteLength>=11){const o=new Uint8Array(e,5);let n=r;t.updateStats({vbps:o.byteLength,dts:n});const l=o[0];if(this._isEnhancedH265Header(l))this._decodeEnhancedH265Video(o,r);else{const e=i.getUint8(5)>>4==1;e&&this.calcIframeIntervalTimestamp(r),a[0]=o[4],a[1]=o[3],a[2]=o[2],a[3]=0;let t=a[0],n=this.cryptoPayload(o,e);this._doDecode(n,s,r,e,t)}}else this.player.debugWarn(this.TAG_NAME,"dispatch","dv byteLength is",i.byteLength,"and return")}}}class Eh extends wh{constructor(e){super(e),e.debugLog("WebTransportDemux","init")}destroy(){this.player.debugLog("WebTransportDemux","destroy"),super.destroy()}}var Th,kh=zr((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),Lh=(Th=kh)&&Th.__esModule&&Object.prototype.hasOwnProperty.call(Th,"default")?Th.default:Th;class Ch{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>s,o=8-s;if(o>=e)return i&&(this.index+=e),r>>o-e;{i&&(this.index+=o);const s=e-o;return r<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}class xh extends gh{constructor(e){super(e),Lh(this,"TAG_NAME","NakedFlowDemux"),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.pendingUnits={},this.localDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,e.debugLog(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.pendingUnits={},this.localDts=0,this.localAudioDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,this.player.debugLog(this.TAG_NAME,"destroy")}dispatch(e){this.player;const t=new Uint8Array(e);if(this.player._opt.nakedFlowDemuxUseNew){const e=this.extractNALu$3(t);if(0===e.length)return void this.player.debugLog(this.TAG_NAME,"dispatch naluArray.length === 0");this.handleVideoFrames(e)}else 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,10),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,s=0,r=e.byteLength,o=0,a=[];for(;s1)for(let e=0;e{const t=Zn(e);t===jt||t===Nt?this.handleVideoH264Nalu(e):tl(t)&&s.push(e)})),1===s.length)this.handleVideoH264Nalu(s[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===Pt)if(this.player._opt.nakedFlowH265DemuxUseNew){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debugWarn(this.TAG_NAME,"handleVideoNalu","h265 naluList.length === 0");const s=[];if(i.forEach((e=>{const t=pl(e);t===ri||t===ii||t===ei?this.handleVideoH265Nalu(e):fl(t)&&s.push(e)})),1===s.length)this.handleVideoH265Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=pl(e[0]);for(let i=1;i{this.handleVideoH265Nalu(e)}))}}else{pl(t)===ri?this.extractH265PPS(t):this.handleVideoH265Nalu(t)}else this.player.debugWarn(this.TAG_NAME," this.streamVideoType is null")}extractH264PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{el(Zn(e))?this.extractH264SEI(e):this.handleVideoH264Nalu(e)}))}extractH265PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{const t=pl(e);t===ai?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=Ut.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,s=(1&i[2])<<2|(192&i[3])>>6,r=new Uint8Array([175,0,e<<3|(14&t)>>1,(1&t)<<7|s<<3]);this.isSendAACSeqHeader=!0,this._doDecode(r,Ge,0,!1,0)}const s=this.getNaluAudioDts(),r=new Uint8Array(t.length+2);r.set([175,1],0),r.set(t,2),this._doDecode(r,Ge,s,!1,0)}handleAudioG711ANalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=Ut.ALAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([114],0),s.set(t,1),this._doDecode(s,Ge,i,!1,0)}handleAudioG711UNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=Ut.MULAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([130],0),s.set(t,1),this._doDecode(s,Ge,i,!1,0)}handleVideoH264Nalu(e){const t=Zn(e);switch(t){case Nt:this.sps=e;break;case jt:this.pps=e}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Qn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,We,t,!0,0),this.sps=null,this.pps=null}if(tl(t)){this.player._times.demuxStart||(this.player._times.demuxStart=Ao());const i=il(t),s=this.getNaluDts(),r=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 s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,We,s,i,0)}else this.player.debugWarn(this.TAG_NAME,`handleVideoH264Nalu is avc seq head nalType is ${t}`)}else if(this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Qn({sps:this.sps,pps:this.pps});this._doDecode(e,We,0,!0,0),this.sps=null,this.pps=null}}handleVideoH264NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=Ao());const i=this.getNaluDts(),s=Xn(e.reduce(((e,t)=>{const i=po(e),s=po(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,We,i,t,0)}else this.player.debugWarn(this.TAG_NAME,"handleVideoH264NaluList isSendSeqHeader is false")}handleVideoH265Nalu(e){const t=pl(e);switch(t){case ei:this.vps=e;break;case ii:this.sps=e;break;case ri:this.pps=e}if(this.isSendSeqHeader){if(this.vps&&this.sps&&this.pps){const e=cl({vps:this.vps,sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,We,t,!0,0),this.vps=null,this.sps=null,this.pps=null}if(fl(t)){this.player._times.demuxStart||(this.player._times.demuxStart=Ao());const i=ml(t),s=this.getNaluDts(),r=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 s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,We,s,i,0)}}else if(this.vps&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=cl({vps:this.vps,sps:this.sps,pps:this.pps});this._doDecode(e,We,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=Ao());const i=this.getNaluDts(),s=ul(e.reduce(((e,t)=>{const i=po(e),s=po(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,We,i,t,0)}else this.player.debugWarn(this.TAG_NAME,"handleVideoH265NaluList isSendSeqHeader is false")}_preDoDecode(e,t,i,s,r){this.player.updateStats({vbps:e.byteLength,dts:i}),s&&this.calcIframeIntervalTimestamp(i),this._doDecode(e,We,i,s,r)}getInputByteLength(){let e=0;return this.lastBuf&&(e=this.lastBuf.byteLength),e}handleVideoFrames(e){if(!this.streamVideoType)for(let t of e)if(this.streamVideoType=ga(t),this.streamVideoType)break;this.streamVideoType?this.streamVideoType===It?this.handleVideoH264Frames(e):this.streamVideoType===Pt&&this.handleVideoH265Frames(e):this.player.debugWarn(this.TAG_NAME,"handleVideoFrames streamVideoType is null")}handleVideoH264Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=Zn(a);let n=!1,l=e===zt;e!==Wt&&e!==zt||(o=this.parseVideo264Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null,r=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case jt:this.pps=e;break;case Nt:this.sps=e;break;case $t:r=e}if(tl(t)){const t=po(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Qn({sps:this.sps,pps:this.pps});this._doDecode(e,We,0,!0,0),this.sps=null,this.pps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Qn({sps:this.sps,pps:this.pps}),t=this.localDts;this._doDecode(e,We,t,!0,0),this.sps=null,this.pps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=Ao());const e=this.getNaluDts(),t=Xn(s,i);if(this.player._opt.isEmitSEI&&r){const t=uo(r,!1);this.player.emitVideoSei({ts:e,data:t.payload})}this._preDoDecode(t,We,e,i,0)}}}))}handleVideoH265Frames(e){let t=[],i=[],s=!1,r=!1;this.pendingUnits.units&&(t=this.pendingUnits.units,r=this.pendingUnits.vcl,s=this.pendingUnits.iFrame,this.pendingUnits={});let o={};for(let a of e){if(a.byteLength<4)continue;const e=pl(a);let n=!1,l=ml(e);fl(e)&&(o=this.parseVideo265Header(a),n=!0),t.length&&r&&(o.isfms||!n)&&(i.push({units:t,isIFrame:s}),t=[],s=!1,r=!1),t.push(a),s=s||l,r=r||n}t.length&&(this.pendingUnits={units:t,vcl:r,iFrame:s}),i.forEach((e=>{const t=e.units,i=e.isIFrame;let s=null,r=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ri:this.pps=e;break;case ii:this.sps=e;break;case ei:this.vps=e;break;case li:case ni:r=e}if(fl(t)){const t=po(e);if(s){const e=new Uint8Array(s.byteLength+t.byteLength);e.set(s,0),e.set(t,s.byteLength),s=e}else s=t}})),!this.isSendSeqHeader&&this.sps&&this.pps&&this.vps){this.isSendSeqHeader=!0;const e=cl({sps:this.sps,pps:this.pps,vps:this.vps});this._doDecode(e,We,0,!0,0),this.sps=null,this.pps=null,this.vps=null}if(this.isSendSeqHeader){if(this.sps&&this.pps&&this.vps){const e=cl({sps:this.sps,pps:this.pps,vps:this.vps}),t=this.localDts;this._doDecode(e,We,t,!0,0),this.sps=null,this.pps=null,this.vps=null}if(s){this.player._times.demuxStart||(this.player._times.demuxStart=Ao());const e=this.getNaluDts(),t=ul(s,i);if(this.player._opt.isEmitSEI&&r){const t=uo(r,!0);this.player.emitVideoSei({ts:e,data:t.payload})}this._preDoDecode(t,We,e,i,0)}}}))}handleVideoH265Frames_1(e){e.forEach((e=>{this.handleVideoNalu(e)}))}parseVideo264Header(e){const t=new Ch(e);t.readUByte();return{isfms:0===t.readUEG(),sType:t.readUEG()}}parseVideo265Header(e){const t=new Ch(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}}class Dh extends gh{constructor(e){super(e),this.player=e,e.debugLog("EmptyDemux","init")}destroy(){super.destroy(),this.player.debugLog("EmptyDemux","destroy")}}var Rh=zr((function(e,t){var s,r,o,a=(s=new Date,r=4,o={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-s,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=r&&console.info("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=r&&console.warn("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=r&&console.error("["+a.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)}},o);a.getDurationString=function(e,t){var i;function s(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",s=0;s0&&(i+=","),i+="["+a.getDurationString(e.start(s))+","+a.getDurationString(e.end(s))+"]";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 s=new ArrayBuffer(i),r=new Uint8Array(this._buffer);new Uint8Array(s,0,r.length).set(r),this.buffer=s,this._byteLength=t}}},l.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}},l.BIG_ENDIAN=!1,l.LITTLE_ENDIAN=!0,l.prototype._byteLength=0,Object.defineProperty(l.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(l.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(l.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(l.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}}),l.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},l.prototype.isEof=function(){return this.position>=this._byteLength},l.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},l.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},l.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},l.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},l.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,l.memcpy=function(e,t,i,s,r){var o=new Uint8Array(e,t,r),a=new Uint8Array(i,s,r);o.set(a)},l.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},l.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},l.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;ir;s--,r++){var o=t[r];t[r]=t[s],t[s]=o}return e},l.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},l.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},l.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.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},l.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},l.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var h=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(h.prototype=new l(new ArrayBuffer,0,l.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},h.prototype.reduceBuffer=function(e,t,i){var s;return(s=new Uint8Array(i)).set(new Uint8Array(e,t,i)),s.buffer.fileStart=e.fileStart+t,s.buffer.usedBytes=0,s.buffer},h.prototype.insertBuffer=function(e){for(var t=!0,i=0;is.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<=s.fileStart||(e=this.reduceBuffer(e,0,s.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,r,o)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},h.prototype.logBufferLevel=function(e){var t,i,s,r,o,n=[],l="";for(s=0,r=0,t=0;t0&&(l+=o.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) ("+s+"/"+r+" bytes), continuous ranges: "+l)},h.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},h.prototype.findPosition=function(e,t,i){var s,r=null,o=-1;for(s=!0===e?0:this.bufferIndex;s=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+o),o):-1},h.prototype.findEndContiguousBuf=function(e){var t,i,s,r=void 0!==e?e:this.bufferIndex;if(i=this.buffers[r],this.buffers.length>r+1)for(t=r+1;t>3;return 31===s&&i.data.length>=2&&(s=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),s}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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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=c;var u={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"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){u.FullBox.prototype=new u.Box,u.ContainerBox.prototype=new u.Box,u.SampleEntry.prototype=new u.Box,u.TrackGroupTypeBox.prototype=new u.FullBox,u.BASIC_BOXES.forEach((function(e){u.createBoxCtor(e)})),u.FULL_BOXES.forEach((function(e){u.createFullBoxCtor(e)})),u.CONTAINER_BOXES.forEach((function(e){u.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){u.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){u.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,s){u.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=s},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){u.FullBox.call(this,e,t)},createBoxCtor:function(e,t){u.boxCodes.push(e),u[e+"Box"]=function(t){u.Box.call(this,e,t)},u[e+"Box"].prototype=new u.Box,t&&(u[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){u[e+"Box"]=function(t){u.FullBox.call(this,e,t)},u[e+"Box"].prototype=new u.FullBox,u[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:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):0!==d&&n+d>e.getEndPosition()?(e.seek(n),a.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):t?{code:u.OK,type:h,size:d,hdr_size:l,start:n}:(u[h+"Box"]?s=new u[h+"Box"](d):"uuid"!==h?(a.warn("BoxParser","Unknown box type: '"+h+"'"),(s=new u.Box(h,d)).has_unparsed_data=!0):u.UUIDBoxes[o]?s=new u.UUIDBoxes[o](d):(a.warn("BoxParser","Unknown uuid type: '"+o+"'"),(s=new u.Box(h,d)).uuid=o,s.has_unparsed_data=!0),s.hdr_size=l,s.start=n,s.write===u.Box.prototype.write&&"mdat"!==s.type&&(a.info("BoxParser","'"+c+"' box writing not yet implemented, keeping unparsed data in memory for later write"),s.parseDataAndRewind(e)),s.parse(e),(r=e.getPosition()-(s.start+s.size))<0?(a.warn("BoxParser","Parsing of box '"+c+"' did not read the entire indicated box data size (missing "+-r+" bytes), seeking forward"),e.seek(s.start+s.size)):r>0&&(a.error("BoxParser","Parsing of box '"+c+"' read "+r+" more bytes than the indicated box data size, seeking backwards"),0!==s.size&&e.seek(s.start+s.size)),{code:u.OK,box:s,size:s.size})},u.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)},u.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},u.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},u.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},u.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.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)},u.SAMPLE_ENTRY_TYPE_VISUAL="Visual",u.SAMPLE_ENTRY_TYPE_AUDIO="Audio",u.SAMPLE_ENTRY_TYPE_HINT="Hint",u.SAMPLE_ENTRY_TYPE_METADATA="Metadata",u.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",u.SAMPLE_ENTRY_TYPE_SYSTEM="System",u.SAMPLE_ENTRY_TYPE_TEXT="Text",u.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},u.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.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},u.SampleEntry.prototype.parseFooter=function(e){u.ContainerBox.prototype.parse.call(this,e)},u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_HINT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT),u.createMediaSampleEntryCtor(u.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)})),u.createMediaSampleEntryCtor(u.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)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT,"enct"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"encm"),u.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()})),u.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),u.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)})),u.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")})),u.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))})),u.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),u.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),u.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),u.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))})),u.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),u.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())})),u.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|s>>5&7})),u.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,s.bsid=r>>1&31,s.bsmod=(1&r)<<4|o>>4&15,s.acmod=o>>1&7,s.lfeon=1&o,s.num_dep_sub=a>>1&15,s.num_dep_sub>0&&(s.chan_loc=(1&a)<<8|e.readUint8())}})),u.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var s=e.readUint8(),r=Math.min(127&s,i.length-1);if(r?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[r]),128&s)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),u.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),u.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++})),u.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)))})),u.createBoxCtor("hvcC",(function(e){var t,i,s,r;this.configurationVersion=e.readUint8(),r=e.readUint8(),this.general_profile_space=r>>6,this.general_tier_flag=(32&r)>>5,this.general_profile_idc=31&r,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(),r=e.readUint8(),this.constantFrameRate=r>>6,this.numTemporalLayers=(13&r)>>3,this.temporalIdNested=(4&r)>>2,this.lengthSizeMinusOne=3&r,this.nalu_arrays=[];var o=e.readUint8();for(t=0;t>7,a.nalu_type=63&r;var n=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 s=0;s>7,this.axis=1&t})),u.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()))})),u.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&o)<<8|e.readUint8():a.property_index=127&o}}})),u.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,s.assignment_type=127&r,s.assignment_type){case 0:s.grouping_type=e.readString(4);break;case 1:s.grouping_type=e.readString(4),s.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:s.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),u.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),u.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),p.prototype.toString=function(){return"("+this.x+","+this.y+")"},u.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new p(e.readUint16(),e.readUint16()),this.display_primaries[1]=new p(e.readUint16(),e.readUint16()),this.display_primaries[2]=new p(e.readUint16(),e.readUint16()),this.white_point=new p(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),u.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()})),u.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()})),u.createFullBoxCtor("meta",(function(e){this.boxes=[],u.ContainerBox.prototype.parse.call(this,e)})),u.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),u.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),u.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),u.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()})),u.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),u.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),u.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(s))})),u.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),u.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),u.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(),s=0;s>7,this.num_leading_samples=127&t})),u.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=u.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))})),u.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),u.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),u.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.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[s]=t>>4&3,this.sample_is_depended_on[s]=t>>2&3,this.sample_has_redundancy[s]=3&t})),u.createFullBoxCtor("senc"),u.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,s.referenced_size=2147483647&r,s.subsegment_duration=e.readUint32(),r=e.readUint32(),s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}})),u.SingleItemTypeReferenceBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.SingleItemTypeReferenceBox.prototype=new u.Box,u.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&s}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=u.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))})),u.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),u.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&u.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&u.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&u.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&u.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&u.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),u.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(),s=0;s>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),u.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),u.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),u.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},u.createTrackGroupCtor("msrc"),u.TrackReferenceTypeBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.TrackReferenceTypeBox.prototype=new u.Box,u.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},u.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&u.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&u.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;i>7&1,this.block_pad_lsb=i>>6&1,this.block_little_endian=i>>5&1,this.block_reversed=i>>4&1,this.pad_unknown=i>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),u.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),u.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),u.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),u.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=u.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),u.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),u.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=u.parseHex16(e)})),u.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))})),u.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),u.createFullBoxCtor("vvcC",(function(e){var t,i,s={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<1){for(s.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,i=this.num_sublayers-2;i>=0;--i){var a=s.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++i)s.extract_bits(1);for(this.sublayer_level_idc=[],i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=u.decimalToHex(s,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var r=!1,o="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||r)&&(o="."+u.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+o,r=!0);t+=o}return t},u.vvc1SampleEntry.prototype.getCodec=u.vvi1SampleEntry.prototype.getCodec=function(){var e,t=u.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 s,r=[],o=0;for(o|=this.vvcC.ptl_frame_only_constraint<<7,o|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,r.push(o),o&&(s=e),o=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===s)i=".CA";else{i=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",n=0,l=0;for(e=0;e<=s;++e)for(n=n<<8|r[e],l+=8;l>=5;){i+=a[n>>l-5&31],n&=(1<<(l-=5))-1}l&&(i+=a[31&(n<<=5-l)])}}t+=i}return t},u.mp4aSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+u.decimalToHex(t)+(i?"."+i:"")}return e},u.stxtSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},u.vp08SampleEntry.prototype.getCodec=u.vp09SampleEntry.prototype.getCodec=function(){var e=u.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},u.av01SampleEntry.prototype.getCodec=function(){var e,t=u.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},u.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(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>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)},u.FullBox.prototype.writeHeader=function(e){this.size+=4,u.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},u.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))},u.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)},u.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},u.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)},u.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)},u.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&u.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&u.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&u.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&u.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof u.Box||t[i]instanceof u.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||u.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},u.boxEqual=function(e,t){if(!u.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},y.prototype.setExtractionOptions=function(e,t,i){var s=this.getTrackById(e);if(s){var r={};this.extractedTracks.push(r),r.id=e,r.user=t,r.trak=s,s.nextSample=0,r.nb_samples=1e3,r.samples=[],i&&i.nbSamples&&(r.nb_samples=i.nbSamples)}},y.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},y.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=u.parseOneBox(this.stream,false)).code===u.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)}},y.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))},y.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},y.prototype.getInfo=function(){var e,t,i,s,r,o,a={},n=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(n+1e3*this.moov.mvhd.creation_time),a.modified=new Date(n+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)&&(a.info("ISOFile","Sending fragmented data on track #"+s.id+" for samples ["+Math.max(0,i.nextSample-s.nb_samples)+","+(i.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(s.id,s.user,s.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),s.segmentStream=null,s!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+o.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(o.id,o.user,o.samples),o.samples=[],o!==this.extractedTracks[t]))break}}}},y.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},y.prototype.getBoxes=function(e,t){var i=[];return y._sweep.call(this,e,i,t),i},y._sweep=function(e,t,i){for(var s in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;y._sweep.call(this.boxes[s],e,t,i)}},y.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},y.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},y.prototype.releaseUsedSamples=function(e,t,i){var s=0,r=this.getTrackById(e);r.lastValidSample||(r.lastValidSample=0);for(var o=r.lastValidSample;oe*r.timescale){d=s-1;break}t&&r.is_sync&&(l=s)}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 o=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,n)+" and offset: "+o),{offset:o,time:e/n}},y.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},y.prototype.seek=function(e,t){var i,s,r,o=this.moov,n={offset:1/0,time:1/0};if(this.moov){for(r=0;rthis.getTrackDuration(i)||((s=this.seekTrack(e,t,i)).offset-1){a=l;break}switch(a){case"Visual":if(r.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),o.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 u.avcCBox;c.parse(new n(t.avcDecoderConfigRecord)),o.addBox(c)}else if(t.hevcDecoderConfigRecord){var p=new u.hvcCBox;p.parse(new n(t.hevcDecoderConfigRecord)),o.addBox(p)}break;case"Audio":r.add("smhd").set("balance",t.balance||0),o.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":r.add("hmhd");break;case"Subtitle":if(r.add("sthd"),"stpp"===t.type)o.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:r.add("nmhd")}t.description&&o.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){o.addBox(e)})),r.add("dinf").add("dref").addEntry((new u["url Box"]).set("flags",1));var f=r.add("stbl");return f.add("stsd").addEntry(o),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}},u.Box.prototype.computeSize=function(e){var t=e||new l;t.endianness=l.BIG_ENDIAN,this.write(t)},y.prototype.addSample=function(e,t,i){var s=i||{},r={},o=this.getTrackById(e);if(null!==o){r.number=o.samples.length,r.track_id=o.tkhd.track_id,r.timescale=o.mdia.mdhd.timescale,r.description_index=s.sample_description_index?s.sample_description_index-1:0,r.description=o.mdia.minf.stbl.stsd.entries[r.description_index],r.data=t,r.size=t.byteLength,r.alreadyRead=r.size,r.duration=s.duration||1,r.cts=s.cts||0,r.dts=s.dts||0,r.is_sync=s.is_sync||!1,r.is_leading=s.is_leading||0,r.depends_on=s.depends_on||0,r.is_depended_on=s.is_depended_on||0,r.has_redundancy=s.has_redundancy||0,r.degradation_priority=s.degradation_priority||0,r.offset=0,r.subsamples=s.subsamples,o.samples.push(r),o.samples_size+=r.size,o.samples_duration+=r.duration,void 0===o.first_dts&&(o.first_dts=s.dts),this.processSamples();var a=this.createSingleSampleMoof(r);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),r}},y.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new u.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var s=i.add("traf"),r=this.getTrackById(e.track_id);return s.add("tfhd").set("track_id",e.track_id).set("flags",u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),s.add("tfdt").set("baseMediaDecodeTime",e.dts-(r.first_dts||0)),s.add("trun").set("flags",u.TRUN_FLAGS_DATA_OFFSET|u.TRUN_FLAGS_DURATION|u.TRUN_FLAGS_SIZE|u.TRUN_FLAGS_FLAGS|u.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},y.prototype.lastMoofIndex=0,y.prototype.samplesDataSize=0,y.prototype.resetTables=function(){var e,t,i,s,r,o;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(l=r[a].grouping_type+"/0",(n=new d(r[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[l]||(t.sample_groups_info[l]=n))}else for(a=0;a=2&&(l=s[a].grouping_type+"/0",n=new d(s[a].grouping_type,0),e.sample_groups_info[l]||(e.sample_groups_info[l]=n))},y.setSampleGroupProperties=function(e,t,i,s){var r,o;for(r in t.sample_groups=[],s){var a;if(t.sample_groups[r]={},t.sample_groups[r].grouping_type=s[r].grouping_type,t.sample_groups[r].grouping_type_parameter=s[r].grouping_type_parameter,i>=s[r].last_sample_in_run&&(s[r].last_sample_in_run<0&&(s[r].last_sample_in_run=0),s[r].entry_index++,s[r].entry_index<=s[r].sbgp.entries.length-1&&(s[r].last_sample_in_run+=s[r].sbgp.entries[s[r].entry_index].sample_count)),s[r].entry_index<=s[r].sbgp.entries.length-1?t.sample_groups[r].group_description_index=s[r].sbgp.entries[s[r].entry_index].group_description_index:t.sample_groups[r].group_description_index=-1,0!==t.sample_groups[r].group_description_index)a=s[r].fragment_description?s[r].fragment_description:s[r].description,t.sample_groups[r].group_description_index>0?(o=t.sample_groups[r].group_description_index>65535?(t.sample_groups[r].group_description_index>>16)-1:t.sample_groups[r].group_description_index-1,a&&o>=0&&(t.sample_groups[r].description=a.entries[o])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[r].description=a.entries[a.default_group_description_index-1])}},y.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))},y.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=o.sample_counts[v]),t>0?(e.samples[t-1].duration=o.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,k.dts=e.samples[t-1].dts+e.samples[t-1].duration):k.dts=0,a?(t>=_&&(w++,_<0&&(_=0),_+=a.sample_counts[w]),k.cts=e.samples[t].dts+a.sample_offsets[w]):k.cts=k.dts,n?(t==n.sample_numbers[S]-1?(k.is_sync=!0,S++):(k.is_sync=!1,k.degradation_priority=0),d&&d.entries[E].sample_delta+T==t+1&&(k.subsamples=d.entries[E].subsamples,T+=d.entries[E].sample_delta,E++)):k.is_sync=!0,y.process_sdtp(e.mdia.minf.stbl.sdtp,k,k.number),k.degradation_priority=u?u.priority[t]:0,d&&d.entries[E].sample_delta+T==t&&(k.subsamples=d.entries[E].subsamples,T+=d.entries[E].sample_delta),(h.length>0||c.length>0)&&y.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)}},y.prototype.updateSampleLists=function(){var e,t,i,s,r,o,a,n,l,d,h,c,p,f,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&y.initSampleGroups(c,h,h.sbgps,c.mdia.minf.stbl.sgpds,h.sgpds),t=0;t0?f.dts=c.samples[c.samples.length-2].dts+c.samples[c.samples.length-2].duration:(h.tfdt?f.dts=h.tfdt.baseMediaDecodeTime:f.dts=0,c.first_traf_merged=!0),f.cts=f.dts,g.flags&u.TRUN_FLAGS_CTS_OFFSET&&(f.cts=f.dts+g.sample_composition_time_offset[i]),m=a,g.flags&u.TRUN_FLAGS_FLAGS?m=g.sample_flags[i]:0===i&&g.flags&u.TRUN_FLAGS_FIRST_FLAG&&(m=g.first_sample_flags),f.is_sync=!(m>>16&1),f.is_leading=m>>26&3,f.depends_on=m>>24&3,f.is_depended_on=m>>22&3,f.has_redundancy=m>>20&3,f.degradation_priority=65535&m;var A=!!(h.tfhd.flags&u.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(h.tfhd.flags&u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(g.flags&u.TRUN_FLAGS_DATA_OFFSET),_=0;_=A?h.tfhd.base_data_offset:b||0===t?d.start:n,f.offset=0===t&&0===i?v?_+g.data_offset:_:n,n=f.offset+f.size,(h.sbgps.length>0||h.sgpds.length>0||c.mdia.minf.stbl.sbgps.length>0||c.mdia.minf.stbl.sgpds.length>0)&&y.setSampleGroupProperties(c,f,f.number_in_traf,h.sample_groups_info)}}if(h.subs){c.has_fragment_subsamples=!0;var w=h.first_sample_index;for(t=0;t-1))return null;var o=(i=this.stream.buffers[r]).byteLength-(s.offset+s.alreadyRead-i.fileStart);if(s.size-s.alreadyRead<=o)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+(s.size-s.alreadyRead)+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,s.size-s.alreadyRead),i.usedBytes+=s.size-s.alreadyRead,this.stream.logBufferLevel(),s.alreadyRead=s.size,s;if(0===o)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+o+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,o),s.alreadyRead+=o,i.usedBytes+=o,this.stream.logBufferLevel()}},y.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.description=null,delete i.degradation_priority,delete i.depends_on,delete i.description_index,delete i.has_redundancy,delete i.is_depended_on,delete i.is_leading,delete i.is_sync,delete i.moof_number,delete i.number_in_traf,delete i.timescale,delete i.cts,delete i.dts,delete i.offset,delete i.size,delete i.track_id,delete i.duration,i.alreadyRead=0,i.size):0},y.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},y.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},y.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=o.ipro.protections[o.iinf.item_infos[e].protection_index-1]),o.iinf.item_infos[e].item_type?i.type=o.iinf.item_infos[e].item_type:i.type="mime",i.content_type=o.iinf.item_infos[e].content_type,i.content_encoding=o.iinf.item_infos[e].content_encoding;if(o.grpl)for(e=0;e0&&u.property_index-1-1))return null;var n=(t=this.stream.buffers[o]).byteLength-(r.offset+r.alreadyRead-t.fileStart);if(!(r.length-r.alreadyRead<=n))return a.debug("ISOFile","Getting item #"+e+" extent #"+s+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+n+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,n),r.alreadyRead+=n,i.alreadyRead+=n,t.usedBytes+=n,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+s+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+(r.length-r.alreadyRead)+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,r.length-r.alreadyRead),t.usedBytes+=r.length-r.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=r.length-r.alreadyRead,r.alreadyRead=r.length}}return i.alreadyRead===i.size?i:null},y.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(s)}return t},y.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},u.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)},u.FullBox.prototype.printHeader=function(e){this.size+=4,u.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},u.Box.prototype.print=function(e){this.printHeader(e)},u.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)},u.tkhdBox.prototype.print=function(e){u.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 A={createFile:function(e,t){var i=void 0===e||e,s=new y(t);return s.discardMdatData=!i,s}};t.createFile=A.createFile}));function Ih(e){return e.reduce(((e,t)=>256*e+t))}function Ph(e){const t=[101,103,119,99],i=e.length-28,s=e.slice(i,i+t.length);return t.every(((e,t)=>e===s[t]))}Rh.Log,Rh.MP4BoxStream,Rh.DataStream,Rh.MultiBufferStream,Rh.MPEG4DescriptorParser,Rh.BoxParser,Rh.XMLSubtitlein4Parser,Rh.Textin4Parser,Rh.ISOFile,Rh.createFile;class Bh{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 s=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(s instanceof Error)return console.error(s.message),this.d=!0,e;this.A=!0,this.u=i[1],Ph(t)&&this.c++,WebAssembly.instantiate(i[2],s).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 Mh extends gh{constructor(e){super(e),this.TAG_NAME="Fmp4Loader",this.player=e,this.mp4Box=Rh.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 Bh),this._listenMp4Box(),e.debugLog(this.TAG_NAME,"init")}destroy(){this.mp4Box&&(this.mp4Box.stop(),this.mp4Box.flush(),this.mp4Box.destroy(),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.debugLog(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.debugLog(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.debugLog(this.TAG_NAME,"seqHeader",e),this._doDecodeByFmp4(e,We,0,!0,0)),this.mp4Box.setExtractionOptions(t.id)}if(i&&this.player._opt.hasAudio){this.audioTrackId=i.id;const e=i.audio||{},t=qr.indexOf(e.sample_rate),s=i.codec.replace("mp4a.40.","");this.mp4Box.setExtractionOptions(i.id);const r={profile:parseInt(s,10),sampleRate:t,channel:e.channel_count},o=Kr(r);this.player.debugLog(this.TAG_NAME,"aacADTSHeader",o,"config",r),this._doDecodeByFmp4(o,Ge,0,!1,0)}this.mp4Box.start()}onError(e){this.player.debugError(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,s=1e3*e.cts/e.timescale;e.duration,e.timescale,this.player.updateStats({vbps:t.byteLength,dts:s}),i&&this.calcIframeIntervalTimestamp(s);let r=null;r=this.isHevc?ul(t,i):Xn(t,i);let o=this.cryptoPayload(r,i);this._doDecodeByFmp4(o,We,s,i,0)}this.mp4Box.removeUsedSamples(e)}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 s=new Uint8Array(t.byteLength+2);s.set([175,1],0),s.set(t,2),this._doDecodeByFmp4(s,Ge,i,!1,0)}this.mp4Box.removeUsedSamples(e)}}else this.player.debugWarn(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 Rh.DataStream(void 0,0,Rh.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 s=new Uint8Array(t.buffer,8),r=new Uint8Array(i.length+s.length);return r.set(i,0),r.set(s,i.length),r}return null}dispatch(e){let t=new Uint8Array(e);this.transportDescarmber&&(t=this.transportDescarmber.transport(t)),t.buffer.fileStart=this.offset,this.offset+=t.byteLength,this.mp4Box.appendBuffer(t.buffer)}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=Ao()+".fmp4",i.click(),URL.revokeObjectURL(t)}getInputByteLength(){let e=0;return this.mp4Box&&(e=this.mp4Box.getAllocatedSampleDataSize()),e}}class Fh extends gh{constructor(e){super(e),Lh(this,"LOG_NAME","Mpeg4Loader"),this.player=e,this.player.debugLog(this.LOG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.LOG_NAME,"destroy")}}function Uh(){for(var e=arguments.length,t=new Array(e),i=0;ie+t.byteLength),0));let r=0;return t.forEach((e=>{s.set(e,r),r+=e.byteLength})),s}const Oh=3,Nh=4,jh=6,Gh=15,Wh=17,zh=129,$h=135,Vh=21,Hh=134,Jh=27,qh=36;class Kh{constructor(){this.slices=[],this.total_length=0,this.expected_length=0,this.random_access_indicator=0}}class Yh{constructor(){this.pid=null,this.data=null,this.stream_type=null,this.random_access_indicator=null}}class Qh{constructor(){this.pid=null,this.stream_id=null,this.len=null,this.data=null,this.pts=null,this.nearest_pts=null,this.dts=null}}const Xh=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];class Zh{constructor(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}isComplete(){let e=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,t=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&e&&t}isSeekable(){return!0===this.hasKeyframesIndex}getNearestKeyframe(e){if(null==this.keyframesIndex)return null;let t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}}_search(e,t){let i=0,s=e.length-1,r=0,o=0,a=s;for(t=e[r]&&t=6?(s=5,t=new Array(4),a=r-3):(s=2,t=new Array(2),a=r):-1!==n.indexOf("android")?(s=2,t=new Array(2),a=r):(s=5,a=r,t=new Array(4),r>=6?a=r-3:1===o&&(s=2,t=new Array(2),a=r)),t[0]=s<<3,t[0]|=(15&r)>>>1,t[1]=(15&r)<<7,t[1]|=(15&o)<<3,5===s&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Xh[r],this.sampling_index=r,this.channel_count=o,this.object_type=s,this.original_object_type=i,this.codec_mimetype="mp4a.40."+s,this.original_codec_mimetype="mp4a.40."+i}}class tc extends gh{constructor(e){super(e),this.player=e,this.TAG_NAME="TsLoader",this.first_parse_=!0,this.tsPacketSize=0,this.syncOffset=0,this.pmt_=null,this.config_=null,this.media_info_=new Zh,this.timescale_=90,this.duration_=0,this.pat_={version_number:0,network_pid:0,program_map_pid:{}},this.current_program_=null,this.current_pmt_pid_=-1,this.program_pmt_map_={},this.pes_slice_queues_={},this.section_slice_queues_={},this.video_metadata_={vps:null,sps:null,pps:null,details:null},this.audio_metadata_={codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},this.last_pcr_=null,this.last_pcr_base_=NaN,this.timestamp_offset_=0,this.audio_last_sample_pts_=void 0,this.aac_last_incomplete_data_=null,this.has_video_=!1,this.has_audio_=!1,this.video_init_segment_dispatched_=!1,this.audio_init_segment_dispatched_=!1,this.video_metadata_changed_=!1,this.audio_metadata_changed_=!1,this.loas_previous_frame=null,this.video_track_={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this.audio_track_={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._remainingPacketData=null,this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.media_info_=null,this.pes_slice_queues_=null,this.section_slice_queues_=null,this.video_metadata_=null,this.audio_metadata_=null,this.aac_last_incomplete_data_=null,this.video_track_=null,this.audio_track_=null,this._remainingPacketData=null,super.destroy()}probe(e){let t=new Uint8Array(e),i=-1,s=188;if(t.byteLength<=3*s)return{needMoreData:!0};for(;-1===i;){let e=Math.min(1e3,t.byteLength-3*s);for(let r=0;r=4&&(i-=4),{match:!0,consumed:0,ts_packet_size:s,sync_offset:i})}_initPmt(){return{program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}}dispatch(e){let t=new Uint8Array(e);this._remainingPacketData&&(t=Uh(this._remainingPacketData,t),this._remainingPacketData=null);let i=t.buffer;const s=this.parseChunks(i);s?this._remainingPacketData=t.subarray(s):t.length>>6;i[1];let o=(31&i[1])<<8|i[2],a=(48&i[3])>>>4,n=15&i[3],l=!(!this.pmt_||this.pmt_.pcr_pid!==o),d={},h=4;if(2==a||3==a){let e=i[4];if(e>0&&(l||3==a)){if(d.discontinuity_indicator=(128&i[5])>>>7,d.random_access_indicator=(64&i[5])>>>6,d.elementary_stream_priority_indicator=(32&i[5])>>>5,(16&i[5])>>>4){let e=300*this._getPcrBase(i)+((1&i[10])<<8|i[11]);this.last_pcr_=e}}if(2==a||5+e===188){t+=188,204===this.tsPacketSize&&(t+=16);continue}h=5+e}if(1==a||3==a)if(0===o||o===this.current_pmt_pid_||null!=this.pmt_&&this.pmt_.pid_stream_type[o]===Hh){let i=188-h;this.handleSectionSlice(e,t+h,i,{pid:o,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}else if(null!=this.pmt_&&null!=this.pmt_.pid_stream_type[o]){let i=188-h,s=this.pmt_.pid_stream_type[o];o!==this.pmt_.common_pids.h264&&o!==this.pmt_.common_pids.h265&&o!==this.pmt_.common_pids.adts_aac&&o!==this.pmt_.common_pids.loas_aac&&o!==this.pmt_.common_pids.ac3&&o!==this.pmt_.common_pids.eac3&&o!==this.pmt_.common_pids.opus&&o!==this.pmt_.common_pids.mp3&&!0!==this.pmt_.pes_private_data_pids[o]&&!0!==this.pmt_.timed_id3_pids[o]&&!0!==this.pmt_.synchronous_klv_pids[o]&&!0!==this.pmt_.asynchronous_klv_pids[o]||this.handlePESSlice(e,t+h,i,{pid:o,stream_type:s,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}t+=188,204===this.tsPacketSize&&(t+=16)}return this.dispatchAudioVideoMediaSegment(),t}handleSectionSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=this.section_slice_queues_[s.pid];if(s.payload_unit_start_indicator){let a=r[0];if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t+1,Math.min(i,a));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):this.clearSlices(o,s)}for(let n=1+a;n=o.expected_length&&this.clearSlices(o,s),n+=l.byteLength}}else if(null!=o&&0!==o.total_length){let r=new Uint8Array(e,t,Math.min(i,o.expected_length-o.total_length));o.slices.push(r),o.total_length+=r.byteLength,o.total_length===o.expected_length?this.emitSectionSlices(o,s):o.total_length>=o.expected_length&&this.clearSlices(o,s)}}handlePESSlice(e,t,i,s){let r=new Uint8Array(e,t,i),o=r[0]<<16|r[1]<<8|r[2];r[3];let a=r[4]<<8|r[5];if(s.payload_unit_start_indicator){if(1!==o)return void this.player.debugWarn(this.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${o}`);let e=this.pes_slice_queues_[s.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?this.emitPESSlices(e,s):this.clearSlices(e,s)),this.pes_slice_queues_[s.pid]=new Kh,this.pes_slice_queues_[s.pid].random_access_indicator=s.random_access_indicator}if(null==this.pes_slice_queues_[s.pid])return;let n=this.pes_slice_queues_[s.pid];n.slices.push(r),s.payload_unit_start_indicator&&(n.expected_length=0===a?0:a+6),n.total_length+=r.byteLength,n.expected_length>0&&n.expected_length===n.total_length?this.emitPESSlices(n,s):n.expected_length>0&&n.expected_length>>6,n=t[8];2!==a&&3!==a||(i=this._getTimestamp(t,9),o=3===a?this._getTimestamp(t,14):i);let l,d=9+n;if(0!==r){if(r<3+n)return void this.player.debugWarn(this.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");l=r-3-n}else l=t.byteLength-d;let h=t.subarray(d,d+l);switch(e.stream_type){case Oh:case Nh:this.parseMP3Payload(h,i);break;case jh:this.pmt_.common_pids.opus===e.pid?this.parseOpusPayload(h,i):this.pmt_.common_pids.ac3===e.pid?this.parseAC3Payload(h,i):this.pmt_.common_pids.eac3===e.pid?this.parseEAC3Payload(h,i):this.pmt_.asynchronous_klv_pids[e.pid]?this.parseAsynchronousKLVMetadataPayload(h,e.pid,s):this.pmt_.smpte2038_pids[e.pid]?this.parseSMPTE2038MetadataPayload(h,i,o,e.pid,s):this.parsePESPrivateDataPayload(h,i,o,e.pid,s);break;case Gh:this.parseADTSAACPayload(h,i);break;case Wh:this.parseLOASAACPayload(h,i);break;case zh:this.parseAC3Payload(h,i);break;case $h:this.parseEAC3Payload(h,i);break;case Vh:this.pmt_.timed_id3_pids[e.pid]?this.parseTimedID3MetadataPayload(h,i,o,e.pid,s):this.pmt_.synchronous_klv_pids[e.pid]&&this.parseSynchronousKLVMetadataPayload(h,i,o,e.pid,s);break;case Jh:this.parseH264Payload(h,i,o,e.random_access_indicator);break;case qh:this.parseH265Payload(h,i,o,e.random_access_indicator)}}else if((188===s||191===s||240===s||241===s||255===s||242===s||248===s)&&e.stream_type===jh){let i,o=6;i=0!==r?r:t.byteLength-o;let a=t.subarray(o,o+i);this.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,s)}}else this.player.debugError(this.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${i}`)}parsePAT(e){let t=e[0];if(0!==t)return void Log.e(this.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let i=(15&e[1])<<8|e[2];e[3],e[4];let s=(62&e[5])>>>1,r=1&e[5],o=e[6];e[7];let a=null;if(1===r&&0===o)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=s;else if(a=this.pat_,null==a)return;let n=i-5-4,l=-1,d=-1;for(let t=8;t<8+n;t+=4){let i=e[t]<<8|e[t+1],s=(31&e[t+2])<<8|e[t+3];0===i?a.network_pid=s:(a.program_pmt_pid[i]=s,-1===l&&(l=i),-1===d&&(d=s))}1===r&&0===o&&(null==this.pat_&&this.player.debugLog(this.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),this.pat_=a,this.current_program_=l,this.current_pmt_pid_=d)}parsePMT(e){let t=e[0];if(2!==t)return void this.player.debugError(this.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let i,s=(15&e[1])<<8|e[2],r=e[3]<<8|e[4],o=(62&e[5])>>>1,a=1&e[5],n=e[6];if(e[7],1===a&&0===n)i=this._initPmt(),i.program_number=r,i.version_number=o,this.program_pmt_map_[r]=i;else if(i=this.program_pmt_map_[r],null==i)return;i.pcr_pid=(31&e[8])<<8|e[9];let l=(15&e[10])<<8|e[11],d=12+l,h=s-9-l-4;for(let t=d;t0){for(let s=t+5;s0)for(let s=t+5;s1&&(this.player.debugWarn(this.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new no(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame());){i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:Ge};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseLOASAACPayload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;if(this.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+this.aac_last_incomplete_data_.byteLength);t.set(this.aac_last_incomplete_data_,0),t.set(e,this.aac_last_incomplete_data_.byteLength),e=t}let i,s;if(null!=t&&(s=t/this.timescale_),"aac"===this.audio_metadata_.codec){if(null==t&&null!=this.audio_last_sample_pts_)i=1024/this.audio_metadata_.sampling_frequency*1e3,s=this.audio_last_sample_pts_+i;else if(null==t)return void this.player.debugWarn(this.TAG_NAME,"AAC: Unknown pts");if(this.aac_last_incomplete_data_&&this.audio_last_sample_pts_){i=1024/this.audio_metadata_.sampling_frequency*1e3;let e=this.audio_last_sample_pts_+i;Math.abs(e-s)>1&&(this.player.debugWarn(this.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,o=new lo(e),a=null,n=s;for(;null!=(a=o.readNextAACFrame(Vo(this.loas_previous_frame)?void 0:this.loas_previous_frame));){this.loas_previous_frame=a,i=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(a.data.length+2);s.set([175,1],0),s.set(a.data,2);let o={payload:s,length:s.byteLength,pts:t,dts:t,type:Ge};this.audio_track_.samples.push(o),this.audio_track_.length+=s.byteLength,n+=i}o.hasIncompleteData()&&(this.aac_last_incomplete_data_=o.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseAC3Payload(e,t){}parseEAC3Payload(e,t){}parseOpusPayload(e,t){}parseMP3Payload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;let i=[44100,48e3,32e3,0],s=[22050,24e3,16e3,0],r=[11025,12e3,8e3,0],o=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let n=(12&e[2])>>>2,l=3!==(e[3]>>>6&3)?2:1,d=0,h=34;switch(o){case 0:d=r[n];break;case 2:d=s[n];break;case 3:d=i[n]}switch(a){case 1:h=34;break;case 2:h=33;break;case 3:h=32}const c={};c.object_type=h,c.sample_rate=d,c.channel_count=l,c.data=e;const u={codec:"mp3",data:c};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"mp3",object_type:h,sample_rate:d,channel_count:l},this.dispatchAudioInitSegment(u)):this.detectAudioMetadataChange(u)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(u));let p={payload:e,length:e.byteLength,pts:t/this.timescale_,dts:t/this.timescale_,type:Ge};this.audio_track_.samples.push(p),this.audio_track_.length+=e.byteLength}detectAudioMetadataChange(e){if(e.codec!==this.audio_metadata_.codec)return this.player.debugLog(this.TAG_NAME,`Audio: Audio Codecs changed from ${this.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===this.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==this.audio_metadata_.audio_object_type)return this.player.debugLog(this.TAG_NAME,`AAC: AudioObjectType changed from ${this.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==this.audio_metadata_.sampling_freq_index)return this.player.debugLog(this.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${this.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==this.audio_metadata_.channel_config)return this.player.debugLog(this.TAG_NAME,`AAC: Channel configuration changed from ${this.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===this.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==this.audio_metadata_.sampling_frequency)return this.player.debugLog(this.TAG_NAME,`AC3: Sampling Frequency changed from ${this.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==this.audio_metadata_.bit_stream_identification)return this.player.debugLog(this.TAG_NAME,`AC3: Bit Stream Identification changed from ${this.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==this.audio_metadata_.bit_stream_mode)return this.player.debugLog(this.TAG_NAME,`AC3: BitStream Mode changed from ${this.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==this.audio_metadata_.channel_mode)return this.player.debugLog(this.TAG_NAME,`AC3: Channel Mode changed from ${this.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==this.audio_metadata_.low_frequency_effects_channel_on)return this.player.debugLog(this.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${this.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===this.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debugLog(this.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debugLog(this.TAG_NAME,`Opus: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===this.audio_metadata_.codec){const t=e.data;if(t.object_type!==this.audio_metadata_.object_type)return this.player.debugLog(this.TAG_NAME,`MP3: AudioObjectType changed from ${this.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debugLog(this.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debugLog(this.TAG_NAME,`MP3: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1}dispatchAudioInitSegment(e){let t={type:"audio"};t.id=this.audio_track_.id,t.timescale=1e3,t.duration=this.duration_;let i="";if("aac"===this.audio_metadata_.codec){let s="aac"===e.codec?e.data:null,r=new ec(s);t.audioSampleRate=r.sampling_rate,t.audioSampleRateIndex=r.sampling_index,t.channelCount=r.channel_count,t.codec=r.codec_mimetype,t.originalCodec=r.original_codec_mimetype,t.config=r.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale,i=Bt;const o=Kr({profile:this.player._opt.mseDecodeAudio?r.object_type:r.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});console.error("aacADTSHeader",`profile: ${r.object_type}, sampleRate: ${t.audioSampleRateIndex}, channel: ${t.channelCount}`),this._doDecodeByTs(o,Ge,0,!1,0)}else"ac-3"===this.audio_metadata_.codec||"ec-3"===this.audio_metadata_.codec||"opus"===this.audio_metadata_.codec||"mp3"===this.audio_metadata_.codec&&(t.audioSampleRate=this.audio_metadata_.sample_rate,t.channelCount=this.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0,i=Ft);0==this.audio_init_segment_dispatched_&&this.player.debugLog(this.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),this.audio_init_segment_dispatched_=!0,this.video_metadata_changed_=!1;let s=this.media_info_;s.hasAudio=!0,s.audioCodec=t.originalCodec,s.audioSampleRate=t.audioSampleRate,s.audioChannelCount=t.channelCount,s.hasVideo&&s.videoCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.audioCodec}"`,i&&this.player.audio.updateAudioInfo({encTypeCode:i,channels:t.channelCount,sampleRate:t.audioSampleRate})}dispatchPESPrivateDataDescriptor(e,t,i){}parsePESPrivateDataPayload(e,t,i,s,r){let o=new Qh;if(o.pid=s,o.stream_id=r,o.len=e.byteLength,o.data=e,null!=t){let e=Math.floor(t/this.timescale_);o.pts=e}else o.nearest_pts=this.getNearestTimestampMilliseconds();if(null!=i){let e=Math.floor(i/this.timescale_);o.dts=e}}parseTimedID3MetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`Timed ID3 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseSynchronousKLVMetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`Synchronous KLV Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseAsynchronousKLVMetadataPayload(e,t,i){this.player.debugLog(this.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${i}`)}parseSMPTE2038MetadataPayload(e,t,i,s,r){this.player.debugLog(this.TAG_NAME,`SMPTE 2038 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}getNearestTimestampMilliseconds(){if(null!=this.audio_last_sample_pts_)return Math.floor(this.audio_last_sample_pts_);if(null!=this.last_pcr_){return Math.floor(this.last_pcr_/300/this.timescale_)}}_preDoDecode(){const e=this.video_track_,t=this.audio_track_;let i=e.samples;t.samples.length>0&&(i=e.samples.concat(t.samples),i=i.sort(((e,t)=>e.dts-t.dts))),i.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===We?this._doDecodeVideo({...e,payload:t}):e.type===Ge&&this._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?ul(t,e.isIFrame):Xn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength}),e.isIFrame&&this.calcIframeIntervalTimestamp(e.dts);let s=this.cryptoPayload(i,e.isIFrame);this._doDecodeByTs(s,We,e.dts,e.isIFrame,e.cts)}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=this.cryptoPayloadAudio(t);this._doDecodeByTs(i,Ge,e.dts,!1,0)}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}_getPcrBase(e){let t=33554432*e[6]+131072*e[7]+512*e[8]+2*e[9]+(128&e[10])/128+this.timestamp_offset_;return t+4294967296>>3&3,r=(6&t[1])>>1,o=(240&t[2])>>>4,a=(12&t[2])>>>2,n=3!==(t[3]>>>6&3)?2:1,l=0,d=0;switch(s){case 0:l=oc[a];break;case 2:l=rc[a];break;case 3:l=sc[a]}switch(r){case 1:o{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(_t.webcodecsAudioInitTimeout)}),1e3)),void ya(e)):void(this.player.isPlayer()?(this.player.updateStats({dfps:!0}),this.player._times.videoStart||(this.player._times.videoStart=Ao(),this.player.handlePlayToRenderTimes()),this.player.video.render({videoFrame:e,ts:e.timestamp}),this.player.handleRender()):this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),Da(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})):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.player.playback.isUseFpsRender&&this.player.video.pushData({videoFrame:e,ts:e.timestamp})));ya(e)}handleError(e){this.player.debugError(this.TAG_NAME,"VideoDecoder handleError:",e.code,e);const t=e.toString();-1!==t.indexOf(ys)?this.player.emitError(_t.webcodecsUnsupportedConfigurationError,t):-1!==t.indexOf(As)||-1!==t.indexOf(bs)||-1!==t.indexOf(vs)?this.player.emitError(_t.webcodecsDecodeError,t):-1!==t.indexOf(_s)&&this.player.emitError(_t.webcodecsH265NotSupport,t)}handleDecodeAudio(e){this.player&&(this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"decodeVideo() player is destroyed"):this.player.isPlayer()?this.player.audio.play(e,e.timestamp):this.player.isPlayback())}handleErrorAudio(e){this.player.debugError(this.TAG_NAME,"AudioDecoder handleError:",e.code,e)}decodeVideo(e,t,i,s){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debugWarn(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.debugWarn(this.TAG_NAME,"VideoDecoder isDecodeStateClosed true");if(i&&0===e[1]){const t=15&e[0];let i={};if(t===Dt){i=Yn(e.slice(5))}else t===Rt&&(i=ll(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debugWarn(this.TAG_NAME,`decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(_t.wcsWidthOrHeightChange,`width ${s.width}->${s.height} height ${i.codecWidth}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(Ca(e))return void this.player.debugLog(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debugWarn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let s=!1,r=(new Date).getTime();this.prevTimestamp||(this.prevTimestamp=r,s=!0);const o=r-this.prevTimestamp;this.decodeDiffTimestamp=o,o>500&&!s&&this.player.isPlayer()&&this.player.debugWarn(this.TAG_NAME,"decodeVideo diff time is ",o);const a=e.slice(5),n=new EncodedVideoChunk({data:a,timestamp:t,type:i?vi:_i});this.player.emit(At.timeUpdate,t);try{this.decoder.decode(n)}catch(e){this.player.debugError(this.TAG_NAME,"VideoDecoder",e);const t=e.toString();(-1!==t.indexOf(ms)||-1!==t.indexOf(gs))&&this.player.emitError(_t.webcodecsDecodeError,t)}this.prevTimestamp=(new Date).getTime()}else this.player.debugLog(this.TAG_NAME,"VideoDecoder first frame is not iFrame");else if(i&&e[1]===xs){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===Rt&&!Go()){const e=Do();return this.player.debugWarn(this.TAG_NAME,"WebcodecsDecoder not support hevc decode",e.type,e.version),void this.player.emitError(_t.webcodecsH265NotSupport)}this.player._times.decodeStart||(this.player._times.decodeStart=Ao());let i=null,s=null;const r=e.slice(5);if(t===Dt?(s=Yn(r),i={codec:s.codec,description:r}):t===Rt&&(s=dl(r),i={codec:s.codec,description:r}),!i||i&&!i.codec||s&&0===s.codecWidth&&0===s.codecHeight)return this.player.debugWarn(this.TAG_NAME,"decodeVideo and webcodecs configure is",JSON.stringify(i)),void this.player.emitError(_t.webcodecsDecodeConfigureError,"configure or configure.code is null");i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth,this.isInitInfo||(this.player.debugLog(this.TAG_NAME,`updateVideoInfo: ${s.codecWidth},${s.codecHeight}`),this.player.video.updateVideoInfo({width:s.codecWidth,height:s.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,t),this.player.video.bindMediaStream(),this.player.debugLog(this.TAG_NAME,`decoder.configure() and codec is ${i.codec}`);try{i.optimizeForLatency=!0,i.hardwareAcceleration="prefer-hardware",this.decoder.configure(i),this.hasInit=!0}catch(e){this.player.debugError(this.TAG_NAME,"configure error",e.code,e);const t=e.toString();-1!==t.indexOf(_s)?this.player.emitError(_t.webcodecsH265NotSupport,t):this.player.emitError(_t.webcodecsDecodeConfigureError,t)}}else this.player.debugWarn(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.debugWarn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(this.hasAudioInit){if(Yr(e))return void this.player.debugLog(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.debugWarn(this.TAG_NAME,"AudioDecoder isDecodeStateClosed true");const i=this.isAAC?e.slice(2):e.slice(1),s=i.length/this.player.audio.audioInfo.sampleRate*1e3,r=new EncodedAudioChunk({type:"key",data:i,timestamp:t,duration:parseInt(s,10)});try{this.decoderAudio.decode(r)}catch(e){this.player.debugError(this.TAG_NAME,"AudioDecoder",e),e.toString()}}}else{const t=e[0]>>4,i=e[0]>>1&1,s=t===Ft,r=t===Bt,o=t===Mt;let a="";a=r?i?16:8:0===i?8:16;const n={codec:"",numberOfChannels:"",sampleRate:""};let l=null;if(r||s){let t=null;if(Yr(e)){const i=e.slice(2);t=to(i),t&&(n.codec=t.originalCodec,n.numberOfChannels=t.channelCount,n.sampleRate=t.sampleRate),l=i,this.isAAC=r}else s&&(t=dc(e),t&&(n.codec=Mr,n.numberOfChannels=t.channelCount,n.sampleRate=t.samplingRate))}else n.codec=o?Br:Pr,n.numberOfChannels=1,n.sampleRate=8e3;if(n.codec&&n.numberOfChannels&&n.sampleRate){this.isAudioInitInfo||(this.player.audio.updateAudioInfo({encTypeCode:t,channels:n.numberOfChannels,sampleRate:n.sampleRate,depth:a}),this.isAudioInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&l&&this.player.recorder.initAudioAacExtraData(l),this.player.debugLog(this.TAG_NAME,`decoderAudio.configure() and codec is ${n.codec}`);try{this.decoderAudio.configure(n),this._clearAudioSourceBufferCheckTimeout(),this.hasAudioInit=!0,null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(_t.webcodecsAudioNoDataTimeout)}),1e3))}catch(e){this.player.debugError(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 cc={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 uc=Object.keys(cc).reduce(((e,t)=>(e[t]=`\n \n ${cc[t]?`${cc[t]}`:""}\n`,e)),{});function pc(e,t){let i=!1;return e.forEach((e=>{i||e.startTimestamp<=t&&e.endTimestamp>t&&(i=!0)})),i}function fc(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;const s=e.length,r=t.length,o=Math.max(s,r),a=2e3,n=Math.ceil(o/a);let l=0,d=0;function h(){let r="",o="";for(let i=0;i\n ${i.title}\n \n `);const a=t[d];a&&(o+=`\n
    ${a.title}
    \n `),d+=1}r&&i.$playbackTimeListOne.insertAdjacentHTML("beforeend",r),o&&i.$playbackTimeListSecond.insertAdjacentHTML("beforeend",o),l+=1,l0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){const r=s%60==0;let o=!1;i&&(o=pc(e,ia(i,s))),t.push({title:ea(s),timestamp:s,dataType:"min",hasRecord:o,isStart:r})}return t}(e);fc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0})}return e}(),t)}function gc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){let r=60*s,o=r%1800==0,a=!1;i&&(a=pc(e,sa(i,r))),t.push({title:ta(r),timestamp:r,dataType:"second",hasRecord:a,isStart:o});let n=60*s+30;o=n%1800==0,i&&(a=pc(e,sa(i,n))),t.push({title:ta(n),timestamp:n,dataType:"second",hasRecord:a,isStart:o})}return t}(e);fc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00",s=t+":30";t<10&&(i="0"+i,s="0"+s),e.push({title:i,hour:t,min:0,second:0}),e.push({title:s,hour:t,min:30,second:0})}return e}(),t)}function yc(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<144;s++)for(let r=0;r<60;r++){let o=10*r+600*s,a=o%600==0,n=!1;i&&(n=pc(e,sa(i,o))),t.push({title:ta(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);fc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0});for(let s=1;s<6;s++){let r=s+"0";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0})}}return e}(),t)}function Ac(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<288;s++)for(let r=0;r<60;r++){let o=5*r+300*s,a=o%300==0,n=!1;i&&(n=pc(e,sa(i,o))),t.push({title:ta(o),timestamp:o,dataType:"second",isStart:a,hasRecord:n})}return t}(e);fc(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0}),e.push({title:i.replace(":00",":05"),hour:t,min:5,second:0});for(let s=1;s<6;s++){let r=s+"0",o=s+"5";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0}),e.push({title:i.replace(":00",":"+o),hour:t,min:10*s+5,second:0})}}return e}(),t)}function bc(e){const t=Math.floor(e/3600),i=Math.floor((e-3600*t)/60),s=Math.floor(e-3600*t-60*i);return(t>0?[t,i,s]:[i,s]).map((e=>e<10?`0${e}`:String(e))).join(":")}function vc(e,t,i){const s=e.$playbackProgress,{left:r}=s.getBoundingClientRect(),o=bo((ko()?i.touches[0].clientX:i.pageX)-r,0,s.clientWidth),a=parseInt(o/s.clientWidth*t,10);return{second:a,time:bc(a),width:o,percentage:bo(o/s.clientWidth,0,1)}}function _c(e,t){return e.classList.add(t)}function wc(e,t){return e.classList.remove(t)}function Sc(e,t){return e.classList.contains(t)}function Ec(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function Tc(e,t,i){return e&&e.style&&Jo(t)&&(e.style[t]=i),e}function kc(e,t){return e.composedPath&&e.composedPath().indexOf(t)>-1}function Lc(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}var Cc=(e,t)=>{const{events:{proxy:i}}=e;let s=null,r=null,o=null,a=null;if(e._opt.listenWindowResizeAuoResize){s=document.createElement("object"),r=`jb-pro-object-${Ea()}`,s.setAttribute("aria-hidden","true"),s.setAttribute("tabindex",-1),s.setAttribute("id",r),s.type="text/html",s.data="about:blank",vo(s,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"}),o=e.width,a=e.height;const t=Uo((()=>{e.width===o&&e.height===a||(o=e.width,a=e.height,e.emit(At.resize))}),500);i(s,"load",(()=>{i(s.contentDocument.defaultView,"resize",(()=>{t()}))})),e.$container.appendChild(s)}e.on(At.destroy,(()=>{if(s)try{if(!Lc(s)){const t=e.$container.querySelector(`#${r}`);t&&e.$container&&e.$container.removeChild(t)}}catch(e){}d&&(clearInterval(d),d=null),h=null,c=null,u=0,s=null,r=null,o=null,a=null})),e.on(At.volumechange,(()=>{!function(e){if(0===e)vo(t.$volumeOn,"display","none"),vo(t.$volumeOff,"display","flex"),vo(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=_o(t.$volumePanel,"height")||60,s=_o(t.$volumeHandle,"height"),r=i-(i-s)*e-s;vo(t.$volumeHandle,"top",`${r}px`),vo(t.$volumeOn,"display","flex"),vo(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(At.loading,(i=>{t.isInitPlayer=!1,vo(t.$loading,"display",i?"flex":"none"),(Da(e._opt.backgroundLoadingShow)&&xa(i)||Da(i))&&vo(t.$poster,"display","none"),i&&(vo(t.$playBig,"display","none"),vo(t.$tipsMessage,"display","none"),t.extendBtnList.forEach((e=>{e.createdMoment===Or&&(e.$iconWrap&&vo(e.$iconWrap,"display","flex"),e.$activeIconWrap&&vo(e.$activeIconWrap,"display","none"))}))),i||e._opt.extendDomConfig.showAfterLoading&&t.$extendDom&&vo(t.$extendDom,"display","block"),i||e.getRenderType()===H&&Da(e._opt.useMSE)&&n()})),e.on(At.removeLoadingBgImage,(()=>{n()}));const n=()=>{t.$loadingBgImage&&t.$loadingBg&&t.$loadingBgImage.src&&(e.debugLog("Control","remove loading bg image"),t.$loadingBgImage.width=0,t.$loadingBgImage.height=0,t.$loadingBgImage.src="",vo(t.$loadingBg,"display","none"))},l=t=>{ha(t)===e.$container&&(e.fullscreen,f(),e._opt.androidMobileFullscreenRotate&&ko()&&(e.fullscreen?(e.$container.classList.add("jb-pro-fullscreen-android-rotate"),e.setRotate(270)):(e.$container.classList.remove("jb-pro-fullscreen-android-rotate"),e.setRotate(0)),p()))};let d=null,h=null,c=null,u=0;const p=()=>{h=e.rect,h.width=parseInt(h.width,10),h.height=parseInt(h.height,10),u=0,d=setInterval((()=>{const t=$r.isFullscreen;c=e.rect,c.width=parseInt(c.width,10),c.height=parseInt(c.height,10);const i=screen.width,s=screen.height,r=c.width===h.width&&c.height===h.height,o=!t||i-c.width<10&&s-c.height<10;if(r&&o||u>=5)return d&&(clearInterval(d),d=null),void g((()=>{A()}));h=c,u++}),1e3)},f=i=>{if(Da(e.isPlaying()))return;let s=Ho(i)?i:e.fullscreen;vo(t.$fullscreenExit,"display",s?"flex":"none"),vo(t.$fullscreen,"display",s?"none":"flex")},m=()=>e._opt.playType===w&&e._opt.playbackConfig.showControl,g=i=>{ko()&&t.$controls&&(e._opt.useWebFullScreen||e._opt.androidMobileFullscreenRotate)&&setTimeout((()=>{if(e.fullscreen){const i=e.getControlHeight();let s=e.height/2-e.width+i/2,r=e.height/2-i/2;if(t.$controls.style.transform=`translateX(${-s}px) translateY(-${r}px) rotate(-90deg)`,t.$zoomControls){const i=156,s=30,r=e.width/2+i/2-s/2;t.$zoomControls.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}if(t.$recording){const i=101,s=20,r=e.width/2+i/2-s/2;t.$recording.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}t.$ptzControl&&(t.$ptzControl.style.transform="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)"),t.$ptzControl&&(t.$ptzControl.style.transform="rotate(0)");i&&i()}),10)};try{$r.on("change",l),e.events.destroys.push((()=>{$r.off("change",l)}))}catch(e){}e.on(At.webFullscreen,(e=>{ko()&&(f(e),g((()=>{A()})))})),e.on(At.recording,(()=>{e.playing&&(vo(t.$record,"display",e.recording?"none":"flex"),vo(t.$recordStop,"display",e.recording?"flex":"none"),(e._opt.hasControl||e._opt.isShowRecordingUI)&&(vo(t.$recording,"display",e.recording?"flex":"none"),Da(e.recording)&&t.$recordingTime&&(t.$recordingTime.innerHTML=Zo(0))))})),e.on(At.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=Zo(e))})),e.on(At.zooming,(()=>{e.playing&&(vo(t.$zoom,"display",e.zooming?"none":"flex"),vo(t.$zoomStop,"display",e.zooming?"flex":"none"),(e._opt.hasControl||e._opt.isShowZoomingUI)&&vo(t.$zoomControls,"display",e.zooming?"flex":"none"))})),e.on(At.playing,(e=>{y(e)}));const y=i=>{i||e.isPlayFailedAndPaused&&Da(e._opt.playFailedAndPausedShowPlayBtn)?(vo(t.$play,"display","none"),vo(t.$playBig,"display","none")):(vo(t.$play,"display","flex"),vo(t.$playBig,"display","block")),vo(t.$pause,"display",i?"flex":"none"),vo(t.$screenshot,"display",i?"flex":"none"),vo(t.$record,"display",i?"flex":"none"),vo(t.$qualityMenu,"display",i?"flex":"none"),vo(t.$volume,"display",i?"flex":"none"),vo(t.$ptz,"display",i?"flex":"none"),vo(t.$zoom,"display",i?"flex":"none"),vo(t.$scaleMenu,"display",i?"flex":"none"),vo(t.$faceDetect,"display",i?"flex":"none"),vo(t.$objectDetect,"display",i?"flex":"none"),vo(t.$occlusionDetect,"display",i?"flex":"none"),vo(t.$controlHtml,"display",i?"flex":"none"),e.isPlayback()&&vo(t.$speedMenu,"display",i?"flex":"none"),f(),t.extendBtnList.forEach((e=>{e.createdMoment===Nr&&(e.$iconWrap&&vo(e.$iconWrap,"display",i?"flex":"none"),e.$activeIconWrap&&vo(e.$activeIconWrap,"display","none"))})),e._opt.showPerformance?vo(t.$performanceActive,"display",i?"flex":"none"):(vo(t.$performance,"display",i?"flex":"none"),vo(t.$performanceActive,"display","none")),vo(t.$poster,"display","none"),vo(t.$ptzActive,"display","none"),vo(t.$recordStop,"display","none"),vo(t.$zoomStop,"display","none"),vo(t.$faceDetectActive,"display","none"),vo(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"}("")),vo(t.$zoomControls,"display","none"),vo(t.$recording,"display","none"),t.$ptzControl&&t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")),A(),i&&b()};e.on(At.playbackPause,(e=>{y(!e)})),e.on(At.kBps,(i=>{const s=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 s=parseFloat(e/8);i=Math.floor(Math.log(s)/Math.log(1024));let r=s/Math.pow(1024,i);return r=r.toFixed(2),r+(t[i]||t[0])}(i);t.kbpsShow=s,e._opt.showBandwidth&&(t.$speed&&(t.$speed.innerHTML=s),A())}));const A=()=>{if(m()&&e._opt.playbackConfig.controlType===X.normal){let i=t.controlsInnerRect.width-t.controlsLeftRect.width-t.controlsRightRect.width-t.controlsPlaybackBtnsRect.width;ko()&&e.webFullscreen&&(i=t.controlsInnerRect.height-t.controlsLeftRect.height-t.controlsRightRect.height-t.controlsPlaybackBtnsRect.height),t.$playbackTimeInner.style.width=i+"px"}},b=()=>{if(!m()||e._opt.playbackConfig.controlType!==X.normal)return;const i=t.$playbackCurrentTime.style.left;let s=parseInt(i,10);const r=t.controlsPlaybackTimeInner.width;s=s-r/2>0?parseInt(s-r/2,10):0,t.$playbackTimeInner.scrollLeft=s};if(m()){const i=()=>{if(m()){let i=0;const s=e.playback&&e.playback.playingTimestamp;if(s){const r=new Date(s),o=r.getHours(),a=r.getMinutes(),n=r.getSeconds();e.playback.is60Min?i=60*o+a:e.playback.is30Min?i=2*(60*o+a)+parseInt(n/30,10):e.playback.is10Min?i=6*(60*o+a)+parseInt(n/10,10):e.playback.is5Min?i=12*(60*o+a)+parseInt(n/5,10):e.playback.is1Min&&(i=60*(60*o+a)+parseInt(n,10)),t.$playbackCurrentTime.style.left=i+"px"}}},s=e=>{t.$playbackNarrow.classList.remove("disabled"),t.$playbackExpand.classList.remove("disabled"),e===Bi&&t.$playbackNarrow.classList.add("disabled"),e===Ui&&t.$playbackExpand.classList.add("disabled")};e.on(At.playbackTime,(s=>{if(e._opt.playbackConfig.controlType===X.normal)t.$playbackCurrentTimeText&&(t.$playbackCurrentTimeText.innerText=Po(s,"{h}:{i}:{s}")),i();else if(e._opt.playbackConfig.controlType===X.simple){const i=(r=s,o=e.playback.totalDuration,bo(r/o,0,1));t.$playbackProgressPlayed.style.width=100*i+"%",t.$playbackProgressIndicator.style.left=`calc(${100*i}% - 7px)`,t.$playbackProgressTime.innerText=`${bc(s)} / ${bc(e.playback.totalDuration)}`}var r,o})),e.on(At.playbackPrecision,((r,o)=>{m()&&e._opt.playbackConfig.controlType===X.normal&&(t.$playbackTimeScroll.classList.remove(Oi.oneHour,Oi.halfHour,Oi.fiveMin,Oi.tenMin),t.$playbackTimeScroll.classList.add(Oi[r]),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="",r){case Bi:mc(o,t);break;case Mi:gc(o,t);break;case Fi:yc(o,t);break;case Ui:Ac(o,t)}i(),e._opt.playbackConfig.showPrecisionBtn&&s(r),b()}),16))})),e.on(At.resize,(()=>{g((()=>{A()}))})),e.on(At.playbackTimeScroll,(()=>{b()})),A()}if(e._opt.operateBtns.quality&&e._opt.qualityConfig.length>0){e.on(At.streamQualityChange,(e=>{i(e)}));const i=e=>{t.$qualityText.innerText=e,t.$qualityMenuItems.forEach((t=>{const i=t.dataset.quality;t.classList.remove("jb-pro-quality-menu-item-active"),i===e&&t.classList.add("jb-pro-quality-menu-item-active")}))};(()=>{const i=e._opt.qualityConfig||[];let s="";i.forEach((e=>{s+=`\n
    ${e}
    \n `})),s&&(t.$qualityMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$qualityMenuItems",{value:e.$container.querySelectorAll(".jb-pro-quality-menu-item")}))})(),e.streamQuality&&i(e.streamQuality)}if(e._opt.operateBtns.scale&&e._opt.scaleConfig.length>0){e.on(At.viewResizeChange,(e=>{i(e)}));const i=i=>{const s=e._opt.scaleConfig[i];t.$scaleText.innerText=s,t.$scaleMenuItems.forEach((e=>{const t=e.dataset.scale;e.classList.remove("jb-pro-scale-menu-item-active"),Mo(t)===Mo(i)&&e.classList.add("jb-pro-scale-menu-item-active")}))};(()=>{const i=e._opt.scaleConfig||[];let s="";i.forEach(((e,t)=>{s+=`\n
    ${e}
    \n `})),s&&(t.$scaleMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$scaleMenuItems",{value:e.$container.querySelectorAll(".jb-pro-scale-menu-item")}))})(),i(e.scaleType)}if(e.isPlayback()&&e._opt.playbackConfig.showRateBtn&&e._opt.playbackConfig.rateConfig.length>0){e.on(At.playbackRateChange,(e=>{i(e)}));const i=i=>{const s=e._opt.playbackConfig.rateConfig.find((e=>Mo(e.value)===Mo(i)));s&&(t.$speedText.innerText=s.label,t.$speedMenuItems.forEach((e=>{const t=e.dataset.speed;e.classList.remove("jb-pro-speed-menu-item-active"),Mo(t)===Mo(i)&&e.classList.add("jb-pro-speed-menu-item-active")})))};(()=>{const i=e._opt.playbackConfig.rateConfig;let s="";i.forEach(((e,t)=>{s+=`\n
    ${e.label}
    \n `})),s&&(t.$speedMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$speedMenuItems",{value:e.$container.querySelectorAll(".jb-pro-speed-menu-item")}))})();const s=e.playback?e.playback.playbackRate:1;i(s)}e.on(At.stats,(function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e._opt.showPerformance){vo(t.$performancePanel,"display","block"),t.$performancePanel.innerHTML="";const s=Eo,r=Fa(),o=e.getCpuLevel(),a=Jo(o)&&-1!==o?`${lr[o]}`:"",n=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 g=e.getRecordingDuration(),y=e.getRecordingByteLength();const A=e.isAudioPlaybackRateSpeed(),b=e.videoIframeIntervalTs;g=Zo(g),y=Oo(y);const v=e.isPlayback()?"录播":"直播";let _=i.isDropping;const w=e._opt.useMSE&&e._opt.mseDecodeAudio,S=e.control?e.control.kbpsShow:"0 KB/s",E=e.getVideoPlaybackQuality(),T=e._serverInfo||"",k=`\n
    \n 播放器版本 ${s}\n
    \n ${T?`\n
    \n 服务器信息 ${T}\n
    \n `:""}\n ${e._opt.isMulti?`\n
    \n UUid ${e._opt.debugUuid}\n
    \n `:""}\n ${e.isInMulti()?`\n
    \n 窗口下标 ${e._opt.multiIndex}\n
    \n `:""}\n ${r?`\n
    \n 内存大小限制 ${Oo(r.jsHeapSizeLimit)}\n
    \n
    \n 可使用的内存 ${Oo(r.totalJSHeapSize)}\n
    \n
    \n 已使用的内存 ${Oo(r.usedJSHeapSize)}\n
    \n `:""}\n ${a?`\n
    \n CPU压力情况 ${a}\n
    \n `:""}\n\n ${r&&r.usedJSHeapSize>r.totalJSHeapSize?'\n
    \n 可能内存泄漏 是}\n
    \n ':""}\n\n
    \n 播放模式 ${v}\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 解封装模式 ${F[p]}\n
    \n
    \n 解码模式 ${u}\n
    \n
    \n 渲染组件 ${h}\n
    \n ${h===H?`\n
    \n 渲染引擎 ${c}\n
    \n `:""}\n
    \n 网络请求组件 ${f}\n
    \n
    \n 视频格式 ${n.encType||"-"}\n
    \n
    \n 视频(宽x高) ${n.width||"-"}x${n.height||"-"}\n
    \n ${e.isPlayer()?`\n
    \n 视频GOP(ms) ${b||"-"}\n
    \n `:""}\n
    \n 音频格式 ${Ut[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 视频录制时间 ${g}\n
    \n
    \n 视频录制大小 ${y}\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.streamBuffer}\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.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()&&E?`\n
    \n Video已渲染帧 ${E.renderedVideoFrames}\n
    \n
    \n Video已丢弃帧 ${E.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()&&Da(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 网速 ${S}\n
    \n
    \n 播放时长(s) ${Zo(i.pTs)}\n
    \n
    \n `;t.$performancePanel.insertAdjacentHTML("beforeend",k)}else t.$performancePanel.innerHTML="",vo(t.$performancePanel,"display","none")})),e.on(At.togglePerformancePanel,(e=>{vo(t.$performance,"display",e?"none":"flex"),vo(t.$performanceActive,"display",e?"flex":"none")})),e.on(At.faceDetectActive,(e=>{vo(t.$faceDetect,"display",e?"none":"flex"),vo(t.$faceDetectActive,"display",e?"flex":"none")})),e.on(At.objectDetectActive,(e=>{vo(t.$objectDetect,"display",e?"none":"flex"),vo(t.$objectDetectActive,"display",e?"flex":"none")})),e.on(At.occlusionDetectActive,(e=>{vo(t.$occlusionDetect,"display",e?"none":"flex"),vo(t.$occlusionDetectActive,"display",e?"flex":"none")}))};function xc(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===i&&s.firstChild?s.insertBefore(r,s.firstChild):s.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}xc('@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@-webkit-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}}@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}}.jb-pro-container video::-webkit-media-controls{display:none!important}.jb-pro-container .jb-pro-icon{cursor:pointer;width:16px;height:16px;display:inline-block}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-ptz-controls.show-vertical{right:43px}.jb-pro-container .jb-pro-ptz-controls.show-vertical .jb-pro-ptz-btns{left:0;top:156px}.jb-pro-container .jb-pro-ptz-controls.show-level{right:163px}.jb-pro-container .jb-pro-ptz-controls.show-level .jb-pro-ptz-btns{min-height:156px;left:144px;top:0;display:flex;flex-direction:column;justify-content:center}.jb-pro-container .jb-pro-ptz-controls.jb-pro-ptz-controls-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-up{transform:rotate(-90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left{transform:rotate(180deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-down{transform:rotate(90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-up{transform:rotate(-135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-up{transform:rotate(-45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-down{transform:rotate(135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-down{transform:rotate(45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-control{position:absolute;left:53px;top:53px;width:50px;height:50px;background:#fff;border-radius:50%;transition:left .3s,top .3s}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left{left:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-up{top:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right{left:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-down{top:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-up{top:39px;left:39px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-down{left:39px;top:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-up{top:39px;left:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-down{top:67px;left:67px}.jb-pro-container .jb-pro-ptz-icon{position:relative}.jb-pro-container .jb-pro-ptz-icon:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-btns{display:block;position:absolute;left:0;top:156px;width:156px;box-sizing:border-box;padding:0 30px}.jb-pro-container .jb-pro-ptz-btns .jb-pro-ptz-btn{display:flex;justify-content:space-between}.jb-pro-container .jb-pro-ptz-expand .jb-pro-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%}.jb-pro-container .jb-pro-ptz-expand:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-narrow .jb-pro-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}.jb-pro-container .jb-pro-ptz-narrow:hover .jb-pro-ptz-narrow-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAJ1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v7X19ckk9ihAAAACnRSTlMA9+NCAsuKJsRiPv/2GwAAAJlJREFUGNNjYAAC5gxFoTYDBijw1FoFBIumQHjsUavAYGkBmGu0CgqUwRqlYNyFIO2Fq+BAnIGBJQrBXerAwLkKCUxgYELmKjBYIXMXM2Qhc5cxdCFzVzBoIXMXMYAcsRsMdgEdgs4FKT4DBqdAitGMQrMIzRkojlRB9wKaB9G8z+CMGjgshjCuMCjoWNxRAxYt2KGRYgJiAQAnZcjElaB/xwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-aperture-far .jb-pro-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}.jb-pro-container .jb-pro-ptz-aperture-far:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-aperture-near .jb-pro-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}.jb-pro-container .jb-pro-ptz-aperture-near:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-focus-far .jb-pro-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}.jb-pro-container .jb-pro-ptz-focus-far:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-focus-near .jb-pro-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}.jb-pro-container .jb-pro-ptz-focus-near:hover .jb-pro-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%}.jb-pro-container .jb-pro-ptz-cruise-play .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJWSURBVHgBtZe/b9pAFMefbSYWMjCjdOtmYEYqXVC3umMlBFRiT7qxkexITcdKSDUSYna2iqX+E/DG6LCQgcETUiR+5Pv8I3Kc+McF5ysZ3x2++9x79/zuLFEG9Xq9s/1+r8my/AnVJq4z/2LZfB0Oh1tFUQxd1+208aQ0GAa7kCTpMgRJk4kJXk+nU5NEoe12W8PM/wrAotIx2Z+w3MkE7XQ6Q3S4otNlY5zPUZdL7wiMBUsRIK/fDeWvhQ92XS0HrQia83cCsqoIyMug8gQ9Ho/DpF7FYpEajQa9VTBoyIZxWeEfv6IndSqVSjQYDKhcLtNqtaLtdkuigmGSZVn/XKiqqr9wqyZ1YEtbrRZVKhX3zvX1ei0Eh7Ufa7Xan8C9VRIUg9lyQZfzO19VOOugkBpAgaXRtnq97oLZ5ZvNJm0YQkBZ8m63E7YyKl5ntrrf77vlJCF/qzLlKLZ4NBqRpmmuF2LBlLOyBFYBchDKlIeWyyWNx+PUtS2Qtx+eJA6i2WzmQtMEA+8KnA+73a6N+jkJil1pGAbN5/PMfRBIZsGn3+LFvSABMYiBgpnJgZEeFHQD4EzQrOsWI4N/nrY2uPg/eeefV8WvAKfALOsWJ3jzA++rcqjhB25OXAd244nA62AjV4LGxWLhIBk/oPiF8pc9mUy+BZVnyQEzueEZUb5yjyvhBiX6BCw2YTGvdZNyAkYPZsprT/rgO/K2vDcdQQH7jes7gPcv/kvqyCcKbEVX6PxVAG76QWPGPZAIDcEZqGECTQyokpe9wp8VfNqzyA2L9M+KRzm19l1i6ZQBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-play:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ5SURBVHgBtZe7buJAFIYPjsVFAok3wBUlYcUDLNvQISUSDVVCA0IUYZ8gmzcgBeIiJLwdFau8QToaQKygovI20CJBARKX/Y/jICPAF3B+yRpjZvzNOWfOzLGLLKrZbAaXy+WdKIq32+1WcrlcQe0vZb1e/8XvQT6ff7fyLpdZh0qlEr+5uXne7XZxMpciCIKMSfzGBBSyCwVMAqxpEXYEhzdeAJYtQ2u12h2aJq4gXadSLpf7aQptNBoPm81GJofEsc5ms9/0zwT9j3K5HHUSyEJ4ovV6vXkSyjHEyvxDXyCAHxGy4hEUq+4JjWQ02O/30xV65rTbQ9lKNEWjEYFAgFKpFMViMbpQnOfFPRSKWxnldrtVaDqdpnA4THalefMDinx8sDOYrY7H45RIJOy6PMibjch3F24AJEmSeo3HY+p2u7RYLEzHwNqogOUcpSvFrk4mk5Zcjry9FZCX1+46qj5dzvEOhUKGfQVyWAyPRCLqojsnEYtohpiSE5rP59TpdEhRFMN+Itw7Q3DpGq1WKxqNRurF90YC75+gnXszulBsVbvdpl6vZwpkwasDNWVw9r3BWlu5Op1OVdBkMrEzTD11RO1exmUJytb0+30aDodkV7DyjT2rBpNrG8zg3WwQW9ZqtS4CatASt/sVhAC/GA3glWk1bqcEo+TPwm0P5QeYySt9jRS9UQe54vF4fqEZkMNCdXivrw4PoJlMZoad5IeDYE7F+0KhcPC+syVotVotIQ5PdLm4CD8CGkJZfAIhzlw3SWRdM+T9q9frLbHnTnUwrfBZfPCiecQG8v3MBHj/HvAm4/P55HMwW1C9tG8a/RmsGH1CnNJ/17UakVMOx7kAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-cruise-pause .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHySURBVHgBxZc7bsJAEIbHdprQJAU1ckln3FM4J4jTIkSMRB9uQDhBlBPECIk2yQ1MSeeIxg0KZQoKKpSCR/4xtsXTNmA7v2ThHe/ut7M7O7sIFEOGYdzO5/OSJEn3KGp4ZDy33ucxP6vVqo86H71ez47qT4iCLZfLJ0EQmhuQKNlo89rtdk06FVqtVjV49kZrr86RicG2TdMcx4LWarUWGjzT5Rqjn7tdsJAi8Ch4C4op1TGl75S8GKwCPOWC6FsRNDKAL5SOZER30HcAhbFFEUFTLBapXC5v2fL5/J7tiOCXofHLlVfikRhRrSqVChUKBXIchyaTiWtrNBruYLjM9jB5jlmup4vFQqMYyuVydKE03vsuVBTFR8pIcFD317REGQlRXBJ5PSl+iktCskgZC57eZA5l/Q/Uy4lTykjYq1++p5EHb1LC9rRdKA7dT8pO64yERG/SmVM8m81OqW7yckr8Ztv2r6Io1whnLawF59fhcLiVY0ejkWsfDAYUJfRfB+snOE85J2KRvym9RGF2Op06vwRbhg9YHgmlIz7E235B2vwC1x1VVdl7jZLT3nVF2q0BsJUg+ODFTDpU0wP3PfC5a2wB+BD7CuqLgws/TQQYn7cyxYfxfdc6ViEUujMAHUlER4cKHfhbATvPjBUG8/UH1xXJDxHoYGQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-pause:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAH/SURBVHgBxVY7bsJAEJ01CAkJKUhUULmiDSnpoKYINyBuQIgi3AA4QZQKIQq4QaChhhuQCxAXSERUSDSIb944axSS+CPA5kn27o7X+2Z2dz6CXKDT6URXq1UqGAw+Hg6HDB4V4qj8rAsh9N1uN9rv971KpTJ2Wk84kW2322csVv1BYr+gEGMo8Foul7uWc6w+NJvNjKIoHXRVOgMg74K8AXLdFWm73a7BujpdDh3rZH8TCw8JLYlPSFutVh7NG10feigUetA0bcEDxZTiDFU0L+QN1M1mc1z7SBoIBGrkcGkSiQQlk8kTWSQS+SP7D3CzJ76c3A/yi61kodOP6XSaYrEYzWYzWi6XhiybzVI8HjfGLLeDNGxoWpohF8C50CXgwMK+r0gNCuQTENnyitQgRT4BQSOlyFvrKsRdCapC/uPuFqR0G1IZExfkH94NSzkHkk+Ap4wNUiTqPvmH74gUDoe7dOYWr9dr13M5sfNxBnjQ7/dXuVwuDGHG7ieOr9Pp9CTGzudzQz6ZTMgJ2FFtMBh8HvMpx0Ro/UEeBQq2slgsatw/uoxMsBp5A64WG+bgxE9LpVIPpUWDrgv7csUE4nEdlWCNPCC0JJXEF5Wg8MchHs11CWpCVvZVkBfckksyrneHVnMEuQRXitiqPBS4lwpEJYmORkc7Qju0IzPxBZ2t+3mW/JtqAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKgSURBVHgBtZe/jtpAEMYH28WJioIa+URDF8MTkAalO6cH4YIiFbk8QXS8QO6oUlCAkGjDtTRHJBoa4nQ0KBZdJApoEAV/Mp9jkAF7bXPcJ5ndtdf725nZWdYxiijDMBKr1SqhKIqKNpdms9mcRxkjFqZTsVjMy7J8x1WdL9WjC6D97Xb73G63m0HjxULAvnI1T+FlMfxBBPeEwoW73Q6we7pcViwWe8+utwKhDFQZ+IOrGr1eAH9ksOkLdSz8Rd5xu1RzBmfdFkvupwz8dmUgBENeYNAZtFQqGVwY9DZSnTVi6+Decrn8h0JYWSgUKJfLHdrL5ZKm0ykNBgOazWbCd9nNt3CzgoZjpUohlEqlKJPJHN3DJHRdp16vR51Ox/ddTiVkw70NlSTp7rRDMpmkWq1G4/HYvmANSpHghXg8To1Gw/M5W1oGVEZD07TvXNy4O8Btw+GQFouFbV06nabRaGRbhbaf8AzvTiYTr8c32Wz2p8KrSuMgJ7x6IEa4AIuivau9tNlsNGm9XqsBY9gxhOvCCi728wa7OCHhRzQAZl2pVGyXRZEoBAoFCDGs1+v2QooiUfpIHE+LBEL+VatVezVfDcp/whYJhAWBVHFvCEFCfz8op6cpORuxJRokajz98tSRae+97OJnUS/RanQLkwNQ4FrzsA2yyU0Gf/br2e12A90LlwYAkS5Pdrm/wRs+/rh1ChAshuV7wTqAQoTAarVat6gorll8YWvzXBXmbdTUcY3/sK/L+4ppmnPeF/9SCGsvAXIsH8+gDthkMFyepyuJgS0GHh3w5NNOzO0zeMHVD/R64BMDP53d93vBORW+0GVnpvmpS0NBXXDDSacwR9K5kxaPok+NUJ8VDlzlQucJvKNj63G2/U3/E78fZqx/rk0w4ggu8jUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAK2SURBVHgBtVa9jtpAEB58/EqArqCBBqehorgTVDQxPVJOiD5QAEJUeYLjniBcgRACKeQJQsQDBBoqkIigookraC1BwT+ZcQBBsNd7Ovgk2LV3vd/M7PyZgBPlclnc7XZPFovFv91uRZPJdL9fktfr9W987udyuRbPWSajDUgm3d3dPSOhBMaQUaAXu93eSKVSCryVtFQqPaBWXznJNMlR8zo3aa1W+7zZbIo4vYd3QBCEQjqdfjEkrVarzyhlAa4EvOt6JpNJ6ZJWKpUnHH7A9VHMZrNfLkjJO9Ecv3Aqwg2A1osevFs4vCQP5SF0Op3g9XrPflar1egzut9vCNVHzPS3j8EkcCAcDkMgELh4PxqNoNvtwmw20/tUXC6XSRyLqqZ7LS80CgaDqiY8IEESiQSIoqi7B53qE40qqVYsolTgdrshEokAeh9IkgRGIDPTPhJYC8SD4eg3k52RQNQi7XQ66txms+kepEUcjUah2Wxqrq9Wq6h5Pp8/4CUzD1osFuqPFwfnIsE1IBKbyDqANIzFYhCPx+EtYPmCGQxAppJlGQaDAVwLaFlBgRtAx7T/SNGNZWCg1WqpoeP3+4EX0+kUJpOJNiEqKWA49HGusA6gwPd4PMCLXq+nu4bpsK+6LVV9YMDlcqnkPKD7JyF1oFD+PSSHV9ZB4/EYQqEQGGE4HEK73dZdR+Ua6nh4gWXtD3AkfCL3+XzHZ4pfyrekIQnHApr2A2oqn4YM1TvDWkr3xbozPVAxJ0KaH1MRFllSvQG3gYztz7FtOct/mLqorZDhulD2BVzWJKW2kTZckVjBnviM8IKUQBtQ40ck/w7vAIUhnvGYz+cvwpHZbGNHkcQMwtXGnICs9YrCF/Q2GHb4e3IJBxLgo44ACsY6afbT4XDUWd09N+kpqOhTDT55Jf9/Z0b4C/UJLQCcLGi1AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIjSURBVHgBtZe9UsJAEMc3l1Q0WvAA2NEp1MyInVbGnoE8AVrSqW+gT2CY4QGwpTEFNcaOEqksKKiYcYYP/xsSJoRwx8f5n7nRu9u73+7lbu8waAc5jnM6m81sIcQlqhcoOZTTsHvAZT6fv5um2XZdd6Caz1DBMNm9YRgPMYhKHhx8brVaHu0LrVQqNjx/2wOWlAtnn9MiT4VWq9VHDHii4zXAPFdJsPGPwK1gIwHk7/dC+sXgAsBjroioFZsmpznCuHKLxeIxqqwirdVqvGmcbaOy2SyVSqW1tuFwGJTRaES7CEGd8TJbXOEo4YkjG8BQ27ZT+7rdLrXbbSUcx4+P3oOIVQ4Wr0Cj0aBMJiO1Q6Q1PvsirFzSkeKVqNfrKjM+8xeCybRMbUcrn88HRSasqs2R5kijisWitB+reiKm0+mhaS5VvMwqCdIs1WYKoJZljUmj+NwqobS8D7Wp1+tJ+5EPvkWYD33SIE4S/X5faoOHgCdC+jsdKc5GnJUUGiNIzwrpbjwh76tOpxMAJ5OJyjTwKp7wP/CnvM06LeFzdPwNd4AFihL+Chom/U86/HmiAr4CGOR4M2r0fX9cKBR+8e816deg2WzeRJW15ABPXvgxRXoVPFfiDWbSAhF7iJiXvUyagMmHmZlmGYK/aXn7HPSNAWui3AH4s9EnG8ibiy94DL6l3W8jL3zvetsMpNCEAw4cKGPCc9r8WeGj/YuBMlikP+yn3EGZYjlWAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAI5SURBVHgBxZZLjtpAEIbLjUFih8QFnBUrJCIOEHOCROIACStALBhOMMwJMlkgBCyYnCDMCUJWrJCQYB+zBwkJFiBe+QvZyEz86IEezSc1dj/w76pyV5dGEnS73cR6vf4SiUQ+HY9HE0MJu5GmaSNcFrvd7hn3vXK5bIU9TwsTw8Oqh8PhzhGRoIf1tSBxX9F2u12FVfVXiL3ksVgs1khWtNVqfcfljm7HgtW5l1Zrbyh4Fo7FYh8LhcLCGRDu2U6nc69YkDG22+0v98DZ0mazaQgh/tLbUUOMHy9E8eH8treDJ8lkkgzDuBibz+c0m81otVqRBAu4+QO7WecerDSDBB3RbDbrOTcej2kwGFAIvNc5dPVTTLHpv9INpNNpyufzBEsC1yF81dOVf8KslCHIEy4SjUYjIxDLDDoGKYAtDrNW13VT7Pf7azOOJ6lUKnAeySLB7jVIIezmMAS9A/igxIIUwns3VBQ+HpFCLMsKnGcjhX0CKLF2MpnQcrkMXIPzuX+KKax9phthtw6Hw7BlVqVSGel25wntqqy02WxOFnLj+xB6/HNTwmdXTqdTGTHmfKA7lhKSxAOCbPr9g90n82X6AcGfTgVxUTngtKlD+J4UAw/2S6VSzulfJAe8SZ3fiNRiQbTgHvgvI0H4Gxb9IAVwTexVmHmmQbiCD1suHy26En7xaDSa86p/A4ttrpuIT3ohpLcTxw/tAWJ9vzUaSWCLm3DXZzS+z7hELFzYjX/i8fiTu9T04x9LgQk+PbvDKQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALxSURBVHgBtVYrrBpBFJ0FFAqBqCIrUXRBk5QaUleewBBIlwSDoW1CUlzz0CSlaJJHA8FgqMBg4CWIKkpRuEfQCDAYAvSeYYfsLgss6fYkk5ndmXvP/c1HYjaQTqdjbrf7PQ0VarLWgBW1Cdput3tutVrdW7qka5OZTEZ1uVwfaBhj9jDf7/ePzWazwe4hVFVVPhwOT3cQnRFLkvS20WjMzRMuCzKFyH7/AxkAg18oQp/ME24LsgENfcwBkJfvQqHQejqd/jr905HJGpnMHIYW3iHGp5AS2df/QabpfiKHfCdCVCN1qh1hv9/PIpEIi0ajLBgMskAgcDZfKBTMYjJVL8+nh7MeS/8ioFiQbDYbtlgseA/lXq+Xt9lsxrrdLkulUmw8Hp/poLB+JC+rkpa7FysiKEokEpyo3+/zBiIrr2EU1kKmWCxariMvsy46IRJWZFBSLpf5GApgvZUSYLlcstFoxMfwHnKQN4Mi+cYdDoe/IGpmslKpxJV0Oh223W7ZLcTjcb6uVqtxLxFayJtkfSga2Sycy+X4YnhlBzAQhGI9euTRqnhAaNjkKA5Unl0yALlD0SC0Au12m/fIvx5nRxsEYV2lUrHMgxmiYMwGwmiE1qzDrSiKSv0r8QMxF2Wdz+fZer3mhXAJCP9gMOCGAiBJJpM8h6jqXq9nWO+hLfGH9ohiVoTFIEbxwFqECMoQInwLy4V3mEMe0SB7YWtMJJzoVK7fLnkgKg65BVBM8Bj5gjHwDORoGNfrdUMu9SDnfl7d+HqAEArFCYNQYoxtAODfJSIBimTWpV2Swxt8PLwiRAgjGrwXuEVGmBNXw6MxP5KXMWYTCKs4U+2COH6g59tCu6uG7A7AYxteCcypVU+EmgVZbcJxkO4HcmplIEQuMcGOTz8nyT6T7on4Npw0mMBzgDnkqUZWNfyzWujQM/FB79lVQh2xeudbZ0VE36mvipzdRagjjtFtnSBlr9nxuS9uGCidk1HPdFp1xcvsGv4CcbeEIeSIw9MAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAM0SURBVHgBtVa/SyNREJ7dBLVQELU4bdwrtFJOUCxsXEG0Ue4OK6tLKhEb/QsO/4LzChVtvGvE0sPOxtiYJuFyJBBICtOlSSAQCEnIj5tvyC676ybZYPLB4y373ptv5puZt6uQB1xeXup+v/9zs9lc4qHxK621VFAUJYbRaDSeDw4O7rvZUroQBXw+3zcm0ckbMkx8enh4+It6IWQijYlueiByI95g4oxzQXW+OD8/X1JV9e87yACNbbxeXV0dOxcUJxnn6okfx6l/OOHcnr0hhIzsFcg06jNa8obwbErKOfs+CDIhUdUbxrhJiGrknAW8HB4bGyNN02h+fp6mp6dpcnLStj46OkpbW1vOY1q5XJZ8iqTX19dPnYpkZmZGSObm5qharVI+n5cZ5ENDQzKy2SxFIhFaW1ujTCZDqVTKaabA+z4qrdy9uhHB0PLyskSTSCRkVCoV16gRLfYODw/T7e2tOOQE5zKocmRf3Mggzd7eHvEtQnd3dxSNRl3JgGKxaEaE6HEO553gOllXuQ3W3ch2d3fFyMvLS1siKxYXF0XWh4cHOYfzUMgKpE1t3Y026LouhxCVF8DBhYUFcz9m5HF7e9u5VUOV2pp8dnaWpqamPJMBKysrEh2kNRAOh2VG/q14c7XhILzb3993zYMT2IOCcTo4MTEhkqKgrPCx1gGePxgv6vW6EKJYNjc3qVQqSSG0A+RPJpPiKACS1dVVaQ9UdSwWs+33c6n+47ZYchqKx+NCvLOzI80NiWAMEkFyeM75lx5FdFhD4SCXIEJluxRbTLm4uDjmcv3RLgIYgrfILZBOpymXy0m+UImIDLLCATyHQiFbLq1gB/90bHwrcNPAILwGAaREcz8+Pso6CNsRGZDGx0eS8xXqRgh5DYkgIwZuFQPdyGACfwJ+PHGhnHKUOnkEetS4U72Co/uNWdoC3yovUVqBiD1EZW4fGRk5MwkBjjKIBRoAarXa12AwWLARIpdY4McC9RcnR0dHZjPabhosMOkG9S9S2/8MMLDfRKhljawjoYU4wNXby79OgavxJwrEyFlPhBZinasYH+pPPOMaNL4wMJphJZ553Bt/Zp3wHwTYnvHjbDCuAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANOSURBVHgBtVc9TCJBFB52r7jYyCXWnhcbO1aru8RErjGXWBxX2BijGG1svNhJo56VhQU2ViQsgdDQYEFDc5rQ0BDoaMgRGhoKaMhdCHDve+6QZVhgMfglm9mdn/e9v3kz6xEusL+/79c0bcvj8fjpc8V6gCY9VXqK3W73MZFIpN3I80wj03X9il79wh2q/X7fJAXvTdNszkQaDAZXaHF0BrIRcvLKERE/OQ3qYwh/06shXg8vRPl8PlEqlZ4nktoIV8QcgBxwItbfitBOvL6+XioWi2XZp8kXIryaN6FNdpSM8spvthRWUmPaJ25vb4vV1VVRqVSGBCwtLYm1tTUeW1hY4KfVak2hFe+J+B+5+QkfnL2Hh4fI1KAq/OLiQlxeXorl5WWxsbEhNjc3RbvdFrVajVvMkcTlclmk02nRaDTGETfJ1Z+wlTxWLP84zQoEAkwEodlslh+QqZDWY36hUGByp3m9Xu88Ho+HNaokfidCCAIh2kgkMlYQAOtyuZy4vb1lBW9ubnidCioa37klkw0nQrgWgpLJJMfXDUAOBbEO66GAAkOS+tSRk5MTXgjr4FIAMXULrIObz87O1CHv8fHxR03thXAkDhbahezt7TlpzkA8sc7uUngIQIhUgNRr70AWQsu7u7uBEPTBdaqboQTcCIUgXL4DUBzjTrHVDcP4BmVlR6fTYVLg9PSU9yC2CIghEG7HHIC2GluJOGYyGR6DYiDCGEKD/iErNS2sU238QnH9rGqDopDP5zm+EIJ3aL6zs8NEUAKCQSiVwxp4BFaHQqGRwkJoRqPRkEZ7tCjGAAJQHED28PDAVkirsX1kUcAc7FEXWc5c7+iQTltnpyMgHNYgUSSZBL5BhqTBHkVMAZnxKsijMbQ6Vf+/FFe/mFLs6/X6IJZ20t3dXXb34uIihwFuTqVSI3Mt0nPia3LtpVLot461V0FWLiiBZwzMWCx2xOSy5+DgIEya/BRvA1xfvlKxr+JjUBwola/Fy81u7iDCX5JwiJSPHNJm3sQWoTnUp06a57XFIrxW+0dug8guutM8EvEHpxPIJRDDH6qFA2UmrSSrg0SO5HJLjhDdUxue+bLtQG7QqR8ggVvC4beCFHumRMSxVJxEJvEfnFm91YrgD/sAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANwSURBVHgBtZa/SyNBFMffboJaKAS10SZ7hXqFegGbCyjmUPTAH3eHlZWmULG6u/Kqi/9BLEQRIdoKigf2l1Q2ChGtBLmtFAQloPgL1HvfRyZuJhuzBvOFzezOj/eZee/NZAzyoMXFxYjf7+99enqK8GNxlZVtyhiGYXOZ5vo/MzMzW17sGaVgPp/vN2DkTbZpmqs8wfloNJqh10AZZjEs8QpYAfzx8TE6Ozub9AQFkGf7l55dWLbYTmxqamruRehbAl8CG5UEOvTNmWSmekHCVAgIJVgB9eHHD1bJSTPp7NXe3k68Hejg4CBvdF1dHTU0NFBVVRVdXl7S/f09nZ+fl2BS4Pb29geXMXyIe5eXlxM6FMaHh4dpY2ODGhsbybIsamlpyUFQog/geE5PT2l3d5eurq6KgTPc7x22kpGN5T+3Xl1dXdTa2ipGDw8P5bm7uyvoB3hTU5P0t22b9vb2ZFIu+smxjSOmEbfW2tpaAcJgMpkUQ25ACG4+Ojqi7e1tqq6uprGxMRmvi8P1BaXJLyE34MjIiBja2dmhzs5O8iLAMUGMw3h4yCkOobDYs+YHfXAkEpGBWJ1KJMTUqzAObh4cHNSbAisrK0FTrw0Gg5I4GKiEBAmHwwUzV2pubpZJOV0KD0EIkS6TlxxwViALMcvx8fGcEdQhKzs6OvIGYxLIcEwIxuFSvEP19fXSjpzQ5RsdHf3M5XtV8fDwIFDs0f7+frq+vpYtAjAMwu3oA/X09MgqEcf9/X1pQ/wBQhuyPZ1O56/SNOO+oaGhMAM+6rM5Ozuj4+NjiS+M4B2ZGQqFBHRyckLd3d2USqWor6+Pbm5uZAySqa2tjdbX1+VbU2Z6evoX3JumIoIBHA6ATUxMyCl1cXEhQOxD1ON9c3NT9qjufl2K5a+pqdliA4liHWEc7kOiwMXOvYpvwJA02KOILwS3FoGuoTTlWDKMJJUQ4qwfDmoyAwMDkkiYIBIOsS2iJH7k7MW1JPu3VpbUyYWVw91u4oWtcjyjOSi0tLQU54bvVBnh+vKJry82PnKHAydFDI1UATFwTgHzoIgtZvPW4Cxw1VlX0YtZFhjT6wvOXrgBK+ZnjcqXimHMrbHUZXuSV43kCpE3IUTzvPfjr75s61pYWAgx/Ctndy9/WlxaCsKPzZs+xc8Ww9IvwZT+A8hTw5fcMmXrAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-arrow{cursor:pointer;position:absolute;width:0;height:0}.jb-pro-container .jb-pro-ptz-arrow-up{left:71px;top:15px;border:7px solid transparent;border-bottom:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right{top:71px;right:15px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left{left:15px;top:71px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-down{left:71px;bottom:15px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-up{transform:rotate(45deg);left:32px;top:33px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-up{transform:rotate(-45deg);right:32px;top:33px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-down{transform:rotate(45deg);left:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-down{transform:rotate(-45deg);right:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-loading-bg{display:none}.jb-pro-container .jb-pro-loading-bg,.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-play-big{position:absolute;display:none;height:100%;width:100%;z-index:11;background:rgba(0,0,0,.4)}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==")}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-recording .jb-pro-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;-webkit-animation:magentaPulse 1s linear infinite;animation:magentaPulse 1s linear infinite}.jb-pro-container .jb-pro-recording .jb-pro-recording-time{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-recording .jb-pro-recording-stop{height:100%}.jb-pro-container .jb-pro-recording .jb-pro-icon-recordStop{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-zoom-controls .jb-pro-icon{vertical-align:top}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-narrow{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-tips{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-expand,.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-stop2{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jb-pro-container .jb-pro-controls{background-color:#161616;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:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container .jb-pro-controls.jb-pro-controls-small{height:30px;padding-left:8px;padding-right:8px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-controls-item{padding:0 5px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-icon{width:14px;height:14px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-menu-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-quality-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-scale-icon-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-speed-icon-text{font-size:12px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-quality-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-scale-menu-item,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-speed-menu-item{font-size:12px;text-align:center;width:40px}.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel-text,.jb-pro-container .jb-pro-controls.jb-pro-controls-small .jb-pro-volume-panel-wrap{width:40px}.jb-pro-container .jb-pro-controls .jb-pro-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen-exit,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-microphone-close,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-pause,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-play,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-quality-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record-stop,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-scale-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-screenshot,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-template-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-volume,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom-stop{display:none}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed{padding:0}.jb-pro-container .jb-pro-controls .jb-pro-controls-item-html{position:relative;display:none;justify-content:center}.jb-pro-container .jb-pro-controls .jb-pro-playback-control-time{position:relative;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-icon-mute{z-index:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom{display:flex;justify-content:space-between;height:100%}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-left,.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-right{display:flex;align-items:center}.jb-pro-container.jb-pro-controls-show .jb-pro-controls{opacity:1;visibility:visible}.jb-pro-container.jb-pro-controls-show-auto-hide .jb-pro-controls{opacity:.8;visibility:visible;display:none}.jb-pro-container.jb-pro-hide-cursor *{cursor:none!important}.jb-pro-container .jb-pro-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%;-webkit-animation-name:rotation;animation-name:rotation;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEzMzMzHx8fMzMzMzMzOzs7MzMz4IlKVAAAABnRSTlMA6xIU1hVqIuOVAAAAMUlEQVQ4y2NgGFYgLS3RAEQziQFZoxKjEqMSaBJpEAkgIw1ZQlBQRAEs4QhkDeIMDgAWx1gMHyIL4wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEz///////////////////////+3ygHaAAAABnRSTlMA7OgSFBXMmAA4AAAAM0lEQVQ4y2NgGFYgLS3JAUQzi6WlJY5KjEqMSqBJpEEkgIw0ZAklJSUDsISikpLQIM7gAJjhWp6XcaOxAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAHlBMVEVHcEzGxsbMzMzMzMzLy8vMzMzMzMzNzc3MzMzMzMxEZ/aQAAAACXRSTlMADPKKKeBxlV6neZ4mAAAArUlEQVQ4y2NgGDZgJhpowCURAJeYpIQENJEkCgWRgCeShAGyjfgl2EqwS7BFToZJiLg4ICTEImdOh0pwRM6cDJcIjpw5E6aDFeh8B5gECBCUYAkKCoMbNXNSOlyCgUEQ4apJJmxIEkjOVWFgxi4RgEsikGQJnEYp4pLA6VxUDyJLIAUJcRLIwY7qXKSIQvOHWCQODzKIleBPPjgTHM4kijNR48oGkajiYUMykwMAAfmZhUjBISQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMA8gyMLeRw1x2DBpWGN2QDAAAAt0lEQVQ4y2NgGDbgDBpIwCVRAJc4KIgEZM4EwCU2KSEBHySJCcg29iBJGCBLgHUs24FdYlnNYZiESksDXKJALebMaagES8yZw3CJypgzZ2A6WIHOd4BJgABMgh2XBEtpaBjcqDMHs+ESDFyLEK46aMGGkEB2rgQDJ3aJAFwSUSRL4DQKp+VHcTkXxYMoEkhBQpwEcrCjSCBHFJo/1GIO408MOJMPzgSHM4niTNS4skENqnjYkMzkAEgzyFpeX6L3AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAG1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxi4XDRAAAACHRSTlMAf3WqJmy+7azWNnMAAADNSURBVDjLxZQ9E4IwDIaLfMzCOTDSOz07OjLir5CR0dmJFVHIzzZtnMzbOzcyZHnuaXpJWmO2ji4GhpAzzZeQzw8FKCj1pMHss9OgpwsGOS0YGOcVUMPsfBVkmJoVCBJW0FFB6SFIaMKAlRGDnEiDkuM00lP3SmL6H5QSh+iIr9ZWVWntUV9Z4qWbHAWrhcUYNLC4Wwm3xb1r2mOQYoVn2EKFAVb81KHiQQq6L3vSUoMBUmSzgCKbVeiL3eTp3Odf8H1sxRAZZNZt/Vt8AHcPQbiQQVF+AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzKysrMzMzMzMzMzMzMzMzMzMzMzMzMzMzNzc3MzMz8gU00AAAACnRSTlMAL0jMZKt96hGJsSKv1QAAAJ9JREFUOMvN078KQFAYBfCbJEw2q6SUyWxTnsJT2JTJ6D38Gb6n5PpT6BwbuaNfTnz3fEp9fZwAP7czD0MsGCzBYJcEYsGwBEHQQRB0EII1CMAWdAOzyJUvJ4jyDVyZVHKGpj9guEI2IuhaDFadYnCkIm9I+kPgn8t+kI7kOsT72HcwQnJR9Gofy8DrwwtHK8pLzdeALg5fNb6cdJ1fOjOGYrl5CLFcggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAL0TQf2frEaZYt8E+idL4AAAAnUlEQVQ4y2NgoDdgUcAuzr4Hh4TaGQHsBp3BLsG+BoeE2hnsEkCDsEqADMIqATIImwTYICwSEIPQJFhnBjKInUGSUA2CSPCcOcIwB1ki5xRM4iiDDrKEzQlsEuUF2CVY0jbgkDhjMLQkEkj0IM4gQQ1EHMHOOXMiakRpTiQQtXgTA+7kgzvB4UyiuBM17myAM+Pgzmq4MyfO7EwjAAAEf+BAxqI/agAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-face:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTP///////////////////////////////////////////////w2imYoAAAAMdFJOUwBAgBvfrFmcw4wrbtGliFoAAAD2SURBVDjLY2AYRkAJCAygbEZBQUEBKJvpDBDAODpA9kGYxEGgKphuIaBuhASqyYzESjBu79yIVWIP0NoCLBIsR4WZJY5gkYiZACRqFJAlGMG8EyAmK1hMGdkp7M4gkus4RrCwBIApFwwJmwlgqsYAQ6IAIrEAwygHHEaxngJbfhRDgg0sxHoMM7Z0AmC+RAPsJ4S5NE5gid8VoHg8sgHTDh/PzM60HkzLc44bgKMf3RKuMwoQ+dNIgswJDAycUDPYjhgwMCsjxYcJLA6AMYISUTkBMLsaUCVqEqAcngPEJx+SJJDSLii1HySU2lHyByi1Kwy9LA4AqflRBKNSA88AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTBCT2xKV2hGY2hKW2xGW2xGW2xGW2xKX3BGX3BKW23povfoAAAAKdFJOUwBAgRybs9hZLG6hrV9tAAAA80lEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTgmZiFViFtBaBywSbEuFmcWWYZGIUgASXgrIEoxg3lIQkxUspozsFJZkEMmxBCNY2MD2MqRhSFgpgCkvAwwJBxwSbAk4jGJZAbZ8KYYEO8S5yzFjSysA5kt0s5YKc6guwxK/baB4XDYB045Vi4pCyrMwLa9aYgCOfgc0cY5VEGurViIJMhcAlULNYF9mwMCsjBQfZrA4AMYISkRVBcDsCkCV8CqAcrgWEJ98SJJASrug1L6QUGpHyR+g1K4w9LI4ALk0RHtSETFcAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTHzD63zE6n7H7H3F7H3F633G63zF7H3G7H3F7H3F68TinBIAAAAKdFJOUwBAgR+Z31ipwW4yAjb9AAAA+UlEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTmmZiFViFtBaBywSrMuFmSWWYpGoUgASXgrIEowgHtsKEJMDLKaM7BSWYLCaJRjBwloAploxJKwUwJSXAYYE2KUMVRgSrAFgKhTDKPbFIJJ5OYYEG1iIfRlmbGkVwHyJBlhWCDNrrMASvxageFw6AdOOqKCklrQuTMuzlhiAo98BTZx5FcTarJXIgglApVBr2ZYaMDArI8WHKSwOgDGCElFZBTC7GlAlvBKgHK4FxCcfkiSQ0i4otS8klNpR8gcotSsMvSwOAIs+RIlIrewIAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-occlusion{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusion:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-zoomStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAqUExURUdwTBKV2hGW2xKW2xKW2xKW2xGV3BGW2xGW3BGX2xKW3BKW2xCX2xKW2yDN61kAAAANdFJOUwCAVKxm3T/DmhrxKw97YQBGAAABaklEQVQ4y2NgIA6wGqCLMCqAqV4HdIm9F0Ek22UMM9hiG4AkVzQDA+cmx+YyJJnDlw8wMNQaNpfevbu0QgxJgrN3JQPD3VvhjU57kESnOZqvvXuJgcEXxVFMEkDt1w11gZYwoVgue3d5SzaQSgCydZG1TMkBU8vBuq9guBcqNBNDgj0GQrMEb0CVYEmA2ViANRQZ795tQPZduADciXcVUNSthGu4hGrAJawagBIXsWoAClzGqgEocRWrBqDIrQNQDTPRXZ8A0cB41wBNQgGiQfbubTQJAagGDB0GIA0OsnevbkCTCADiu4J374ahW34JqAEIbiXMRJOAgkvMKJYgJBx6717AKiF4F4eOu+jxgQCXGHBIKPDgkBC8JYCURJDtQHYWN4oEcvpZiyR+C9lZtkgSKKG1CyGOGrxItleixjrcLFBWRAYcMIkG9NQMiY67N7AlcxAQwMwA6SBxM2xZQ3jtVRPsRQ83sg8ACMIUxzzE8wsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-close{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-icon-expand{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-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%}.jb-pro-container .jb-pro-menu-icon-text,.jb-pro-container .jb-pro-quality-icon-text,.jb-pro-container .jb-pro-scale-icon-text,.jb-pro-container .jb-pro-speed-icon-text{font-size:14px;min-width:30px;height:20px;line-height:20px;cursor:pointer;text-align:center}.jb-pro-container .jb-pro-speed{box-sizing:border-box;text-align:center;font-size:14px;color:#fff;width:90px}.jb-pro-container .jb-pro-menu-list,.jb-pro-container .jb-pro-quality-menu-list,.jb-pro-container .jb-pro-scale-menu-list,.jb-pro-container .jb-pro-speed-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;overflow:hidden;width:-webkit-max-content;width:-moz-max-content;width:max-content}.jb-pro-container .jb-pro-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-speed-menu-shown{visibility:visible;opacity:1}.jb-pro-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}.jb-pro-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container .jb-pro-quality-menu{padding:8px 0}.jb-pro-container .jb-pro-menu-item,.jb-pro-container .jb-pro-quality-menu-item,.jb-pro-container .jb-pro-scale-menu-item,.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-menu-item:hover,.jb-pro-container .jb-pro-quality-menu-item:hover,.jb-pro-container .jb-pro-scale-menu-item:hover,.jb-pro-container .jb-pro-speed-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-menu-item:focus,.jb-pro-container .jb-pro-quality-menu-item:focus,.jb-pro-container .jb-pro-scale-menu-item:focus,.jb-pro-container .jb-pro-speed-menu-item:focus{outline:none}.jb-pro-container .jb-pro-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-speed-menu-item-active{color:#2298fc}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-volume-panel-wrap.jb-pro-volume-panel-wrap-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jb-pro-container .jb-pro-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jb-pro-container .jb-pro-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:before{bottom:-54px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-volume-panel-handle:after,.jb-pro-container .jb-pro-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-controls,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-controls{width:100vh}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-play-big:after,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading{flex-direction:row}.jb-pro-container.jb-pro-fullscreen-android-rotate .jb-pro-loading-text,.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading-text{transform:rotate(270deg)}.jb-pro-container .jb-pro-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}.jb-pro-container .jb-pro-contextmenus .jb-pro-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)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu a{color:#fff;text-decoration:none}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span{display:inline-block;padding:0 7px}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span.art-current,.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span:hover{color:var(--theme)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:hover{background-color:hsla(0,0%,100%,.1)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:last-child{border-bottom:none}.jb-pro-container.jb-pro-contextmenus-show .jb-pro-contextmenus{display:flex}.jb-pro-container .jb-pro-extend-dom{position:relative;width:100%;height:100%;display:none}.jb-pro-container-playback .jb-pro-controls{height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center{flex:1;display:flex;box-sizing:border-box;justify-content:space-between;font-size:12px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time{box-sizing:border-box;flex:1;position:relative;height:100%}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-inner{width:300px;height:100%;overflow-y:hidden;overflow-x:auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-current-time{position:absolute;left:0;top:0;height:15px;width:1px;background-color:red;text-align:center;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll{position:relative;width:1440px;margin:0 auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-hour{width:1440px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.half-hour{width:2880px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.ten-min{width:8640px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.five-min{width:17280px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-min{width:86400px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-list{position:relative;background-color:#ccc;height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-day{height:100%;overflow:hidden}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-one-wrap{height:8px;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-wrap{height:25px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-btns{display:flex;align-items:center}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one{float:left;width:1px;height:8px;margin:0;cursor:default;position:relative;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.active,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.active{background-color:orange;cursor:pointer}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.start,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.start{background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one:hover .jb-pro-playback-time-title-tips,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one:hover .jb-pro-playback-time-title-tips{visibility:visible;opacity:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips.jb-pro-playback-time-title-tips-left{transform:translateX(-100%)}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips .jb-pro-playback-time-title{display:inline-block;padding:2px 5px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-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}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child{border-left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child .jb-pro-playback-time-hour-text{left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:after,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:after{content:"";position:absolute;left:0;top:-8px;width:1px;height:14px;background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-text{position:absolute;left:-13px}.jb-pro-container-playback .jb-pro-playback-expand.disabled .jb-pro-icon-expand,.jb-pro-container-playback .jb-pro-playback-narrow.disabled .jb-pro-icon-narrow{cursor:no-drop}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback .jb-pro-control-progress-simple:hover{top:0;align-items:flex-start}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner{height:100%}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner .jb-pro-progress-indicator{transform:scale(1);visibility:visible}.jb-pro-container-playback .jb-pro-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:all .2s ease;background:hsla(0,0%,100%,.5)}.jb-pro-container-playback .jb-pro-progress-hover{display:none;width:0}.jb-pro-container-playback .jb-pro-progress-played{position:absolute;left:0;top:0;right:0;bottom:0;height:100%;width:0;background-color:orange}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback .jb-pro-progress-indicator .jb-pro-icon{width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container-playback .jb-pro-progress-indicator:hover{transform:scale(1.2)!important}.jb-pro-container-playback .jb-pro-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}.jb-pro-container-playback.jb-pro-fullscreen-web .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-playback-time-inner{overflow-y:auto}.jb-pro-zoom-control{cursor:-webkit-grab;cursor:grab}.jb-pro-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}.jb-pro-performance-panel .jb-pro-performance-item{display:flex;align-items:center;margin-top:3px;color:#fff}.jb-pro-performance-panel .jb-pro-performance-item-block{height:10px}.jb-pro-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;z-index:10;display:none}.jb-pro-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%}.jb-pro-tips-message .jb-pro-tips-message-close{position:absolute;z-index:99999;right:0;top:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.jb-pro-tips-message .jb-pro-tips-message-close .jb-pro-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%}.jb-pro-tips-message .jb-pro-tips-message-content{overflow:auto;padding:35px;box-sizing:border-box;width:100%;height:100%;z-index:99999}.jb-pro-tips-message .jb-pro-tips-message-content .jb-pro-tips-message-content-item{font-size:14px;color:#fff;text-align:center;line-height:1.5}');class Dc{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("jb-pro-controls-show-auto-hide"):e.$container.classList.add("jb-pro-controls-show");const i=e._opt,s=i.operateBtns,r=`\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
    ${uc.narrow}
    \n
    ${uc.expand}
    \n
    \n `:""}\n
    \n `;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
    `:""}\n
    \n \n
    \n ${i.loadingIcon?`\n
    \n ${uc.loading}\n
    ${i.loadingText}
    \n
    \n `:""}\n ${i.hasControl&&s.play?'
    ':""}\n ${i.hasControl&&s.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 ${i.ptzCruiseShow?'\n
    \n
    \n \n \n 巡航开\n \n
    \n
    \n \n \n 巡航关\n \n
    \n
    \n ':""}\n ${i.ptzFogShow?'\n
    \n
    \n \n \n 透雾开\n \n
    \n
    \n \n \n 透雾关\n \n
    \n
    \n ':""}\n\n ${i.ptzWiperShow?'\n
    \n
    \n \n \n 雨刷开\n \n
    \n
    \n \n \n 雨刷关\n \n
    \n
    \n ':""}\n
    \n
    \n `:""}\n ${i.hasVideo?`\n
    \n
    ${uc.narrow}
    \n
    电子放大
    \n
    ${uc.expand}
    \n
    ${uc.zoomStop}
    \n
    \n
    \n
    \n
    00:00:00
    \n
    ${uc.recordStop}
    \n
    \n `:""}\n\n ${i.hasControl?`\n
    \n
    \n
    \n ${i.showBandwidth?'
    ':""}\n
    \n
    ${i.controlHtml}
    \n
    \n ${i.playType===w&&i.playbackConfig.showControl&&i.playbackConfig.controlType===X.normal?r:""}\n ${i.playType===w&&i.playbackConfig.showControl&&i.playbackConfig.controlType===X.simple?'\n
    \n
    \n
    \n
    \n
    \n
    00:00
    \n
    \n
    \n ':""}\n
    \n ${i.playType===w&&i.playbackConfig.showRateBtn?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.close?`
    ${uc.close}
    `:""}\n ${s.logSave?`
    ${uc.logSave}
    `:""}\n ${s.performance?`
    ${uc.performance}
    ${uc.performanceActive}
    `:""}\n ${s.aiFace?`
    ${uc.face}
    ${uc.faceActive}
    `:""}\n ${s.aiObject?`
    ${uc.object}
    ${uc.objectActive}
    `:""}\n ${s.aiOcclusion?`
    ${uc.occlusion}
    ${uc.occlusionActive}
    `:""}\n ${s.quality?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.scale?'\n
    \n
    \n
    \n
    \n
    \n
    \n ':""}\n ${s.audio?`\n
    \n
    \n ${uc.audio}\n ${uc.mute}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `:""}\n ${s.play?`
    ${uc.play}
    ${uc.pause}
    `:""}\n ${s.screenshot?`
    ${uc.screenshot}
    `:""}\n ${s.record?`
    ${uc.record}
    ${uc.recordStop}
    `:""}\n ${s.ptz?`
    ${uc.ptz}
    ${uc.ptzActive}
    `:""}\n ${s.zoom?`
    ${uc.zoom}
    ${uc.zoomStop}
    `:""}\n ${s.fullscreen?`
    ${uc.fullscreen}
    ${uc.fullscreenExit}
    `:""}\n
    \n
    \n
    \n `:""}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jb-pro-poster"),configurable:!0}),Object.defineProperty(t,"$loadingBg",{value:e.$container.querySelector(".jb-pro-loading-bg"),configurable:!0}),Object.defineProperty(t,"$loadingBgImage",{value:e.$container.querySelector(".jb-pro-loading-bg-image"),configurable:!0}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jb-pro-loading"),configurable:!0}),Object.defineProperty(t,"$loadingText",{value:e.$container.querySelector(".jb-pro-loading-text"),configurable:!0}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jb-pro-play"),configurable:!0}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jb-pro-play-big"),configurable:!0}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jb-pro-recording"),configurable:!0}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jb-pro-recording-time"),configurable:!0}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jb-pro-recording-stop"),configurable:!0}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jb-pro-pause"),configurable:!0}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jb-pro-controls"),configurable:!0}),Object.defineProperty(t,"$controlsInner",{value:e.$container.querySelector(".jb-pro-controls-bottom"),configurable:!0}),Object.defineProperty(t,"$controlsLeft",{value:e.$container.querySelector(".jb-pro-controls-left"),configurable:!0}),Object.defineProperty(t,"$controlsRight",{value:e.$container.querySelector(".jb-pro-controls-right"),configurable:!0}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jb-pro-volume"),configurable:!0}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jb-pro-volume-panel-wrap"),configurable:!0}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jb-pro-volume-panel-text"),configurable:!0}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jb-pro-volume-panel"),configurable:!0}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jb-pro-volume-panel-handle"),configurable:!0}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jb-pro-icon-audio"),configurable:!0}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jb-pro-icon-mute"),configurable:!0}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jb-pro-fullscreen"),configurable:!0}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jb-pro-fullscreen-exit"),configurable:!0}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jb-pro-record"),configurable:!0}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jb-pro-record-stop"),configurable:!0}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jb-pro-screenshot"),configurable:!0}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jb-pro-speed"),configurable:!0}),Object.defineProperty(t,"$controlHtml",{value:e.$container.querySelector(".jb-pro-controls-item-html"),configurable:!0}),Object.defineProperty(t,"$playbackTime",{value:e.$container.querySelector(".jb-pro-controls-playback-time"),configurable:!0}),Object.defineProperty(t,"$playbackTimeInner",{value:e.$container.querySelector(".jb-pro-controls-playback-time-inner"),configurable:!0}),Object.defineProperty(t,"$playbackTimeScroll",{value:e.$container.querySelector(".jb-pro-controls-playback-time-scroll"),configurable:!0}),Object.defineProperty(t,"$playbackTimeList",{value:e.$container.querySelector(".jb-pro-controls-playback-time-list"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListOne",{value:e.$container.querySelector(".jb-pro-playback-time-one-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackTimeListSecond",{value:e.$container.querySelector(".jb-pro-playback-time-second-wrap"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTime",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time"),configurable:!0}),Object.defineProperty(t,"$playbackCurrentTimeText",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time-text"),configurable:!0}),Object.defineProperty(t,"$controlsPlaybackBtns",{value:e.$container.querySelector(".jb-pro-controls-playback-btns"),configurable:!0}),Object.defineProperty(t,"$playbackNarrow",{value:e.$container.querySelector(".jb-pro-playback-narrow"),configurable:!0}),Object.defineProperty(t,"$playbackExpand",{value:e.$container.querySelector(".jb-pro-playback-expand"),configurable:!0}),Object.defineProperty(t,"$ptz",{value:e.$container.querySelector(".jb-pro-ptz"),configurable:!0}),Object.defineProperty(t,"$ptzActive",{value:e.$container.querySelector(".jb-pro-ptz-active"),configurable:!0}),Object.defineProperty(t,"$ptzControl",{value:e.$container.querySelector(".jb-pro-ptz-controls"),configurable:!0}),Object.defineProperty(t,"$ptzBgActive",{value:e.$container.querySelector(".jb-pro-ptz-bg-active"),configurable:!0}),Object.defineProperty(t,"$ptzControlCircular",{value:e.$container.querySelector(".jb-pro-ptz-control"),configurable:!0}),Object.defineProperty(t,"$ptzArrows",{value:e.$container.querySelectorAll(".jb-pro-ptz-arrow"),configurable:!0}),Object.defineProperty(t,"$ptzExpand",{value:e.$container.querySelector(".jb-pro-ptz-expand"),configurable:!0}),Object.defineProperty(t,"$ptzNarrow",{value:e.$container.querySelector(".jb-pro-ptz-narrow"),configurable:!0}),Object.defineProperty(t,"$ptzApertureFar",{value:e.$container.querySelector(".jb-pro-ptz-aperture-far"),configurable:!0}),Object.defineProperty(t,"$ptzApertureNear",{value:e.$container.querySelector(".jb-pro-ptz-aperture-near"),configurable:!0}),Object.defineProperty(t,"$ptzFocusFar",{value:e.$container.querySelector(".jb-pro-ptz-focus-far"),configurable:!0}),Object.defineProperty(t,"$ptzFocusNear",{value:e.$container.querySelector(".jb-pro-ptz-focus-near"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePlay",{value:e.$container.querySelector(".jb-pro-ptz-cruise-play"),configurable:!0}),Object.defineProperty(t,"$ptzCruisePause",{value:e.$container.querySelector(".jb-pro-ptz-cruise-pause"),configurable:!0}),Object.defineProperty(t,"$ptzFogOpen",{value:e.$container.querySelector(".jb-pro-ptz-fog-open"),configurable:!0}),Object.defineProperty(t,"$ptzFogClose",{value:e.$container.querySelector(".jb-pro-ptz-fog-close"),configurable:!0}),Object.defineProperty(t,"$ptzWiperOpen",{value:e.$container.querySelector(".jb-pro-ptz-wiper-open"),configurable:!0}),Object.defineProperty(t,"$ptzWiperClose",{value:e.$container.querySelector(".jb-pro-ptz-wiper-close"),configurable:!0}),Object.defineProperty(t,"$qualityText",{value:e.$container.querySelector(".jb-pro-quality-icon-text"),configurable:!0}),Object.defineProperty(t,"$qualityMenu",{value:e.$container.querySelector(".jb-pro-quality-menu"),configurable:!0}),Object.defineProperty(t,"$qualityMenuList",{value:e.$container.querySelector(".jb-pro-quality-menu-list"),configurable:!0}),Object.defineProperty(t,"$scaleText",{value:e.$container.querySelector(".jb-pro-scale-icon-text"),configurable:!0}),Object.defineProperty(t,"$scaleMenu",{value:e.$container.querySelector(".jb-pro-scale-menu"),configurable:!0}),Object.defineProperty(t,"$scaleMenuList",{value:e.$container.querySelector(".jb-pro-scale-menu-list"),configurable:!0}),Object.defineProperty(t,"$zoom",{value:e.$container.querySelector(".jb-pro-zoom"),configurable:!0}),Object.defineProperty(t,"$zoomStop",{value:e.$container.querySelector(".jb-pro-zoom-stop"),configurable:!0}),Object.defineProperty(t,"$zoomNarrow",{value:e.$container.querySelector(".jb-pro-zoom-narrow"),configurable:!0}),Object.defineProperty(t,"$zoomExpand",{value:e.$container.querySelector(".jb-pro-zoom-expand"),configurable:!0}),Object.defineProperty(t,"$zoomStop2",{value:e.$container.querySelector(".jb-pro-zoom-stop2"),configurable:!0}),Object.defineProperty(t,"$close",{value:e.$container.querySelector(".jb-pro-close"),configurable:!0}),Object.defineProperty(t,"$zoomControls",{value:e.$container.querySelector(".jb-pro-zoom-controls"),configurable:!0}),Object.defineProperty(t,"$performancePanel",{value:e.$container.querySelector(".jb-pro-performance-panel"),configurable:!0}),Object.defineProperty(t,"$performance",{value:e.$container.querySelector(".jb-pro-performance"),configurable:!0}),Object.defineProperty(t,"$performanceActive",{value:e.$container.querySelector(".jb-pro-performance-active"),configurable:!0}),Object.defineProperty(t,"$faceDetect",{value:e.$container.querySelector(".jb-pro-face"),configurable:!0}),Object.defineProperty(t,"$faceDetectActive",{value:e.$container.querySelector(".jb-pro-face-active"),configurable:!0}),Object.defineProperty(t,"$objectDetect",{value:e.$container.querySelector(".jb-pro-object"),configurable:!0}),Object.defineProperty(t,"$objectDetectActive",{value:e.$container.querySelector(".jb-pro-object-active"),configurable:!0}),Object.defineProperty(t,"$occlusionDetect",{value:e.$container.querySelector(".jb-pro-occlusion"),configurable:!0}),Object.defineProperty(t,"$occlusionDetectActive",{value:e.$container.querySelector(".jb-pro-occlusion-active"),configurable:!0}),Object.defineProperty(t,"$contextmenus",{value:e.$container.querySelector(".jb-pro-contextmenus"),configurable:!0}),Object.defineProperty(t,"$speedText",{value:e.$container.querySelector(".jb-pro-speed-icon-text"),configurable:!0}),Object.defineProperty(t,"$speedMenu",{value:e.$container.querySelector(".jb-pro-speed-menu"),configurable:!0}),Object.defineProperty(t,"$speedMenuList",{value:e.$container.querySelector(".jb-pro-speed-menu-list"),configurable:!0}),Object.defineProperty(t,"$logSave",{value:e.$container.querySelector(".jb-pro-logSave"),configurable:!0}),Object.defineProperty(t,"$playbackProgress",{value:e.$container.querySelector(".jb-pro-control-progress-simple"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTip",{value:e.$container.querySelector(".jb-pro-progress-tip"),configurable:!0}),Object.defineProperty(t,"$playbackProgressHover",{value:e.$container.querySelector(".jb-pro-progress-hover"),configurable:!0}),Object.defineProperty(t,"$playbackProgressPlayed",{value:e.$container.querySelector(".jb-pro-progress-played"),configurable:!0}),Object.defineProperty(t,"$playbackProgressIndicator",{value:e.$container.querySelector(".jb-pro-progress-indicator"),configurable:!0}),Object.defineProperty(t,"$playbackProgressTime",{value:e.$container.querySelector(".jb-pro-playback-control-time"),configurable:!0}),Object.defineProperty(t,"$tipsMessage",{value:e.$container.querySelector(".jb-pro-tips-message"),configurable:!0}),Object.defineProperty(t,"$tipsMessageClose",{value:e.$container.querySelector(".jb-pro-tips-message-close"),configurable:!0}),Object.defineProperty(t,"$tipsMessageContent",{value:e.$container.querySelector(".jb-pro-tips-message-content"),configurable:!0})})(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&&t.$controls.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsInnerRect",{get:()=>t.$controlsInner&&t.$controlsInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsLeftRect",{get:()=>t.$controlsLeft&&t.$controlsLeft.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsRightRect",{get:()=>t.$controlsRight&&t.$controlsRight.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackTimeInner",{get:()=>t.$playbackTimeInner&&t.$playbackTimeInner.getBoundingClientRect()||{},configurable:!0}),Object.defineProperty(t,"controlsPlaybackBtnsRect",{get:()=>t.$controlsPlaybackBtns&&t.$controlsPlaybackBtns.getBoundingClientRect()||{width:0},configurable:!0}),Cc(e,this),((e,t)=>{const{events:{proxy:i},debug:s}=e,r=e._opt,o=r.operateBtns;function a(e){const{bottom:i,height:s}=t.$volumePanel.getBoundingClientRect(),{height:r}=t.$volumeHandle.getBoundingClientRect();return bo(i-e.y-r/2,0,s-r/2)/(s-r)}function n(i){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1,s&&!e.fullscreen&&e._opt.hasControl&&e._opt.controlAutoHide&&(t.isFocus?(vo(t.$controls,"display","block"),d()):(h(),vo(t.$controls,"display","none")))}if(Lo()?i(window,["click","contextmenu"],(e=>{e.stopPropagation(),n(e)})):i(window,"click",(e=>{e.stopPropagation(),n(e,!0)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),o.play&&(i(t.$pause,"click",(t=>{r.playType===w&&r.playbackConfig.uiUsePlaybackPause?e.playbackPause=!0:ua(o.pauseFn)?o.pauseFn():e.pauseForControl()})),i(t.$play,"click",(t=>{r.playType===w&&e.playbackPause?e.playbackPause=!1:ua(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()})).catch((e=>{}))}))),i(t.$playBig,"click",(i=>{r.playType===w&&e.playbackPause?e.playbackPause=!1:t.isInitPlayer?e.emit(At.clickInitPlayer):ua(o.playFn)?o.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))})),o.screenshot&&i(t.$screenshot,"click",(t=>{t.stopPropagation(),ua(o.screenshotFn)?o.screenshotFn():e.video.screenshot()})),o.audio&&(Lo()&&(i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jb-pro-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jb-pro-volume-panel-wrap-show")})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=a(t)})),i(t.$volumeHandle,"mousedown",(e=>{e.stopPropagation(),t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=a(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)}))),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),vo(t.$volumeOn,"display","none"),vo(t.$volumeOff,"display","block");const s=e.volume;e.volume=0,e._lastVolume=Lo()?s:1})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),vo(t.$volumeOn,"display","block"),vo(t.$volumeOff,"display","none"),e.volume=Lo()?e.lastVolume||.5:1}))),o.record&&(i(t.$record,"click",(t=>{t.stopPropagation(),ua(o.recordFn)?o.recordFn():e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),ua(o.recordStopFn)?o.recordStopFn():e.recording=!1}))),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),ua(o.recordStopFn)?o.recordStopFn():e.recording=!1})),o.fullscreen&&(i(t.$fullscreen,"click",(t=>{t.stopPropagation(),ua(o.fullscreenFn)?o.fullscreenFn():e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),ua(o.fullscreenExitFn)?o.fullscreenExitFn():e.fullscreen=!1}))),o.ptz){i(t.$ptz,"click",(e=>{e.stopPropagation(),vo(t.$ptzActive,"display","flex"),vo(t.$ptz,"display","none"),t.$ptzControl.classList.add("jb-pro-ptz-controls-show")})),i(t.$ptzActive,"click",(e=>{e.stopPropagation(),vo(t.$ptz,"display","flex"),vo(t.$ptzActive,"display","none"),t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")}));const c=Wa();if(t.$ptzArrows.forEach((s=>{if(r.ptzClickType===Y)i(s,"click",(i=>{i.stopPropagation();const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(At.ptz,Ba(s)),setTimeout((()=>{t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),ji.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(At.ptz,Gi)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let r=!1;i(s,c.down,(i=>{i.stopPropagation(),r=!0;const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(At.ptz,Ba(s))}));const o=()=>{r=!1,t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),ji.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(At.ptz,Gi)};i(s,c.up,(e=>{e.stopPropagation(),r&&o()})),i(window,c.up,(e=>{e.stopPropagation(),r&&o()}))}})),r.ptzZoomShow)if(r.ptzClickType===Y)i(t.$ptzExpand,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,zi),setTimeout((()=>{e.emit(At.ptz,Gi)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzNarrow,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,$i),setTimeout((()=>{e.emit(At.ptz,Gi)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let u=!1,p=!1;i(t.$ptzExpand,c.down,(t=>{t.stopPropagation(),u=!0,e.emit(At.ptz,zi)})),i(t.$ptzNarrow,c.down,(t=>{t.stopPropagation(),p=!0,e.emit(At.ptz,$i)}));const f=()=>{u=!1,p=!1,e.emit(At.ptz,Gi)};i(t.$ptzExpand,c.up,(e=>{e.stopPropagation(),u&&f()})),i(t.$ptzNarrow,c.up,(e=>{e.stopPropagation(),p&&f()})),i(window,c.up,(e=>{e.stopPropagation(),(u||p)&&f()}))}if(r.ptzApertureShow)if(r.ptzClickType===Y)i(t.$ptzApertureFar,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,Vi),setTimeout((()=>{e.emit(At.ptz,Wi)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzApertureNear,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,Hi),setTimeout((()=>{e.emit(At.ptz,Wi)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let m=!1,g=!1;i(t.$ptzApertureFar,c.down,(t=>{t.stopPropagation(),m=!0,e.emit(At.ptz,Vi)})),i(t.$ptzApertureNear,c.down,(t=>{t.stopPropagation(),g=!0,e.emit(At.ptz,Hi)}));const y=()=>{m=!1,g=!1,e.emit(At.ptz,Wi)};i(t.$ptzApertureFar,c.up,(e=>{e.stopPropagation(),m&&y()})),i(t.$ptzApertureNear,c.up,(e=>{e.stopPropagation(),g&&y()})),i(window,c.up,(e=>{e.stopPropagation(),(m||g)&&y()}))}if(r.ptzFocusShow)if(r.ptzClickType===Y)i(t.$ptzFocusFar,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,Ji),setTimeout((()=>{e.emit(At.ptz,Wi)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzFocusNear,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,qi),setTimeout((()=>{e.emit(At.ptz,Wi)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Q){let A=!1,b=!1;i(t.$ptzFocusFar,c.down,(t=>{t.stopPropagation(),A=!0,e.emit(At.ptz,Ji)})),i(t.$ptzFocusNear,c.down,(t=>{t.stopPropagation(),b=!0,e.emit(At.ptz,qi)}));const v=()=>{A=!1,b=!1,e.emit(At.ptz,Wi)};i(t.$ptzFocusFar,c.up,(e=>{e.stopPropagation(),A&&v()})),i(t.$ptzFocusNear,c.up,(e=>{e.stopPropagation(),b&&v()})),i(window,c.up,(e=>{e.stopPropagation(),(A||b)&&v()}))}if(r.ptzCruiseShow&&(i(t.$ptzCruisePlay,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,Ki)})),i(t.$ptzCruisePause,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,Yi)}))),r.ptzFogShow&&(i(t.$ptzFogOpen,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,Qi)})),i(t.$ptzFogClose,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,Xi)}))),r.ptzWiperShow&&(i(t.$ptzWiperOpen,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,Zi)})),i(t.$ptzWiperClose,"click",(t=>{t.stopPropagation(),e.emit(At.ptz,es)}))),r.ptzSupportDraggable){function _(){t.isPtzControlDroging&&(t.isPtzControlDroging=!1,t.$ptzControl.style.cursor="grab",t.tempPtzPosition={x:0,y:0})}t.isPtzControlDroging=!1,t.tempPtzPosition={x:0,y:0},i(t.$ptzControl,c.down,(e=>{e.stopPropagation(),t.isPtzControlDroging=!0,t.$ptzControl.style.cursor="grabbing";const{posX:i,posY:s}=pa(e);t.tempPtzPosition={x:i,y:s}})),i(t.$ptzControl,c.move,(e=>{if(t.isPtzControlDroging){e.stopPropagation();const{posX:i,posY:s}=pa(e),r=t.tempPtzPosition.x-i,o=t.tempPtzPosition.y-s;t.$ptzControl.style.left=t.$ptzControl.offsetLeft-r+"px",t.$ptzControl.style.top=t.$ptzControl.offsetTop-o+"px",t.tempPtzPosition={x:i,y:s}}})),i(t.$ptzControl,c.up,(e=>{e.stopPropagation(),_()})),i(window,c.up,(e=>{e.stopPropagation(),_()}))}}o.performance&&(i(t.$performance,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!0)})),i(t.$performanceActive,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!1)}))),o.logSave&&i(t.$logSave,"click",(t=>{t.stopPropagation(),e.downloadMemoryLog()})),o.aiFace&&(i(t.$faceDetect,"click",(t=>{t.stopPropagation(),e.faceDetect(!0)})),i(t.$faceDetectActive,"click",(t=>{t.stopPropagation(),e.faceDetect(!1)}))),o.aiObject&&(i(t.$objectDetect,"click",(t=>{t.stopPropagation(),e.objectDetect(!0)})),i(t.$objectDetectActive,"click",(t=>{t.stopPropagation(),e.objectDetect(!1)}))),o.aiOcclusion&&(i(t.$occlusionDetect,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!0)})),i(t.$occlusionDetectActive,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!1)})));let l=null;const d=()=>{h(),l=setTimeout((()=>{vo(t.$controls,"display","none")}),1e3*e._opt.controlAutoHideDelayTime)},h=()=>{l&&(clearTimeout(l),l=null)};if(e._opt.hasControl&&e._opt.controlAutoHide&&Lo()&&(i(e.$container,"mouseover",(()=>{e.fullscreen||(vo(t.$controls,"display","block"),d())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(vo(t.$controls,"display","block"),d()))})),i(e.$container,"mouseout",(()=>{h(),vo(t.$controls,"display","none")}))),e._opt.playType===w){let S=e._opt.playbackConfig.controlType;e._opt.playbackConfig.showRateBtn&&(i(t.$speedMenu,"mouseover",(()=>{t.$speedMenuList.classList.add("jb-pro-speed-menu-shown")})),i(t.$speedMenu,"mouseout",(()=>{t.$speedMenuList.classList.remove("jb-pro-speed-menu-shown")})),i(t.$speedMenuList,"click",(t=>{const i=ha(t);if(i.matches("div.jb-pro-speed-menu-item")){const t=i.dataset;e.emit(At.playbackPreRateChange,t.speed)}}))),S===X.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=ha(t);i.matches("div.jb-pro-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()}))):S===X.simple&&(t.isDroging=!1,i(t.$playbackProgress,"click",(i=>{if(i.target!==t.$playbackProgressIndicator){let s=0,r=0;if(e.isInWebFullscreen())s=i.touches[0].clientY/e.height,r=s*e.playback.totalDuration;else{const o=vc(t,e.playback.totalDuration,i);s=o.percentage,r=o.second}e.playback&&e.playback.seek({time:r})}})),i(t.$playbackProgress,"mousemove",(i=>{vo(t.$playbackProgressTip,"display","block");const{width:s,time:r}=vc(t,e.playback.totalDuration,i);t.$playbackProgressTip.innerHTML=r;const o=t.$playbackProgressTip.clientWidth;s<=o/2?vo(t.$playbackProgressTip,"left",0):s>t.$playbackProgress.clientWidth-o/2?vo(t.$playbackProgressTip,"left",t.$playbackProgress-o+"px"):vo(t.$playbackProgressTip,"left",s-o/2+"px")})),i(t.$playbackProgress,"mouseout",(()=>{vo(t.$playbackProgressTip,"display","none")})),i(t.$playbackProgressIndicator,"mousedown",(e=>{t.isDroging=!0})),i(t.$playbackProgress,"mousemove",(i=>{if(t.isDroging){const{second:s,percentage:r}=vc(t,e.playback.totalDuration,i);e.playback&&e.playback.seek({time:s})}})),i(t.$playbackProgress,"mouseup",(e=>{t.isDroging&&(t.isDroging=!1)})))}o.quality&&(i(t.$qualityMenu,"mouseover",(()=>{t.$qualityMenuList.classList.add("jb-pro-quality-menu-shown")})),i(t.$qualityMenu,"mouseout",(()=>{t.$qualityMenuList.classList.remove("jb-pro-quality-menu-shown")})),i(t.$qualityMenuList,"click",(t=>{const i=ha(t);if(i.matches("div.jb-pro-quality-menu-item")){const t=i.dataset;e.streamQuality=t.quality}}))),o.scale&&(i(t.$scaleMenu,"mouseover",(()=>{t.$scaleMenuList.classList.add("jb-pro-scale-menu-shown")})),i(t.$scaleMenu,"mouseout",(()=>{t.$scaleMenuList.classList.remove("jb-pro-scale-menu-shown")})),i(t.$scaleMenuList,"click",(t=>{const i=ha(t);if(i.matches("div.jb-pro-scale-menu-item")){const t=i.dataset;e.setScaleMode(t.scale)}}))),o.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})),o.close&&i(t.$close,"click",(t=>{t.stopPropagation(),e.doDestroy()})),i(t.$tipsMessageClose,"click",(e=>{e.stopPropagation(),t.$tipsMessageContent.innerHTML="",vo(t.$tipsMessage,"display","none")}))})(e,this),e._opt.hotKey&&Lo()&&((e,t)=>{const{events:{proxy:i}}=e;let s={};function r(e,t){s[e]?s[e].push(t):s[e]=[t]}t.keys=s,r(Ri,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(Ii,(()=>{e.volume+=.05})),r(Pi,(()=>{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=s[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.btnIndex=0,this.initLoadingBackground(),aa(e._opt.loadingIconStyle)&&this.initLoadingIconStyle(e._opt.loadingIconStyle),aa(e._opt.ptzPositionConfig)&&this.updatePtzPosition(e._opt.ptzPositionConfig),e._opt.initShowPlayBtn&&(this.isInitPlayer=!0,this.showPlayBtn()),this.updateControlSize(),this.kbpsShow="0 KB/s",this.player.debugLog("Control","init")}destroy(){if(this.$performancePanel){this.$performancePanel.innerHTML="";if(!Lc(this.$performancePanel)){const e=this.player.$container.querySelector(".jb-pro-performance-panel");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$performancePanel}if(this.$poster){if(!Lc(this.$poster)){const e=this.player.$container.querySelector(".jb-pro-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$poster}if(this.$loading){if(!Lc(this.$loading)){const e=this.player.$container.querySelector(".jb-pro-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loading}if(this.$loadingBg){if(!Lc(this.$loadingBg)){const e=this.player.$container.querySelector(".jb-pro-loading-bg");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$loadingBg}if(this.$controls){if(!Lc(this.$controls)){const e=this.player.$container.querySelector(".jb-pro-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$controls}if(this.$playBig){if(!Lc(this.$playBig)){const e=this.player.$container.querySelector(".jb-pro-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$playBig}if(this.$recording){if(!Lc(this.$recording)){const e=this.player.$container.querySelector(".jb-pro-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$recording}if(this.$ptzControl){if(!Lc(this.$ptzControl)){const e=this.player.$container.querySelector(".jb-pro-ptz-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$ptzControl}if(this.$zoomControls){if(!Lc(this.$zoomControls)){const e=this.player.$container.querySelector(".jb-pro-zoom-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$zoomControls}if(this.$contextmenus){this.$contextmenus.innerHTML="";if(!Lc(this.$contextmenus)){const e=this.player.$container.querySelector(".jb-pro-contextmenus");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$contextmenus}if(this.$tipsMessage){if(!Lc(this.$tipsMessage)){const e=this.player.$container.querySelector(".jb-pro-tips-message");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$tipsMessage}if(this.$extendDom){if(!Lc(this.$extendDom)){const e=this.player.$container.querySelector(".jb-pro-extend-dom");e&&this.player.$container&&this.player.$container.removeChild(e)}delete this.$extendDom}try{delete this.$tipsMessageContent,delete this.$tipsMessageClose,delete this.$playbackProgressTime,delete this.$playbackProgressIndicator,delete this.$playbackProgressPlayed,delete this.$playbackProgressHover,delete this.$$playbackProgressTip,delete this.$playbackProgress,delete this.$logSave,delete this.$speedMenuList,delete this.$speedMenu,delete this.$speedText,delete this.$contextmenus,delete this.$occlusionDetectActive,delete this.$occlusionDetect,delete this.$objectDetectActive,delete this.$objectDetect,delete this.$faceDetectActive,delete this.$faceDetect,delete this.$performanceActive,delete this.$performance,delete this.$performancePanel,delete this.$zoomControls,delete this.$close,delete this.$zoomStop2,delete this.$zoomExpand,delete this.$zoomNarrow,delete this.$zoomStop,delete this.$zoom,delete this.$scaleMenuList,delete this.$scaleMenu,delete this.$scaleText,delete this.$qualityMenuList,delete this.$qualityMenu,delete this.$qualityText,delete this.$ptzWiperClose,delete this.$ptzWiperOpen,delete this.$ptzFogClose,delete this.$ptzFogOpen,delete this.$ptzCruisePause,delete this.$ptzCruisePlay,delete this.$ptzFocusNear,delete this.$ptzFocusFar,delete this.$ptzApertureNear,delete this.$ptzApertureFar,delete this.$ptzNarrow,delete this.$ptzExpand,delete this.$ptzArrows,delete this.$ptzControlCircular,delete this.$ptzBgActive,delete this.$ptzControl,delete this.$ptzActive,delete this.$ptz,delete this.$playbackExpand,delete this.$playbackNarrow,delete this.$controlsPlaybackBtns,delete this.$playbackCurrentTimeText,delete this.$playbackCurrentTime,delete this.$playbackTimeListSecond,delete this.$playbackTimeListOne,delete this.$playbackTimeList,delete this.$playbackTimeScroll,delete this.$playbackTimeInner,delete this.$playbackTime,delete this.$controlHtml,delete this.$speed,delete this.$screenshot,delete this.$recordStop,delete this.$record,delete this.$fullscreenExit,delete this.$fullscreen,delete this.$volumeOff,delete this.$volumeOn,delete this.$volumeHandle,delete this.$volumePanel,delete this.$volumePanelText,delete this.$volumePanelWrap,delete this.$volume,delete this.$controlsRight,delete this.$controlsLeft,delete this.$controlsInner,delete this.$controls,delete this.$pause,delete this.$recordingStop,delete this.$recordingTime,delete this.$recording,delete this.$playBig,delete this.$play,delete this.$loadingText,delete this.$loading,delete this.$loadingBgImage,delete this.$loadingBg,delete this.$poster,delete this.$extendDom,delete this.controlsRect,delete this.controlsInnerRect,delete this.controlsLeftRect,delete this.controlsRightRect,delete this.controlsPlaybackTimeInner,delete this.controlsPlaybackBtnsRect}catch(e){}this.keys=null,this.btnIndex=0,this.extendBtnList=[],this.kbpsShow="0 KB/s",this.player.$container&&(this.player.$container.classList.remove("jb-pro-controls-show-auto-hide"),this.player.$container.classList.remove("jb-pro-controls-show")),this.player.debugLog("Control","destroy")}getBtnIndex(){return this.btnIndex++}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,s=t/i,r=e.video.$videoElement.width/e.video.$videoElement.height;if(s>r){const s=(t-i*r)/2;e.$container.style.padding=`0 ${s}px`}else{const s=(i-t/r)/2;e.$container.style.padding=`${s}px 0`}}initLoadingBackground(){const e=this.player;e._opt.loadingBackground&&e._opt.loadingBackgroundWidth&&e._opt.loadingBackgroundHeight&&(e.debugLog("Control","initLoadingBackground()"),"default"===this.player._opt.aspectRatio||ko()?e.getRenderType()===H?this._initLoadingBackgroundForCanvas():e.getRenderType()===J&&this._initLoadingBackgroundForVideo():this._initLoadingBackgroundForRatio(),Tc(this.$loadingBg,"display","block"),e._opt.loadingBackground="")}resizeLoadingBackground(){this.$loadingBgImage.src&&this.$loadingBgImage.width>0&&this.$loadingBgImage.height>0&&"none"!==_o(this.$loadingBg,"display",!1)&&("default"===this.player._opt.aspectRatio||ko()?this.player.getRenderType()===H?this._initLoadingBackgroundForCanvas():this.player.getRenderType()===J&&this._initLoadingBackgroundForVideo():this._initLoadingBackgroundForRatio())}initLoadingIconStyle(e){const t=this.player.$container.querySelector(".jb-pro-icon-loading");t&&(e.width&&Tc(t,"width",`${e.width}px`),e.height&&Tc(t,"height",`${e.height}px`),e.background&&Tc(t,"backgroundImage",`url("${e.background}")`),!1===e.hasAnimation&&(Tc(t,"animationName","none"),Tc(t,"animationDuration",0),Tc(t,"animationTimingFunction","ease"),Tc(t,"animationIterationCount",1)))}_initLoadingBackgroundForRatio(){const e=this.player._opt.aspectRatio.split(":").map(Number),t=this.player.getShowVideoRect(),i=this.player.getControlHeight(),s=t.width,r=t.height,o=this.player._opt.loadingBackgroundWidth,a=this.player._opt.loadingBackgroundHeight,n=o/a,l=e[0]/e[1];if(this.player._opt.loadingBackground&&(this.$loadingBgImage.src=this.player._opt.loadingBackground),n>l){const e=l*a/o;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${i}px)`,this.$loadingBgImage.style.padding=`0 ${(s-s*e)/2}px`}else{const e=o/l/a;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${i}px)`,this.$loadingBgImage.style.padding=(r-r*e)/2+"px 0"}}_initLoadingBackgroundForCanvas(){const e=this.player,t=e._opt,i=e.getShowVideoRect(),s=i.height,r=i.width,o={width:this.player._opt.loadingBackgroundWidth,height:this.player._opt.loadingBackgroundHeight};let a=o.width,n=o.height;const l=t.rotate;let d=(r-a)/2,h=(s-n)/2;270!==l&&90!==l||(a=o.height,n=o.width);const c=r/a,u=s/n;let p=c>u?u:c;Da(t.isResize)&&c!==u&&(p=c+","+u),t.isFullResize&&(p=c>u?c:u);let f="scale("+p+")";"none"===t.mirrorRotate&&l&&(f+=" rotate("+l+"deg)"),"level"===t.mirrorRotate?f+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(f+=" rotateX(180deg)"),this.$loadingBgImage.width=o.width,this.$loadingBgImage.height=o.height,e._opt.loadingBackground&&(this.$loadingBgImage.src=e._opt.loadingBackground),this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.transform=f,this.$loadingBgImage.style.left=d+"px",this.$loadingBgImage.style.top=h+"px"}_initLoadingBackgroundForVideo(){const e=this.player,t=e._opt,i=e.getShowVideoRect(),s=i.width,r=i.height;let o=i.width,a=i.height;const n=t.rotate;270!==n&&90!==n||(o=r,a=s),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,e._opt.loadingBackground&&(this.$loadingBgImage.src=e._opt.loadingBackground);let l=(s-o)/2,d=(r-a)/2,h="contain";t.isResize||(h="fill"),t.isFullResize&&(h="none");let c="";"none"===t.mirrorRotate&&n&&(c+=" rotate("+n+"deg)"),"level"===t.mirrorRotate?c+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(c+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=h),this.$loadingBgImage.style.transform=c,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px"}_validateExtendBtn(e){let t=!0;if(e.name||(this.player.debugWarn("Control","extend button name is required"),t=!1),t){-1!==this.extendBtnList.findIndex((t=>t.name===e.name))&&(this.player.debugWarn("Control",`extend button name: ${e.name} is already exist`),t=!1)}return t&&(e.icon||(this.player.debugWarn("Control","extend button icon is required"),t=!1)),t}addExtendBtn(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Ta(Bs);if(e=Object.assign({},t,e),!this._validateExtendBtn(e))return;const i=e.name||"",s=this.$controlsRight,r=e.createdMoment||Nr,o=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(s.children)[e.index];n?n.insertAdjacentHTML("beforebegin",a):Ec(s,a);const l=s.querySelector(`.jb-pro-controls-item-wrap-${i}`),d=e.icon?s.querySelector(`.jb-pro-icon-extend-${i}`):null,h=e.icon?s.querySelector(`.jb-pro-control-extend-${i}`):null,c=e.activeIcon?s.querySelector(`.jb-pro-icon-extend-${i}-active`):null,u=e.activeIcon?s.querySelector(`.jb-pro-control-extend-${i}-active`):null,{events:{proxy:p},debug:f}=this.player;e.icon&&(Tc(d,"background",`url(${e.icon}) no-repeat center`),Tc(d,"background-size","100% 100%"),Tc(h,"display",r===Ur?"flex":"none"),e.iconHover&&(p(d,"mouseover",(()=>{Tc(d,"background",`url(${e.iconHover}) no-repeat center`),Tc(d,"background-size","100% 100%")})),p(d,"mouseout",(()=>{Tc(d,"background",`url(${e.icon}) no-repeat center`),Tc(d,"background-size","100% 100%")})))),e.activeIcon&&(Tc(c,"background",`url(${e.activeIcon}) no-repeat center`),Tc(c,"background-size","100% 100%"),Tc(u,"display","none"),e.activeIconHover&&(p(c,"mouseover",(()=>{Tc(c,"background",`url(${e.activeIconHover}) no-repeat center`),Tc(c,"background-size","100% 100%")})),p(c,"mouseout",(()=>{Tc(c,"background",`url(${e.activeIcon}) no-repeat center`),Tc(c,"background-size","100% 100%")})))),e.click&&d&&p(d,"click",(t=>{t.preventDefault(),o&&(Tc(h,"display","none"),Tc(u,"display","flex")),this.player.isInMulti()?e.click.call(this.player,t,this.player._opt.multiIndex):e.click.call(this.player,t)})),e.activeClick&&c&&p(c,"click",(t=>{t.preventDefault(),Tc(h,"display","flex"),Tc(u,"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,createdMoment:r,$iconContainer:l,$iconWrap:h,$activeIconWrap:u})}toggleExtendBtn(e,t){const i=this.extendBtnList.find((t=>t.name===e));i&&i.$activeIconWrap&&i.$iconWrap&&(Ho(t)||(t="none"===_o(i.$activeIconWrap,"display",!1)),t?(Tc(i.$iconWrap,"display","none"),Tc(i.$activeIconWrap,"display","flex")):(Tc(i.$iconWrap,"display","flex"),Tc(i.$activeIconWrap,"display","none")))}getExtendBtnActive(e){const t=this.extendBtnList.find((t=>t.name===e));let i=!1;return t&&t.$activeIconWrap&&(i="none"!==_o(t.$activeIconWrap,"display",!1)),i}addExtendDom(e){if(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(".jb-pro-extend-dom"),configurable:!0}),e.showBeforePlay&&Tc(this.$extendDom,"display","block")}}toggleExtendDom(e){this.$extendDom&&(Ho(e)||(e="none"===_o(this.$extendDom,"display",!1)),Tc(this.$extendDom,"display",e?"block":"none"))}updateExtendDom(e){this.$extendDom&&(this.$extendDom.innerHTML=e)}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,s=this.$tipsMessageContent;if(i){const r=`\n
    ${e}
    \n ${t?`
    Error Type:${t}
    `:""}\n `;s.innerHTML=r,Tc(i,"display","block")}}hideTipsMessage(){const e=this.$tipsMessage,t=this.$tipsMessageContent;e&&(t.innerHTML="",Tc(e,"display","none"))}updatePtzPosition(e){const t=this.$ptzControl;if(aa(e)&&t){let i="auto";e.left&&(i=Number(e.left)===e.left?e.left+"px":e.left),Tc(t,"left",i);let s="auto";e.top&&(s=Number(e.top)===e.top?e.top+"px":e.top),Tc(t,"top",s);let r="auto";e.bottom&&(r=Number(e.bottom)===e.bottom?e.bottom+"px":e.bottom),Tc(t,"bottom",r);let o="auto";e.right&&(o=Number(e.right)===e.right?e.right+"px":e.right),Tc(t,"right",o)}}showPlayBtn(){Tc(this.$playBig,"display","block")}toggleBar(e){this.$controls&&(Ho(e)||(e="none"===_o(this.$controls,"display",!1)),Tc(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==_o(this.$controls,"display",!1)),e}toggleControlHtml(e){this.$controlHtml&&(Ho(e)||(e="none"===_o(this.$controlHtml,"display",!1)),Tc(this.$controlHtml,"display",e?"block":"none"))}getControlHtmlIsShow(){let e=!1;return this.$controlHtml&&(e="none"!==_o(this.$controlHtml,"display",!1)),e}getExtendDomIsShow(){let e=!1;return this.$extendDom&&(e="none"!==_o(this.$extendDom,"display",!1)),e}getExtendDom(){return this.$extendDom?this.$extendDom:null}getControlHtml(){return this.$controlHtml?this.$controlHtml:null}updateControlSize(){if(this.$controls){const e=this.player._opt.controlSize,t="jb-pro-controls-small";e===ee?Da(Sc(this.$controls,t))&&_c(this.$controls,t):e===Z&&Sc(this.$controls,t)&&wc(this.$controls,t)}}}xc(".jb-pro-container{position:relative;width:100%;height:100%;overflow:hidden}.jb-pro-container.jb-pro-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}.jb-pro-container .jb-pro-loading-bg-for-ios{position:absolute;z-index:100;left:0;top:0;right:0;bottom:0;height:100%;width:100%;opacity:0;visibility:hidden;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jb-pro-container .jb-pro-loading-bg-for-ios.show{opacity:1;visibility:visible}");var Rc=e=>{const{_opt:t,events:{proxy:i}}=e;if(t.supportDblclickFullscreen&&i(e.$container,"dblclick",(t=>{const i=ha(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),i(document,"visibilitychange",(()=>{e.visibility="visible"===document.visibilityState,e.debugLog("visibilitychange",document.visibilityState),t.hiddenAutoPause&&(e.debugLog("visibilitychange","hiddenAutoPause is true ",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),Lo()&&i(document,["click","contextmenu"],(t=>{kc(t,e.$container)?(xa(e._opt.disableContextmenu)&&"contextmenu"===t.type&&t.preventDefault(),e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit(At.focus)):(e.isInput=!1,e.isFocus=!1,e.emit(At.blur))})),t.isCheckInView){const t=Uo((()=>{e.emit(At.inView,function(e){const t=e.getBoundingClientRect(),i=window.innerHeight||document.documentElement.clientHeight,s=window.innerWidth||document.documentElement.clientWidth,r=t.top<=i&&t.top+t.height>=0,o=t.left<=s&&t.left+t.width>=0;return r&&o}(e.$container))}),200);i(window,"scroll",(()=>t()))}if(t.orientationChangeResize){const t=Uo((()=>{e.emit(At.resize)}),500);i(window,"orientationchange",(()=>{t()})),screen&&screen.orientation&&screen.orientation.onchange&&i(screen.orientation,"change",(()=>{t()}))}};class Ic{static init(){Ic.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 Ic.types)Ic.types.hasOwnProperty(e)&&(Ic.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Ic.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,s=Array.prototype.slice.call(arguments,1),r=s.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 o=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 Ic.box(Ic.types.trak,Ic.tkhd(e),Ic.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return Ic.box(Ic.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,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return Ic.box(Ic.types.mdia,Ic.mdhd(e),Ic.hdlr(e),Ic.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return Ic.box(Ic.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?Ic.constants.HDLR_AUDIO:Ic.constants.HDLR_VIDEO,Ic.box(Ic.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Ic.box(Ic.types.smhd,Ic.constants.SMHD):Ic.box(Ic.types.vmhd,Ic.constants.VMHD),Ic.box(Ic.types.minf,t,Ic.dinf(),Ic.stbl(e))}static dinf(){return Ic.box(Ic.types.dinf,Ic.box(Ic.types.dref,Ic.constants.DREF))}static stbl(e){return Ic.box(Ic.types.stbl,Ic.stsd(e),Ic.box(Ic.types.stts,Ic.constants.STTS),Ic.box(Ic.types.stsc,Ic.constants.STSC),Ic.box(Ic.types.stsz,Ic.constants.STSZ),Ic.box(Ic.types.stco,Ic.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Ic.box(Ic.types.stsd,Ic.constants.STSD_PREFIX,Ic.mp3(e)):Ic.box(Ic.types.stsd,Ic.constants.STSD_PREFIX,Ic.mp4a(e)):"avc"===e.videoType?Ic.box(Ic.types.stsd,Ic.constants.STSD_PREFIX,Ic.avc1(e)):Ic.box(Ic.types.stsd,Ic.constants.STSD_PREFIX,Ic.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,s=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 Ic.box(Ic.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,s=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 Ic.box(Ic.types.mp4a,s,Ic.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=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 Ic.box(Ic.types.esds,s)}static avc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 Ic.box(Ic.types.avc1,r,Ic.box(Ic.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let r=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,s>>>8&255,255&s,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 Ic.box(Ic.types.hvc1,r,Ic.box(Ic.types.hvcC,t))}static mvex(e){return Ic.box(Ic.types.mvex,Ic.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 Ic.box(Ic.types.trex,i)}static moof(e,t){return Ic.box(Ic.types.moof,Ic.mfhd(e.sequenceNumber),Ic.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 Ic.box(Ic.types.mfhd,t)}static traf(e,t){let i=e.id,s=Ic.box(Ic.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=Ic.box(Ic.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=Ic.sdtp(e),a=Ic.trun(e,o.byteLength+16+16+8+16+8+8);return Ic.box(Ic.types.traf,s,r,a,o)}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,Ic.box(Ic.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 s=e.duration,r=e.size,o=e.flags,a=e.cts;return i.set([s>>>24&255,s>>>16&255,s>>>8&255,255&s,r>>>24&255,r>>>16&255,r>>>8&255,255&r,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),Ic.box(Ic.types.trun,i)}static mdat(e){return Ic.box(Ic.types.mdat,e)}}Ic.init();class Pc extends o{constructor(e){super(),this.TAG_NAME="MediaSource",this.player=e,this._resetInIt(),this._useManagedMediaSource="ManagedMediaSource"in jr&&!("MediaSource"in jr),this.mediaSource=this._useManagedMediaSource?new jr.ManagedMediaSource:new jr.MediaSource,this.isDecodeFirstIIframe=!!Da(e._opt.checkFirstIFrame),this.mediaSourceObjectURL=null,this._useManagedMediaSource||(this.mediaSourceObjectURL=jr.URL.createObjectURL(this.mediaSource)),this.isSupportVideoFrameCallback=Na(),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.hasPendingEos=!1,this.player.isPlayback()&&this.player.on(At.playbackPause,(t=>{Da(t)?(e._opt.isPlaybackPauseClearCache&&(xa(e._opt.checkFirstIFrame)&&(this.player.debugLog(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._useManagedMediaSource?this.player.debugLog(this.TAG_NAME,"init and using ManagedMediaSource"):this.player.debugLog(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.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,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.mediaSource=null,this.off(),this.player.debugLog(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.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===xi}get isStateClosed(){return this.state===Di}get isStateEnded(){return this.state===Ci}get duration(){return this.mediaSource&&this.mediaSource.duration||-1}set duration(e){this.mediaSource.duration=e}_bindMediaSourceEvents(){const{events:{proxy:e}}=this.player,t=e(this.mediaSource,ss,(()=>{this.player.debugLog(this.TAG_NAME,"sourceOpen"),this._onMediaSourceSourceOpen(),this.player.emit(At.mseSourceOpen)})),i=e(this.mediaSource,is,(()=>{this.player.debugLog(this.TAG_NAME,"sourceClose"),this.player.emit(At.mseSourceClose)})),s=e(this.mediaSource,rs,(()=>{this.player.debugLog(this.TAG_NAME,"sourceended"),this.player.emit(At.mseSourceended)}));this.eventListenList.push(t,i,s);const r=e(this.$videoElement,hs,(e=>{if(Da(this.isSupportVideoFrameCallback))if(this.player.checkIsInRender())this.player.handleRender();else{const t=parseInt(e.timeStamp,10);this.player.debugLog(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}`)}}));if(this.eventListenList.push(r),this._useManagedMediaSource){const t=e(this.mediaSource,os,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource startstreaming"),this.player.emit(At.mseSourceStartStreaming)})),i=e(this.mediaSource,as,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource endstreaming"),this.player.emit(At.mseSourceEndStreaming)})),s=e(this.mediaSource,ns,(()=>{this.player.debugLog(this.TAG_NAME,"ManagedMediaSource qualitychange")}));this.eventListenList.push(t,i,s)}}_onMediaSourceSourceOpen(){this.sourceBuffer||(this.player.debugLog("MediaSource","onMediaSourceSourceOpen() sourceBuffer is null and next init"),this._initSourceBuffer()),this.audioSourceBuffer||(this.player.debugLog("MediaSource","onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),this._initAudioSourceBuffer()),this._hasPendingSegments()&&this._doAppendSegments()}initVideoEvents(){const{proxy:e}=this.player.events;this.player.on(At.visibilityChange,(e=>{e&&setTimeout((()=>{if(this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getMseBufferMaxDelayTime()&&(this.player.debugLog(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)}));const t=e(this.$videoElement,ls,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.emit(At.removeLoadingBgImage),Na()?this.supportVideoFrameCallbackHandle||(this.player.debugLog(this.TAG_NAME,"video canplay and requestVideoFrameCallback and use videoFrameCallback"),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.isUseHls265()&&(this.player.debugLog(this.TAG_NAME,"video canplay and use canvas render and fps is 25"),this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40)),this.player.debugLog(this.TAG_NAME,"video play")})).catch((e=>{this.player.debugError(this.TAG_NAME,"video play error ",e),this.player.emitError(_t.mediaSourceUseCanvasRenderPlayFailed,`code is ${e.code} and message is ${e.message}`)}))})),i=e(this.$videoElement,ds,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,us,(()=>{this.player.debugLog(this.TAG_NAME,"video loadedmetadata")})),r=e(this.$videoElement,hs,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),o=e(this.$videoElement,cs,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&this.player.debugWarn(this.TAG_NAME,"ratechange and video is paused")}));this.eventListenList.push(t,i,r,o,s)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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,s){const r=this.player;if(r)if(this.player.isDestroyedOrClosed())this.player.debugWarn(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===Dt){i=Yn(e.slice(5))}else t===Rt&&(i=ll(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debugWarn(this.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(_t.mseWidthOrHeightChange,`width ${s.width}->${i.codecWidth}, height ${s.height}->${i.codecHeight}`))}if(this.isWidthOrHeightChanged)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(Ca(e))return void this.player.debugLog(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debugWarn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let r=t;if(this.player.isPlayer()){if(null===this.firstRenderTime&&(this.firstRenderTime=t,this.player.debugLog(this.TAG_NAME,`firstRenderTime is ${this.firstRenderTime}`)),r=t-this.firstRenderTime,r<0&&(this.player.debugWarn(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}`),r=null===this.prevDts?0:this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t)))return this.player.debugWarn(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(_t.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`);if(null!==this.prevDts&&r<=this.prevDts){if(this.player.debugWarn(this.TAG_NAME,`\n decodeVideo dts is less than(or equal) prev dts ,\n dts is ${r} 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}`),r===this.prevDts&&this.prevPayloadBufferSize===e.byteLength)return void this.player.debugWarn(this.TAG_NAME,"decodeVideo dts is equal to prev dts and payload size is equal to prev payload size so drop this frame");if(r=this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t))return this.player.debugWarn(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(_t.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`)}}this.player.isPlayer()?this._decodeVideo(e,r,i,s,t):this.player.isPlayback()&&(Da(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this._decodeVideo(e,r,i,s,t)):this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this._decodeVideo(e,r,i,s,t)),this.prevDts=r,this.prevPayloadBufferSize=e.byteLength,this.prevTs=t}else this.player.debugLog(this.TAG_NAME,"decodeVideo first frame is not iFrame");else if(i&&e[1]===xs){const s=15&e[0];if(r.video.updateVideoInfo({encTypeCode:s}),s===Rt&&Da(jo()))return void this.player.emitError(_t.mediaSourceH265NotSupport);r._times.decodeStart||(r._times.decodeStart=Ao()),this.hasInit=this._decodeConfigurationRecord(e,t,i,s)}else this.player.debugWarn(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.debugWarn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(Da(this.hasAudioInit))this.hasAudioInit=this._decodeAudioConfigurationRecord(e,t);else{let i=t;if(Yr(e))return void this.player.debugLog(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.player.isPlayer()){if(null===this.firstAudioTime&&(this.firstAudioTime=t,this.player.debugLog(this.TAG_NAME,`firstAudioTime is ${this.firstAudioTime}`)),i=t-this.firstAudioTime,i<0&&(this.player.debugWarn(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.debugWarn(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(_t.mediaSourceTsIsMaxDiff,`decodeAudio is max diff, prevTs is ${this.prevAudioDts} and ts is ${t}`);null!==this.prevAudioTs&&i<=this.prevAudioDts&&(this.player.debugWarn(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()&&(Da(this.player.playbackPause)||this.player.playback.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()))&&this._decodeAudio(e,i,t),this.prevAudioTs=t,this.prevAudioDts=i}else this.player.debugLog(this.TAG_NAME,"decodeAudio first frame is not iFrame")}}_checkTsIsMaxDiff(e){return this.prevTs>0&&ete}_checkAudioTsIsMaxDiff(e){return this.prevAudioTs>0&&ete}_decodeConfigurationRecord(e,t,i,s){let r=e.slice(5),o={};if(s===Dt?o=Yn(r):s===Rt&&(o=dl(r)),oa(o)||0===o.codecWidth&&0===o.codecHeight){this.player.debugWarn(this.TAG_NAME,"_decodeConfigurationRecord",o);let e="";return e=oa(o)?"config is empty object":`config is not empty object and codecWidth is ${o.codecWidth} and codecHeight is ${o.codecHeight}`,this.player.emitError(_t.mediaSourceDecoderConfigurationError,e),!1}this.isInitInfo||(this.player.debugLog(this.TAG_NAME,`updateVideoInfo: ${o.codecWidth},${o.codecHeight}`),this.player.video.updateVideoInfo({width:o.codecWidth,height:o.codecHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,s);const a={id:gr,type:"video",timescale:1e3,duration:0,avcc:r,codecWidth:o.codecWidth,codecHeight:o.codecHeight,videoType:o.videoType},n=Ic.generateInitSegment(a);this.isAvc=s===Dt;let l=o.codec;return this.videoMimeType=l?`video/mp4; codecs="${o.codec}"`:this.isAvc?wi:Si,this._initSourceBuffer(),this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack={},!0}_decodeAudioConfigurationRecord(e,t){const i=e[0]>>4,s=e[0]>>1&1,r=i===Ft,o=i===Bt;let a="";if(a=o?s?16:8:0===s?8:16,Da(o||r))return this.player.debugWarn(this.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),this.player.emit(_t.mediaSourceAudioG711NotSupport),!1;const n={id:yr,type:"audio",timescale:1e3};let l={};if(Yr(e)){if(l=to(e.slice(2)),!l)return!1;n.audioSampleRate=l.sampleRate,n.channelCount=l.channelCount,n.config=l.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale}else{if(!r)return!1;if(l=dc(e),!l)return!1;n.audioSampleRate=l.samplingRate,n.channelCount=l.channelCount,n.refSampleDuration=1152/n.audioSampleRate*n.timescale}n.codec=l.codec,n.duration=0;let d="mp4",h=l.codec,c=null;r&&Da(xo())?(d="mpeg",h="",c=new Uint8Array):c=Ic.generateInitSegment(n);let u=`${n.type}/${d}`;return h&&h.length>0&&(u+=`;codecs=${h}`),Da(this.isAudioInitInfo)&&(this.player.audio.updateAudioInfo({encTypeCode:i,channels:n.channelCount,sampleRate:n.audioSampleRate,depth:a}),this.isAudioInitInfo=!0),this.audioMimeType=u,this.isAAC=o,this._initAudioSourceBuffer(),this.appendAudioBuffer(c.buffer),!0}_initSourceBuffer(){const{events:{proxy:e}}=this.player;if(null===this.sourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.videoMimeType){try{this.sourceBuffer=this.mediaSource.addSourceBuffer(this.videoMimeType),this.player.debugLog(this.TAG_NAME,"_initSourceBuffer() this.mediaSource.addSourceBuffer()",this.videoMimeType)}catch(e){return this.player.debugError(this.TAG_NAME,"appendBuffer() this.mediaSource.addSourceBuffer()",e.code,e),this.player.emitError(_t.mseAddSourceBufferError,`code is ${e.code} and message is ${e.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.sourceBuffer){const t=e(this.sourceBuffer,"error",(e=>{this.mediaSourceBufferError=!0,this.player.debugError(this.TAG_NAME,"mseSourceBufferError this.sourceBuffer",e),this.player.emitError(_t.mseSourceBufferError,e.toString())})),i=e(this.sourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debugLog(this.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(t,i)}}else this.player.debugLog(this.TAG_NAME,`_initSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.isAvc === null is ${null===this.isAvc}`)}_initAudioSourceBuffer(){const{events:{proxy:e}}=this.player;if(null===this.audioSourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.audioMimeType){try{this.audioSourceBuffer=this.mediaSource.addSourceBuffer(this.audioMimeType),this._clearAudioSourceBufferCheckTimeout(),this.player.debugLog(this.TAG_NAME,"_initAudioSourceBuffer() this.mediaSource.addSourceBuffer()",this.audioMimeType)}catch(e){return this.player.debugError(this.TAG_NAME,"appendAudioBuffer() this.mediaSource.addSourceBuffer()",e.code,e),this.player.emitError(_t.mseAddSourceBufferError,`code is ${e.code} and message is ${e.message}`),void(this.mediaSourceAddSourceBufferError=!0)}if(this.audioSourceBuffer){const t=e(this.audioSourceBuffer,"error",(e=>{this.mediaSourceBufferError=!0,this.player.debugError(this.TAG_NAME,"mseSourceBufferError this.audioSourceBuffer",e),this.player.emitError(_t.mseSourceBufferError,e.toString())})),i=e(this.audioSourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debugLog(this.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(t,i),null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(_t.mediaSourceAudioNoDataTimeout)}),1e3))}}else this.player.debugLog(this.TAG_NAME,`_initAudioSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.audioMimeType is ${this.audioMimeType}`)}_decodeVideo(e,t,i,s,r){const o=this.player;let a=e.slice(5),n=a.byteLength;if(0===n)return void o.debugWarn(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>1e3&&!d&&this.player.isPlayer()&&o.debugLog(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(Ic.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts,this.cacheTrack.duration>1e3&&this.player.debugWarn(this.TAG_NAME,`cacheTrack duration is ${this.cacheTrack.duration} ms`);let s=Ic.moof(this.cacheTrack,this.cacheTrack.dts);this.cacheTrack={};let a=new Uint8Array(s.byteLength+i.byteLength);a.set(s,0),a.set(i,s.byteLength),this.appendBuffer(a.buffer),o.emit(At.timeUpdate,r),o.isPlayer()?o.isUseHls265()?o.updateStats({dfps:!0,mseTs:t}):o.updateStats({fps:!0,dfps:!0,ts:r,mseTs:t}):o.isPlayback()&&o.playback.updateStats({ts:r}),o._times.videoStart||(o._times.videoStart=Ao(),o.handlePlayToRenderTimes())}else o.debugLog(this.TAG_NAME,`cacheTrack = {} now dts is ${t}, and ts is ${r} cacheTrack dts is ${this.cacheTrack&&this.cacheTrack.dts}`),this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=gr,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=n,this.cacheTrack.dts=t,this.cacheTrack.cts=s,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=a,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},o._opt.mseUseCanvasRender&&Da(this.isSupportVideoFrameCallback)&&Da(o.isUseHls265())&&o.video.render({$video:c,ts:t}),this.prevTimestamp=(new Date).getTime()}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_decodeAudio(e,t,i){const s=this.player;let r=this.isAAC?e.slice(2):e.slice(1),o=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(Ic.types.mdat,4),i.set(this.cacheAudioTrack.data,8),this.cacheAudioTrack.duration=t-this.cacheAudioTrack.dts,this.cacheAudioTrack.duration>1e3&&this.player.debugWarn(this.TAG_NAME,`cacheTrack duration is ${this.cacheTrack.duration} ms`);let s=Ic.moof(this.cacheAudioTrack,this.cacheAudioTrack.dts);this.cacheAudioTrack={};let r=new Uint8Array(s.byteLength+i.byteLength);r.set(s,0),r.set(i,s.byteLength),this.appendAudioBuffer(r.buffer)}else s.debugLog(this.TAG_NAME,`cacheAudioTrack = {} now dts is ${t} cacheAudioTrack dts is ${this.cacheAudioTrack&&this.cacheAudioTrack.dts}`),this.cacheAudioTrack={};this.cacheAudioTrack||(this.cacheAudioTrack={}),this.cacheAudioTrack.id=yr,this.cacheAudioTrack.sequenceNumber=++this.audioSequenceNumber,this.cacheAudioTrack.size=o,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){this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"appendBuffer() player is destroyed"):(this.player,this.mediaSourceAddSourceBufferError?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?this.player.debugWarn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?this.player.debugWarn(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._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),Da(this.getSourceBufferUpdating())&&this.isStateOpen&&Da(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(_t.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(_t.mseSourceBufferError,"mediaSource is end"))))}appendAudioBuffer(e){this.player.isDestroyedOrClosed()?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() player is destroyed"):(this.player,this.mediaSourceAddSourceBufferError?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?this.player.debugWarn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?this.player.debugWarn(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._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),Da(this.getAudioSourceBufferUpdating())&&this.isStateOpen&&Da(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(_t.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded&&(this.mediaSourceBufferError=!0,this.player.emitError(_t.mseSourceBufferError,"mediaSource is end"))))}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}getAudioSourceBufferUpdating(){return this.audioSourceBuffer&&this.audioSourceBuffer.updating}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}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.debugWarn(this.TAG_NAME,`checkMSESourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,e.paused&&(this.player.debugWarn(this.TAG_NAME,"checkSourceBufferDelay and video is paused and sent isMSECurrentMoreThanBufferedPause true"),this.player.isMSECurrentMoreThanBufferedPause=!0),t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}checkSourceBufferEndLessThanCurrentTime(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.buffered.end(e.buffered.length-1)-e.currentTime),t}getDecodeDiffTimes(){return this.decodeDiffTimestamp}removeBuffer(e,t){const i=ca();if(this.player.debugLog(this.TAG_NAME,`removeBuffer() start is ${e} and end is ${t} and _isMacOsFirefox is ${i}`),this.isStateOpen&&Da(i)){if(Da(this.getSourceBufferUpdating()))try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debugWarn(this.TAG_NAME,"removeBuffer() sourceBuffer error",e)}if(Da(this.getAudioSourceBufferUpdating()))try{this.audioSourceBuffer.remove(e,t)}catch(e){this.player.debugWarn(this.TAG_NAME,"removeBuffer() audioSourceBuffer error",e)}}}clearUpAllSourceBuffer(){if(this.sourceBuffer){const e=this.sourceBuffer.buffered;for(let t=0;t=1)if(this.getSourceBufferUpdating()||this.getAudioSourceBufferUpdating())this.hasPendingEos=!0;else{this.hasPendingEos=!1;try{this.player.debugLog(this.TAG_NAME,"endOfStream()"),this.mediaSource.endOfStream()}catch(e){this.player.debugWarn(this.TAG_NAME,"endOfStream() error",e)}}}abortSourceBuffer(){if(this.isStateOpen){if(this.sourceBuffer){try{this.player.debugLog(this.TAG_NAME,"abortSourceBuffer() abort sourceBuffer"),this.sourceBuffer.abort()}catch(e){}Da(this.getSourceBufferUpdating())&&this._doRemoveRanges()}if(this.audioSourceBuffer){try{this.player.debugLog(this.TAG_NAME,"abortSourceBuffer() abort audioSourceBuffer"),this.audioSourceBuffer.abort()}catch(e){}Da(this.getAudioSourceBufferUpdating())&&this._doRemoveRanges()}}this.sourceBuffer=null,this.audioSourceBuffer=null}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource){if(this.sourceBuffer)try{this.player.debugLog(this.TAG_NAME,"removeSourceBuffer() sourceBuffer"),this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debugError(this.TAG_NAME,"removeSourceBuffer() sourceBuffer error",e)}if(this.audioSourceBuffer)try{this.player.debugLog(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer"),this.mediaSource.removeSourceBuffer(this.audioSourceBuffer)}catch(e){this.player.debugError(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;this.player._opt.videoBuffer,this.player._opt.videoBufferDelay;const t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,o=this.getMseBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),0===this.$videoElement.readyState)return;if(r>o)this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${o} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0&&0===i)return this.player.debugWarn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),void this.player.emit(_t.mediaSourceBufferedIsZeroError,"video.buffered is empty");const a=this._getPlaybackRate(i-s);e.playbackRate!==a&&(this.player.debugLog(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${a} `),e.playbackRate=a)}_handleUpdateBufferDelayTime(){const e=this.getVideoBufferDelayTime();this.player.updateStats({mseVideoBufferDelayTime:e})}_checkVideoPlayCurrentTime(){const e=this.checkSourceBufferStore();if(e<0){const t=this.getVideoBufferStartTime();this.player.debugWarn(this.TAG_NAME,`checkVideoPlayCurrentTime store is ${e} < 0 and set currentTime ${this.$videoElement.currentTime} to ${t}`),this.$videoElement.currentTime=t}}updateVideoCurrentTimeByBufferStart(){if(!this.$videoElement)return;const e=this.$videoElement.currentTime,t=this.getVideoBufferRangeList();if(1===t.length){const i=t[0].end,s=Math.abs(i-e);if(s<1)return void this.player.debugLog(this.TAG_NAME,`updateVideoCurrentTimeByBufferStart current time is ${e} and buffer end is ${i} and diff is ${s} and return`)}let i=null;for(let s=0;s{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(_t.mediaSourceAudioInitTimeout)}),1e3)));if(Da(this.getSourceBufferUpdating())&&this.pendingSegments.length>0){const e=this.pendingSegments.shift();try{this.sourceBuffer.appendBuffer(e)}catch(e){this.player.debugError(this.TAG_NAME,"this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(_t.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(_t.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(At.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}if(Da(this.getAudioSourceBufferUpdating())&&this.pendingAudioSegments.length>0){const e=this.pendingAudioSegments.shift();try{this.audioSourceBuffer.appendBuffer(e)}catch(e){this.player.debugError(this.TAG_NAME,"this.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(_t.mediaSourceFull,`code is ${e.code} and message is ${e.message}`)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(_t.mediaSourceAppendBufferError,`code is ${e.code} and message is ${e.message}`)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(At.mseSourceBufferError,`code is ${e.code} and message is ${e.message}`))}}}else this.player.debugLog(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 s=0;s=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingRemoveRanges.push({start:r,end:t})}}else o=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingAudioRemoveRanges.push({start:r,end:t})}}else o0||this.pendingAudioRemoveRanges.length>0}_doRemoveRanges(){if(this.sourceBuffer&&Da(this.getSourceBufferUpdating())){let e=this.pendingRemoveRanges;for(;e.length&&Da(this.getSourceBufferUpdating());){let t=e.shift();try{this.sourceBuffer.remove(t.start,t.end)}catch(e){this.player.debugWarn(this.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(this.audioSourceBuffer&&Da(this.getAudioSourceBufferUpdating())){let e=this.pendingAudioRemoveRanges;for(;e.length&&Da(this.getAudioSourceBufferUpdating());){let t=e.shift();try{this.audioSourceBuffer.remove(t.start,t.end)}catch(e){this.player.debugWarn(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 s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?1:t.playbackRate}_needCleanupSourceBuffer(){if(Da(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}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}getVideoBufferStartTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;t=i.length?i.start(0):0}return t}getVideoBufferEndTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;t=i.length?i.end(i.length-1):0}return t}getVideoBufferRangeList(){const e=this.$videoElement;let t=[];if(e){const i=e.buffered;for(let e=0;e0?t:0}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}getMimeType(){return{video:this.videoMimeType,audio:this.audioMimeType}}getMseBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}isVideoPlaying(){return this.$videoElement&&Da(this.$videoElement.paused)&&Da(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}isCurrentTimeInBufferEnd(){let e=!1;if(this.$videoElement){const t=this.$videoElement.currentTime,i=this.getVideoBufferEndTime(),s=Math.abs(i-t);e=s<1,e&&this.player.debugLog(this.TAG_NAME,`isCurrentTimeInBufferEnd and currentTime is ${t} and end is ${i} and diff is ${s}`)}return e}}const Bc=()=>"wakeLock"in navigator&&-1===window.navigator.userAgent.indexOf("Samsung")&&Da(Ro());class Mc{constructor(e){this.player=e,this.enabled=!1,Bc()?(this.player.debugLog("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.debugLog("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.debugWarn("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 s=document.createElement("source");s.src=i,s.type=`video/${t}`,e.appendChild(s)}get isEnabled(){return this.enabled}enable(){if(Bc())return navigator.wakeLock.request("screen").then((e=>{this._wakeLock=e,this.enabled=!0,this.player.debugLog("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{this.player.debugLog("wakeLock","Wake Lock released.")}))})).catch((e=>{throw this.enabled=!1,this.player.debugWarn("wakeLock",`${e.name}, ${e.message}`),e}));return this.noSleepVideo.play().then((e=>(this.player.debugLog("wakeLock","noSleepVideo Wake Lock active."),this.enabled=!0,e))).catch((e=>{throw this.player.debugWarn("wakeLock",`noSleepVideo ${e.name}, ${e.message}`),this.enabled=!1,e}))}disable(){Bc()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):this.noSleepVideo&&this.noSleepVideo.pause(),this.enabled=!1,this.player.debugLog("wakeLock","Disabling wake lock.")}}function Fc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Uc={exports:{}};!function(e,t){var i,s,r,o,a;i=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,s=/^(?=([^\/?#]*))\1([^]*)$/,r=/(?:\/|^)\.(?=\/)/g,o=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,a={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var r=a.parseURL(e);if(!r)throw new Error("Error trying to parse base URL.");return r.path=a.normalizePath(r.path),a.buildURLFromParts(r)}var o=a.parseURL(t);if(!o)throw new Error("Error trying to parse relative URL.");if(o.scheme)return i.alwaysNormalize?(o.path=a.normalizePath(o.path),a.buildURLFromParts(o)):t;var n=a.parseURL(e);if(!n)throw new Error("Error trying to parse base URL.");if(!n.netLoc&&n.path&&"/"!==n.path[0]){var l=s.exec(n.path);n.netLoc=l[1],n.path=l[2]}n.netLoc&&!n.path&&(n.path="/");var d={scheme:n.scheme,netLoc:o.netLoc,path:null,params:o.params,query:o.query,fragment:o.fragment};if(!o.netLoc&&(d.netLoc=n.netLoc,"/"!==o.path[0]))if(o.path){var h=n.path,c=h.substring(0,h.lastIndexOf("/")+1)+o.path;d.path=a.normalizePath(c)}else d.path=n.path,o.params||(d.params=n.params,o.query||(d.query=n.query));return null===d.path&&(d.path=i.alwaysNormalize?a.normalizePath(o.path):o.path),a.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(r,"");e.length!==(e=e.replace(o,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=a}(Uc);var Oc=Uc.exports;function Nc(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function jc(e){for(var t=1;t`):Yc}(t)}))}const eu=Xc,tu=/^(\d+)x(\d+)$/,iu=/(.+?)=(".*?"|.*?)(?:,|$)/g;class su{constructor(e){"string"==typeof e&&(e=su.parseAttrList(e)),zc(this,e)}get clientAttrs(){return Object.keys(this).filter((e=>"X-"===e.substring(0,2)))}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;const i=new Uint8Array(t.length/2);for(let e=0;eNumber.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){const i=this[e];return i?parseFloat(i):t}enumeratedString(e){return this[e]}bool(e){return"YES"===this[e]}decimalResolution(e){const t=tu.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t;const i={};for(iu.lastIndex=0;null!==(t=iu.exec(e));){let e=t[2];0===e.indexOf('"')&&e.lastIndexOf('"')===e.length-1&&(e=e.slice(1,-1));i[t[1].trim()]=e}return i}}function ru(e){return"SCTE35-OUT"===e||"SCTE35-IN"===e}class ou{constructor(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){const i=t.attr;for(const t in i)if(Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==i[t]){eu.warn(`DATERANGE tag attribute: "${t}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=t;break}e=zc(new su({}),i,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){const e=new Date(this.attr["END-DATE"]);$c(e.getTime())&&(this._endDate=e)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;const e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}get duration(){if("DURATION"in this.attr){const e=this.attr.decimalFloatingPoint("DURATION");if($c(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isValid(){return!!this.id&&!this._badValueForSameId&&$c(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class au{constructor(){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}}}var nu="audio",lu="video",du="audiovideo";class hu{constructor(e){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[nu]:null,[lu]:null,[du]:null},this.baseurl=e}setByteRange(e,t){const i=e.split("@",2);let s;s=1===i.length?(null==t?void 0:t.byteRangeEndOffset)||0:parseInt(i[1]),this._byteRange=[s,parseInt(i[0])+s]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=Oc.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(e){this._url=e}}class cu extends hu{constructor(e,t){super(t),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new au,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=e}get decryptdata(){const{levelkeys:e}=this;if(!e&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{const e=Object.keys(this.levelkeys);if(1===e.length)return this._decryptdata=this.levelkeys[e[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!$c(this.programDateTime))return null;const e=$c(this.duration)?this.duration:0;return this.programDateTime+1e3*e}get encrypted(){var e;if(null!=(e=this._decryptdata)&&e.encrypted)return!0;if(this.levelkeys){const e=Object.keys(this.levelkeys),t=e.length;if(t>1||1===t&&this.levelkeys[e[0]].encrypted)return!0}return!1}setKeyFormat(e){if(this.levelkeys){const t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}}abortRequests(){var e,t;null==(e=this.loader)||e.abort(),null==(t=this.keyLoader)||t.abort()}setElementaryStreamInfo(e,t,i,s,r,o=!1){const{elementaryStreams:a}=this,n=a[e];n?(n.startPTS=Math.min(n.startPTS,t),n.endPTS=Math.max(n.endPTS,i),n.startDTS=Math.min(n.startDTS,s),n.endDTS=Math.max(n.endDTS,r)):a[e]={startPTS:t,endPTS:i,startDTS:s,endDTS:r,partial:o}}clearElementaryStreamInfo(){const{elementaryStreams:e}=this;e[nu]=null,e[lu]=null,e[du]=null}}class uu extends hu{constructor(e,t,i,s,r){super(i),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.stats=new au,this.duration=e.decimalFloatingPoint("DURATION"),this.gap=e.bool("GAP"),this.independent=e.bool("INDEPENDENT"),this.relurl=e.enumeratedString("URI"),this.fragment=t,this.index=s;const o=e.enumeratedString("BYTERANGE");o&&this.setByteRange(o,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}}class pu{constructor(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}reloaded(e){if(!e)return this.advanced=!0,void(this.updated=!0);const 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}get hasProgramDateTime(){return!!this.fragments.length&&$c(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const e=this.driftEndTime-this.driftStartTime;if(e>0){return 1e3*(this.driftEnd-this.driftStart)/e}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var e;return null!=(e=this.fragments)&&e.length?this.fragments[this.fragments.length-1].end:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function fu(e){return Uint8Array.from(atob(e),(e=>e.charCodeAt(0)))}function mu(e){const t=e.split(":");let i=null;if("data"===t[0]&&2===t.length){const e=t[1].split(";"),s=e[e.length-1].split(",");if(2===s.length){const t="base64"===s[0],r=s[1];t?(e.splice(-1,1),i=fu(r)):i=function(e){const t=gu(e).subarray(0,16),i=new Uint8Array(16);return i.set(t,16-t.length),i}(r)}}return i}function gu(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(e=>e.charCodeAt(0)))}const yu="undefined"!=typeof self?self:void 0;var Au={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},bu="org.w3.clearkey",vu="com.apple.streamingkeydelivery",_u="com.microsoft.playready",wu="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function Su(e){switch(e){case vu:return Au.FAIRPLAY;case _u:return Au.PLAYREADY;case wu:return Au.WIDEVINE;case bu:return Au.CLEARKEY}}var Eu="edef8ba979d64acea3c827dcd51d21ed";function Tu(e){switch(e){case Au.FAIRPLAY:return vu;case Au.PLAYREADY:return _u;case Au.WIDEVINE:return wu;case Au.CLEARKEY:return bu}}function ku(e){const{drmSystems:t,widevineLicenseUrl:i}=e,s=t?[Au.FAIRPLAY,Au.WIDEVINE,Au.PLAYREADY,Au.CLEARKEY].filter((e=>!!t[e])):[];return!s[Au.WIDEVINE]&&i&&s.push(Au.WIDEVINE),s}const Lu=null!=yu&&null!=(Cu=yu.navigator)&&Cu.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var Cu;function xu(e,t,i){return Uint8Array.prototype.slice?e.slice(t,i):new Uint8Array(Array.prototype.slice.call(e,t,i))}const Du=(e,t)=>t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,Ru=(e,t)=>t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,Iu=(e,t)=>{const i=t;let s=0;for(;Du(e,t);){s+=10;s+=Pu(e,t+6),Ru(e,t+10)&&(s+=10),t+=s}if(s>0)return e.subarray(i,i+s)},Pu=(e,t)=>{let i=0;return i=(127&e[t])<<21,i|=(127&e[t+1])<<14,i|=(127&e[t+2])<<7,i|=127&e[t+3],i},Bu=(e,t)=>Du(e,t)&&Pu(e,t+6)+10<=e.length-t,Mu=e=>{const t=Ou(e);for(let e=0;ee&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info,Uu=e=>{const t=String.fromCharCode(e[0],e[1],e[2],e[3]),i=Pu(e,4);return{type:t,size:i,data:e.subarray(10,10+i)}},Ou=e=>{let t=0;const i=[];for(;Du(e,t);){const s=Pu(e,t+6);t+=10;const r=t+s;for(;t+8"PRIV"===e.type?ju(e):"W"===e.type[0]?Wu(e):Gu(e),ju=e=>{if(e.size<2)return;const t=$u(e.data,!0),i=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:i.buffer}},Gu=e=>{if(e.size<2)return;if("TXXX"===e.type){let t=1;const i=$u(e.data.subarray(t),!0);t+=i.length+1;const s=$u(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=$u(e.data.subarray(1));return{key:e.type,data:t}},Wu=e=>{if("WXXX"===e.type){if(e.size<2)return;let t=1;const i=$u(e.data.subarray(t),!0);t+=i.length+1;const s=$u(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=$u(e.data);return{key:e.type,data:t}},zu=e=>{if(8===e.data.byteLength){const t=new Uint8Array(e.data),i=1&t[3];let s=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return s/=45,i&&(s+=47721858.84),Math.round(s)}},$u=(e,t=!1)=>{const i=Hu();if(i){const s=i.decode(e);if(t){const e=s.indexOf("\0");return-1!==e?s.substring(0,e):s}return s.replace(/\0/g,"")}const s=e.length;let r,o,a,n="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(r);break;case 12:case 13:o=e[l++],n+=String.fromCharCode((31&r)<<6|63&o);break;case 14:o=e[l++],a=e[l++],n+=String.fromCharCode((15&r)<<12|(63&o)<<6|(63&a)<<0)}}return n};let Vu;function Hu(){if(!navigator.userAgent.includes("PlayStation 4"))return Vu||void 0===self.TextDecoder||(Vu=new self.TextDecoder("utf-8")),Vu}const Ju=function(e){let t="";for(let i=0;i>24,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i}function sp(e,t){const i=[];if(!t.length)return i;const s=e.byteLength;for(let r=0;r1?r+o:s;if(Qu(e.subarray(r+4,r+8))===t[0])if(1===t.length)i.push(e.subarray(r+8,a));else{const s=sp(e.subarray(r+8,a),t.slice(1));s.length&&Ku.apply(i,s)}r=a}return i}function rp(e){const t=[],i=e[0];let s=8;const r=Zu(e,s);s+=4;let o=0,a=0;0===i?(o=Zu(e,s),a=Zu(e,s+4),s+=8):(o=ep(e,s),a=ep(e,s+8),s+=16),s+=2;let n=e.length+a;const l=Xu(e,s);s+=2;for(let i=0;i>>31)return eu.warn("SIDX has hierarchical references (not supported)"),null;const l=Zu(e,i);i+=4,t.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/r,start:n,end:n+a-1}}),n+=a,i+=4,s=i}return{earliestPresentationTime:o,timescale:r,version:i,referencesCount:l,references:t}}function op(e){const t=[],i=sp(e,["moov","trak"]);for(let e=0;e{const i=Zu(e,4),s=t[i];s&&(s.default={duration:Zu(e,12),flags:Zu(e,20)})})),t}function ap(e){const t=e.subarray(8),i=t.subarray(86),s=Qu(t.subarray(4,8));let r=s;const o="enca"===s||"encv"===s;if(o){const e=sp(t,[s])[0];sp(e.subarray("enca"===s?28:78),["sinf"]).forEach((e=>{const t=sp(e,["schm"])[0];if(t){const i=Qu(t.subarray(4,8));if("cbcs"===i||"cenc"===i){const t=sp(e,["frma"])[0];t&&(r=Qu(t))}}}))}switch(r){case"avc1":case"avc2":case"avc3":case"avc4":{const e=sp(i,["avcC"])[0];r+="."+lp(e[1])+lp(e[2])+lp(e[3]);break}case"mp4a":{const e=sp(t,[s])[0],i=sp(e.subarray(28),["esds"])[0];if(i&&i.length>12){let e=4;if(3!==i[e++])break;e=np(i,e),e+=2;const t=i[e++];if(128&t&&(e+=2),64&t&&(e+=i[e++]),4!==i[e++])break;e=np(i,e);const s=i[e++];if(64!==s)break;if(r+="."+lp(s),e+=12,5!==i[e++])break;e=np(i,e);const o=i[e++];let a=(248&o)>>3;31===a&&(a+=1+((7&o)<<3)+((224&i[e])>>5)),r+="."+a}break}case"hvc1":case"hev1":{const e=sp(i,["hvcC"])[0],t=e[1],s=["","A","B","C"][t>>6],o=31&t,a=Zu(e,2),n=(32&t)>>5?"H":"L",l=e[12],d=e.subarray(6,12);r+="."+s+o,r+="."+a.toString(16).toUpperCase(),r+="."+n+l;let h="";for(let e=d.length;e--;){const t=d[e];if(t||h){h="."+t.toString(16).toUpperCase()+h}}r+=h;break}case"dvh1":case"dvhe":{const e=sp(i,["dvcC"])[0],t=e[2]>>1&127,s=e[2]<<5&32|e[3]>>3&31;r+="."+dp(t)+"."+dp(s);break}case"vp09":{const e=sp(i,["vpcC"])[0],t=e[4],s=e[5],o=e[6]>>4&15;r+="."+dp(t)+"."+dp(s)+"."+dp(o);break}case"av01":{const e=sp(i,["av1C"])[0],t=e[1]>>>5,s=31&e[1],o=e[2]>>>7?"H":"M",a=(64&e[2])>>6,n=(32&e[2])>>5,l=2===t&&a?n?12:10:a?10:8,d=(16&e[2])>>4,h=(8&e[2])>>3,c=(4&e[2])>>2,u=3&e[2],p=1,f=1,m=1,g=0;r+="."+t+"."+dp(s)+o+"."+dp(l)+"."+d+"."+h+c+u+"."+dp(p)+"."+dp(f)+"."+dp(m)+"."+g;break}}return{codec:r,encrypted:o}}function np(e,t){const i=t+5;for(;128&e[t++]&&t{const l=n.byteOffset-8;sp(n,["traf"]).map((n=>{const d=sp(n,["tfdt"]).map((e=>{const t=e[0];let i=Zu(e,4);return 1===t&&(i*=Math.pow(2,32),i+=Zu(e,8)),i/r}))[0];return void 0!==d&&(e=d),sp(n,["tfhd"]).map((d=>{const h=Zu(d,4),c=16777215&Zu(d,0);let u=0;const p=0!=(16&c);let f=0;const m=0!=(32&c);let g=8;h===o&&(0!=(1&c)&&(g+=8),0!=(2&c)&&(g+=4),0!=(8&c)&&(u=Zu(d,g),g+=4),p&&(f=Zu(d,g),g+=4),m&&(g+=4),"video"===t.type&&(a=function(e){if(!e)return!1;const t=e.indexOf("."),i=t<0?e:e.substring(0,t);return"hvc1"===i||"hev1"===i||"dvh1"===i||"dvhe"===i}(t.codec)),sp(n,["trun"]).map((o=>{const n=o[0],d=16777215&Zu(o,0),h=0!=(1&d);let c=0;const p=0!=(4&d),m=0!=(256&d);let g=0;const y=0!=(512&d);let A=0;const b=0!=(1024&d),v=0!=(2048&d);let _=0;const w=Zu(o,4);let S=8;h&&(c=Zu(o,S),S+=4),p&&(S+=4);let E=c+l;for(let l=0;l>1&63;return 39===e||40===e}return 6===(31&t)}function mp(e,t,i,s){const r=gp(e);let o=0;o+=t;let a=0,n=0,l=0;for(;o=r.length)break;l=r[o++],a+=l}while(255===l);n=0;do{if(o>=r.length)break;l=r[o++],n+=l}while(255===l);const e=r.length-o;let t=o;if(ne){eu.error(`Malformed SEI payload. ${n} is too small, only ${e} bytes left to parse.`);break}if(4===a){if(181===r[t++]){const e=Xu(r,t);if(t+=2,49===e){const e=Zu(r,t);if(t+=4,1195456820===e){const e=r[t++];if(3===e){const o=r[t++],n=31&o,l=64&o,d=l?2+3*n:0,h=new Uint8Array(d);if(l){h[0]=o;for(let e=1;e16){const e=[];for(let i=0;i<16;i++){const s=r[t++].toString(16);e.push(1==s.length?"0"+s:s),3!==i&&5!==i&&7!==i&&9!==i||e.push("-")}const o=n-16,l=new Uint8Array(o);for(let e=0;e0?(o=new Uint8Array(4),t.length>0&&new DataView(o.buffer).setUint32(0,t.length,!1)):o=new Uint8Array;const a=new Uint8Array(4);return i&&i.byteLength>0&&new DataView(a.buffer).setUint32(0,i.byteLength,!1),function(e,...t){const i=t.length;let s=8,r=i;for(;r--;)s+=t[r].byteLength;const o=new Uint8Array(s);for(o[0]=s>>24&255,o[1]=s>>16&255,o[2]=s>>8&255,o[3]=255&s,o.set(e,4),r=0,s=8;r>8*(15-i)&255;return t}(e);return new bp(this.method,this.uri,"identity",this.keyFormatVersions,t)}const t=mu(this.uri);if(t)switch(this.keyFormat){case wu:this.pssh=t,t.length>=22&&(this.keyId=t.subarray(t.length-22,t.length-6));break;case _u:{const e=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=yp(e,null,t);const i=new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2),s=String.fromCharCode.apply(null,Array.from(i)),r=s.substring(s.indexOf("<"),s.length),o=(new DOMParser).parseFromString(r,"text/xml").getElementsByTagName("KID")[0];if(o){const e=o.childNodes[0]?o.childNodes[0].nodeValue:o.getAttribute("VALUE");if(e){const t=fu(e).subarray(0,16);!function(e){const t=function(e,t,i){const s=e[t];e[t]=e[i],e[i]=s};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}(t),this.keyId=t}}break}default:{let e=t.subarray(0,16);if(16!==e.length){const t=new Uint8Array(16);t.set(e,16-e.length),e=t}this.keyId=e;break}}if(!this.keyId||16!==this.keyId.byteLength){let e=Ap[this.uri];if(!e){const t=Object.keys(Ap).length%Number.MAX_SAFE_INTEGER;e=new Uint8Array(16);new DataView(e.buffer,12,4).setUint32(0,t),Ap[this.uri]=e}this.keyId=e}return this}}const vp=/\{\$([a-zA-Z0-9-_]+)\}/g;function _p(e){return vp.test(e)}function wp(e,t,i){if(null!==e.variableList||e.hasVariableRefs)for(let s=i.length;s--;){const r=i[s],o=t[r];o&&(t[r]=Sp(e,o))}}function Sp(e,t){if(null!==e.variableList||e.hasVariableRefs){const i=e.variableList;return t.replace(vp,(t=>{const s=t.substring(2,t.length-1),r=null==i?void 0:i[s];return void 0===r?(e.playlistParsingError||(e.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${s}"`)),t):r}))}return t}function Ep(e,t,i){let s,r,o=e.variableList;if(o||(e.variableList=o={}),"QUERYPARAM"in t){s=t.QUERYPARAM;try{const e=new self.URL(i).searchParams;if(!e.has(s))throw new Error(`"${s}" does not match any query parameter in URI: "${i}"`);r=e.get(s)}catch(t){e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${t.message}`))}}else s=t.NAME,r=t.VALUE;s in o?e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${s}"`)):o[s]=r||""}function Tp(e,t,i){const s=t.IMPORT;if(i&&s in i){let t=e.variableList;t||(e.variableList=t={}),t[s]=i[s]}else e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${s}"`))}function kp(e=!0){if("undefined"==typeof self)return;return(e||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const Lp={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 Cp(e,t,i=!0){return!e.split(",").some((e=>!xp(e,t,i)))}function xp(e,t,i=!0){var s;const r=kp(i);return null!=(s=null==r?void 0:r.isTypeSupported(Dp(e,t)))&&s}function Dp(e,t){return`${t}/mp4;codecs="${e}"`}function Rp(e){if(e){const t=e.substring(0,4);return Lp.video[t]}return 2}function Ip(e){return e.split(",").reduce(((e,t)=>{const i=Lp.video[t];return i?(2*i+e)/(e?3:2):(Lp.audio[t]+e)/(e?2:1)}),0)}const Pp={};const Bp=/flac|opus/i;function Mp(e,t=!0){return e.replace(Bp,(e=>function(e,t=!0){if(Pp[e])return Pp[e];const i={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[e];for(let s=0;s0&&s.length({id:e.attrs.AUDIO,audioCodec:e.audioCodec}))),SUBTITLES:o.map((e=>({id:e.attrs.SUBTITLES,textCodec:e.textCodec}))),"CLOSED-CAPTIONS":[]};let n=0;for(Op.lastIndex=0;null!==(s=Op.exec(e));){const e=new su(s[1]),o=e.TYPE;if(o){const s=a[o],l=r[o]||[];r[o]=l,wp(i,e,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const d=e.LANGUAGE,h=e["ASSOC-LANGUAGE"],c=e.CHANNELS,u=e.CHARACTERISTICS,p=e["INSTREAM-ID"],f={attrs:e,bitrate:0,id:n++,groupId:e["GROUP-ID"]||"",name:e.NAME||d||"",type:o,default:e.bool("DEFAULT"),autoselect:e.bool("AUTOSELECT"),forced:e.bool("FORCED"),lang:d,url:e.URI?Wp.resolve(e.URI,t):""};if(h&&(f.assocLang=h),c&&(f.channels=c),u&&(f.characteristics=u),p&&(f.instreamId=p),null!=s&&s.length){const e=Wp.findGroup(s,f.groupId)||s[0];Hp(f,e,"audioCodec"),Hp(f,e,"textCodec")}l.push(f)}}return r}static parseLevelPlaylist(e,t,i,s,r,o){const a=new pu(t),n=a.fragments;let l,d,h,c=null,u=0,p=0,f=0,m=0,g=null,y=new cu(s,t),A=-1,b=!1,v=null;for(jp.lastIndex=0,a.m3u8=e,a.hasVariableRefs=_p(e);null!==(l=jp.exec(e));){b&&(b=!1,y=new cu(s,t),y.start=f,y.sn=u,y.cc=m,y.level=i,c&&(y.initSegment=c,y.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,v&&(y.setByteRange(v),v=null)));const e=l[1];if(e){y.duration=parseFloat(e);const t=(" "+l[2]).slice(1);y.title=t||null,y.tagList.push(t?["INF",e,t]:["INF",e])}else if(l[3]){if($c(y.duration)){y.start=f,h&&Kp(y,h,a),y.sn=u,y.level=i,y.cc=m,n.push(y);const e=(" "+l[3]).slice(1);y.relurl=Sp(a,e),Jp(y,g),g=y,f+=y.duration,u++,p=0,b=!0}}else if(l[4]){const e=(" "+l[4]).slice(1);g?y.setByteRange(e,g):y.setByteRange(e)}else if(l[5])y.rawProgramDateTime=(" "+l[5]).slice(1),y.tagList.push(["PROGRAM-DATE-TIME",y.rawProgramDateTime]),-1===A&&(A=n.length);else{if(l=l[0].match(Gp),!l){eu.warn("No matches on slow regex match for level playlist!");continue}for(d=1;d0&&e.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=e.optionalFloat("PART-HOLD-BACK",0),a.holdBack=e.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const e=new su(r);a.partTarget=e.decimalFloatingPoint("PART-TARGET");break}case"PART":{let e=a.partList;e||(e=a.partList=[]);const i=p>0?e[e.length-1]:void 0,s=p++,o=new su(r);wp(a,o,["BYTERANGE","URI"]);const n=new uu(o,y,t,s,i);e.push(n),y.duration+=n.duration;break}case"PRELOAD-HINT":{const e=new su(r);wp(a,e,["URI"]),a.preloadHint=e;break}case"RENDITION-REPORT":{const e=new su(r);wp(a,e,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(e);break}default:eu.warn(`line parsed but not handled: ${l}`)}}}g&&!g.relurl?(n.pop(),f-=g.duration,a.partList&&(a.fragmentHint=g)):a.partList&&(Jp(y,g),y.cc=m,a.fragmentHint=y,h&&Kp(y,h,a));const _=n.length,w=n[0],S=n[_-1];if(f+=a.skippedSegments*a.targetduration,f>0&&_&&S){a.averagetargetduration=f/_;const e=S.sn;a.endSN="initSegment"!==e?e:0,a.live||(S.endList=!0),w&&(a.startCC=w.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(f+=a.fragmentHint.duration),a.totalduration=f,a.endCC=m,A>0&&function(e,t){let i=e[t];for(let s=t;s--;){const t=e[s];if(!t)return;t.programDateTime=i.programDateTime-1e3*t.duration,i=t}}(n,A),a}}function zp(e,t,i){var s,r;const o=new su(e);wp(i,o,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(s=o.METHOD)?s:"",n=o.URI,l=o.hexadecimalInteger("IV"),d=o.KEYFORMATVERSIONS,h=null!=(r=o.KEYFORMAT)?r:"identity";n&&o.IV&&!l&&eu.error(`Invalid IV: ${o.IV}`);const c=n?Wp.resolve(n,t):"",u=(d||"1").split("/").map(Number).filter(Number.isFinite);return new bp(a,c,h,u,l)}function $p(e){const t=new su(e).decimalFloatingPoint("TIME-OFFSET");return $c(t)?t:null}function Vp(e,t){let i=(e||"").split(/[ ,]+/).filter((e=>e));["video","audio","text"].forEach((e=>{const s=i.filter((t=>function(e,t){const i=Lp[t];return!!i&&!!i[e.slice(0,4)]}(t,e)));s.length&&(t[`${e}Codec`]=s.join(","),i=i.filter((e=>-1===s.indexOf(e))))})),t.unknownCodecs=i}function Hp(e,t,i){const s=t[i];s&&(e[i]=s)}function Jp(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),$c(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function qp(e,t,i,s){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=i,e.sn="initSegment",s&&(e.levelkeys=s),e.initSegment=null}function Kp(e,t,i){e.levelkeys=t;const{encryptedFragments:s}=i;s.length&&s[s.length-1].levelkeys===t||!Object.keys(t).some((e=>t[e].isCommonEncryption))||s.push(e)}var Yp="manifest",Qp="level",Xp="audioTrack",Zp="subtitleTrack",ef="main",tf="audio",sf="subtitle";function rf(e){const{type:t}=e;switch(t){case Xp:return tf;case Zp:return sf;default:return ef}}function of(e,t){let i=e.url;return void 0!==i&&0!==i.indexOf("data:")||(i=t.url),i}class af{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:e}=this;e.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Jc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Jc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(Jc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:e}=this;e.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Jc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Jc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(Jc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(e){const t=this.hls.config,i=t.pLoader,s=t.loader,r=new(i||s)(t);return this.loaders[e.type]=r,r}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(const e in this.loaders){const t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){const{url:i}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:Yp,url:i,deliveryDirectives:null})}onLevelLoading(e,t){const{id:i,level:s,pathwayId:r,url:o,deliveryDirectives:a}=t;this.load({id:i,level:s,pathwayId:r,responseType:"text",type:Qp,url:o,deliveryDirectives:a})}onAudioTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:Xp,url:r,deliveryDirectives:o})}onSubtitleTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:o}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:Zp,url:r,deliveryDirectives:o})}load(e){var t;const i=this.hls.config;let s,r=this.getInternalLoader(e);if(r){const t=r.context;if(t&&t.url===e.url&&t.level===e.level)return void eu.trace("[playlist-loader]: playlist request ongoing");eu.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),r.abort()}if(s=e.type===Yp?i.manifestLoadPolicy.default:zc({},i.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),r=this.createInternalLoader(e),$c(null==(t=e.deliveryDirectives)?void 0:t.part)){let t;if(e.type===Qp&&null!==e.level?t=this.hls.levels[e.level].details:e.type===Xp&&null!==e.id?t=this.hls.audioTracks[e.id].details:e.type===Zp&&null!==e.id&&(t=this.hls.subtitleTracks[e.id].details),t){const e=t.partTarget,i=t.targetduration;if(e&&i){const t=1e3*Math.max(3*e,.8*i);s=zc({},s,{maxTimeToFirstByteMs:Math.min(t,s.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(t,s.maxTimeToFirstByteMs)})}}}const o=s.errorRetry||s.timeoutRetry||{},a={loadPolicy:s,timeout:s.maxLoadTimeMs,maxRetry:o.maxNumRetry||0,retryDelay:o.retryDelayMs||0,maxRetryDelay:o.maxRetryDelayMs||0},n={onSuccess:(e,t,i,s)=>{const r=this.getInternalLoader(i);this.resetInternalLoader(i.type);const o=e.data;0===o.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),Wp.isMediaPlaylist(o)?this.handleTrackOrLevelPlaylist(e,t,i,s||null,r):this.handleMasterPlaylist(e,t,i,s)):this.handleManifestParsingError(e,i,new Error("no EXTM3U delimiter"),s||null,t)},onError:(e,t,i,s)=>{this.handleNetworkError(t,i,!1,e,s)},onTimeout:(e,t,i)=>{this.handleNetworkError(t,i,!0,void 0,e)}};r.load(e,a,n)}handleMasterPlaylist(e,t,i,s){const r=this.hls,o=e.data,a=of(e,i),n=Wp.parseMasterPlaylist(o,a);if(n.playlistParsingError)return void this.handleManifestParsingError(e,i,n.playlistParsingError,s,t);const{contentSteering:l,levels:d,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p}=n;this.variableList=p;const{AUDIO:f=[],SUBTITLES:m,"CLOSED-CAPTIONS":g}=Wp.parseMasterPlaylistMedia(o,a,n);if(f.length){f.some((e=>!e.url))||!d[0].audioCodec||d[0].attrs.AUDIO||(eu.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),f.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new su({}),bitrate:0,url:""}))}r.trigger(Jc.MANIFEST_LOADED,{levels:d,audioTracks:f,subtitles:m,captions:g,contentSteering:l,url:a,stats:t,networkDetails:s,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p})}handleTrackOrLevelPlaylist(e,t,i,s,r){const o=this.hls,{id:a,level:n,type:l}=i,d=of(e,i),h=$c(n)?n:$c(a)?a:0,c=rf(i),u=Wp.parseLevelPlaylist(e.data,d,h,c,0,this.variableList);if(l===Yp){const e={attrs:new su({}),bitrate:0,details:u,name:"",url:d};o.trigger(Jc.MANIFEST_LOADED,{levels:[e],audioTracks:[],url:d,stats:t,networkDetails:s,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=u,this.handlePlaylistLoaded(u,e,t,i,s,r)}handleManifestParsingError(e,t,i,s,r){this.hls.trigger(Jc.ERROR,{type:qc.NETWORK_ERROR,details:Kc.MANIFEST_PARSING_ERROR,fatal:t.type===Yp,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:s,stats:r})}handleNetworkError(e,t,i=!1,s,r){let o=`A network ${i?"timeout":"error"+(s?" (status "+s.code+")":"")} occurred while loading ${e.type}`;e.type===Qp?o+=`: ${e.level} id: ${e.id}`:e.type!==Xp&&e.type!==Zp||(o+=` id: ${e.id} group-id: "${e.groupId}"`);const a=new Error(o);eu.warn(`[playlist-loader]: ${o}`);let n=Kc.UNKNOWN,l=!1;const d=this.getInternalLoader(e);switch(e.type){case Yp:n=i?Kc.MANIFEST_LOAD_TIMEOUT:Kc.MANIFEST_LOAD_ERROR,l=!0;break;case Qp:n=i?Kc.LEVEL_LOAD_TIMEOUT:Kc.LEVEL_LOAD_ERROR,l=!1;break;case Xp:n=i?Kc.AUDIO_TRACK_LOAD_TIMEOUT:Kc.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case Zp:n=i?Kc.SUBTITLE_TRACK_LOAD_TIMEOUT:Kc.SUBTITLE_LOAD_ERROR,l=!1}d&&this.resetInternalLoader(e.type);const h={type:qc.NETWORK_ERROR,details:n,fatal:l,url:e.url,loader:d,context:e,error:a,networkDetails:t,stats:r};if(s){const i=(null==t?void 0:t.url)||e.url;h.response=jc({url:i,data:void 0},s)}this.hls.trigger(Jc.ERROR,h)}handlePlaylistLoaded(e,t,i,s,r,o){const a=this.hls,{type:n,level:l,id:d,groupId:h,deliveryDirectives:c}=s,u=of(t,s),p=rf(s),f="number"==typeof s.level&&p===ef?l:void 0;if(!e.fragments.length){const e=new Error("No Segments found in Playlist");return void a.trigger(Jc.ERROR,{type:qc.NETWORK_ERROR,details:Kc.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:e,reason:e.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i})}e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));const m=e.playlistParsingError;if(m)a.trigger(Jc.ERROR,{type:qc.NETWORK_ERROR,details:Kc.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i});else switch(e.live&&o&&(o.getCacheAge&&(e.ageHeader=o.getCacheAge()||0),o.getCacheAge&&!isNaN(e.ageHeader)||(e.ageHeader=0)),n){case Yp:case Qp:a.trigger(Jc.LEVEL_LOADED,{details:e,level:f||0,id:d||0,stats:i,networkDetails:r,deliveryDirectives:c});break;case Xp:a.trigger(Jc.AUDIO_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c});break;case Zp:a.trigger(Jc.SUBTITLE_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c})}}}function nf(e,t){let i;try{i=new Event("addtrack")}catch(e){i=document.createEvent("Event"),i.initEvent("addtrack",!1,!1)}i.track=e,t.dispatchEvent(i)}function lf(e,t){const 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){eu.debug(`[texttrack-utils]: ${i}`);try{const i=new self.TextTrackCue(t.startTime,t.endTime,t.text);i.id=t.id,e.addCue(i)}catch(e){eu.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${e}`)}}"disabled"===i&&(e.mode=i)}function df(e){const t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(let t=e.cues.length;t--;)e.removeCue(e.cues[t]);"disabled"===t&&(e.mode=t)}function hf(e,t,i,s){const r=e.mode;if("disabled"===r&&(e.mode="hidden"),e.cues&&e.cues.length>0){const r=function(e,t,i){const s=[],r=function(e,t){if(te[i].endTime)return-1;let s=0,r=i;for(;s<=r;){const o=Math.floor((r+s)/2);if(te[o].startTime&&s-1)for(let o=r,a=e.length;o=t&&r.endTime<=i)s.push(r);else if(r.startTime>i)return s}return s}(e.cues,t,i);for(let t=0;t{const e=mf();try{e&&new e(0,Number.POSITIVE_INFINITY,"")}catch(e){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function Af(e,t){return e.getTime()/1e3-t}class bf{constructor(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=e,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){const{hls:e}=this;e.on(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Jc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(Jc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Jc.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:e}=this;e.off(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Jc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(Jc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Jc.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(e,t){this.media=t.media}onMediaDetaching(){this.id3Track&&(df(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){const t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;tyf&&(s=yf);s-i<=0&&(s=i+.25);for(let e=0;ee.type===uf&&n:"video"===s?e=>e.type===ff&&a:e=>e.type===uf&&n||e.type===ff&&a,hf(r,t,i,e)}}onLevelUpdated(e,{details:t}){if(!this.media||!t.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:i,id3Track:s}=this,{dateRanges:r}=t,o=Object.keys(r);if(s){const e=Object.keys(i).filter((e=>!o.includes(e)));for(let t=e.length;t--;){const r=e[t];Object.keys(i[r].cues).forEach((e=>{s.removeCue(i[r].cues[e])})),delete i[r]}}const a=t.fragments[t.fragments.length-1];if(0===o.length||!$c(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const n=a.programDateTime/1e3-a.start,l=mf();for(let e=0;e{if(t!==s.id){const i=r[t];if(i.class===s.class&&i.startDate>s.startDate&&(!e||s.startDatethis.timeupdate(),this.hls=e,this.config=e.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:e,levelDetails:t}=this;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){const{levelDetails:e}=this;if(null===e)return null;const{holdBack:t,partHoldBack:i,targetduration:s}=e,{liveSyncDuration:r,liveSyncDurationCount:o,lowLatencyMode:a}=this.config,n=this.hls.userConfig;let l=a&&i||t;(n.liveSyncDuration||n.liveSyncDurationCount||0===l)&&(l=void 0!==r?r:o*s);const d=s;return l+Math.min(1*this.stallCount,d)}get liveSyncPosition(){const e=this.estimateLiveEdge(),t=this.targetLatency,i=this.levelDetails;if(null===e||null===t||null===i)return null;const s=i.edge,r=e-t-this.edgeStalled,o=s-i.totalduration,a=s-(this.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(o,r),a)}get drift(){const{levelDetails:e}=this;return null===e?1:e.drift}get edgeStalled(){const{levelDetails:e}=this;if(null===e)return 0;const t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}get forwardBufferLength(){const{media:e,levelDetails:t}=this;if(!e||!t)return 0;const i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Jc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(Jc.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Jc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(Jc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(e,{details:t}){this.levelDetails=t,t.advanced&&this.timeupdate(),!t.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(e,t){var i;t.details===Kc.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(i=this.levelDetails)&&i.live&&eu.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:e,levelDetails:t}=this;if(!e||!t)return;this.currentTime=e.currentTime;const i=this.computeLatency();if(null===i)return;this._latency=i;const{lowLatencyMode:s,maxLiveSyncPlaybackRate:r}=this.config;if(!s||1===r||!t.live)return;const o=this.targetLatency;if(null===o)return;const a=i-o;if(a.05&&this.forwardBufferLength>1){const t=Math.min(2,Math.max(1,r)),i=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;e.playbackRate=Math.min(t,Math.max(1,i))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}estimateLiveEdge(){const{levelDetails:e}=this;return null===e?null:e.edge+e.age}computeLatency(){const e=this.estimateLiveEdge();return null===e?null:e-this.currentTime}}const _f=["NONE","TYPE-0","TYPE-1",null];const wf=["SDR","PQ","HLG"];var Sf="",Ef="YES",Tf="v2";function kf(e){const{canSkipUntil:t,canSkipDateRanges:i,age:s}=e;return t&&s!!e)).map((e=>e.substring(0,4))).join(","),this.addGroupId("audio",e.attrs.AUDIO),this.addGroupId("text",e.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(e){return xf(this._audioGroups,e)}hasSubtitleGroup(e){return xf(this._subtitleGroups,e)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(e,t){if(t)if("audio"===e){let e=this._audioGroups;e||(e=this._audioGroups=[]),-1===e.indexOf(t)&&e.push(t)}else if("text"===e){let e=this._subtitleGroups;e||(e=this._subtitleGroups=[]),-1===e.indexOf(t)&&e.push(t)}}get urlId(){return 0}set urlId(e){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var e;return null==(e=this.audioGroups)?void 0:e[0]}get textGroupId(){var e;return null==(e=this.subtitleGroups)?void 0:e[0]}addFallback(){}}function xf(e,t){return!(!t||!e)&&-1!==e.indexOf(t)}function Df(e,t){const i=t.startPTS;if($c(i)){let s,r=0;t.sn>e.sn?(r=i-e.start,s=e):(r=e.start-i,s=t),s.duration!==r&&(s.duration=r)}else if(t.sn>e.sn){e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration}else t.start=Math.max(e.start-t.duration,0)}function Rf(e,t,i,s,r,o){s-i<=0&&(eu.warn("Fragment should have a positive duration",t),s=i+t.duration,o=r+t.duration);let a=i,n=s;const l=t.startPTS,d=t.endPTS;if($c(l)){const e=Math.abs(l-i);$c(t.deltaPTS)?t.deltaPTS=Math.max(e,t.deltaPTS):t.deltaPTS=e,a=Math.max(i,l),i=Math.min(i,l),r=Math.min(r,t.startDTS),n=Math.min(s,d),s=Math.max(s,d),o=Math.max(o,t.endDTS)}const h=i-t.start;0!==t.start&&(t.start=i),t.duration=s-t.start,t.startPTS=i,t.maxStartPTS=a,t.startDTS=r,t.endPTS=s,t.minEndPTS=n,t.endDTS=o;const c=t.sn;if(!e||ce.endSN)return 0;let u;const p=c-e.startSN,f=e.fragments;for(f[p]=t,u=p;u>0;u--)Df(f[u],f[u-1]);for(u=p;u=0;e--){const t=s[e].initSegment;if(t){i=t;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;let r,o=0;if(function(e,t,i){const s=t.skippedSegments,r=Math.max(e.startSN,t.startSN)-t.startSN,o=(e.fragmentHint?1:0)+(s?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,a=t.startSN-e.startSN,n=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments;for(let e=r;e<=o;e++){const r=l[a+e];let o=n[e];s&&!o&&e{e.relurl&&(o=e.cc-s.cc),$c(e.startPTS)&&$c(e.endPTS)&&(s.start=s.startPTS=e.startPTS,s.startDTS=e.startDTS,s.maxStartPTS=e.maxStartPTS,s.endPTS=e.endPTS,s.endDTS=e.endDTS,s.minEndPTS=e.minEndPTS,s.duration=e.endPTS-e.startPTS,s.duration&&(r=s),t.PTSKnown=t.alignedSliding=!0),s.elementaryStreams=e.elementaryStreams,s.loader=e.loader,s.stats=e.stats,e.initSegment&&(s.initSegment=e.initSegment,i=e.initSegment)})),i){(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((e=>{var t;!e||e.initSegment&&e.initSegment.relurl!==(null==(t=i)?void 0:t.relurl)||(e.initSegment=i)}))}if(t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((e=>!e)),t.deltaUpdateFailed){eu.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let e=t.skippedSegments;e--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=function(e,t,i){const s=zc({},e);i&&i.forEach((e=>{delete s[e]}));return Object.keys(t).forEach((e=>{const i=new ou(t[e].attr,s[e]);i.isValid?s[e]=i:eu.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(t[e].attr)}"`)})),s}(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));const a=t.fragments;if(o){eu.warn("discontinuity sliding from playlist, take drift into account");for(let e=0;e{t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),r?Rf(t,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):Pf(e,t),a.length&&(t.totalduration=t.edge-a[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;const n=t.advancedDateTime;if(t.advanced&&n){const e=t.edge;t.driftStart||(t.driftStartTime=n,t.driftStart=e),t.driftEndTime=n,t.driftEnd=e}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function Pf(e,t){const i=t.startSN+t.skippedSegments-e.startSN,s=e.fragments;i<0||i>=s.length||Bf(t,s[i].start)}function Bf(e,t){if(t){const i=e.fragments;for(let s=e.skippedSegments;s{const{details:i}=e;null!=i&&i.fragments&&i.fragments.forEach((e=>{e.level=t}))}))}function Of(e){switch(e.details){case Kc.FRAG_LOAD_TIMEOUT:case Kc.KEY_LOAD_TIMEOUT:case Kc.LEVEL_LOAD_TIMEOUT:case Kc.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function Nf(e,t){const i=Of(t);return e.default[(i?"timeout":"error")+"Retry"]}function jf(e,t){const i="linear"===e.backoff?1:Math.pow(2,t);return Math.min(i*e.retryDelayMs,e.maxRetryDelayMs)}function Gf(e){return jc(jc({},e),{errorRetry:null,timeoutRetry:null})}function Wf(e,t,i,s){if(!e)return!1;const r=null==s?void 0:s.code,o=t499)}(r)||!!i);return e.shouldRetry?e.shouldRetry(e,t,i,s,o):o}const zf=function(e,t){let i=0,s=e.length-1,r=null,o=null;for(;i<=s;){r=(i+s)/2|0,o=e[r];const a=t(o);if(a>0)i=r+1;else{if(!(a<0))return o;s=r-1}}return null};function $f(e,t,i=0,s=0,r=.005){let o=null;if(e){o=t[e.sn-t[0].sn+1]||null;const s=e.endDTS-i;s>0&&s<15e-7&&(i+=15e-7)}else 0===i&&0===t[0].start&&(o=t[0]);if(o&&((!e||e.level===o.level)&&0===Vf(i,s,o)||function(e,t,i){if(t&&0===t.start&&t.level0){const s=t.tagList.reduce(((e,t)=>("INF"===t[0]&&(e+=parseFloat(t[1])),e)),i);return e.start<=s}return!1}(o,e,Math.min(r,s))))return o;const a=zf(t,Vf.bind(null,i,s));return!a||a===e&&o?o:a}function Vf(e=0,t=0,i){if(i.start<=e&&i.start+i.duration>e)return 0;const s=Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return i.start+i.duration-s<=e?1:i.start-s>e&&i.start?-1:0}function Hf(e,t,i){const s=1e3*Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return(i.endProgramDateTime||0)-s>e}var Jf=0,qf=2,Kf=3,Yf=5,Qf=0,Xf=1,Zf=2;class em{constructor(e,t){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=eu.log.bind(eu,`${t}:`),this.warn=eu.warn.bind(eu,`${t}:`),this.hls=e}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(e,t,i){const s=null==t?void 0:t.renditionReports;if(s){let r=-1;for(let i=0;i=0&&e>t.partTarget&&(a+=1)}const n=i&&kf(i);return new Lf(o,a>=0?a:void 0,n)}}}loadPlaylist(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}shouldReloadPlaylist(e){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(e)}playlistLoaded(e,t,i){const{details:s,stats:r}=t,o=self.performance.now(),a=r.loading.first?Math.max(0,o-r.loading.first):0;if(s.advancedDateTime=Date.now()-a,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&&If(i,s),!this.canLoad||!s.live)return;let a,n,l;if(s.canBlockReload&&s.endSN&&s.advanced){const e=this.hls.config.lowLatencyMode,r=s.lastPartSn,o=s.endSN,d=s.lastPartIndex,h=r===o,c=e?0:d;-1!==d?(n=h?o+1:r,l=h?c:d+1):n=o+1;const u=s.age,p=u+s.ageHeader;let f=Math.min(p-s.partTarget,1.5*s.targetduration);if(f>0){if(i&&f>i.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${i.tuneInGoal} to: ${f} with playlist age: ${s.age}`),f=0;else{const e=Math.floor(f/s.targetduration);if(n+=e,void 0!==l){l+=Math.round(f%s.targetduration/s.partTarget)}this.log(`CDN Tune-in age: ${s.ageHeader}s last advanced ${u.toFixed(2)}s goal: ${f} skip sn ${e} to part ${l}`)}s.tuneInGoal=f}if(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l),e||!h)return void this.loadPlaylist(a)}else(s.canBlockReload||s.canSkipUntil)&&(a=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l));const d=this.hls.mainForwardBufferInfo,h=d?d.end-d.len:0,c=function(e,t=1/0){let i=1e3*e.targetduration;if(e.updated){const s=e.fragments,r=4;if(s.length&&i*r>t){const e=1e3*s[s.length-1].duration;ethis.requestScheduled+c&&(this.requestScheduled=r.loading.start),void 0!==n&&s.canBlockReload?this.requestScheduled=r.loading.first+c-(1e3*s.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+cthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(e,t,i,s){let r=kf(e);return null!=t&&t.skip&&e.deltaUpdateFailed&&(i=t.msn,s=t.part,r=Sf),new Lf(i,s,r)}checkRetry(e){const t=e.details,i=Of(e),s=e.errorAction,{action:r,retryCount:o=0,retryConfig:a}=s||{},n=!!s&&!!a&&(r===Yf||!s.resolved&&r===qf);if(n){var l;if(this.requestScheduled=-1,o>=a.maxNumRetry)return!1;if(i&&null!=(l=e.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{const e=jf(a,o);this.timer=self.setTimeout((()=>this.loadPlaylist()),e),this.warn(`Retrying playlist loading ${o+1}/${a.maxNumRetry} after "${t}" in ${e}ms`)}e.levelRetry=!0,s.resolved=!0}return n}}class tm{constructor(e,t=0,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}sample(e,t){const i=Math.pow(this.alpha_,e);this.estimate_=t*(1-i)+i*this.estimate_,this.totalWeight_+=e}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}}class im{constructor(e,t,i,s=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 tm(e),this.fast_=new tm(t),this.defaultTTFB_=s,this.ttfb_=new tm(e)}update(e,t){const{slow_:i,fast_:s,ttfb_:r}=this;i.halfLife!==e&&(this.slow_=new tm(e,i.getEstimate(),i.getTotalWeight())),s.halfLife!==t&&(this.fast_=new tm(t,s.getEstimate(),s.getTotalWeight())),r.halfLife!==e&&(this.ttfb_=new tm(e,r.getEstimate(),r.getTotalWeight()))}sample(e,t){const i=(e=Math.max(e,this.minDelayMs_))/1e3,s=8*t/i;this.fast_.sample(i,s),this.slow_.sample(i,s)}sampleTTFB(e){const t=e/1e3,i=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(i,Math.max(e,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}destroy(){}}const sm={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},rm={};function om(e,t,i,s,r,o){const a=e.audioCodec?e.audioGroups:null,n=null==o?void 0:o.audioCodec,l=null==o?void 0:o.channels,d=l?parseInt(l):n?1/0:2;let h=null;if(null!=a&&a.length)try{h=1===a.length&&a[0]?t.groups[a[0]].channels:a.reduce(((e,i)=>{if(i){const s=t.groups[i];if(!s)throw new Error(`Audio track group ${i} not found`);Object.keys(s.channels).forEach((t=>{e[t]=(e[t]||0)+s.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(s,30)||"SDR"!==e.videoRange&&e.videoRange!==i||e.bitrate>Math.max(r,8e6))||!!h&&$c(d)&&Object.keys(h).some((e=>parseInt(e)>d))}function am(e,t,i){const s=e.videoCodec,r=e.audioCodec;if(!s||!r||!i)return Promise.resolve(sm);const o={width:e.width,height:e.height,bitrate:Math.ceil(Math.max(.9*e.bitrate,e.averageBitrate)),framerate:e.frameRate||30},a=e.videoRange;"SDR"!==a&&(o.transferFunction=a.toLowerCase());const n=s.split(",").map((e=>({type:"media-source",video:jc(jc({},o),{},{contentType:Dp(e,"video")})})));return r&&e.audioGroups&&e.audioGroups.forEach((e=>{var i;e&&(null==(i=t.groups[e])||i.tracks.forEach((t=>{if(t.groupId===e){const e=t.channels||"",i=parseFloat(e);$c(i)&&i>2&&n.push.apply(n,r.split(",").map((e=>({type:"media-source",audio:{contentType:Dp(e,"audio"),channels:""+i}}))))}})))})),Promise.all(n.map((e=>{const t=function(e){const{audio:t,video:i}=e,s=i||t;if(s){const e=s.contentType.split('"')[1];if(i)return`r${i.height}x${i.width}f${Math.ceil(i.framerate)}${i.transferFunction||"sd"}_${e}_${Math.ceil(i.bitrate/1e5)}`;if(t)return`c${t.channels}${t.spatialRendering?"s":"n"}_${e}`}return""}(e);return rm[t]||(rm[t]=i.decodingInfo(e))}))).then((e=>({supported:!e.some((e=>!e.supported)),configurations:n,decodingInfoResults:e}))).catch((e=>({supported:!1,configurations:n,decodingInfoResults:[],error:e})))}function nm(e,t){let i=!1,s=[];return e&&(i="SDR"!==e,s=[e]),t&&(s=t.allowedVideoRanges||wf.slice(0),i=void 0!==t.preferHDR?t.preferHDR:function(){if("function"==typeof matchMedia){const e=matchMedia("(dynamic-range: high)"),t=matchMedia("bad query");if(e.media!==t.media)return!0===e.matches}return!1}(),s=i?s.filter((e=>"SDR"!==e)):["SDR"]),{preferHDR:i,allowedVideoRanges:s}}function lm(e,t){eu.log(`[abr] start candidates with "${e}" ignored because ${t}`)}function dm(e,t,i){if("attrs"in e){const i=t.indexOf(e);if(-1!==i)return i}for(let s=0;s-1===s.indexOf(e)))}(n,t.characteristics))&&(void 0===i||i(e,t))}function cm(e,t){const{audioCodec:i,channels:s}=e;return!(void 0!==i&&(t.audioCodec||"").substring(0,4)!==i.substring(0,4)||void 0!==s&&s!==(t.channels||"2"))}function um(e,t,i){for(let s=t;s;s--)if(i(e[s]))return s;for(let s=t+1;s{const o=this.fragments[s];if(!o)return;if(r>=o.body.sn)return;if(!o.buffered&&!o.loaded)return void(o.body.type===i&&this.removeFragment(o.body));const a=o.range[e];a&&a.time.some((e=>{const i=!this.isTimeBuffered(e.startPTS,e.endPTS,t);return i&&this.removeFragment(o.body),i}))}))}detectPartialFragments(e){const t=this.timeRanges,{frag:i,part:s}=e;if(!t||"initSegment"===i.sn)return;const r=bm(i),o=this.fragments[r];if(!o||o.buffered&&i.gap)return;const a=!i.relurl;if(Object.keys(t).forEach((e=>{const r=i.elementaryStreams[e];if(!r)return;const n=t[e],l=a||!0===r.partial;o.range[e]=this.getBufferedTimes(i,s,l,n)})),o.loaded=null,Object.keys(o.range).length){o.buffered=!0;(o.body.endList=i.endList||o.body.endList)&&(this.endListFragments[o.body.type]=o),Am(o)||this.removeParts(i.sn-1,i.type)}else this.removeFragment(o.body)}removeParts(e,t){const i=this.activePartLists[t];i&&(this.activePartLists[t]=i.filter((t=>t.fragment.sn>=e)))}fragBuffered(e,t){const i=bm(e);let s=this.fragments[i];!s&&t&&(s=this.fragments[i]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),s&&(s.loaded=null,s.buffered=!0)}getBufferedTimes(e,t,i,s){const r={time:[],partial:i},o=e.start,a=e.end,n=e.minEndPTS||a,l=e.maxStartPTS||o;for(let e=0;e=t&&n<=i){r.time.push({startPTS:Math.max(o,s.start(e)),endPTS:Math.min(a,s.end(e))});break}if(ot){const t=Math.max(o,s.start(e)),i=Math.min(a,s.end(e));i>t&&(r.partial=!0,r.time.push({startPTS:t,endPTS:i}))}else if(a<=t)break}return r}getPartialFragment(e){let t,i,s,r=null,o=0;const{bufferPadding:a,fragments:n}=this;return Object.keys(n).forEach((l=>{const d=n[l];d&&Am(d)&&(i=d.body.start-a,s=d.body.end+a,e>=i&&e<=s&&(t=Math.min(e-i,s-e),o<=t&&(r=d.body,o=t)))})),r}isEndListAppended(e){const t=this.endListFragments[e];return void 0!==t&&(t.buffered||Am(t))}getState(e){const t=bm(e),i=this.fragments[t];return i?i.buffered?Am(i)?mm:gm:fm:pm}isTimeBuffered(e,t,i){let s,r;for(let o=0;o=s&&t<=r)return!0;if(t<=s)return!1}return!1}onFragLoaded(e,t){const{frag:i,part:s}=t;if("initSegment"===i.sn||i.bitrateTest)return;const r=s?null:t,o=bm(i);this.fragments[o]={body:i,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){const{frag:i,part:s,timeRanges:r}=t;if("initSegment"===i.sn)return;const o=i.type;if(s){let e=this.activePartLists[o];e||(this.activePartLists[o]=e=[]),e.push(s)}this.timeRanges=r,Object.keys(r).forEach((e=>{const t=r[e];this.detectEvictedFragments(e,t,o,s)}))}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){const t=bm(e);return!!this.fragments[t]}hasParts(e){var t;return!(null==(t=this.activePartLists[e])||!t.length)}removeFragmentsInRange(e,t,i,s,r){s&&!this.hasGaps||Object.keys(this.fragments).forEach((o=>{const a=this.fragments[o];if(!a)return;const n=a.body;n.type!==i||s&&!n.gap||n.starte&&(a.buffered||r)&&this.removeFragment(n)}))}removeFragment(e){const t=bm(e);e.stats.loaded=0,e.clearElementaryStreamInfo();const i=this.activePartLists[e.type];if(i){const t=e.sn;this.activePartLists[e.type]=i.filter((e=>e.fragment.sn!==t))}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}}function Am(e){var t,i,s;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==(s=e.range.audiovideo)?void 0:s.partial))}function bm(e){return`${e.type}_${e.level}_${e.sn}`}const vm={length:0,start:()=>0,end:()=>0};class _m{static isBuffered(e,t){try{if(e){const i=_m.getBuffered(e);for(let e=0;e=i.start(e)&&t<=i.end(e))return!0}}catch(e){}return!1}static bufferInfo(e,t,i){try{if(e){const s=_m.getBuffered(e),r=[];let o;for(o=0;oo&&(s[r-1].end=e[t].end):s.push(e[t])}else s.push(e[t])}else s=e;let r,o=0,a=t,n=t;for(let e=0;e=l&&ti.startCC||e&&e.cc{if(this.loader&&this.loader.destroy(),e.gap){if(e.tagList.some((e=>"GAP"===e[0])))return void n(Rm(e));e.gap=!1}const l=this.loader=e.loader=r?new r(s):new o(s),d=Dm(e),h=Gf(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===e.sn?1/0:Cm};e.stats=l.stats,l.load(d,c,{onSuccess:(t,i,s,r)=>{this.resetLoader(e,l);let o=t.data;s.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(o.slice(0,16)),o=o.slice(16)),a({frag:e,part:null,payload:o,networkDetails:r})},onError:(t,s,r,o)=>{this.resetLoader(e,l),n(new Im({type:qc.NETWORK_ERROR,details:Kc.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:jc({url:i,data:void 0},t),error:new Error(`HTTP Error ${t.code} ${t.text}`),networkDetails:r,stats:o}))},onAbort:(t,i,s)=>{this.resetLoader(e,l),n(new Im({type:qc.NETWORK_ERROR,details:Kc.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:s,stats:t}))},onTimeout:(t,i,s)=>{this.resetLoader(e,l),n(new Im({type:qc.NETWORK_ERROR,details:Kc.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:s,stats:t}))},onProgress:(i,s,r,o)=>{t&&t({frag:e,part:null,payload:r,networkDetails:o})}})}))}loadPart(e,t,i){this.abort();const s=this.config,r=s.fLoader,o=s.loader;return new Promise(((a,n)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap)return void n(Rm(e,t));const l=this.loader=e.loader=r?new r(s):new o(s),d=Dm(e,t),h=Gf(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:Cm};t.stats=l.stats,l.load(d,c,{onSuccess:(s,r,o,n)=>{this.resetLoader(e,l),this.updateStatsFromPart(e,t);const d={frag:e,part:t,payload:s.data,networkDetails:n};i(d),a(d)},onError:(i,s,r,o)=>{this.resetLoader(e,l),n(new Im({type:qc.NETWORK_ERROR,details:Kc.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:jc({url:d.url,data:void 0},i),error:new Error(`HTTP Error ${i.code} ${i.text}`),networkDetails:r,stats:o}))},onAbort:(i,s,r)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,l),n(new Im({type:qc.NETWORK_ERROR,details:Kc.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:r,stats:i}))},onTimeout:(i,s,r)=>{this.resetLoader(e,l),n(new Im({type:qc.NETWORK_ERROR,details:Kc.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:r,stats:i}))}})}))}updateStatsFromPart(e,t){const i=e.stats,s=t.stats,r=s.total;if(i.loaded+=s.loaded,r){const s=Math.round(e.duration/t.duration),o=Math.min(Math.round(i.loaded/r),s),a=(s-o)*Math.round(i.loaded/o);i.total=i.loaded+a}else i.total=Math.max(i.loaded,i.total);const o=i.loading,a=s.loading;o.start?o.first+=a.first-a.start:(o.start=a.start,o.first=a.first),o.end=a.end}resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()}}function Dm(e,t=null){const i=t||e,s={frag:e,part:t,responseType:"arraybuffer",url:i.url,headers:{},rangeStart:0,rangeEnd:0},r=i.byteRangeStartOffset,o=i.byteRangeEndOffset;if($c(r)&&$c(o)){var a;let t=r,i=o;if("initSegment"===e.sn&&"AES-128"===(null==(a=e.decryptdata)?void 0:a.method)){const e=o-r;e%16&&(i=o+(16-e%16)),0!==r&&(s.resetIV=!0,t=r-16)}s.rangeStart=t,s.rangeEnd=i}return s}function Rm(e,t){const i=new Error(`GAP ${e.gap?"tag":"attribute"} found`),s={type:qc.MEDIA_ERROR,details:Kc.FRAG_GAP,fatal:!1,frag:e,error:i,networkDetails:null};return t&&(s.part=t),(t||e).stats.aborted=!0,new Im(s)}class Im extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}}class Pm{constructor(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}decrypt(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)}}class Bm{constructor(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}class Mm{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(e){const t=new DataView(e),i=new Uint32Array(4);for(let e=0;e<4;e++)i[e]=t.getUint32(4*e);return i}initTable(){const e=this.sBox,t=this.invSBox,i=this.subMix,s=i[0],r=i[1],o=i[2],a=i[3],n=this.invSubMix,l=n[0],d=n[1],h=n[2],c=n[3],u=new Uint32Array(256);let p=0,f=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let i=f^f<<1^f<<2^f<<3^f<<4;i=i>>>8^255&i^99,e[p]=i,t[i]=p;const n=u[p],m=u[n],g=u[m];let y=257*u[i]^16843008*i;s[p]=y<<24|y>>>8,r[p]=y<<16|y>>>16,o[p]=y<<8|y>>>24,a[p]=y,y=16843009*g^65537*m^257*n^16843008*p,l[i]=y<<24|y>>>8,d[i]=y<<16|y>>>16,h[i]=y<<8|y>>>24,c[i]=y,p?(p=n^u[u[u[g^n]]],f^=u[u[f]]):p=f=1}}expandKey(e){const t=this.uint8ArrayToUint32Array_(e);let i=!0,s=0;for(;s{if(!this.subtle)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new Pm(this.subtle,new Uint8Array(i)).decrypt(e.buffer,t)})).catch((s=>(eu.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${s.name}: ${s.message}`),this.onWebCryptoError(e,t,i))))}onWebCryptoError(e,t,i){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,i);const s=this.flush();if(s)return s.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(e){let t=e;const i=e.length-e.length%16;return i!==e.length&&(t=xu(e,0,i),this.remainderData=xu(e,i)),t}logOnce(e){this.logEnabled&&(eu.log(`[decrypter]: ${e}`),this.logEnabled=!1)}}const Um=function(e){let t="";const i=e.length;for(let s=0;s1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}{constructor(e,t,i,s,r){super(),this.hls=void 0,this.fragPrevious=null,this.fragCurrent=null,this.fragmentTracker=void 0,this.transmuxer=null,this._state=Om,this.playlistType=void 0,this.media=null,this.mediaBuffer=null,this.config=void 0,this.bitrateTest=!1,this.lastCurrentTime=0,this.nextLoadPosition=0,this.startPosition=0,this.startTimeOffset=null,this.loadedmetadata=!1,this.retryDate=0,this.levels=null,this.fragmentLoader=void 0,this.keyLoader=void 0,this.levelLastLoaded=null,this.startFragRequested=!1,this.decrypter=void 0,this.initPTS=[],this.onvseeking=null,this.onvended=null,this.logPrefix="",this.log=void 0,this.warn=void 0,this.playlistType=r,this.logPrefix=s,this.log=eu.log.bind(eu,`${s}:`),this.warn=eu.warn.bind(eu,`${s}:`),this.hls=e,this.fragmentLoader=new xm(e.config),this.keyLoader=i,this.fragmentTracker=t,this.config=e.config,this.decrypter=new Fm(e.config),e.on(Jc.MANIFEST_LOADED,this.onManifestLoaded,this)}doTick(){this.onTickEnd()}onTickEnd(){}startLoad(e){}stopLoad(){this.fragmentLoader.abort(),this.keyLoader.abort(this.playlistType);const e=this.fragCurrent;null!=e&&e.loader&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=Om}_streamEnded(e,t){if(t.live||e.nextStart||!e.end||!this.media)return!1;const i=t.partList;if(null!=i&&i.length){const e=i[i.length-1];return _m.isBuffered(this.media,e.start+e.duration/2)}const s=t.fragments[t.fragments.length-1].type;return this.fragmentTracker.isEndListAppended(s)}getLevelDetails(){var e;if(this.levels&&null!==this.levelLastLoaded)return null==(e=this.levelLastLoaded)?void 0:e.details}onMediaAttached(e,t){const i=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),i.addEventListener("seeking",this.onvseeking),i.addEventListener("ended",this.onvended);const s=this.config;this.levels&&s.autoStartLoad&&this.state===Om&&this.startLoad(s.startPosition)}onMediaDetaching(){const e=this.media;null!=e&&e.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),e&&this.onvseeking&&this.onvended&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvended=null),this.keyLoader&&this.keyLoader.detach(),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()}onMediaSeeking(){const{config:e,fragCurrent:t,media:i,mediaBuffer:s,state:r}=this,o=i?i.currentTime:0,a=_m.bufferInfo(s||i,o,e.maxBufferHole);if(this.log(`media seeking to ${$c(o)?o.toFixed(3):o}, state: ${r}`),this.state===Hm)this.resetLoadingState();else if(t){const i=e.maxFragLookUpTolerance,s=t.start-i,r=t.start+t.duration+i;if(!a.len||ra.end){const e=o>r;(o{if(this.fragContextChanged(e))return this.warn(`Fragment ${e.sn}${t.part?" p: "+t.part.index:""} of level ${e.level} was dropped during download.`),void this.fragmentTracker.removeFragment(e);e.stats.chunkCount++,this._handleFragmentLoadProgress(t)})).then((t=>{if(!t)return;const i=this.state;this.fragContextChanged(e)?(i===Gm||!this.fragCurrent&&i===$m)&&(this.fragmentTracker.removeFragment(e),this.state=Nm):("payload"in t&&(this.log(`Loaded fragment ${e.sn} of level ${e.level}`),this.hls.trigger(Jc.FRAG_LOADED,t)),this._handleFragmentLoadComplete(t))})).catch((t=>{this.state!==Om&&this.state!==Jm&&(this.warn(`Frag error: ${(null==t?void 0:t.message)||t}`),this.resetFragmentLoading(e))}))}clearTrackerIfNeeded(e){var t;const{fragmentTracker:i}=this;if(i.getState(e)===fm){const t=e.type,s=this.getFwdBufferInfo(this.mediaBuffer,t),r=Math.max(e.duration,s?s.len:this.config.maxBufferLength),o=this.backtrackFragment;(1===(o?e.sn-o.sn:0)||this.reduceMaxBufferLength(r,e.duration))&&i.removeFragment(e)}else 0===(null==(t=this.mediaBuffer)?void 0:t.buffered.length)?i.removeAllFragments():i.hasParts(e.type)&&(i.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type}),i.getState(e)===mm&&i.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){const t=e.fragments[e.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type})}e.fragments[0]||(e.deltaUpdateFailed=!0)}flushMainBuffer(e,t,i=null){if(!(e-t))return;const s={startOffset:e,endOffset:t,type:i};this.hls.trigger(Jc.BUFFER_FLUSHING,s)}_loadInitSegment(e,t){this._doFragLoad(e,t).then((t=>{if(!t||this.fragContextChanged(e)||!this.levels)throw new Error("init load aborted");return t})).then((t=>{const{hls:i}=this,{payload:s}=t,r=e.decryptdata;if(s&&s.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const o=self.performance.now();return this.decrypter.decrypt(new Uint8Array(s),r.key.buffer,r.iv.buffer).catch((t=>{throw i.trigger(Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((s=>{const r=self.performance.now();return i.trigger(Jc.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:o,tdecrypt:r}}),t.payload=s,this.completeInitSegmentLoad(t)}))}return this.completeInitSegmentLoad(t)})).catch((t=>{this.state!==Om&&this.state!==Jm&&(this.warn(t),this.resetFragmentLoading(e))}))}completeInitSegmentLoad(e){const{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");const i=e.frag.stats;this.state=Nm,e.frag.data=new Uint8Array(e.payload),i.parsing.start=i.buffering.start=self.performance.now(),i.parsing.end=i.buffering.end=self.performance.now(),this.tick()}fragContextChanged(e){const{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){var i,s,r,o;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.playlistType===ef?"level":"track"} ${e.level} (frag:[${(null!=(i=e.startPTS)?i:NaN).toFixed(3)}-${(null!=(s=e.endPTS)?s:NaN).toFixed(3)}] > buffer:${a?Um(_m.getBuffered(a)):"(detached)"})`),"initSegment"!==e.sn){var n;if(e.type!==sf){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return void(this.state=Nm)}const t=null==(n=this.levels)?void 0:n[e.level];null!=t&&t.fragmentError&&(this.log(`Resetting level fragment error count of ${t.fragmentError} on frag buffered`),t.fragmentError=0)}this.state=Nm,a&&(!this.loadedmetadata&&e.type==ef&&a.buffered.length&&(null==(r=this.fragCurrent)?void 0:r.sn)===(null==(o=this.fragPrevious)?void 0:o.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(e){const{transmuxer:t}=this;if(!t)return;const{frag:i,part:s,partsLoaded:r}=e,o=!r||0===r.length||r.some((e=>!e)),a=new wm(i.level,i.sn,i.stats.chunkCount+1,0,s?s.index:-1,!o);t.flush(a)}_handleFragmentLoadProgress(e){}_doFragLoad(e,t,i=null,s){var r;const o=null==t?void 0:t.details;if(!this.levels||!o)throw new Error(`frag load aborted, missing level${o?"":" detail"}s`);let a=null;if(!e.encrypted||null!=(r=e.decryptdata)&&r.key?!e.encrypted&&o.encryptedFragments.length&&this.keyLoader.loadClear(e,o.encryptedFragments):(this.log(`Loading key for ${e.sn} of [${o.startSN}-${o.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${e.level}`),this.state=jm,this.fragCurrent=e,a=this.keyLoader.load(e).then((e=>{if(!this.fragContextChanged(e.frag))return this.hls.trigger(Jc.KEY_LOADED,e),this.state===jm&&(this.state=Nm),e})),this.hls.trigger(Jc.KEY_LOADING,{frag:e}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),i=Math.max(e.start,i||0),this.config.lowLatencyMode&&"initSegment"!==e.sn){const r=o.partList;if(r&&s){i>e.end&&o.fragmentHint&&(e=o.fragmentHint);const n=this.getNextPart(r,e,i);if(n>-1){const l=r[n];let d;return this.log(`Loading part sn: ${e.sn} p: ${l.index} cc: ${e.cc} of playlist [${o.startSN}-${o.endSN}] parts [0-${n}-${r.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=Gm,d=a?a.then((i=>!i||this.fragContextChanged(i.frag)?null:this.doFragPartsLoad(e,l,t,s))).catch((e=>this.handleFragLoadError(e))):this.doFragPartsLoad(e,l,t,s).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Jc.FRAG_LOADING,{frag:e,part:l,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):d}if(!e.url||this.loadedEndOfParts(r,i))return Promise.resolve(null)}}this.log(`Loading fragment ${e.sn} cc: ${e.cc} ${o?"of ["+o.startSN+"-"+o.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),$c(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=Gm;const n=this.config.progressive;let l;return l=n&&a?a.then((t=>!t||this.fragContextChanged(null==t?void 0:t.frag)?null:this.fragmentLoader.load(e,s))).catch((e=>this.handleFragLoadError(e))):Promise.all([this.fragmentLoader.load(e,n?s:void 0),a]).then((([e])=>(!n&&e&&s&&s(e),e))).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(Jc.FRAG_LOADING,{frag:e,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(e,t,i,s){return new Promise(((r,o)=>{var a;const n=[],l=null==(a=i.details)?void 0:a.partList,d=t=>{this.fragmentLoader.loadPart(e,t,s).then((s=>{n[t.index]=s;const o=s.part;this.hls.trigger(Jc.FRAG_LOADED,s);const a=Mf(i,e.sn,t.index+1)||Ff(l,e.sn,t.index+1);if(!a)return r({frag:e,part:o,partsLoaded:n});d(a)})).catch(o)};d(t)}))}handleFragLoadError(e){if("data"in e){const t=e.data;e.data&&t.details===Kc.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(Jc.ERROR,t)}else this.hls.trigger(Jc.ERROR,{type:qc.OTHER_ERROR,details:Kc.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){const t=this.getCurrentContext(e);if(!t||this.state!==$m)return void(this.fragCurrent||this.state===Om||this.state===Jm||(this.state=Nm));const{frag:i,part:s,level:r}=t,o=self.performance.now();i.stats.parsing.end=o,s&&(s.stats.parsing.end=o),this.updateLevelTiming(i,s,r,e.partial)}getCurrentContext(e){const{levels:t,fragCurrent:i}=this,{level:s,sn:r,part:o}=e;if(null==t||!t[s])return this.warn(`Levels object was unset while buffering fragment ${r} of level ${s}. The current chunk will not be buffered.`),null;const a=t[s],n=o>-1?Mf(a,r,o):null,l=n?n.fragment:function(e,t,i){if(null==e||!e.details)return null;const s=e.details;let r=s.fragments[t-s.startSN];return r||(r=s.fragmentHint,r&&r.sn===t?r:to&&this.flushMainBuffer(a,e.start)}getFwdBufferInfo(e,t){const i=this.getLoadPosition();return $c(i)?this.getFwdBufferInfoAtPos(e,i,t):null}getFwdBufferInfoAtPos(e,t,i){const{config:{maxBufferHole:s}}=this,r=_m.bufferInfo(e,t,s);if(0===r.len&&void 0!==r.nextStart){const o=this.fragmentTracker.getBufferedFrag(t,i);if(o&&r.nextStart=s&&(i.maxMaxBufferLength=r,this.warn(`Reduce max buffer length to ${r}s`),!0)}getAppendedFrag(e,t=ef){const i=this.fragmentTracker.getAppendedFrag(e,ef);return i&&"fragment"in i?i.fragment:i}getNextFragment(e,t){const i=t.fragments,s=i.length;if(!s)return null;const{config:r}=this,o=i[0].start;let a;if(t.live){const n=r.initialLiveManifestSize;if(st}getNextFragmentLoopLoading(e,t,i,s,r){const o=e.gap,a=this.getNextFragment(this.nextLoadPosition,t);if(null===a)return a;if(e=a,o&&e&&!e.gap&&i.nextStart){const t=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,i.nextStart,s);if(null!==t&&i.len+t.len>=r)return this.log(`buffer full after gaps in "${s}" playlist starting at sn: ${e.sn}`),null}return e}mapToInitFragWhenRequired(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment}getNextPart(e,t,i){let s=-1,r=!1,o=!0;for(let a=0,n=e.length;a-1&&ii.start&&i.loaded}getInitialLiveFragment(e,t){const i=this.fragPrevious;let s=null;if(i){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${i.programDateTime}`),s=function(e,t,i){if(null===t||!Array.isArray(e)||!e.length||!$c(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(let s=0;s=e.startSN&&r<=e.endSN){const o=t[r-e.startSN];i.cc===o.cc&&(s=o,this.log(`Live playlist, switching playlist, load frag with next SN: ${s.sn}`))}s||(s=function(e,t){return zf(e,(e=>e.cct?-1:0))}(t,i.cc),s&&this.log(`Live playlist, switching playlist, load frag with same CC: ${s.sn}`))}}else{const t=this.hls.liveSyncPosition;null!==t&&(s=this.getFragmentAtPosition(t,this.bitrateTest?e.fragmentEnd:e.edge,e))}return s}getFragmentAtPosition(e,t,i){const{config:s}=this;let{fragPrevious:r}=this,{fragments:o,endSN:a}=i;const{fragmentHint:n}=i,{maxFragLookUpTolerance:l}=s,d=i.partList,h=!!(s.lowLatencyMode&&null!=d&&d.length&&n);let c;if(h&&n&&!this.bitrateTest&&(o=o.concat(n),a=n.sn),et-l?0:l)}else c=o[o.length-1];if(c){const e=c.sn-i.startSN,t=this.fragmentTracker.getState(c);if((t===gm||t===mm&&c.gap)&&(r=c),r&&c.sn===r.sn&&(!h||d[0].fragment.sn>c.sn)){if(r&&c.level===r.level){const t=o[e+1];c=c.sn=o-t.maxFragLookUpTolerance&&r<=a;if(null!==s&&i.duration>s&&(r${e.startSN} prev-sn: ${r?r.sn:"na"} fragments: ${s}`),o}return r}waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)}setStartPosition(e,t){let i=this.startPosition;if(i ${null==(s=this.fragCurrent)?void 0:s.url}`);const r=t.details===Kc.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(i,!0);const o=t.errorAction,{action:a,retryCount:n=0,retryConfig:l}=o||{};if(o&&a===Yf&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const s=jf(l,n);this.warn(`Fragment ${i.sn} of ${e} ${i.level} errored with ${t.details}, retrying loading ${n+1}/${l.maxNumRetry} in ${s}ms`),o.resolved=!0,this.retryDate=self.performance.now()+s,this.state=Wm}else if(l&&o){if(this.resetFragmentErrors(e),!(n.5;r&&this.reduceMaxBufferLength(s.len,(null==t?void 0:t.duration)||10);const o=!r;return o&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${i} buffer`),t&&(this.fragmentTracker.removeFragment(t),this.nextLoadPosition=t.start),this.resetLoadingState(),o}return!1}resetFragmentErrors(e){e===tf&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==Om&&(this.state=Nm)}afterBufferFlushed(e,t,i){if(!e)return;const s=_m.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,s,i),this.state===Hm&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=Nm}resetStartWhenNotLoaded(e){if(!this.loadedmetadata){this.startFragRequested=!1;const t=e?e.details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(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()}removeUnbufferedFrags(e=0){this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)}updateLevelTiming(e,t,i,s){var r;const o=i.details;if(!o)return void this.warn("level.details undefined");if(!Object.keys(e.elementaryStreams).reduce(((t,r)=>{const a=e.elementaryStreams[r];if(a){const n=a.endPTS-a.startPTS;if(n<=0)return this.warn(`Could not parse fragment ${e.sn} ${r} duration reliably (${n})`),t||!1;const l=s?0:Rf(o,e,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(Jc.LEVEL_PTS_UPDATED,{details:o,level:i,drift:l,type:r,frag:e,start:a.startPTS,end:a.endPTS}),!0}return t}),!1)&&null===(null==(r=this.transmuxer)?void 0:r.error)){const t=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(t.message),this.hls.trigger(Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.FRAG_PARSING_ERROR,fatal:!1,error:t,frag:e,reason:`Found no media in msn ${e.sn} of level "${i.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=Vm,this.hls.trigger(Jc.FRAG_PARSED,{frag:e,part:t})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(e){"demuxerWorker"===e.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(e){const t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}}class Qm{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){const{chunks:e,dataLength:t}=this;let i;return e.length?(i=1===e.length?e[0]:function(e,t){const i=new Uint8Array(t);let s=0;for(let t=0;t0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:uf,duration:Number.POSITIVE_INFINITY});r{if($c(e))return 90*e;return 9e4*t+(i?9e4*i.baseTime/i.timescale:0)};function tg(e,t){return 255===e[t]&&240==(246&e[t+1])}function ig(e,t){return 1&e[t+1]?7:9}function sg(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function rg(e,t){return t+1=e.length)return!1;const s=sg(e,t);if(s<=i)return!1;const r=t+s;return r===e.length||rg(e,r)}return!1}function ag(e,t,i,s,r){if(!e.samplerate){const o=function(e,t,i,s){let r,o,a,n;const l=navigator.userAgent.toLowerCase(),d=s,h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r=1+((192&t[i+2])>>>6);const c=(60&t[i+2])>>>2;if(!(c>h.length-1))return a=(1&t[i+2])<<2,a|=(192&t[i+3])>>>6,eu.log(`manifest codec:${s}, ADTS type:${r}, samplingIndex:${c}`),/firefox/i.test(l)?c>=6?(r=5,n=new Array(4),o=c-3):(r=2,n=new Array(2),o=c):-1!==l.indexOf("android")?(r=2,n=new Array(2),o=c):(r=5,n=new Array(4),s&&(-1!==s.indexOf("mp4a.40.29")||-1!==s.indexOf("mp4a.40.5"))||!s&&c>=6?o=c-3:((s&&-1!==s.indexOf("mp4a.40.2")&&(c>=6&&1===a||/vivaldi/i.test(l))||!s&&1===a)&&(r=2,n=new Array(2)),o=c)),n[0]=r<<3,n[0]|=(14&c)>>1,n[1]|=(1&c)<<7,n[1]|=a<<3,5===r&&(n[1]|=(14&o)>>1,n[2]=(1&o)<<7,n[2]|=8,n[3]=0),{config:n,samplerate:h[c],channelCount:a,codec:"mp4a.40."+r,manifestCodec:d};{const t=new Error(`invalid ADTS sampling index:${c}`);e.emit(Jc.ERROR,Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.FRAG_PARSING_ERROR,fatal:!0,error:t,reason:t.message})}}(t,i,s,r);if(!o)return;e.config=o.config,e.samplerate=o.samplerate,e.channelCount=o.channelCount,e.codec=o.codec,e.manifestCodec=o.manifestCodec,eu.log(`parsed codec:${e.codec}, rate:${o.samplerate}, channels:${o.channelCount}`)}}function ng(e){return 9216e4/e}function lg(e,t,i,s,r){const o=s+r*ng(e.samplerate),a=function(e,t){const i=ig(e,t);if(t+i<=e.length){const s=sg(e,t)-i;if(s>0)return{headerLength:i,frameLength:s}}}(t,i);let n;if(a){const{frameLength:s,headerLength:r}=a,l=r+s,d=Math.max(0,i+l-t.length);d?(n=new Uint8Array(l-r),n.set(t.subarray(i+r,t.length),0)):n=t.subarray(i+r,i+l);const h={unit:n,pts:o};return d||e.samples.push(h),{sample:h,length:l,missing:d}}const l=t.length-i;n=new Uint8Array(l),n.set(t.subarray(i,t.length),0);return{sample:{unit:n,pts:o},length:l,missing:-1}}let dg=null;const hg=[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],cg=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],ug=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],pg=[0,1,1,4];function fg(e,t,i,s,r){if(i+24>t.length)return;const o=mg(t,i);if(o&&i+o.frameLength<=t.length){const a=s+r*(9e4*o.samplesPerFrame/o.sampleRate),n={unit:t.subarray(i,i+o.frameLength),pts:a,dts:a};return e.config=[],e.channelCount=o.channelCount,e.samplerate=o.sampleRate,e.samples.push(n),{sample:n,length:o.frameLength,missing:0}}}function mg(e,t){const i=e[t+1]>>3&3,s=e[t+1]>>1&3,r=e[t+2]>>4&15,o=e[t+2]>>2&3;if(1!==i&&0!==r&&15!==r&&3!==o){const a=e[t+2]>>1&1,n=e[t+3]>>6,l=1e3*hg[14*(3===i?3-s:3===s?3:4)+r-1],d=cg[3*(3===i?0:2===i?1:2)+o],h=3===n?1:2,c=ug[i][s],u=pg[s],p=8*c*u,f=Math.floor(c*l/d+a)*u;if(null===dg){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);dg=e?parseInt(e[1]):0}return!!dg&&dg<=87&&2===s&&l>=224e3&&0===n&&(e[t+3]=128|e[t+3]),{sampleRate:d,channelCount:h,frameLength:f,samplesPerFrame:p}}}function gg(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function yg(e,t){return t+1{let i=0,s=5;t+=s;const r=new Uint32Array(1),o=new Uint32Array(1),a=new Uint8Array(1);for(;s>0;){a[0]=e[t];const n=Math.min(s,8),l=8-n;o[0]=4278190080>>>24+l<>l,i=i?i<t.length)return-1;if(11!==t[i]||119!==t[i+1])return-1;const o=t[i+4]>>6;if(o>=3)return-1;const a=[48e3,44100,32e3][o],n=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*n+o];if(i+l>t.length)return-1;const d=t[i+6]>>5;let h=0;2===d?h+=2:(1&d&&1!==d&&(h+=2),4&d&&(h+=2));const 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([o<<6|p<<1|f>>2,(3&f)<<6|d<<3|c<<2|n>>4,n<<4&224]),g=s+r*(1536/a*9e4),y=t.subarray(i,i+l);return e.config=m,e.channelCount=u,e.samplerate=a,e.samples.push({unit:y,pts:g}),l}class Sg{constructor(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}loadWord(){const e=this.data,t=this.bytesAvailable,i=e.byteLength-t,s=new Uint8Array(4),r=Math.min(4,t);if(0===r)throw new Error("no bytes available");s.set(e.subarray(i,i+r)),this.word=new DataView(s.buffer).getUint32(0),this.bitsAvailable=8*r,this.bytesAvailable-=r}skipBits(e){let t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(t=(e-=this.bitsAvailable)>>3,e-=t<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}readBits(e){let t=Math.min(this.bitsAvailable,e);const i=this.word>>>32-t;if(e>32&&eu.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,t>0&&this.bitsAvailable?i<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const e=this.skipLZ();return this.readBits(e+1)-1}readEG(){const e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(e){let t,i=8,s=8;for(let r=0;r{var o;switch(s.type){case 1:{let t=!1;a=!0;const r=s.data;if(l&&r.length>4){const e=new Sg(r).readSliceType();2!==e&&4!==e&&7!==e&&9!==e||(t=!0)}var d;if(t)null!=(d=n)&&d.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null);n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.frame=!0,n.key=t;break}case 5:a=!0,null!=(o=n)&&o.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null),n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.key=!0,n.frame=!0;break;case 6:a=!0,mp(s.data,1,i.pts,t.samples);break;case 7:{var h,c;a=!0,l=!0;const t=s.data,i=new Sg(t).readSPS();if(!e.sps||e.width!==i.width||e.height!==i.height||(null==(h=e.pixelRatio)?void 0:h[0])!==i.pixelRatio[0]||(null==(c=e.pixelRatio)?void 0:c[1])!==i.pixelRatio[1]){e.width=i.width,e.height=i.height,e.pixelRatio=i.pixelRatio,e.sps=[t],e.duration=r;const s=t.subarray(1,4);let o="avc1.";for(let e=0;e<3;e++){let t=s[e].toString(16);t.length<2&&(t="0"+t),o+=t}e.codec=o}break}case 8:a=!0,e.pps=[s.data];break;case 9:a=!0,e.audFound=!0,n&&this.pushAccessUnit(n,e),n=this.VideoSample=this.createVideoSample(!1,i.pts,i.dts,"");break;case 12:a=!0;break;default:a=!1,n&&(n.debug+="unknown NAL "+s.type+" ")}if(n&&a){n.units.push(s)}})),s&&n&&(this.pushAccessUnit(n,e),this.VideoSample=null)}parseAVCNALu(e,t){const i=t.byteLength;let s=e.naluState||0;const r=s,o=[];let a,n,l,d=0,h=-1,c=0;for(-1===s&&(h=0,c=31&t[0],s=0,d=1);d=0){const e={data:t.subarray(h,n),type:c};o.push(e)}else{const i=this.getLastNalUnit(e.samples);i&&(r&&d<=4-r&&i.state&&(i.data=i.data.subarray(0,i.data.byteLength-r)),n>0&&(i.data=up(i.data,t.subarray(0,n)),i.state=0))}d=0&&s>=0){const e={data:t.subarray(h,i),type:c,state:s};o.push(e)}if(0===o.length){const i=this.getLastNalUnit(e.samples);i&&(i.data=up(i.data,t))}return e.naluState=s,o}}class Tg{constructor(e,t,i){this.keyData=void 0,this.decrypter=void 0,this.keyData=i,this.decrypter=new Fm(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(e,t,i){const s=e[t].unit;if(s.length<=16)return;const r=s.subarray(16,s.length-s.length%16),o=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(o).then((r=>{const o=new Uint8Array(r);s.set(o,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,i)}))}decryptAacSamples(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}}getAvcEncryptedData(e){const t=16*Math.floor((e.length-48)/160)+16,i=new Int8Array(t);let s=0;for(let t=32;t{r.data=this.getAvcDecryptedUnit(o,a),this.decrypter.isSync()||this.decryptAvcSamples(e,t,i+1,s)}))}decryptAvcSamples(e,t,i,s){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,i=0){if(t>=e.length)return void s();const r=e[t].units;for(;!(i>=r.length);i++){const o=r[i];if(!(o.data.length<=48||1!==o.type&&5!==o.type||(this.decryptAvcSample(e,t,i,s,o),this.decrypter.isSync())))return}}}}const kg=188;class Lg{constructor(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=new Eg}static probe(e){const t=Lg.syncOffset(e);return t>0&&eu.warn(`MPEG2-TS detected but first sync word found @ offset ${t}`),-1!==t}static syncOffset(e){const t=e.length;let i=Math.min(940,t-kg)+1,s=0;for(;s1&&(0===o&&a>2||n+kg>i))return o}s++}return-1}static createTrack(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:Yu[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}}resetInitSegment(e,t,i,s){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=Lg.createTrack("video"),this._audioTrack=Lg.createTrack("audio",s),this._id3Track=Lg.createTrack("id3"),this._txtTrack=Lg.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=i,this._duration=s}resetTimeStamp(){}resetContiguity(){const{_audioTrack:e,_videoTrack:t,_id3Track:i}=this;e&&(e.pesData=null),t&&(t.pesData=null),i&&(i.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(e,t,i=!1,s=!1){let r;i||(this.sampleAes=null);const o=this._videoTrack,a=this._audioTrack,n=this._id3Track,l=this._txtTrack;let d=o.pid,h=o.pesData,c=a.pid,u=n.pid,p=a.pesData,f=n.pesData,m=null,g=this.pmtParsed,y=this._pmtId,A=e.length;if(this.remainderData&&(A=(e=up(this.remainderData,e)).length,this.remainderData=null),A>4>1){if(v=t+5+e[t+4],v===t+kg)continue}else v=t+4;switch(A){case d:s&&(h&&(r=Pg(h))&&this.videoParser.parseAVCPES(o,l,r,!1,this._duration),h={data:[],size:0}),h&&(h.data.push(e.subarray(v,t+kg)),h.size+=t+kg-v);break;case c:if(s){if(p&&(r=Pg(p)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,r);break;case"mp3":this.parseMPEGPES(a,r);break;case"ac3":this.parseAC3PES(a,r)}p={data:[],size:0}}p&&(p.data.push(e.subarray(v,t+kg)),p.size+=t+kg-v);break;case u:s&&(f&&(r=Pg(f))&&this.parseID3PES(n,r),f={data:[],size:0}),f&&(f.data.push(e.subarray(v,t+kg)),f.size+=t+kg-v);break;case 0:s&&(v+=e[v]+1),y=this._pmtId=xg(e,v);break;case y:{s&&(v+=e[v]+1);const r=Dg(e,v,this.typeSupported,i,this.observer);d=r.videoPid,d>0&&(o.pid=d,o.segmentCodec=r.segmentVideoCodec),c=r.audioPid,c>0&&(a.pid=c,a.segmentCodec=r.segmentAudioCodec),u=r.id3Pid,u>0&&(n.pid=u),null===m||g||(eu.warn(`MPEG-TS PMT found at ${t} after unknown PID '${m}'. Backtracking to sync byte @${b} to parse all TS packets.`),m=null,t=b-188),g=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=A}}else v++;v>0&&Rg(this.observer,new Error(`Found ${v} TS packet/s that do not start with 0x47`)),o.pesData=h,a.pesData=p,n.pesData=f;const _={audioTrack:a,videoTrack:o,id3Track:n,textTrack:l};return s&&this.extractRemainingSamples(_),_}flush(){const{remainderData:e}=this;let t;return this.remainderData=null,t=e?this.demux(e,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t}extractRemainingSamples(e){const{audioTrack:t,videoTrack:i,id3Track:s,textTrack:r}=e,o=i.pesData,a=t.pesData,n=s.pesData;let l;if(o&&(l=Pg(o))?(this.videoParser.parseAVCPES(i,r,l,!0,this._duration),i.pesData=null):i.pesData=o,a&&(l=Pg(a))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,l);break;case"mp3":this.parseMPEGPES(t,l);break;case"ac3":this.parseAC3PES(t,l)}t.pesData=null}else null!=a&&a.size&&eu.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=a;n&&(l=Pg(n))?(this.parseID3PES(s,l),s.pesData=null):s.pesData=n}demuxSampleAes(e,t,i){const s=this.demux(e,i,!0,!this.config.progressive),r=this.sampleAes=new Tg(this.observer,this.config,t);return this.decrypt(s,r)}decrypt(e,t){return new Promise((i=>{const{audioTrack:s,videoTrack:r}=e;s.samples&&"aac"===s.segmentCodec?t.decryptAacSamples(s.samples,0,(()=>{r.samples?t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)})):i(e)})):r.samples&&t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)}))}))}destroy(){this._duration=0}parseAACPES(e,t){let i=0;const s=this.aacOverFlow;let r,o,a,n=t.data;if(s){this.aacOverFlow=null;const t=s.missing,r=s.sample.unit.byteLength;if(-1===t)n=up(s.sample.unit,n);else{const o=r-t;s.sample.unit.set(n.subarray(0,t),o),e.samples.push(s.sample),i=s.missing}}for(r=i,o=n.length;r0;)n+=o}}parseID3PES(e,t){if(void 0===t.pts)return void eu.warn("[tsdemuxer]: ID3 PES unknown PTS");const i=zc({},t,{type:this._videoTrack?ff:uf,duration:Number.POSITIVE_INFINITY});e.samples.push(i)}}function Cg(e,t){return((31&e[t+1])<<8)+e[t+2]}function xg(e,t){return(31&e[t+10])<<8|e[t+11]}function Dg(e,t,i,s,r){const o={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){let s=t+5,r=n;for(;r>2;){if(106===e[s])!0!==i.ac3?eu.log("AC-3 audio found, not supported in this browser for now"):(o.audioPid=a,o.segmentAudioCodec="ac3");const t=e[s+1]+2;s+=t,r-=t}}break;case 194:case 135:return Rg(r,new Error("Unsupported EC-3 in M2TS found")),o;case 36:return Rg(r,new Error("Unsupported HEVC in M2TS found")),o}t+=n+5}return o}function Rg(e,t,i){eu.warn(`parsing error: ${t.message}`),e.emit(Jc.ERROR,Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.FRAG_PARSING_ERROR,fatal:!1,levelRetry:i,error:t,reason:t.message})}function Ig(e){eu.log(`${e} with AES-128-CBC encryption found in unencrypted stream`)}function Pg(e){let t,i,s,r,o,a=0;const n=e.data;if(!e||0===e.size)return null;for(;n[0].length<19&&n.length>1;)n[0]=up(n[0],n[1]),n.splice(1,1);t=n[0];if(1===(t[0]<<16)+(t[1]<<8)+t[2]){if(i=(t[4]<<8)+t[5],i&&i>e.size-6)return null;const l=t[7];192&l&&(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&l?(o=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,r-o>54e5&&(eu.warn(`${Math.round((r-o)/9e4)}s delta between PTS and DTS, align them`),r=o)):o=r),s=t[8];let d=s+9;if(e.size<=d)return null;e.size-=d;const h=new Uint8Array(e.size);for(let e=0,i=n.length;ei){d-=i;continue}t=t.subarray(d),i-=d,d=0}h.set(t,a),a+=i}return i&&(i-=s+3),{data:h,pts:r,dts:o,len:i}}return null}class Bg{static getSilentFrame(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])}}}const Mg=Math.pow(2,32)-1;class Fg{static init(){let e;for(e in Fg.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},Fg.types)Fg.types.hasOwnProperty(e)&&(Fg.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);const t=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]),i=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]);Fg.HDLR_TYPES={video:t,audio:i};const s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);Fg.STTS=Fg.STSC=Fg.STCO=r,Fg.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),Fg.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),Fg.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),Fg.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const o=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),n=new Uint8Array([0,0,0,1]);Fg.FTYP=Fg.box(Fg.types.ftyp,o,n,o,a),Fg.DINF=Fg.box(Fg.types.dinf,Fg.box(Fg.types.dref,s))}static box(e,...t){let i=8,s=t.length;const r=s;for(;s--;)i+=t[s].byteLength;const o=new Uint8Array(i);for(o[0]=i>>24&255,o[1]=i>>16&255,o[2]=i>>8&255,o[3]=255&i,o.set(e,4),s=0,i=8;s>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s,85,196,0,0]))}static mdia(e){return Fg.box(Fg.types.mdia,Fg.mdhd(e.timescale,e.duration),Fg.hdlr(e.type),Fg.minf(e))}static mfhd(e){return Fg.box(Fg.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static minf(e){return"audio"===e.type?Fg.box(Fg.types.minf,Fg.box(Fg.types.smhd,Fg.SMHD),Fg.DINF,Fg.stbl(e)):Fg.box(Fg.types.minf,Fg.box(Fg.types.vmhd,Fg.VMHD),Fg.DINF,Fg.stbl(e))}static moof(e,t,i){return Fg.box(Fg.types.moof,Fg.mfhd(e),Fg.traf(i,t))}static moov(e){let t=e.length;const i=[];for(;t--;)i[t]=Fg.trak(e[t]);return Fg.box.apply(null,[Fg.types.moov,Fg.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(Fg.mvex(e)))}static mvex(e){let t=e.length;const i=[];for(;t--;)i[t]=Fg.trex(e[t]);return Fg.box.apply(null,[Fg.types.mvex,...i])}static mvhd(e,t){t*=e;const i=Math.floor(t/(Mg+1)),s=Math.floor(t%(Mg+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,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 Fg.box(Fg.types.mvhd,r)}static sdtp(e){const t=e.samples||[],i=new Uint8Array(4+t.length);let s,r;for(s=0;s>>8&255),r.push(255&s),r=r.concat(Array.prototype.slice.call(i));for(t=0;t>>8&255),o.push(255&s),o=o.concat(Array.prototype.slice.call(i));const a=Fg.box(Fg.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|e.sps.length].concat(r).concat([e.pps.length]).concat(o))),n=e.width,l=e.height,d=e.pixelRatio[0],h=e.pixelRatio[1];return Fg.box(Fg.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,n>>8&255,255&n,l>>8&255,255&l,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]),a,Fg.box(Fg.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),Fg.box(Fg.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,h>>24,h>>16&255,h>>8&255,255&h])))}static esds(e){const 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]))}static audioStsd(e){const 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])}static mp4a(e){return Fg.box(Fg.types.mp4a,Fg.audioStsd(e),Fg.box(Fg.types.esds,Fg.esds(e)))}static mp3(e){return Fg.box(Fg.types[".mp3"],Fg.audioStsd(e))}static ac3(e){return Fg.box(Fg.types["ac-3"],Fg.audioStsd(e),Fg.box(Fg.types.dac3,e.config))}static stsd(e){return"audio"===e.type?"mp3"===e.segmentCodec&&"mp3"===e.codec?Fg.box(Fg.types.stsd,Fg.STSD,Fg.mp3(e)):"ac3"===e.segmentCodec?Fg.box(Fg.types.stsd,Fg.STSD,Fg.ac3(e)):Fg.box(Fg.types.stsd,Fg.STSD,Fg.mp4a(e)):Fg.box(Fg.types.stsd,Fg.STSD,Fg.avc1(e))}static tkhd(e){const t=e.id,i=e.duration*e.timescale,s=e.width,r=e.height,o=Math.floor(i/(Mg+1)),a=Math.floor(i%(Mg+1));return Fg.box(Fg.types.tkhd,new Uint8Array([1,0,0,7,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,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,a>>24,a>>16&255,a>>8&255,255&a,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,r>>8&255,255&r,0,0]))}static traf(e,t){const i=Fg.sdtp(e),s=e.id,r=Math.floor(t/(Mg+1)),o=Math.floor(t%(Mg+1));return Fg.box(Fg.types.traf,Fg.box(Fg.types.tfhd,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])),Fg.box(Fg.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,o>>24,o>>16&255,o>>8&255,255&o])),Fg.trun(e,i.length+16+20+8+16+8+8),i)}static trak(e){return e.duration=e.duration||4294967295,Fg.box(Fg.types.trak,Fg.tkhd(e),Fg.mdia(e))}static trex(e){const t=e.id;return Fg.box(Fg.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(e,t){const i=e.samples||[],s=i.length,r=12+16*s,o=new Uint8Array(r);let a,n,l,d,h,c;for(t+=8+r,o.set(["video"===e.type?1:0,0,15,1,s>>>24&255,s>>>16&255,s>>>8&255,255&s,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,d>>>24&255,d>>>16&255,d>>>8&255,255&d,h.isLeading<<2|h.dependsOn,h.isDependedOn<<6|h.hasRedundancy<<4|h.paddingValue<<1|h.isNonSync,61440&h.degradPrio,15&h.degradPrio,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*a);return Fg.box(Fg.types.trun,o)}static initSegment(e){Fg.types||Fg.init();const t=Fg.moov(e);return up(Fg.FTYP,t)}}Fg.types=void 0,Fg.HDLR_TYPES=void 0,Fg.STTS=void 0,Fg.STSC=void 0,Fg.STCO=void 0,Fg.STSZ=void 0,Fg.VMHD=void 0,Fg.SMHD=void 0,Fg.STSD=void 0,Fg.FTYP=void 0,Fg.DINF=void 0;function Ug(e,t,i=1,s=!1){const r=e*t*i;return s?Math.round(r):r}function Og(e,t=!1){return Ug(e,1e3,1/9e4,t)}let Ng,jg=null,Gg=null;class Wg{constructor(e,t,i,s=""){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===jg){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);jg=e?parseInt(e[1]):0}if(null===Gg){const e=navigator.userAgent.match(/Safari\/(\d+)/i);Gg=e?parseInt(e[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){eu.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e}resetNextTimestamp(){eu.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){eu.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1;const i=e.reduce(((e,i)=>{const s=i.pts-e;return s<-4294967296?(t=!0,zg(e,i.pts)):s>0?e:i.pts}),e[0].pts);return t&&eu.debug("PTS rollover detected"),i}remux(e,t,i,s,r,o,a,n){let l,d,h,c,u,p,f=r,m=r;const g=e.pid>-1,y=t.pid>-1,A=t.samples.length,b=e.samples.length>0,v=a&&A>0||A>1;if((!g||b)&&(!y||v)||this.ISGenerated||a){if(this.ISGenerated){var _,w,S,E;const e=this.videoTrackConfig;!e||t.width===e.width&&t.height===e.height&&(null==(_=t.pixelRatio)?void 0:_[0])===(null==(w=e.pixelRatio)?void 0:w[0])&&(null==(S=t.pixelRatio)?void 0:S[1])===(null==(E=e.pixelRatio)?void 0:E[1])||this.resetInitSegment()}else h=this.generateIS(e,t,r,o);const i=this.isVideoContiguous;let s,a=-1;if(v&&(a=function(e){for(let t=0;t0){eu.warn(`[mp4-remuxer]: Dropped ${a} out of ${A} video samples due to a missing keyframe`);const e=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(a),t.dropped+=a,m+=(t.samples[0].pts-e)/t.inputTimeScale,s=m}else-1===a&&(eu.warn(`[mp4-remuxer]: No keyframe found out of ${A} video samples`),p=!1);if(this.ISGenerated){if(b&&v){const i=this.getVideoStartPts(t.samples),s=(zg(e.samples[0].pts,i)-i)/t.inputTimeScale;f+=Math.max(0,s),m+=Math.max(0,-s)}if(b){if(e.samplerate||(eu.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),h=this.generateIS(e,t,r,o)),d=this.remuxAudio(e,f,this.isAudioContiguous,o,y||v||n===tf?m:void 0),v){const s=d?d.endPTS-d.startPTS:0;t.inputTimeScale||(eu.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),h=this.generateIS(e,t,r,o)),l=this.remuxVideo(t,m,i,s)}}else v&&(l=this.remuxVideo(t,m,i,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=s)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(i.samples.length&&(u=$g(i,r,this._initPTS,this._initDTS)),s.samples.length&&(c=Vg(s,r,this._initPTS))),{audio:d,video:l,initSegment:h,independent:p,text:c,id3:u}}generateIS(e,t,i,s){const r=e.samples,o=t.samples,a=this.typeSupported,n={},l=this._initPTS;let d,h,c,u=!l||s,p="audio/mp4";if(u&&(d=h=1/0),e.config&&r.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":a.mpeg?(p="audio/mpeg",e.codec=""):a.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3"}n.audio={id:"audio",container:p,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&a.mpeg?new Uint8Array(0):Fg.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(c=e.inputTimeScale,l&&c===l.timescale?u=!1:d=h=r[0].pts-Math.round(c*i))}if(t.sps&&t.pps&&o.length){if(t.timescale=t.inputTimeScale,n.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:Fg.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(c=t.inputTimeScale,l&&c===l.timescale)u=!1;else{const e=this.getVideoStartPts(o),t=Math.round(c*i);h=Math.min(h,zg(o[0].dts,e)-t),d=Math.min(d,e-t)}this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(n).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:d,timescale:c},this._initDTS={baseTime:h,timescale:c}):d=c=void 0,{tracks:n,initPTS:d,timescale:c}}remuxVideo(e,t,i,s){const r=e.inputTimeScale,o=e.samples,a=[],n=o.length,l=this._initPTS;let d,h,c=this.nextAvcDts,u=8,p=this.videoSampleDuration,f=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,g=!1;if(!i||null===c){const e=t*r,s=o[0].pts-zg(o[0].dts,o[0].pts);jg&&null!==c&&Math.abs(e-s-c)<15e3?i=!0:c=e-s}const y=l.baseTime*r/l.timescale;for(let e=0;e0?e-1:e].dts&&(g=!0)}g&&o.sort((function(e,t){const i=e.dts-t.dts,s=e.pts-t.pts;return i||s})),d=o[0].dts,h=o[o.length-1].dts;const A=h-d,b=A?Math.round(A/(n-1)):p||e.inputTimeScale/30;if(i){const e=d-c,i=e>b,s=e<-1;if((i||s)&&(i?eu.warn(`AVC: ${Og(e,!0)} ms (${e}dts) hole between fragments detected at ${t.toFixed(3)}`):eu.warn(`AVC: ${Og(-e,!0)} ms (${e}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!s||c>=o[0].pts||jg)){d=c;const t=o[0].pts-e;if(i)o[0].dts=d,o[0].pts=t;else for(let i=0;it);i++)o[i].dts-=e,o[i].pts-=e;eu.log(`Video: Initial PTS/DTS adjusted: ${Og(t,!0)}/${Og(d,!0)}, delta: ${Og(e,!0)} ms`)}}d=Math.max(0,d);let v=0,_=0,w=d;for(let e=0;e0?t.dts-o[e-1].dts:b;if(l=e>0?t.pts-o[e-1].pts:b,i.stretchShortVideoTrack&&null!==this.nextAudioPts){const e=Math.floor(i.maxBufferHole*r),o=(s?f+s*r:this.nextAudioPts)-t.pts;o>e?(p=o-a,p<0?p=a:k=!0,eu.log(`[mp4-remuxer]: It is approximately ${o/90} ms to the next segment; using duration ${p/90} ms for the last video frame.`)):p=a}else p=a}const h=Math.round(t.pts-t.dts);L=Math.min(L,p),x=Math.max(x,p),C=Math.min(C,l),D=Math.max(D,l),a.push(new Hg(t.key,p,d,h))}if(a.length)if(jg){if(jg<70){const e=a[0].flags;e.dependsOn=2,e.isNonSync=0}}else if(Gg&&D-C0&&(s&&Math.abs(g-m)<9e3||Math.abs(zg(p[0].pts-y,g)-m)<20*l),p.forEach((function(e){e.pts=zg(e.pts-y,g)})),!i||m<0){if(p=p.filter((e=>e.pts>=0)),!p.length)return;m=0===r?0:s&&!u?Math.max(0,g):p[0].pts}if("aac"===e.segmentCodec){const t=this.config.maxAudioFramesDrift;for(let i=0,s=m;i=t*l&&d<1e4&&u){let t=Math.round(n/l);s=a-t*l,s<0&&(t--,s+=l),0===i&&(this.nextAudioPts=m=s),eu.warn(`[mp4-remuxer]: Injecting ${t} audio frame @ ${(s/o).toFixed(3)}s due to ${Math.round(1e3*n/o)} ms gap.`);for(let o=0;o0))return;_+=f;try{A=new Uint8Array(_)}catch(e){return void this.observer.emit(Jc.ERROR,Jc.ERROR,{type:qc.MUX_ERROR,details:Kc.REMUX_ALLOC_ERROR,fatal:!1,error:e,bytes:_,reason:`fail allocating audio mdat ${_}`})}if(!h){new DataView(A.buffer).setUint32(0,_),A.set(Fg.types.mdat,4)}}A.set(r,f);const l=r.byteLength;f+=l,c.push(new Hg(!0,n,l,0)),v=o}const S=c.length;if(!S)return;const E=c[c.length-1];this.nextAudioPts=m=v+a*E.duration;const T=h?new Uint8Array(0):Fg.moof(e.sequenceNumber++,b/a,zc({},e,{samples:c}));e.samples=[];const k=b/o,L=m/o,C={data1:T,data2:A,startPTS:k,endPTS:L,startDTS:k,endDTS:L,type:"audio",hasAudio:!0,hasVideo:!1,nb:S};return this.isAudioContiguous=!0,C}remuxEmptyAudio(e,t,i,s){const r=e.inputTimeScale,o=r/(e.samplerate?e.samplerate:r),a=this.nextAudioPts,n=this._initDTS,l=9e4*n.baseTime/n.timescale,d=(null!==a?a:s.startDTS*r)+l,h=s.endDTS*r+l,c=1024*o,u=Math.ceil((h-d)/c),p=Bg.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(eu.warn("[mp4-remuxer]: remux empty Audio"),!p)return void eu.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const f=[];for(let e=0;e4294967296;)e+=i;return e}function $g(e,t,i,s){const r=e.samples.length;if(!r)return;const o=e.inputTimeScale;for(let a=0;ae.pts-t.pts));const o=e.samples;return e.samples=[],{samples:o}}class Hg{constructor(e,t,i,s){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=i,this.cts=s,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:e?2:1,isNonSync:e?0:1}}}function Jg(e,t){const i=null==e?void 0:e.codec;if(i&&i.length>4)return i;if(t===nu){if("ec-3"===i||"ac-3"===i||"alac"===i)return i;if("fLaC"===i||"Opus"===i){return Mp(i,!1)}const e="mp4a.40.5";return eu.info(`Parsed audio codec "${i}" or audio object type not handled. Using "${e}"`),e}return eu.warn(`Unhandled video codec "${i}"`),"hvc1"===i||"hev1"===i?"hvc1.1.6.L120.90":"av01"===i?"av01.0.04M.08":"avc1.42e01e"}try{Ng=self.performance.now.bind(self.performance)}catch(e){eu.debug("Unable to use Performance API on this environment"),Ng=null==yu?void 0:yu.Date.now}const qg=[{demux:class{constructor(e,t){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=t}resetTimeStamp(){}resetInitSegment(e,t,i,s){const r=this.videoTrack=Xm("video",1),o=this.audioTrack=Xm("audio",1),a=this.txtTrack=Xm("text",1);if(this.id3Track=Xm("id3",1),this.timeOffset=0,null==e||!e.byteLength)return;const n=op(e);if(n.video){const{id:e,timescale:t,codec:i}=n.video;r.id=e,r.timescale=a.timescale=t,r.codec=i}if(n.audio){const{id:e,timescale:t,codec:i}=n.audio;o.id=e,o.timescale=t,o.codec=i}a.id=Yu.text,r.sampleDuration=0,r.duration=o.duration=s}resetContiguity(){this.remainderData=null}static probe(e){return function(e){const t=e.byteLength;for(let i=0;i8&&109===e[i+4]&&111===e[i+5]&&111===e[i+6]&&102===e[i+7])return!0;i=s>1?i+s:t}return!1}(e)}demux(e,t){this.timeOffset=t;let i=e;const s=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(i=up(this.remainderData,e));const t=function(e){const t={valid:null,remainder:null},i=sp(e,["moof"]);if(i.length<2)return t.remainder=e,t;const s=i[i.length-1];return t.valid=xu(e,0,s.byteOffset-8),t.remainder=xu(e,s.byteOffset-8),t}(i);this.remainderData=t.remainder,s.samples=t.valid||new Uint8Array}else s.samples=i;const o=this.extractID3Track(s,t);return r.samples=pp(t,s),{videoTrack:s,audioTrack:this.audioTrack,id3Track:o,textTrack:this.txtTrack}}flush(){const e=this.timeOffset,t=this.videoTrack,i=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;const s=this.extractID3Track(t,this.timeOffset);return i.samples=pp(e,t),{videoTrack:t,audioTrack:Xm(),id3Track:s,textTrack:Xm()}}extractID3Track(e,t){const i=this.id3Track;if(e.samples.length){const s=sp(e.samples,["emsg"]);s&&s.forEach((e=>{const s=function(e){const t=e[0];let i="",s="",r=0,o=0,a=0,n=0,l=0,d=0;if(0===t){for(;"\0"!==Qu(e.subarray(d,d+1));)i+=Qu(e.subarray(d,d+1)),d+=1;for(i+=Qu(e.subarray(d,d+1)),d+=1;"\0"!==Qu(e.subarray(d,d+1));)s+=Qu(e.subarray(d,d+1)),d+=1;s+=Qu(e.subarray(d,d+1)),d+=1,r=Zu(e,12),o=Zu(e,16),n=Zu(e,20),l=Zu(e,24),d=28}else if(1===t){d+=4,r=Zu(e,d),d+=4;const t=Zu(e,d);d+=4;const o=Zu(e,d);for(d+=4,a=2**32*t+o,Vc(a)||(a=Number.MAX_SAFE_INTEGER,eu.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),n=Zu(e,d),d+=4,l=Zu(e,d),d+=4;"\0"!==Qu(e.subarray(d,d+1));)i+=Qu(e.subarray(d,d+1)),d+=1;for(i+=Qu(e.subarray(d,d+1)),d+=1;"\0"!==Qu(e.subarray(d,d+1));)s+=Qu(e.subarray(d,d+1)),d+=1;s+=Qu(e.subarray(d,d+1)),d+=1}return{schemeIdUri:i,value:s,timeScale:r,presentationTime:a,presentationTimeDelta:o,eventDuration:n,id:l,payload:e.subarray(d,e.byteLength)}}(e);if(bg.test(s.schemeIdUri)){const e=$c(s.presentationTime)?s.presentationTime/s.timeScale:t+s.presentationTimeDelta/s.timeScale;let r=4294967295===s.eventDuration?Number.POSITIVE_INFINITY:s.eventDuration/s.timeScale;r<=.001&&(r=Number.POSITIVE_INFINITY);const o=s.payload;i.samples.push({data:o,len:o.byteLength,dts:e,pts:e,type:ff,duration:r})}}))}return i}demuxSampleAes(e,t,i){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux:class{constructor(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null}destroy(){}resetTimeStamp(e){this.initPTS=e,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(e,t,i,s){this.audioCodec=t,this.videoCodec=i,this.generateInitSegment(function(e,t){if(!e||!t)return e;const i=t.keyId;i&&t.isCommonEncryption&&sp(e,["moov","trak"]).forEach((e=>{const t=sp(e,["mdia","minf","stbl","stsd"])[0].subarray(8);let s=sp(t,["enca"]);const r=s.length>0;r||(s=sp(t,["encv"])),s.forEach((e=>{sp(r?e.subarray(28):e.subarray(78),["sinf"]).forEach((e=>{const t=hp(e);if(t){const e=t.subarray(8,24);e.some((e=>0!==e))||(eu.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${Ju(e)} -> ${Ju(i)}`),t.set(i,8))}}))}))}));return e}(e,s)),this.emitInitSegment=!0}generateInitSegment(e){let{audioCodec:t,videoCodec:i}=this;if(null==e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const s=this.initData=op(e);s.audio&&(t=Jg(s.audio,nu)),s.video&&(i=Jg(s.video,lu));const r={};s.audio&&s.video?r.audiovideo={container:"video/mp4",codec:t+","+i,initSegment:e,id:"main"}:s.audio?r.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:s.video?r.video={container:"video/mp4",codec:i,initSegment:e,id:"main"}:eu.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(e,t,i,s,r,o){var a,n;let{initPTS:l,lastEndTime:d}=this;const h={audio:void 0,video:void 0,text:s,id3:i,initSegment:void 0};$c(d)||(d=this.lastEndTime=r||0);const c=t.samples;if(null==c||!c.length)return h;const u={initPTS:void 0,timescale:1};let p=this.initData;if(null!=(a=p)&&a.length||(this.generateInitSegment(c),p=this.initData),null==(n=p)||!n.length)return eu.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),h;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const f=function(e,t){let i=0,s=0,r=0;const o=sp(e,["moof","traf"]);for(let e=0;ee+t.info.duration||0),0);i=Math.max(i,e+o.earliestPresentationTime/o.timescale),s=i-t}}if(s&&$c(s))return s}return s||r}(c,p),m=function(e,t){return sp(t,["moof","traf"]).reduce(((t,i)=>{const s=sp(i,["tfdt"])[0],r=s[0],o=sp(i,["tfhd"]).reduce(((t,i)=>{const o=Zu(i,4),a=e[o];if(a){let e=Zu(s,4);if(1===r){if(e===qu)return eu.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),t;e*=qu+1,e+=Zu(s,8)}const i=e/(a.timescale||9e4);if($c(i)&&(null===t||ir}(l,g,r,f)||u.timescale!==l.timescale&&o)&&(u.initPTS=g-r,l&&1===l.timescale&&eu.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const y=e?g-l.baseTime/l.timescale:d,A=y+f;!function(e,t,i){sp(t,["moof","traf"]).forEach((t=>{sp(t,["tfhd"]).forEach((s=>{const r=Zu(s,4),o=e[r];if(!o)return;const a=o.timescale||9e4;sp(t,["tfdt"]).forEach((e=>{const t=e[0],s=i*a;if(s){let i=Zu(e,4);if(0===t)i-=s,i=Math.max(i,0),ip(e,4,i);else{i*=Math.pow(2,32),i+=Zu(e,8),i-=s,i=Math.max(i,0);const t=Math.floor(i/(qu+1)),r=Math.floor(i%(qu+1));ip(e,4,t),ip(e,8,r)}}}))}))}))}(p,c,l.baseTime/l.timescale),f>0?this.lastEndTime=A:(eu.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const b=!!p.audio,v=!!p.video;let _="";b&&(_+="audio"),v&&(_+="video");const w={data1:c,startPTS:y,startDTS:y,endPTS:A,endDTS:A,type:_,hasAudio:b,hasVideo:v,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=$g(i,r,l,l),s.samples.length&&(h.text=Vg(s,r,l)),h}}},{demux:Lg,remux:Wg},{demux:class extends Zm{constructor(e,t){super(),this.observer=void 0,this.config=void 0,this.observer=e,this.config=t}resetInitSegment(e,t,i,s){super.resetInitSegment(e,t,i,s),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:t,duration:s,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;const t=Iu(e,0);let i=(null==t?void 0:t.length)||0;if(Ag(e,i))return!1;for(let t=e.length;i0&&null!=(null==t?void 0:t.key)&&null!==t.iv&&null!=t.method&&(i=t);return i}(o,t);if(b&&"AES-128"===b.method){const e=this.getDecrypter();if(!e.isSync())return this.decryptionPromise=e.webCryptoDecrypt(o,b.key.buffer,b.iv.buffer).then((e=>{const t=this.push(e,null,i);return this.decryptionPromise=null,t})),this.decryptionPromise;{let t=e.softwareDecrypt(o,b.key.buffer,b.iv.buffer);if(i.part>-1&&(t=e.flush()),!t)return r.executeEnd=Ng(),Yg(i);o=new Uint8Array(t)}}const v=this.needsProbing(d,h);if(v){const e=this.configureTransmuxer(o);if(e)return eu.warn(`[transmuxer] ${e.message}`),this.observer.emit(Jc.ERROR,Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message}),r.executeEnd=Ng(),Yg(i)}(d||h||p||v)&&this.resetInitSegment(A,f,m,y,t),(d||p||v)&&this.resetInitialTimestamp(g),l||this.resetContiguity();const _=this.transmux(o,b,u,c,i),w=this.currentTransmuxState;return w.contiguous=!0,w.discontinuity=!1,w.trackSwitch=!1,r.executeEnd=Ng(),_}flush(e){const t=e.transmuxing;t.executeStart=Ng();const{decrypter:i,currentTransmuxState:s,decryptionPromise:r}=this;if(r)return r.then((()=>this.flush(e)));const o=[],{timeOffset:a}=s;if(i){const t=i.flush();t&&o.push(this.push(t,null,e))}const{demuxer:n,remuxer:l}=this;if(!n||!l)return t.executeEnd=Ng(),[Yg(e)];const d=n.flush(a);return Qg(d)?d.then((t=>(this.flushRemux(o,t,e),o))):(this.flushRemux(o,d,e),o)}flushRemux(e,t,i){const{audioTrack:s,videoTrack:r,id3Track:o,textTrack:a}=t,{accurateTimeOffset:n,timeOffset:l}=this.currentTransmuxState;eu.log(`[transmuxer.ts]: Flushed fragment ${i.sn}${i.part>-1?" p: "+i.part:""} of level ${i.level}`);const d=this.remuxer.remux(s,r,o,a,l,n,!0,this.id);e.push({remuxResult:d,chunkMeta:i}),i.transmuxing.executeEnd=Ng()}resetInitialTimestamp(e){const{demuxer:t,remuxer:i}=this;t&&i&&(t.resetTimeStamp(e),i.resetTimeStamp(e))}resetContiguity(){const{demuxer:e,remuxer:t}=this;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,i,s,r){const{demuxer:o,remuxer:a}=this;o&&a&&(o.resetInitSegment(e,t,i,s),a.resetInitSegment(e,t,i,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(e,t,i,s,r){let o;return o=t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,i,s,r):this.transmuxUnencrypted(e,i,s,r),o}transmuxUnencrypted(e,t,i,s){const{audioTrack:r,videoTrack:o,id3Track:a,textTrack:n}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,o,a,n,t,i,!1,this.id),chunkMeta:s}}transmuxSampleAes(e,t,i,s,r){return this.demuxer.demuxSampleAes(e,t,i).then((e=>({remuxResult:this.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,i,s,!1,this.id),chunkMeta:r})))}configureTransmuxer(e){const{config:t,observer:i,typeSupported:s,vendor:r}=this;let o;for(let t=0,i=qg.length;t({remuxResult:{},chunkMeta:e});function Qg(e){return"then"in e&&e.then instanceof Function}class Xg{constructor(e,t,i,s,r){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=s,this.defaultInitPts=r||null}}class Zg{constructor(e,t,i,s,r,o){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=s,this.timeOffset=r,this.initSegmentChange=o}}var ey={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function s(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function o(e,t,s,o,a){if("function"!=typeof s)throw new TypeError("The listener must be a function");var n=new r(s,o||e,a),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],n]:e._events[l].push(n):(e._events[l]=n,e._eventsCount++),e}function a(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function n(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(i=!1)),n.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(i?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},n.prototype.listeners=function(e){var t=i?i+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,o=s.length,a=new Array(o);r{(t=t||{}).frag=this.frag,t.id=this.id,e===Jc.ERROR&&(this.error=t.error),this.hls.trigger(e,t)};this.observer=new ty,this.observer.on(Jc.FRAG_DECRYPTED,o),this.observer.on(Jc.ERROR,o);const a=kp(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},n={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')};if(this.useWorker&&"undefined"!=typeof Worker){if(r.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{r.workerPath?(eu.log(`loading Web Worker ${r.workerPath} for "${t}"`),this.workerContext=function(e){const t=new self.URL(e,self.location.href).href;return{worker:new self.Worker(t),scriptURL:t}}(r.workerPath)):(eu.log(`injecting Web Worker for "${t}"`),this.workerContext=function(){const e=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),t=self.URL.createObjectURL(e);return{worker:new self.Worker(t),objectURL:t}}()),this.onwmsg=e=>this.onWorkerMessage(e);const{worker:e}=this.workerContext;e.addEventListener("message",this.onwmsg),e.onerror=e=>{const i=new Error(`${e.message} (${e.filename}:${e.lineno})`);r.enableWorker=!1,eu.warn(`Error in "${t}" Web Worker, fallback to inline`),this.hls.trigger(Jc.ERROR,{type:qc.OTHER_ERROR,details:Kc.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:i})},e.postMessage({cmd:"init",typeSupported:n,vendor:"",id:t,config:JSON.stringify(r)})}catch(e){eu.warn(`Error setting up "${t}" Web Worker, fallback to inline`,e),this.resetWorker(),this.error=null,this.transmuxer=new Kg(this.observer,n,r,"",t)}return}}this.transmuxer=new Kg(this.observer,n,r,"",t)}resetWorker(){if(this.workerContext){const{worker:e,objectURL:t}=this.workerContext;t&&self.URL.revokeObjectURL(t),e.removeEventListener("message",this.onwmsg),e.onerror=null,e.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{const e=this.transmuxer;e&&(e.destroy(),this.transmuxer=null)}const e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(e,t,i,s,r,o,a,n,l,d){var h,c;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,p=o?o.start:r.start,f=r.decryptdata,m=this.frag,g=!(m&&r.cc===m.cc),y=!(m&&l.level===m.level),A=m?l.sn-m.sn:-1,b=this.part?l.part-this.part.index:-1,v=0===A&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),_=!y&&(1===A||0===A&&(1===b||v&&b<=0)),w=self.performance.now();(y||A||0===r.stats.parsing.start)&&(r.stats.parsing.start=w),!o||!b&&_||(o.stats.parsing.start=w);const S=!(m&&(null==(h=r.initSegment)?void 0:h.url)===(null==(c=m.initSegment)?void 0:c.url)),E=new Zg(g,_,n,y,p,S);if(!_||g||S){eu.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${g}\n trackSwitch: ${y}\n contiguous: ${_}\n accurateTimeOffset: ${n}\n timeOffset: ${p}\n initSegmentChange: ${S}`);const e=new Xg(i,s,t,a,d);this.configureTransmuxer(e)}if(this.frag=r,this.part=o,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:f,chunkMeta:l,state:E},e instanceof ArrayBuffer?[e]:[]);else if(u){const t=u.push(e,f,l,E);Qg(t)?(u.async=!0,t.then((e=>{this.handleTransmuxComplete(e)})).catch((e=>{this.transmuxerError(e,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(t))}}flush(e){e.transmuxing.start=self.performance.now();const{transmuxer:t}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(t){let i=t.flush(e);Qg(i)||t.async?(Qg(i)||(i=Promise.resolve(i)),i.then((t=>{this.handleFlushResult(t,e)})).catch((t=>{this.transmuxerError(t,e,"transmuxer-interface flush error")}))):this.handleFlushResult(i,e)}}transmuxerError(e,t,i){this.hls&&(this.error=e,this.hls.trigger(Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.FRAG_PARSING_ERROR,chunkMeta:t,frag:this.frag||void 0,fatal:!1,error:e,err:e,reason:i}))}handleFlushResult(e,t){e.forEach((e=>{this.handleTransmuxComplete(e)})),this.onFlush(t)}onWorkerMessage(e){const t=e.data;if(null==t||!t.event)return void eu.warn("worker message received with no "+(t?"event name":"data"));const i=this.hls;if(this.hls)switch(t.event){case"init":{var s;const e=null==(s=this.workerContext)?void 0:s.objectURL;e&&self.URL.revokeObjectURL(e);break}case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":eu[t.data.logType]&&eu[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)}}configureTransmuxer(e){const{transmuxer:t}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:e}):t&&t.configure(e)}handleTransmuxComplete(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)}}function sy(e,t){if(e.length!==t.length)return!1;for(let i=0;ie[i]!==t[i]))}function oy(e,t){return t.label.toLowerCase()===e.name.toLowerCase()&&(!t.language||t.language.toLowerCase()===(e.lang||"").toLowerCase())}class ay{constructor(e){this.buffered=void 0;const t=(t,i,s)=>{if((i>>>=0)>s-1)throw new DOMException(`Failed to execute '${t}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${s})`);return e[i][t]};this.buffered={get length(){return e.length},end:i=>t("end",i,e.length),start:i=>t("start",i,e.length)}}}class ny{constructor(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}append(e,t,i){const s=this.queues[t];s.push(e),1!==s.length||i||this.executeNext(t)}insertAbort(e,t){this.queues[t].unshift(e),this.executeNext(t)}appendBlocker(e){let t;const i=new Promise((e=>{t=e})),s={execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(s,e),i}executeNext(e){const t=this.queues[e];if(t.length){const i=t[0];try{i.execute()}catch(t){eu.warn(`[buffer-operation-queue]: Exception executing "${e}" SourceBuffer operation: ${t}`),i.onError(t);const s=this.buffers[e];null!=s&&s.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues[e].shift(),this.executeNext(e)}current(e){return this.queues[e][0]}}const ly=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function dy(e){const t=e.querySelectorAll("source");[].slice.call(t).forEach((t=>{e.removeChild(t)}))}const hy={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},cy=e=>String.fromCharCode(hy[e]||e),uy=15,py=100,fy={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},my={17:2,18:4,21:6,22:8,23:10,19:13,20:15},gy={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},yy={25:2,26:4,29:6,30:8,31:10,27:13,28:15},Ay=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class by{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;eu.log(`${this.time} [${e}] ${i}`)}}}const vy=function(e){const t=[];for(let i=0;ipy&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=py)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=cy(e);this.pos>=py?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",s=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class Ty{constructor(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 Ey(i),this.nonDisplayedMemory=new Ey(i),this.lastOutputScreen=new Ey(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(e){this.outputFilter=e}setPAC(e){this.writeScreen.setPAC(e)}setBkgData(e){this.writeScreen.setBkgData(e)}setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(2,(()=>"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)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(1,(()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0))),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(e){this.logger.log(2,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,s=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=s[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const 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))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class ky{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const s=this.logger=new by;this.channels=[null,new Ty(e,t,s),new Ty(e+1,i,s)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){this.logger.time=e;for(let e=0;e"["+vy([t[e],t[e+1]])+"] -> ("+vy([i,s])+")"));const a=this.cmdHistory;if(i>=16&&i<=31){if(Cy(i,s,a)){Ly(null,null,a),this.logger.log(3,(()=>"Repeated command ("+vy([i,s])+") is dropped"));continue}Ly(i,s,this.cmdHistory),r=this.parseCmd(i,s),r||(r=this.parseMidrow(i,s)),r||(r=this.parsePAC(i,s)),r||(r=this.parseBackgroundAttributes(i,s))}else Ly(null,null,a);if(!r&&(o=this.parseChars(i,s),o)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(o)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}r||o||this.logger.log(2,(()=>"Couldn't parse cleaned data "+vy([i,s])+" orig: "+vy([t[e],t[e+1]])))}}parseCmd(e,t){if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;const i=20===e||21===e||23===e?1:2,s=this.channels[i];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),this.currentChannel=i,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const s=this.channels[i];return!!s&&(s.ccMIDROW(t),this.logger.log(3,(()=>"MIDROW ("+vy([e,t])+")")),!0)}return!1}parsePAC(e,t){let i;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;const s=e<=23?1:2;i=t>=64&&t<=95?1===s?fy[e]:gy[e]:1===s?my[e]:yy[e];const r=this.channels[s];return!!r&&(r.setPAC(this.interpretPAC(i,t)),this.currentChannel=s,!0)}interpretPAC(e,t){let i;const s={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,s.underline=1==(1&i),i<=13?s.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(s.italics=!0,s.color="white"):s.indent=4*Math.floor((i-16)/2),s}parseChars(e,t){let i,s=null,r=null;if(e>=25?(i=2,r=e-8):(i=1,r=e),r>=17&&r<=19){let e;e=17===r?t+80:18===r?t+112:t+144,this.logger.log(2,(()=>"Special char '"+cy(e)+"' in channel "+i)),s=[e]}else e>=32&&e<=127&&(s=0===t?[e]:[e,t]);return s&&this.logger.log(3,(()=>"Char codes = "+vy(s).join(","))),s}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const s={};16===e||24===e?(i=Math.floor((t-32)/2),s.background=Ay[i],t%2==1&&(s.background=s.background+"_semi")):45===t?s.background="transparent":(s.foreground="black",47===t&&(s.underline=!0));const r=e<=23?1:2;return this.channels[r].setBkgData(s),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var Dy=function(){if(null!=yu&&yu.VTTCue)return self.VTTCue;const 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;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function s(e){return i(t,e)}function r(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");b=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"positionAlign",r({},l,{get:function(){return v},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");v=t,this.hasBeenReset=!0}})),Object.defineProperty(n,"size",r({},l,{get:function(){return _},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");_=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"align",r({},l,{get:function(){return w},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");w=t,this.hasBeenReset=!0}})),n.displayState=void 0}return o.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},o}();class Ry{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Iy(e){function t(e,t,i,s){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(s||0)}const 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}class Py{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let s=0;s=0&&i<=100)return this.set(e,i),!0}return!1}}function By(e,t,i,s){const r=s?e.split(s):[e];for(const e in r){if("string"!=typeof r[e])continue;const s=r[e].split(i);if(2!==s.length)continue;t(s[0],s[1])}}const My=new Dy(0,0,""),Fy="middle"===My.align?"middle":"center";function Uy(e,t,i){const s=e;function r(){const t=Iy(e);if(null===t)throw new Error("Malformed timestamp: "+s);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function o(){e=e.replace(/^\s+/,"")}if(o(),t.startTime=r(),o(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+s);e=e.slice(3),o(),t.endTime=r(),o(),function(e,t){const s=new Py;By(e,(function(e,t){let r;switch(e){case"region":for(let r=i.length-1;r>=0;r--)if(i[r].id===t){s.set(e,i[r].region);break}break;case"vertical":s.alt(e,t,["rl","lr"]);break;case"line":r=t.split(","),s.integer(e,r[0]),s.percent(e,r[0])&&s.set("snapToLines",!1),s.alt(e,r[0],["auto"]),2===r.length&&s.alt("lineAlign",r[1],["start",Fy,"end"]);break;case"position":r=t.split(","),s.percent(e,r[0]),2===r.length&&s.alt("positionAlign",r[1],["start",Fy,"end","line-left","line-right","auto"]);break;case"size":s.percent(e,t);break;case"align":s.alt(e,t,["start",Fy,"end","left","right"])}}),/:/,/\s/),t.region=s.get("region",null),t.vertical=s.get("vertical","");let r=s.get("line","auto");"auto"===r&&-1===My.line&&(r=-1),t.line=r,t.lineAlign=s.get("lineAlign","start"),t.snapToLines=s.get("snapToLines",!0),t.size=s.get("size",100),t.align=s.get("align",Fy);let o=s.get("position","auto");"auto"===o&&50===My.position&&(o="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=o}(e,t)}function Oy(e){return e.replace(//gi,"\n")}class Ny{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new Ry,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=Oy(e);i>>0).toString()};function zy(e,t,i){return Wy(e.toString())+Wy(t.toString())+Wy(i)}function $y(e,t,i,s,r,o,a){const n=new Ny,l=$u(new Uint8Array(e)).trim().replace(jy,"\n").split("\n"),d=[],h=t?function(e,t=1){return Ug(e,9e4,1/t)}(t.baseTime,t.timescale):0;let c,u="00:00.000",p=0,f=0,m=!0;n.oncue=function(e){const o=i[s];let a=i.ccOffset;const n=(p-h)/9e4;if(null!=o&&o.new&&(void 0!==f?a=i.ccOffset=o.start:function(e,t,i){let s=e[t],r=e[s.prevCC];if(!r||!r.new&&s.new)return e.ccOffset=e.presentationOffset=s.start,void(s.new=!1);for(;null!=(o=r)&&o.new;){var o;e.ccOffset+=s.start-r.start,s.new=!1,s=r,r=e[s.prevCC]}e.presentationOffset=i}(i,s,n)),n){if(!t)return void(c=new Error("Missing initPTS for VTT MPEGTS"));a=n-i.presentationOffset}const l=e.endTime-e.startTime,u=zg(9e4*(e.startTime+a-f),9e4*r)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=zy(e.startTime,e.endTime,m)),e.endTime>0&&d.push(e)},n.onparsingerror=function(e){c=e},n.onflush=function(){c?a(c):o(d)},l.forEach((e=>{if(m){if(Gy(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Gy(e,"LOCAL:")?u=e.slice(6):Gy(e,"MPEGTS:")&&(p=parseInt(e.slice(7)))}));try{f=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),s=parseInt(e.slice(-9,-7)),r=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!($c(t)&&$c(i)&&$c(s)&&$c(r)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*s,t+=36e5*r,t}(u)/1e3}catch(e){c=e}return}""===e&&(m=!1)}n.parse(e+"\n")})),n.flush()}const Vy="stpp.ttml.im1t",Hy=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Jy=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,qy={left:"start",center:"center",right:"end",start:"start",end:"end"};function Ky(e,t,i,s){const r=sp(new Uint8Array(e),["mdat"]);if(0===r.length)return void s(new Error("Could not parse IMSC1 mdat"));const o=r.map((e=>$u(e))),a=function(e,t,i=1,s=!1){return Ug(e,t,1/i,s)}(t.baseTime,1,t.timescale);try{o.forEach((e=>i(function(e,t){const i=new DOMParser,s=i.parseFromString(e,"text/xml").getElementsByTagName("tt")[0];if(!s)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},o=Object.keys(r).reduce(((e,t)=>(e[t]=s.getAttribute(`ttp:${t}`)||r[t],e)),{}),a="preserve"!==s.getAttribute("xml:space"),n=Qy(Yy(s,"styling","style")),l=Qy(Yy(s,"layout","region")),d=Yy(s,"body","[begin]");return[].map.call(d,(e=>{const i=Xy(e,a);if(!i||!e.hasAttribute("begin"))return null;const s=tA(e.getAttribute("begin"),o),r=tA(e.getAttribute("dur"),o);let d=tA(e.getAttribute("end"),o);if(null===s)throw eA(e);if(null===d){if(null===r)throw eA(e);d=s+r}const h=new Dy(s-t,d-t,i);h.id=zy(h.startTime,h.endTime,h.text);const c=function(e,t,i){const s="http://www.w3.org/ns/ttml#styling";let r=null;const o=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;a&&i.hasOwnProperty(a)&&(r=i[a]);return o.reduce(((i,o)=>{const a=Zy(t,s,o)||Zy(e,s,o)||Zy(r,s,o);return a&&(i[o]=a),i}),{})}(l[e.getAttribute("region")],n[e.getAttribute("style")],n),{textAlign:u}=c;if(u){const e=qy[u];e&&(h.lineAlign=e),h.align=u}return zc(h,c),h})).filter((e=>null!==e))}(e,a))))}catch(e){s(e)}}function Yy(e,t,i){const s=e.getElementsByTagName(t)[0];return s?[].slice.call(s.querySelectorAll(i)):[]}function Qy(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function Xy(e,t){return[].slice.call(e.childNodes).reduce(((e,i,s)=>{var r;return"br"===i.nodeName&&s?e+"\n":null!=(r=i.childNodes)&&r.length?Xy(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function Zy(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function eA(e){return new Error(`Could not parse ttml timestamp ${e}`)}function tA(e,t){if(!e)return null;let i=Iy(e);return null===i&&(Hy.test(e)?i=function(e,t){const i=Hy.exec(e),s=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+s/t.frameRate}(e,t):Jy.test(e)&&(i=function(e,t){const i=Jy.exec(e),s=Number(i[1]);switch(i[2]){case"h":return 3600*s;case"m":return 60*s;case"ms":return 1e3*s;case"f":return s/t.frameRate;case"t":return s/t.tickRate}return s}(e,t))),i}function iA(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function sA(e,t){return!!e&&e.kind===iA(t)&&oy(t,e)}class rA{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(Jc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(Jc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Jc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Jc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Jc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Jc.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(Jc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(Jc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Jc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Jc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Jc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Jc.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&$c(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&eu.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,rA.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const 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}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let s=e.length-1;const r=Math.max(t,i);for(let t=0;t=r||i.height>=r)&&(o=i,!(a=e[t+1])||o.width!==a.width||o.height!==a.height)){s=t;break}}var o,a;return s}}const oA="[eme]";class aA{constructor(e){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=aA.CDMCleanupPromise?[aA.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=eu.debug.bind(eu,oA),this.log=eu.log.bind(eu,oA),this.warn=eu.warn.bind(eu,oA),this.error=eu.error.bind(eu,oA),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const e=this.config;e.requestMediaKeySystemAccessFunc=null,e.licenseXhrSetup=e.licenseResponseCallback=void 0,e.drmSystems=e.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(Jc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(Jc.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(Jc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(Jc.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,s=t[e];if(s)return s.licenseUrl;if(e===Au.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,s=t.map((e=>e.audioCodec)).filter(i),r=t.map((e=>e.videoCodec)).filter(i);return s.length+r.length===0&&r.push("avc1.42e01e"),new Promise(((t,i)=>{const o=e=>{const a=e.shift();this.getMediaKeysPromise(a,s,r).then((e=>t({keySystem:a,mediaKeys:e}))).catch((t=>{e.length?o(e):i(t instanceof nA?t:new nA({type:qc.KEY_SYSTEM_ERROR,details:Kc.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};o(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===Lu&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const s=function(e,t,i,s){let r;switch(e){case Au.FAIRPLAY:r=["cenc","sinf"];break;case Au.WIDEVINE:case Au.PLAYREADY:r=["cenc"];break;case Au.CLEARKEY:r=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,s){return[{initDataTypes:e,persistentState:s.persistentState||"optional",distinctiveIdentifier:s.distinctiveIdentifier||"optional",sessionTypes:s.sessionTypes||[s.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:s.audioRobustness||"",encryptionScheme:s.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:s.videoRobustness||"",encryptionScheme:s.videoEncryptionScheme||null})))}]}(r,t,i,s)}(e,t,i,this.config.drmSystemOptions),r=this.keySystemAccessPromises[e];let o=null==r?void 0:r.keySystemAccess;if(!o){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(s)}`),o=this.requestMediaKeySystemAccess(e,s);const t=this.keySystemAccessPromises[e]={keySystemAccess:o};return o.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),o.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const s=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),s.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return o.then((()=>r.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${Ju(e.keyId||[])}`);const s=i.createSession(),r={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:s,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),s=this.getKeyIdString(t),r="cenc";this.keyIdToKeySessionPromise[s]=this.generateRequestWithPreferredKeySession(i,r,t.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(e)}getKeyIdString(e){if(!e)throw new Error("Could not read keyId of undefined decryptdata");if(null===e.keyId)throw new Error("keyId is null");return Ju(e.keyId)}updateKeySession(e,t){var i;const s=e.mediaKeysSession;return this.log(`Updating key-session "${s.sessionId}" for keyID ${Ju((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),s.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const s=ku(this.config),r=e.map(Su).filter((e=>!!e&&-1!==s.indexOf(e)));return this.getKeySystemSelectionPromise(r).then((({keySystem:e})=>{const s=Tu(e);s?t(s):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),s=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${s}`);let r=this.keyIdToKeySessionPromise[i];return r||(r=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:r})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${s}`),this.attemptSetMediaKeys(i,r).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:r,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),r.catch((e=>this.handleError(e)))),r}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof nA?this.hls.trigger(Jc.ERROR,e.data):this.hls.trigger(Jc.ERROR,{type:qc.KEY_SYSTEM_ERROR,details:Kc.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=Su(e.keyFormat),i=t?[t]:ku(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=ku(this.config)),0===e.length)throw new nA({type:qc.KEY_SYSTEM_ERROR,details:Kc.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(e)}_onMediaEncrypted(e){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let s,r;if("sinf"===t&&this.config.drmSystems[Au.FAIRPLAY]){const e=Qu(new Uint8Array(i));try{const t=fu(JSON.parse(e).sinf),i=hp(new Uint8Array(t));if(!i)return;s=i.subarray(8,24),r=Au.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),s=i.getUint32(0);if(e.byteLength!==s&&s>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=Ju(new Uint8Array(e,12,16));const r=i.getUint32(28);if(0===t.version){if(s-32this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-key-match")));break}}l||(l=a[o]=this.getKeySystemSelectionPromise([r]).then((({keySystem:e,mediaKeys:r})=>{var a;this.throwIfDestroyed();const n=new bp("ISO-23001-7",o,null!=(a=Tu(e))?a:"");return n.pssh=new Uint8Array(i),n.keyId=s,this.attemptSetMediaKeys(e,r).then((()=>{this.throwIfDestroyed();const s=this.createMediaKeySessionContext({decryptdata:n,keySystem:e,mediaKeys:r});return this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const s=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(s),s.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(s),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,s){var r,o;const a=null==(r=this.config.drmSystems)||null==(o=r[e.keySystem])?void 0:o.generateRequest;if(a)try{const s=a.call(this.hls,t,i,e);if(!s)throw new Error("Invalid response from configured generateRequest filter");t=s.initDataType,i=e.decryptdata.pssh=s.initData?new Uint8Array(s.initData):null}catch(e){var n;if(this.warn(e.message),null!=(n=this.hls)&&n.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${s}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${s}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const d=new ty,h=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void d.emit("error",new Error("invalid state"));const{messageType:s,message:r}=t;this.log(`"${s}" message event for session "${i.sessionId}" message size: ${r.byteLength}`),"license-request"===s||"license-renewal"===s?this.renewLicense(e,r).catch((e=>{this.handleError(e),d.emit("error",e)})):"license-release"===s?e.keySystem===Au.FAIRPLAY&&(this.updateKeySession(e,gu("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${s}"`)},c=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void d.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;d.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",h),e.mediaKeysSession.addEventListener("keystatuseschange",c);const u=new Promise(((e,t)=>{d.on("error",t),d.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new nA({type:qc.KEY_SYSTEM_ERROR,details:Kc.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new nA({type:qc.KEY_SYSTEM_ERROR,details:Kc.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new nA({type:qc.KEY_SYSTEM_ERROR,details:Kc.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw d.removeAllListeners(),this.removeSession(e),t})).then((()=>(d.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${Ju("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${Ju(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),s=this.getServerCertificateUrl(e);return s?(this.log(`Fetching server certificate for "${e}"`),new Promise(((r,o)=>{const a={responseType:"arraybuffer",url:s},n=t.certLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{r(e.data)},onError:(t,i,r,n)=>{o(new nA({type:qc.KEY_SYSTEM_ERROR,details:Kc.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:jc({url:a.url,data:void 0},t)},`"${e}" certificate request failed (${s}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,r)=>{o(new nA({type:qc.KEY_SYSTEM_ERROR,details:Kc.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:{url:a.url,data:void 0}},`"${e}" certificate request timed out (${s})`))},onAbort:(e,t,i)=>{o(new Error("aborted"))}};i.load(a,l,d)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((s,r)=>{e.setServerCertificate(i).then((r=>{this.log(`setServerCertificate ${r?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),s(e)})).catch((e=>{r(new nA({type:qc.KEY_SYSTEM_ERROR,details:Kc.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new nA({type:qc.KEY_SYSTEM_ERROR,details:Kc.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const s=(new DOMParser).parseFromString(i,"application/xml"),r=s.querySelectorAll("HttpHeader");if(r.length>0){let t;for(let i=0,s=r.length;i in key message");return gu(atob(l))}setupLicenseXHR(e,t,i,s){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return r.call(this.hls,e,t,i,s)})).catch((o=>{if(!i.decryptdata)throw o;return e.open("POST",t,!0),r.call(this.hls,e,t,i,s)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||s}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:s}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((s,r)=>{const o=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${o}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return r(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let t=a.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,a,o,e)}catch(e){this.error(e)}s(t)}else{const n=i.errorRetry,l=n?n.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)r(new nA({type:qc.KEY_SYSTEM_ERROR,details:Kc.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:o,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${o}). Status: ${a.status} (${a.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(s,r)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=a,this.setupLicenseXHR(a,o,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==Au.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const e=this.media,t=this.mediaKeySessions;e&&(e.removeEventListener("encrypted",this.onMediaEncrypted),e.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},bp.clearKeyUriToKeyIdMap();const i=t.length;aA.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=e;if(t){this.log(`Remove licenses and keys and close session ${t.sessionId}`),e._onmessage&&(t.removeEventListener("message",e._onmessage),e._onmessage=void 0),e._onkeystatuseschange&&(t.removeEventListener("keystatuseschange",e._onkeystatuseschange),e._onkeystatuseschange=void 0),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const s=this.mediaKeySessions.indexOf(e);return s>-1&&this.mediaKeySessions.splice(s,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}aA.CDMCleanupPromise=void 0;class nA extends Error{constructor(e,t){super(t),this.data=void 0,e.error||(e.error=new Error(t)),this.data=e,e.err=e.error}}var lA,dA,hA;!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"}(lA||(lA={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(dA||(dA={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(hA||(hA={}));const cA={[hA.OBJECT]:["br","d","ot","tb"],[hA.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[hA.SESSION]:["cid","pr","sf","sid","st","v"],[hA.STATUS]:["bs","rtp"]};class uA{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof uA?e:new uA(e)))),this.value=e,this.params=t}}class pA{constructor(e){this.description=void 0,this.description=e}}function fA(e,t,i,s){return new Error(`failed to ${e} "${r=t,Array.isArray(r)?JSON.stringify(r):r instanceof Map?"Map{}":r instanceof Set?"Set{}":"object"==typeof r?JSON.stringify(r):String(r)}" as ${i}`,{cause:s});var r}const mA="Bare Item";const gA=/[\x00-\x1f\x7f]+/;function yA(e,t,i){return fA("serialize",e,t,i)}function AA(e){if(!1===ArrayBuffer.isView(e))throw yA(e,"Byte Sequence");return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function bA(e){if(function(e){return e<-999999999999999||99999999999999912)throw yA(e,"Decimal");const i=t.toString();return i.includes(".")?i:`${i}.0`}function wA(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw yA(t,"Token");return t}function SA(e){switch(typeof e){case"number":if(!$c(e))throw yA(e,mA);return Number.isInteger(e)?bA(e):_A(e);case"string":return function(e){if(gA.test(e))throw yA(e,"String");return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return wA(e);case"boolean":return function(e){if("boolean"!=typeof e)throw yA(e,"Boolean");return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${bA(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return AA(e);if(e instanceof pA)return wA(e);default:throw yA(e,mA)}}function EA(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw yA(e,"Key");return e}function TA(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${EA(e)}`:`;${EA(e)}=${SA(t)}`)).join("")}function kA(e){return e instanceof uA?`${SA(e.value)}${TA(e.params)}`:SA(e)}function LA(e,t={whitespace:!0}){if("object"!=typeof e)throw yA(e,"Dict");const i=e instanceof Map?e.entries():Object.entries(e),s=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof uA==!1&&(t=new uA(t));let i=EA(e);var s;return!0===t.value?i+=TA(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(s=t).value.map(kA).join(" ")})${TA(s.params)}`:i+=kA(t)),i})).join(`,${s}`)}const CA=e=>Math.round(e),xA=e=>100*CA(e/100),DA={br:CA,d:CA,bl:xA,dl:xA,mtp:xA,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),s=new URL(t);if(i.origin!==s.origin)return e;const r=i.pathname.split("/").slice(1),o=s.pathname.split("/").slice(1,-1);for(;r[0]===o[0];)r.shift(),o.shift();for(;o.length;)o.shift(),r.unshift("..");return r.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:xA,tb:CA};function RA(e,t){const i={};if(null==e||"object"!=typeof e)return i;const s=Object.keys(e).sort(),r=zc({},DA,null==t?void 0:t.formatters),o=null==t?void 0:t.filter;return s.forEach((s=>{if(null!=o&&o(s))return;let a=e[s];const n=r[s];n&&(a=n(a,t)),"v"===s&&1===a||"pr"==s&&1===a||(e=>"number"==typeof e?$c(e):null!=e&&""!==e&&!1!==e)(a)&&((e=>"ot"===e||"sf"===e||"st"===e)(s)&&"string"==typeof a&&(a=new pA(a)),i[s]=a)})),i}function IA(e,t={}){return e?function(e,t){return LA(e,t)}(RA(e,t),zc({whitespace:!1},t)):""}function PA(e,t,i){return zc(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),s=Object.entries(cA).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),r=i.reduce(((e,t)=>{var i;const[r,o]=t,a=(null==(i=s.find((e=>e[1].includes(r))))?void 0:i[0])||hA.REQUEST;return null!=e[a]||(e[a]={}),e[a][r]=o,e}),{});return Object.entries(r).reduce(((e,[i,s])=>(e[i]=IA(s,t),e)),{})}(t,i))}const BA=/CMCD=[^&#]+/;function MA(e,t,i){const s=function(e,t={}){if(!e)return"";const i=IA(e,t);return`CMCD=${encodeURIComponent(i)}`}(t,i);if(!s)return e;if(BA.test(e))return e.replace(BA,s);const r=e.includes("?")?"&":"?";return`${e}${r}${s}`}function FA(e,t,i,s){e&&Object.keys(t).forEach((r=>{const o=e.filter((e=>e.groupId===r)).map((e=>{const o=zc({},e);return o.details=void 0,o.attrs=new su(o.attrs),o.url=o.attrs.URI=UA(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),o.groupId=o.attrs["GROUP-ID"]=t[r],o.attrs["PATHWAY-ID"]=s,o}));e.push(...o)}))}function UA(e,t,i,s){const{HOST:r,PARAMS:o,[i]:a}=s;let n;t&&(n=null==a?void 0:a[t],n&&(e=n));const l=new self.URL(e);return r&&!n&&(l.host=r),o&&Object.keys(o).sort().forEach((e=>{e&&l.searchParams.set(e,o[e])})),l.href}const OA=/^age:\s*[\d.]+\s*$/im;class NA{constructor(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=e&&e.xhrSetup||null,this.stats=new au,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,s=this.stats;s.loading.first=0,s.loaded=0,s.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then((()=>{if(this.loader===i&&!this.stats.aborted)return r(i,t.url)})).catch((e=>{if(this.loader===i&&!this.stats.aborted)return i.open("GET",t.url,!0),r(i,t.url)})).then((()=>{this.loader!==i||this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,s)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const s=t.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:o}=i.loadPolicy;if(s)for(const t in s)e.setRequestHeader(t,s[t]);t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,self.clearTimeout(this.requestTimeout),i.timeout=r&&$c(r)?r:o,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const s=t.readyState,r=this.config;if(!i.aborted&&s>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===s)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const s=t.status,o="text"!==t.responseType;if(s>=200&&s<300&&(o&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const r=o?t.response:t.responseText,a="arraybuffer"===t.responseType?r.byteLength:r.length;if(i.loaded=i.total=a,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const n=this.callbacks.onProgress;if(n&&n(i,e,r,t),!this.callbacks)return;const l={url:t.responseURL,data:r,code:s};this.callbacks.onSuccess(l,i,e,t)}else{const o=r.loadPolicy.errorRetry;Wf(o,i.retry,!1,{url:e.url,data:void 0,code:s})?this.retry(o):(eu.error(`${s} while loading ${e.url}`),this.callbacks.onError({code:s,text:t.statusText},e,t,i))}}}loadtimeout(){if(!this.config)return;const e=this.config.loadPolicy.timeoutRetry;if(Wf(e,this.stats.retry,!0))this.retry(e);else{var t;eu.warn(`timeout while loading ${null==(t=this.context)?void 0:t.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=jf(e,i.retry),i.retry++,eu.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)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&OA.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const jA=/(\d+)-(\d+)\/(\d+)/;class GA{constructor(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||WA,this.controller=new self.AbortController,this.stats=new au}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now();const r=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(zc({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),o=i.onProgress,a="arraybuffer"===e.responseType,n=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:d}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,r),self.clearTimeout(this.requestTimeout),t.timeout=l&&$c(l)?l:d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),t.timeout),self.fetch(this.request).then((r=>{this.response=this.loader=r;const n=Math.max(self.performance.now(),s.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),d-(n-s.loading.start)),!r.ok){const{status:e,statusText:t}=r;throw new zA(t||"fetch, bad network response",e,r)}return s.loading.first=n,s.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=jA.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if($c(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(r.headers)||s.total,o&&$c(t.highWaterMark)?this.loadProgressively(r,s,e,t.highWaterMark,o):a?r.arrayBuffer():"json"===e.responseType?r.json():r.text()})).then((r=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),s.loading.end=Math.max(self.performance.now(),s.loading.first);const l=r[n];l&&(s.loaded=s.total=l);const d={url:a.url,data:r,code:a.status};o&&!$c(t.highWaterMark)&&o(s,e,r,a),i.onSuccess(d,s,e,a)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),s.aborted)return;const r=t&&t.code||0,o=t?t.message:null;i.onError({code:r,text:o},e,t?t.details:null,s)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,s=0,r){const o=new Qm,a=e.body.getReader(),n=()=>a.read().then((a=>{if(a.done)return o.dataLength&&r(t,i,o.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=a.value,d=l.length;return t.loaded+=d,d=s&&r(t,i,o.flush(),e)):r(t,i,l,e),n()})).catch((()=>Promise.reject()));return n()}}function WA(e,t){return new self.Request(e.url,t)}class zA extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const $A=/\s/,VA={newCue(e,t,i,s){const r=[];let o,a,n,l,d;const h=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const s=Oy(d.trim()),p=zy(t,i,s);null!=e&&null!=(c=e.cues)&&c.getCueById(p)||(a=new h(t,i,s),a.id=p,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),r.push(a))}return e&&r.length&&(r.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),r.forEach((t=>lf(e,t)))),r}},HA=jc(jc({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:NA,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:class{constructor(e){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:s,media:r}=i;if(!e||!r)return;const o=performance.now(),a=t?t.stats:e.stats,n=t?t.duration:e.duration,l=o-a.loading.start,d=i.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||e.level<=d)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!s||r.paused||!r.playbackRate||!r.readyState)return;const h=i.mainForwardBufferInfo;if(null===h)return;const c=this.bwEstimator.getEstimateTTFB(),u=Math.abs(r.playbackRate);if(l<=Math.max(c,n/(2*u)*1e3))return;const p=h.len/u,f=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&f>-1,g=this.getBwEstimate(),y=i.levels,A=y[e.level],b=a.total||Math.max(a.loaded,Math.round(n*A.averageBitrate/8));let v=m?l-f:l;v<1&&m&&(v=Math.min(l,8*a.loaded/g));const _=m?1e3*a.loaded/v:0,w=_?(b-a.loaded)/_:8*b/g+c/1e3;if(w<=p)return;const S=_?8*_:g;let E,T=Number.POSITIVE_INFINITY;for(E=e.level-1;E>d;E--){const e=y[E].maxBitrate;if(T=this.getTimeToLoadFrag(c/1e3,S,n*e,!y[E].details),T=w)return;if(T>10*n)return;i.nextLoadLevel=i.nextAutoLevel=E,m?this.bwEstimator.sample(l-Math.min(c,f),a.loaded):this.bwEstimator.sampleTTFB(l);const k=y[E].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>k&&this.resetEstimator(k),this.clearTimer(),eu.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${p.toFixed(3)} s\n Estimated load time for current fragment: ${w.toFixed(3)} s\n Estimated load time for down switch fragment: ${T.toFixed(3)} s\n TTFB estimate: ${0|f} ms\n Current BW estimate: ${$c(g)?0|g:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${E} @ ${0|k} bps`),i.trigger(Jc.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:a})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(eu.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new im(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Jc.FRAG_LOADING,this.onFragLoading,this),e.on(Jc.FRAG_LOADED,this.onFragLoaded,this),e.on(Jc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Jc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Jc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Jc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Jc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(Jc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Jc.FRAG_LOADING,this.onFragLoading,this),e.off(Jc.FRAG_LOADED,this.onFragLoaded,this),e.off(Jc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Jc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Jc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Jc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Jc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(Jc.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(e,t){const i=t.frag;if(!this.ignoreFragment(i)){var s;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(s=t.part)?s:null;this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(e,t){this.clearTimer()}onError(e,t){if(!t.fatal)switch(t.details){case Kc.BUFFER_ADD_CODEC_ERROR:case Kc.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case Kc.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:s}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=s?s.stats:e.stats,r=t-i.loading.start,o=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&o>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(r-Math.min(e,o),i.loaded)}else this.bwEstimator.sampleTTFB(r)}break}}}getTimeToLoadFrag(e,t,i,s){return e+i/t+(s?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:s}=t.stats,r=s.end-s.start;$c(r)&&(this.lastLevelLoadSec=r/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const s=i?i.stats:t.stats;if(t.type===ef&&this.bwEstimator.sampleTTFB(s.loading.first-s.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,r=this.hls.levels[t.level],o=(r.loaded?r.loaded.bytes:0)+s.loaded,a=(r.loaded?r.loaded.duration:0)+e;r.loaded={bytes:o,duration:a},r.realBitrate=Math.round(8*o/a)}if(t.bitrateTest){const e={stats:s,frag:t,part:i,id:t.type};this.onFragBuffered(Jc.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:s}=t,r=null!=s&&s.stats.loaded?s.stats:i.stats;if(r.aborted)return;if(this.ignoreFragment(i))return;const o=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(o,r.loaded),r.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=o/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==ef||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),s=this.hls.config.maxStarvationDelay,r=this.findBestLevel(i,t,e,0,s,1,1);if(r>-1)return r;const o=this.hls.firstLevel,a=Math.min(Math.max(o,t),e);return eu.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${o} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const s=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,s)&&t[e].loadError<=t[s].loadError)return e}return this._nextAutoLevel=s,this.nextAutoLevelKey=this.getAutoLevelKey(),s}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:s,config:r,minAutoLevel:o}=i,a=t?t.duration:e?e.duration:0,n=this.getBwEstimate(),l=this.getStarvationDelay();let d=r.abrBandWidthFactor,h=r.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(n,o,s,l,0,d,h);if(e>=0)return e}let c=a?Math.min(a,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){c=(a?Math.min(a,r.maxLoadingDelay):r.maxLoadingDelay)-e,eu.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),d=h=1}}const u=this.findBestLevel(n,o,s,l,c,d,h);if(eu.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const p=i.levels[o],f=i.levels[i.loadLevel];return(null==p?void 0:p.bitrate)<(null==f?void 0:f.bitrate)?o:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,s=e.mainForwardBufferInfo;return(s?s.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,s,r,o,a){var n;const l=s+r,d=this.lastLoadedFragLevel,h=-1===d?this.hls.firstLevel:d,{fragCurrent:c,partCurrent:u}=this,{levels:p,allAudioTracks:f,loadLevel:m,config:g}=this.hls;if(1===p.length)return 0;const y=p[h],A=!(null==y||null==(n=y.details)||!n.live),b=-1===m||-1===d;let v,_="SDR",w=(null==y?void 0:y.frameRate)||0;const{audioPreference:S,videoPreference:E}=g,T=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const s=t.channels||"2";return i.channels[s]=(i.channels[s]||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:{}})}(f));if(b){if(-1!==this.firstSelection)return this.firstSelection;const s=this.codecTiers||(this.codecTiers=function(e,t,i,s){return e.slice(i,s+1).reduce(((e,i)=>{if(!i.codecSet)return e;const s=i.audioGroups;let r=e[i.codecSet];r||(e[i.codecSet]=r={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!s,fragmentError:0}),r.minBitrate=Math.min(r.minBitrate,i.bitrate);const o=Math.min(i.height,i.width);return r.minHeight=Math.min(r.minHeight,o),r.minFramerate=Math.min(r.minFramerate,i.frameRate),r.maxScore=Math.max(r.maxScore,i.score),r.fragmentError+=i.fragmentError,r.videoRanges[i.videoRange]=(r.videoRanges[i.videoRange]||0)+1,s&&s.forEach((e=>{if(!e)return;const i=t.groups[e];i&&(r.hasDefaultAudio=r.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{r.channels[e]=(r.channels[e]||0)+i.channels[e]})))})),e}),{})}(p,T,t,i)),r=function(e,t,i,s,r){const o=Object.keys(e),a=null==s?void 0:s.channels,n=null==s?void 0:s.audioCodec,l=a&&2===parseInt(a);let d=!0,h=!1,c=1/0,u=1/0,p=1/0,f=0,m=[];const{preferHDR:g,allowedVideoRanges:y}=nm(t,r);for(let t=o.length;t--;){const i=e[o[t]];d=i.channels[2]>0,c=Math.min(c,i.minHeight),u=Math.min(u,i.minFramerate),p=Math.min(p,i.minBitrate);const s=y.filter((e=>i.videoRanges[e]>0));s.length>0&&(h=!0,m=s)}c=$c(c)?c:0,u=$c(u)?u:0;const A=Math.max(1080,c),b=Math.max(30,u);p=$c(p)?p:i,i=Math.max(p,i),h||(t=void 0,m=[]);const v=o.reduce(((t,s)=>{const r=e[s];if(s===t)return t;if(r.minBitrate>i)return lm(s,`min bitrate of ${r.minBitrate} > current estimate of ${i}`),t;if(!r.hasDefaultAudio)return lm(s,"no renditions with default or auto-select sound found"),t;if(n&&s.indexOf(n.substring(0,4))%5!=0)return lm(s,`audio codec preference "${n}" not found`),t;if(a&&!l){if(!r.channels[a])return lm(s,`no renditions with ${a} channel sound found (channels options: ${Object.keys(r.channels)})`),t}else if((!n||l)&&d&&0===r.channels[2])return lm(s,"no renditions with stereo sound found"),t;return r.minHeight>A?(lm(s,`min resolution of ${r.minHeight} > maximum of ${A}`),t):r.minFramerate>b?(lm(s,`min framerate of ${r.minFramerate} > maximum of ${b}`),t):m.some((e=>r.videoRanges[e]>0))?r.maxScore=Ip(t)||r.fragmentError>e[t].fragmentError)?t:(f=r.maxScore,s):(lm(s,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0);return{codecSet:v,videoRanges:m,preferHDR:g,minFramerate:u,minBitrate:p}}(s,_,e,S,E),{codecSet:o,videoRanges:a,minFramerate:n,minBitrate:l,preferHDR:d}=r;v=o,_=d?a[a.length-1]:a[0],w=n,e=Math.max(e,l),eu.log(`[abr] picked start tier ${JSON.stringify(r)}`)}else v=null==y?void 0:y.codecSet,_=null==y?void 0:y.videoRange;const k=u?u.duration:c?c.duration:0,L=this.bwEstimator.getEstimateTTFB()/1e3,C=[];for(let n=i;n>=t;n--){var x;const t=p[n],c=n>h;if(!t)continue;if(g.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&om(t,T,_,w,e,S)?(t.supportedPromise=am(t,T,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,s=i.indexOf(t);e.error?eu.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${s} ${JSON.stringify(e)}`):e.supported||(eu.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${s} ${JSON.stringify(e)}`),s>-1&&i.length>1&&(eu.log(`[abr] Removing unsupported level ${s}`),this.hls.removeLevel(s)))}))):t.supportedResult=sm}if(v&&t.codecSet!==v||_&&t.videoRange!==_||c&&w>t.frameRate||!c&&w>0&&w=2*k&&0===r?p[n].averageBitrate:p[n].maxBitrate,I=this.getTimeToLoadFrag(L,D,R*E,void 0===f);if(D>=R&&(n===d||0===t.loadError&&0===t.fragmentError)&&(I<=L||!$c(I)||A&&!this.bitrateTestDelay||I${n} adjustedbw(${Math.round(D)})-bitrate=${Math.round(D-R)} ttfb:${L.toFixed(1)} avgDuration:${E.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${I.toFixed(1)} firstSelection:${b} codecSet:${v} videoRange:${_} hls.loadLevel:${m}`)),b&&(this.firstSelection=n),n}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,s=Math.min(Math.max(e,i),t);this._nextAutoLevel!==s&&(this.nextAutoLevelKey="",this._nextAutoLevel=s)}},bufferController:class{constructor(e){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(Jc.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&eu.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";var i;this.appendSource=(i=kp(e.config.preferManagedMediaSource),"undefined"!=typeof self&&i===self.ManagedMediaSource),this.log=eu.log.bind(eu,t),this.warn=eu.warn.bind(eu,t),this.error=eu.error.bind(eu,t),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){const{hls:e}=this;e.on(Jc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Jc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Jc.BUFFER_RESET,this.onBufferReset,this),e.on(Jc.BUFFER_APPENDING,this.onBufferAppending,this),e.on(Jc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(Jc.BUFFER_EOS,this.onBufferEos,this),e.on(Jc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Jc.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(Jc.FRAG_PARSED,this.onFragParsed,this),e.on(Jc.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(Jc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Jc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Jc.BUFFER_RESET,this.onBufferReset,this),e.off(Jc.BUFFER_APPENDING,this.onBufferAppending,this),e.off(Jc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(Jc.BUFFER_EOS,this.onBufferEos,this),e.off(Jc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Jc.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(Jc.FRAG_PARSED,this.onFragParsed,this),e.off(Jc.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new ny(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(e,t){let i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,s=kp(this.appendSource);if(i&&s){var r;const e=this.mediaSource=new s;this.log(`created media source: ${null==(r=e.constructor)?void 0:r.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const s=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||s&&e instanceof s,dy(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;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)),e&&(e.removeEventListener("emptied",this._onMediaEmptied),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&dy(e),e.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(Jc.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(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)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,s=Object.keys(t);if(s.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var s;const{id:r,codec:o,levelCodec:a,container:n,metadata:l}=t[e],d=Fp(i.codec,i.levelCodec),h=null==d?void 0:d.replace(ly,"$1");let c=Fp(o,a);const u=null==(s=c)?void 0:s.replace(ly,"$1");if(c&&h!==u){"audio"===e.slice(0,5)&&(c=Mp(c,this.appendSource));const t=`${n};codecs=${c}`;this.appendChangeType(e,t),this.log(`switching codec ${d} to ${c}`),this.tracks[e]={buffer:i.buffer,codec:o,container:n,levelCodec:a,metadata:l,id:r}}}}else this.pendingTracks[e]=t[e]})),i)return;const r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${s.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,s={execute:()=>{const s=this.sourceBuffer[e];s&&(this.log(`changing ${e} sourceBuffer type to ${t}`),s.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(s,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:s,tracks:r}=this,{data:o,type:a,frag:n,part:l,chunkMeta:d}=t,h=d.buffering[a],c=self.performance.now();h.start=c;const u=n.stats.buffering,p=l?l.stats.buffering:null;0===u.start&&(u.start=c),p&&0===p.start&&(p.start=c);const f=r.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==f?void 0:f.container)&&(m=!this.lastMpegAudioChunk||1===d.id||this.lastMpegAudioChunk.sn!==d.sn,this.lastMpegAudioChunk=d);const g=n.start,y={execute:()=>{if(h.executeStart=self.performance.now(),m){const e=this.sourceBuffer[a];if(e){const t=g-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${g} (delta: ${t}) sn: ${n.sn})`),e.timestampOffset=g)}}this.appendExecutor(o,a)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();h.executeEnd=h.end=e,0===u.first&&(u.first=e),p&&0===p.first&&(p.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=_m.getBuffered(t[e]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(Jc.BUFFER_APPENDED,{type:a,frag:n,part:l,chunkMeta:d,parent:n.type,timeRanges:i})},onError:e=>{const t={type:qc.MEDIA_ERROR,parent:n.type,details:Kc.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:n,part:l,chunkMeta:d,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=Kc.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[a];t.details=Kc.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(Jc.ERROR,t)}};s.append(y,a,!!this.pendingTracks[a])}onBufferFlushing(e,t){const{operationQueue:i}=this,s=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(Jc.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(s(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(s(e),e)}))}onFragParsed(e,t){const{frag:i,part:s}=t,r=[],o=s?s.elementaryStreams:i.elementaryStreams;o[du]?r.push("audiovideo"):(o[nu]&&r.push("audio"),o[lu]&&r.push("video"));0===r.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,s&&(s.stats.buffering.end=e);const t=s?s.stats:i.stats;this.hls.trigger(Jc.FRAG_BUFFERED,{frag:i,part:s,stats:t,id:i.type})}),r)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const s=this.sourceBuffer[i];return!s||t.type&&t.type!==i||(s.ending=!0,s.ended||(s.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(s&&!s.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const s=e.config,r=i.currentTime,o=t.levelTargetDuration,a=t.live&&null!==s.liveBackBufferLength?s.liveBackBufferLength:s.backBufferLength;if($c(a)&&a>0){const e=Math.max(a,o),t=Math.floor(r/o)*o-e;this.flushBackBuffer(r,o,t)}if($c(s.frontBufferFlushThreshold)&&s.frontBufferFlushThreshold>0){const e=Math.max(s.maxBufferLength,s.frontBufferFlushThreshold),t=Math.max(e,o),i=Math.floor(r/o)*o+t;this.flushFrontBuffer(r,o,i)}}flushBackBuffer(e,t,i){const{details:s,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((o=>{const a=r[o];if(a){const r=_m.getBuffered(a);if(r.length>0&&i>r.start(0)){if(this.hls.trigger(Jc.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=s&&s.live)this.hls.trigger(Jc.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(a.ended&&r.end(r.length-1)-e<2*t)return void this.log(`Cannot flush ${o} back buffer while SourceBuffer is in ended state`);this.hls.trigger(Jc.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:o})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((r=>{const o=s[r];if(o){const s=_m.getBuffered(o),a=s.length;if(a<2)return;const n=s.start(a-1),l=s.end(a-1);if(i>n||e>=n&&e<=l)return;if(o.ended&&e-l<2*t)return void this.log(`Cannot flush ${r} front buffer while SourceBuffer is in ended state`);this.hls.trigger(Jc.BUFFER_FLUSHING,{startOffset:n,endOffset:1/0,type:r})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:s}=this,r=e.fragments[0].start+e.totalduration,o=i.duration,a=$c(s.duration)?s.duration:0;e.live&&t.config.liveDurationInfinity?(s.duration=1/0,this.updateSeekableRange(e)):(r>a&&r>o||!$c(o))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),s.duration=r)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const s=Math.max(0,i[0].start),r=Math.max(s,s+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${s}-${r}.`),t.setLiveSeekableRange(s,r)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,s=Object.keys(i).length;if(s&&(!e||2===s||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(Jc.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const r in e)if(!t[r]){var s;const o=e[r];if(!o)throw Error(`source buffer exists for track ${r}, however track does not`);let a=-1===(null==(s=o.levelCodec)?void 0:s.indexOf(","))?o.levelCodec:o.codec;a&&"audio"===r.slice(0,5)&&(a=Mp(a,this.appendSource));const n=`${o.container};codecs=${a}`;this.log(`creating sourceBuffer(${n})`);try{const e=t[r]=i.addSourceBuffer(n),s=r;this.addBufferListener(s,"updatestart",this._onSBUpdateStart),this.addBufferListener(s,"updateend",this._onSBUpdateEnd),this.addBufferListener(s,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(s,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(Jc.BUFFER_FLUSHED,{type:r})})),this.tracks[r]={buffer:e,codec:a,container:o.container,levelCodec:o.levelCodec,metadata:o.metadata,id:o.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:r,mimeType:n})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const s=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${s}`,t),this.hls.trigger(Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:s,fatal:!1});const r=this.operationQueue.current(e);r&&r.onError(s)}removeExecutor(e,t,i){const{media:s,mediaSource:r,operationQueue:o,sourceBuffer:a}=this,n=a[e];if(!s||!r||!n)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void o.shiftAndExecuteNext(e);const l=$c(s.duration)?s.duration:1/0,d=$c(r.duration)?r.duration:1/0,h=Math.max(0,t),c=Math.min(i,l,d);c>h&&(!n.ending||n.ended)?(n.ended=!1,this.log(`Removing [${h},${c}] from the ${e} SourceBuffer`),n.remove(h,c)):o.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)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`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,s=t.map((e=>i.appendBlocker(e)));Promise.all(s).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const s=this.sourceBuffer[e];if(!s)return;const r=i.bind(this,e);this.listeners[e].push({event:t,listener:r}),s.addEventListener(t,r)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:rA,errorController:class{constructor(e){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=e,this.log=eu.log.bind(eu,"[info]:"),this.warn=eu.warn.bind(eu,"[warning]:"),this.error=eu.error.bind(eu,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Jc.ERROR,this.onError,this),e.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Jc.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Jc.ERROR,this.onError,this),e.off(Jc.ERROR,this.onErrorOut,this),e.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Jc.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===ef?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,s;if(t.fatal)return;const r=this.hls,o=t.context;switch(t.details){case Kc.FRAG_LOAD_ERROR:case Kc.FRAG_LOAD_TIMEOUT:case Kc.KEY_LOAD_ERROR:case Kc.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case Kc.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:Jf,flags:Qf});case Kc.FRAG_GAP:case Kc.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=qf);case Kc.LEVEL_EMPTY_ERROR:case Kc.LEVEL_PARSING_ERROR:{var a,n;const e=t.parent===ef?t.level:r.loadLevel;t.details===Kc.LEVEL_EMPTY_ERROR&&null!=(a=t.context)&&null!=(n=a.levelDetails)&&n.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case Kc.LEVEL_LOAD_ERROR:case Kc.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==o?void 0:o.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,o.level)));case Kc.AUDIO_TRACK_LOAD_ERROR:case Kc.AUDIO_TRACK_LOAD_TIMEOUT:case Kc.SUBTITLE_LOAD_ERROR:case Kc.SUBTITLE_TRACK_LOAD_TIMEOUT:if(o){const e=r.levels[r.loadLevel];if(e&&(o.type===Xp&&e.hasAudioGroup(o.groupId)||o.type===Zp&&e.hasSubtitleGroup(o.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,r.loadLevel),t.errorAction.action=qf,void(t.errorAction.flags=Xf)}return;case Kc.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=r.levels[r.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:qf,flags:Zf,hdcpLevel:i}:this.keySystemError(t)}return;case Kc.BUFFER_ADD_CODEC_ERROR:case Kc.REMUX_ALLOC_ERROR:case Kc.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(s=t.level)?s:r.loadLevel));case Kc.INTERNAL_EXCEPTION:case Kc.BUFFER_APPENDING_ERROR:case Kc.BUFFER_FULL_ERROR:case Kc.LEVEL_SWITCH_ERROR:case Kc.BUFFER_STALLED_ERROR:case Kc.BUFFER_SEEK_OVER_HOLE:case Kc.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:Jf,flags:Qf})}t.type===qc.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Nf(this.hls.config.playlistLoadPolicy,e),s=this.playlistError++;if(Wf(i,s,Of(e),e.response))return{action:Yf,flags:Qf,retryConfig:i,retryCount:s};const r=this.getLevelSwitchAction(e,t);return i&&(r.retryConfig=i,r.retryCount=s),r}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),s=t.levels[i],{fragLoadPolicy:r,keyLoadPolicy:o}=t.config,a=Nf(e.details.startsWith("key")?o:r,e),n=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(s){e.details!==Kc.FRAG_GAP&&s.fragmentError++;if(Wf(a,n,Of(e),e.response))return{action:Yf,flags:Qf,retryConfig:a,retryCount:n}}const l=this.getLevelSwitchAction(e,i);return a&&(l.retryConfig=a,l.retryCount=n),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const s=this.hls.levels[t];if(s){var r,o;const t=e.details;s.loadError++,t===Kc.BUFFER_APPEND_ERROR&&s.fragmentError++;let l=-1;const{levels:d,loadLevel:h,minAutoLevel:c,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const p=null==(r=e.frag)?void 0:r.type,f=(p===tf&&t===Kc.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===Kc.BUFFER_ADD_CODEC_ERROR||t===Kc.BUFFER_APPEND_ERROR))&&d.some((({audioCodec:e})=>s.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===Kc.BUFFER_ADD_CODEC_ERROR||t===Kc.BUFFER_APPEND_ERROR)&&d.some((({codecSet:e,audioCodec:t})=>s.codecSet!==e&&s.audioCodec===t)),{type:g,groupId:y}=null!=(o=e.context)?o:{};for(let i=d.length;i--;){const r=(i+h)%d.length;if(r!==h&&r>=c&&r<=u&&0===d[r].loadError){var a,n;const i=d[r];if(t===Kc.FRAG_GAP&&p===ef&&e.frag){const t=d[r].details;if(t){const i=$f(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(g===Xp&&i.hasAudioGroup(y)||g===Zp&&i.hasSubtitleGroup(y))continue;if(p===tf&&null!=(a=s.audioGroups)&&a.some((e=>i.hasAudioGroup(e)))||p===sf&&null!=(n=s.subtitleGroups)&&n.some((e=>i.hasSubtitleGroup(e)))||f&&s.audioCodec===i.audioCodec||!f&&s.audioCodec!==i.audioCodec||m&&s.codecSet===i.codecSet)continue}l=r;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:qf,flags:Qf,nextAutoLevel:l}}return{action:qf,flags:Xf}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case Jf:break;case qf:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===Kc.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()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:s,hdcpLevel:r,nextAutoLevel:o}=i;switch(s){case Qf:this.switchLevel(e,o);break;case Zf:r&&(t.maxHdcpLevel=_f[_f.indexOf(r)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,o)}switchLevel(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)}},fpsController:class{constructor(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()}setStreamController(e){this.streamController=e}registerListeners(){this.hls.on(Jc.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(Jc.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const s=performance.now();if(t){if(this.lastTime){const e=s-this.lastTime,r=i-this.lastDroppedFrames,o=t-this.lastDecodedFrames,a=1e3*r/e,n=this.hls;if(n.trigger(Jc.FPS_DROP,{currentDropped:r,currentDecoded:o,totalDroppedFrames:i}),a>0&&r>n.config.fpsDroppedMonitoringThreshold*o){let e=n.currentLevel;eu.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===n.autoLevelCapping||n.autoLevelCapping>=e)&&(e-=1,n.trigger(Jc.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:n.currentLevel}),n.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=s,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},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:Lu,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},{cueHandler:VA,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends Ym{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",sf),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Jc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Jc.ERROR,this.onError,this),e.on(Jc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Jc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(Jc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Jc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(Jc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(Jc.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Jc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Jc.ERROR,this.onError,this),e.off(Jc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Jc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(Jc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Jc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(Jc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(Jc.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=Nm,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(e,t){this.mainDetails=t.details}onSubtitleFragProcessed(e,t){const{frag:i,success:s}=t;if(this.fragPrevious=i,this.state=Nm,!s)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let o;const a=i.start;for(let e=0;e=r[e].start&&a<=r[e].end){o=r[e];break}const n=i.start+i.duration;o?o.end=n:(o={start:a,end:n},r.push(o)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:s}=t;if(0===i&&s!==Number.POSITIVE_INFINITY){const e=s-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew Cf(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new Cf(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,sf),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const s=this.levels[this.currentTrackId];null!=s&&s.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,s&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:s,levels:r}=this,{details:o,id:a}=t;if(!r)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const n=r[a];if(a>=r.length||!n)return;this.log(`Subtitle track ${a} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""},duration:${o.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(o.live||null!=(i=n.details)&&i.live){const e=this.mainDetails;if(o.deltaUpdateFailed||!e)return;const t=e.fragments[0];var d;if(n.details)l=this.alignPlaylists(o,n.details,null==(d=this.levelLastLoaded)?void 0:d.details),0===l&&t&&(l=t.start,Bf(o,l));else o.hasProgramDateTime&&e.hasProgramDateTime?(Lm(o,e),l=o.fragments[0].start):t&&(l=t.start,Bf(o,l))}if(n.details=o,this.levelLastLoaded=n,a===s&&(this.startFragRequested||!this.mainDetails&&o.live||this.setStartPosition(this.mainDetails||o,l),this.tick(),o.live&&!this.fragCurrent&&this.media&&this.state===Nm)){$f(null,o.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),n.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,s=t.decryptdata,r=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=s&&s.key&&s.iv&&"AES-128"===s.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),s.key.buffer,s.iv.buffer).catch((e=>{throw r.trigger(Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const s=performance.now();r.trigger(Jc.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:s}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=Nm}))}}doTick(){if(this.media){if(this.state===Nm){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:s}=this,r=this.getLoadPosition(),o=_m.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,s.maxBufferHole),{end:a,len:n}=o,l=this.getFwdBufferInfo(this.media,ef),d=i.details;if(n>this.getMaxBufferLength(null==l?void 0:l.len)+d.levelTargetDuration)return;const h=d.fragments,c=h.length,u=d.edge;let p=null;const f=this.fragPrevious;if(au-e?0:e;p=$f(f,h,Math.max(h[0].start,a),t),!p&&f&&f.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=cf(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Jc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Jc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Jc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Jc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(Jc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Jc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Jc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Jc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Jc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(Jc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media&&(this.queuedDefaultTrack>-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))}pollTrackChange(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)}onMediaDetaching(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId);cf(this.media.textTracks).forEach((e=>{df(e)})),this.subtitleTrack=-1,this.media=null}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.subtitleTracks}onSubtitleTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Subtitle track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Subtitle track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!r&&t){this.selectDefaultTrack=!1;const i=dm(t,e);if(i>-1)r=e[i];else{const e=dm(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const o={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(Jc.SUBTITLE_TRACKS_UPDATED,o),-1!==s&&-1===this.trackId&&this.setSubtitleTrack(s)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let s=0;s-1){const e=this.tracksInGroup[s];return this.setSubtitleTrack(s),e}if(i)return null;{const i=dm(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,s=t.groupId;let r=t.url;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(Jc.SUBTITLE_TRACK_LOADING,{url:r,id:i,groupId:s,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=cf(e.textTracks),i=this.currentTrack;let s;if(i&&(s=t.filter((e=>oy(i,e)))[0],s||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==s&&(e.mode="disabled")})),s){const e=this.subtitleDisplay?"showing":"hidden";s.mode!==e&&(s.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!$c(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e]||null;if(this.trackId=e,this.currentTrack=s,this.toggleTrackModes(),!s)return void this.hls.trigger(Jc.SUBTITLE_TRACK_SWITCH,{id:e});const r=!!s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;this.log(`Switching to subtitle-track ${e}`+(s?` "${s.name}" lang:${s.lang} group:${s.groupId}`:""));const{id:o,groupId:a="",name:n,type:l,url:d}=s;this.hls.trigger(Jc.SUBTITLE_TRACK_SWITCH,{id:o,groupId:a,name:n,type:l,url:d});const h=this.switchParams(s.url,null==i?void 0:i.details,s.details);this.loadPlaylist(h)}},timelineController:class{constructor(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={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},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(Jc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Jc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Jc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(Jc.FRAG_LOADING,this.onFragLoading,this),e.on(Jc.FRAG_LOADED,this.onFragLoaded,this),e.on(Jc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(Jc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(Jc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(Jc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(Jc.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(Jc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(Jc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Jc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Jc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(Jc.FRAG_LOADING,this.onFragLoading,this),e.off(Jc.FRAG_LOADED,this.onFragLoaded,this),e.off(Jc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(Jc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(Jc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(Jc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(Jc.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){const e=new xy(this,"textTrack1"),t=new xy(this,"textTrack2"),i=new xy(this,"textTrack3"),s=new xy(this,"textTrack4");this.cea608Parser1=new ky(1,e,t),this.cea608Parser2=new ky(3,i,s)}}addCues(e,t,i,s,r){let o=!1;for(let e=r.length;e--;){const s=r[e],h=(a=s[0],n=s[1],l=t,d=i,Math.min(n,d)-Math.max(a,l));if(h>=0&&(s[0]=Math.min(s[0],t),s[1]=Math.max(s[1],i),o=!0,h/(i-t)>.5))return}var a,n,l,d;if(o||r.push([t,i]),this.config.renderTextTracksNatively){const r=this.captionsTracks[e];this.Cues.newCue(r,t,i,s)}else{const r=this.Cues.newCue(null,t,i,s);this.hls.trigger(Jc.CUES_PARSED,{type:"captions",cues:r,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:s,timescale:r}){const{unparsedVttFrags:o}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:s,timescale:r}),o.length&&(this.unparsedVttFrags=[],o.forEach((e=>{this.onFragLoaded(Jc.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let s=0;s{df(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===Vy));if(this.config.enableWebVTT||s&&this.config.enableIMSC1){if(sy(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?cf(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let s;if(t){let i=null;for(let s=0;snull!==e)).map((e=>e.label));e.length&&eu.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(Jc.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,s=this.captionsProperties[i];s&&(s.label=e.name,e.lang&&(s.languageCode=e.lang),s.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){if(this.enabled&&t.frag.type===ef){var i,s;const{cea608Parser1:e,cea608Parser2:r,lastSn:o}=this,{cc:a,sn:n}=t.frag,l=null!=(i=null==(s=t.part)?void 0:s.index)?i:-1;e&&r&&(n!==o+1||n===o&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(e.reset(),r.reset()),this.lastCc=a,this.lastSn=n,this.lastPartIndex=l}}onFragLoaded(e,t){const{frag:i,payload:s}=t;if(i.type===sf)if(s.byteLength){const e=i.decryptdata,r="stats"in t;if(null==e||!e.encrypted||r){const e=this.tracks[i.level],r=this.vttCCs;r[i.cc]||(r[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===Vy?this._parseIMSC1(i,s):this._parseVTTs(t)}}else this.hls.trigger(Jc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;Ky(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(Jc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{eu.log(`Failed to parse IMSC1: ${t}`),i.trigger(Jc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:s}=e,{initPTS:r,unparsedVttFrags:o}=this,a=r.length-1;if(!r[i.cc]&&-1===a)return void o.push(e);const n=this.hls;$y(null!=(t=i.initSegment)&&t.data?up(i.initSegment.data,new Uint8Array(s)):s,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),n.trigger(Jc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const r="Missing initPTS for VTT MPEGTS"===t.message;r?o.push(e):this._fallbackToIMSC1(i,s),eu.log(`Failed to parse VTT cue: ${t}`),r&&a>i.cc||n.trigger(Jc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||Ky(t,this.initPTS[e.cc],(()=>{i.textCodec=Vy,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>lf(i,e)))}else{const s=this.tracks[t];if(!s)return;const r=s.default?"default":"subtitles"+t;i.trigger(Jc.CUES_PARSED,{type:"subtitles",cues:e,track:r})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===sf&&this.onFragLoaded(Jc.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:s}=this;if(!this.enabled||!i||!s)return;const{frag:r,samples:o}=t;if(r.type!==ef||"NONE"!==this.closedCaptionsForLevel(r))for(let e=0;ehf(e[s],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==s){const{textTracks:e}=this;Object.keys(e).forEach((i=>hf(e[i],t,s)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let s=2;for(let r=0;r0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=Nm):(this.loadedmetadata=!1,this.state=zm),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case Nm:this.doTickIdle();break;case zm:{var e;const{levels:t,trackId:i}=this,s=null==t||null==(e=t[i])?void 0:e.details;if(s){if(this.waitForCdnTuneIn(s))break;this.state=qm}break}case Wm:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=Nm}break}case qm:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:s,complete:r}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Gm;const e={frag:t,part:i,payload:s.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),r&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=_m.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Vf(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=Nm}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=Nm)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:s}=this,r=e.config;if(!i&&(this.startFragRequested||!r.startFragPrefetch)||null==t||!t[s])return;const o=t[s],a=o.details;if(!a||a.live&&this.levelLastLoaded!==o||this.waitForCdnTuneIn(a))return void(this.state=zm);const n=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&n&&(this.bufferFlushed=!1,this.afterBufferFlushed(n,nu,tf));const l=this.getFwdBufferInfo(n,tf);if(null===l)return;const{bufferedTrack:d,switchingTrack:h}=this;if(!h&&this._streamEnded(l,a))return e.trigger(Jc.BUFFER_EOS,{type:"audio"}),void(this.state=Hm);const c=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,ef),u=l.len,p=this.getMaxBufferLength(null==c?void 0:c.len),f=a.fragments,m=f[0].start;let g=this.flushing?this.getLoadPosition():l.end;if(h&&i){const e=this.getLoadPosition();d&&!ry(h.attrs,d.attrs)&&(g=e),a.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=p&&!h&&gc.end+a.targetduration;if(b||(null==c||!c.len)&&l.len){const e=this.getAppendedFrag(y.start,ef);if(null===e)return;if(A||(A=!!e.gap||!!b&&0===c.len),b&&!A||A&&l.nextStart&&l.nextStartnew Cf(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:s}=this;s&&(s.abortRequests(),this.removeUnbufferedFrags(s.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=Nm,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=Om),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(e,t){this.mainDetails=t.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(Jc.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:s}=this,{details:r,id:o}=t;if(!s)return void this.warn(`Audio tracks were reset while loading level ${o}`);this.log(`Audio track ${o} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const a=s[o];let n=0;if(r.live||null!=(i=a.details)&&i.live){this.checkLiveUpdate(r);const e=this.mainDetails;if(r.deltaUpdateFailed||!e)return;var l;if(!a.details&&r.hasProgramDateTime&&e.hasProgramDateTime)Lm(r,e),n=r.fragments[0].start;else n=this.alignPlaylists(r,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=r,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&r.live||this.setStartPosition(this.mainDetails||r,n),this.state!==zm||this.waitForCdnTuneIn(r)||(this.state=Nm),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{config:o,trackId:a,levels:n}=this;if(!n)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=n[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const d=l.details;if(!d)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const h=o.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let c=this.transmuxer;c||(c=this.transmuxer=new iy(this.hls,tf,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],p=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=s?s.index:-1,o=-1!==t,a=new wm(i.level,i.sn,i.stats.chunkCount,r.byteLength,t,o);c.push(r,p,h,"",i,s,d.totalduration,e,a,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${d.startSN} ,${d.endSN}],track ${a}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:s,cache:new Qm,complete:!1};e.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=qm}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i.type===tf)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(Jc.AUDIO_TRACK_SWITCHED,jc({},e)))}this.fragBufferedComplete(i,s)}else if(!this.loadedmetadata&&i.type===ef){const e=this.videoBuffer||this.media;if(e){_m.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=Jm;else switch(t.details){case Kc.FRAG_GAP:case Kc.FRAG_PARSING_ERROR:case Kc.FRAG_DECRYPT_ERROR:case Kc.FRAG_LOAD_ERROR:case Kc.FRAG_LOAD_TIMEOUT:case Kc.KEY_LOAD_ERROR:case Kc.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(tf,t);break;case Kc.AUDIO_TRACK_LOAD_ERROR:case Kc.AUDIO_TRACK_LOAD_TIMEOUT:case Kc.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==zm||(null==(i=t.context)?void 0:i.type)!==Xp||(this.state=Nm);break;case Kc.BUFFER_APPEND_ERROR:case Kc.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===Kc.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case Kc.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==lu&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==lu){this.flushing=!1,this.bufferFlushed=!0,this.state===Hm&&(this.state=Nm);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,tf),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{details:h}=d,{audio:c,text:u,id3:p,initSegment:f}=r;if(!this.fragContextChanged(n)&&h){if(this.state=$m,this.switchingTrack&&c&&this.completeAudioSwitch(this.switchingTrack),null!=f&&f.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,f.tracks,e,o),s.trigger(Jc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}if(c){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=c;l&&(l.elementaryStreams[nu]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(nu,e,t,i,s),this.bufferFragmentData(c,n,l,o)}if(null!=p&&null!=(t=p.samples)&&t.length){const e=zc({id:i,frag:n,details:h},p);s.trigger(Jc.FRAG_PARSING_METADATA,e)}if(u){const e=zc({id:i,frag:n,details:h},u);s.trigger(Jc.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(n)}_bufferInitSegment(e,t,i,s){if(this.state!==$m)return;t.video&&delete t.video;const r=t.audio;if(!r)return;r.id="audio";const o=e.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${o}/${r.codec}]`),o&&1===o.split(",").length&&(r.levelCodec=o),this.hls.trigger(Jc.BUFFER_CODECS,t);const a=r.initSegment;if(null!=a&&a.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:s,parent:i.type,data:a};this.hls.trigger(Jc.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);var r;if(this.fragCurrent=e,this.switchingTrack||s===pm||s===mm)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(r=t.details)&&r.live&&!this.initPTS[e.cc]){this.log(`Waiting for video PTS in continuity counter ${e.cc} of live stream before loading audio fragment ${e.sn} of level ${this.trackId}`),this.state=qm;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&Lm(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,s=null==i?void 0:i.attrs,r=e.attrs;t&&s&&(s.CHANNELS!==r.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(Jc.AUDIO_TRACK_SWITCHED,jc({},e))}},audioTrackController:class extends em{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Jc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Jc.LEVEL_LOADING,this.onLevelLoading,this),e.on(Jc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(Jc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(Jc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Jc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Jc.LEVEL_LOADING,this.onLevelLoading,this),e.off(Jc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(Jc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(Jc.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,o=this.tracksInGroup[i];if(!o||o.groupId!==s)return void this.warn(`Audio track with id:${i} and group:${s} not found in active group ${null==o?void 0:o.groupId}`);const a=o.details;o.details=t.details,this.log(`Audio track ${i} "${o.name}" lang:${o.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,a)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!r&&t){const i=dm(t,e,cm);if(i>-1)r=e[i];else{const e=dm(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const a={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(Jc.AUDIO_TRACKS_UPDATED,a);const n=this.trackId;if(-1!==s&&-1===n)this.setAudioTrack(s);else if(e.length&&-1===n){var o;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(o=this.groupIds)?void 0:o.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==Xp||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(this.requestScheduled=-1,this.checkRetry(t)))}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(e){this.selectDefaultTrack=!1,this.setAudioTrack(e)}setAudioOption(e){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const s=this.currentTrack;if(s&&hm(e,s,cm))return s;const r=dm(e,this.tracksInGroup,cm);if(r>-1){const e=this.tracksInGroup[r];return this.setAudioTrack(r),e}if(s){let s=t.loadLevel;-1===s&&(s=t.firstAutoLevel);const r=function(e,t,i,s,r){const o=t[s],a=t.reduce(((e,t,i)=>{const s=t.uri;return(e[s]||(e[s]=[])).push(i),e}),{})[o.uri];a.length>1&&(s=Math.max.apply(Math,a));const n=o.videoRange,l=o.frameRate,d=o.codecSet.substring(0,4),h=um(t,s,(t=>{if(t.videoRange!==n||t.frameRate!==l||t.codecSet.substring(0,4)!==d)return!1;const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return dm(e,o,r)>-1}));return h>-1?h:um(t,s,(t=>{const s=t.audioGroups,o=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return dm(e,o,r)>-1}))}(e,t.levels,i,s,cm);if(-1===r)return null;t.nextLoadLevel=r}if(e.channels||e.audioCodec){const t=dm(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e],r=s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;if(this.log(`Switching to audio-track ${e} "${s.name}" lang:${s.lang} group:${s.groupId} channels:${s.channels}`),this.trackId=e,this.currentTrack=s,this.hls.trigger(Jc.AUDIO_TRACK_SWITCHING,jc({},s)),r)return;const o=this.switchParams(s.url,null==i?void 0:i.details,s.details);this.loadPlaylist(o)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:lA.MANIFEST,su:!this.initialized})}catch(e){eu.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],s=this.getObjectType(t),r={d:1e3*t.duration,ot:s};s!==lA.VIDEO&&s!==lA.AUDIO&&s!=lA.MUXED||(r.br=i.bitrate/1e3,r.tb=this.getTopBandwidth(s)/1e3,r.bl=this.getBufferLength(s)),this.apply(e,r)}catch(e){eu.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}))}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(Jc.MEDIA_DETACHED,this.onMediaDetached,this),e.on(Jc.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(Jc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(Jc.MEDIA_DETACHED,this.onMediaDetached,this),e.off(Jc.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=null}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(e,t){var i,s;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(s=t.tracks.video)?void 0:s.buffer}createData(){var e;return{v:1,sf:dA.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){zc(t,this.createData());const i=t.ot===lA.INIT||t.ot===lA.VIDEO||t.ot===lA.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:s}=this;s&&(t=Object.keys(t).reduce(((e,i)=>(s.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),PA(e.headers,t)):e.url=MA(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?lA.TIMED_TEXT:"initSegment"===e.sn?lA.INIT:"audio"===t?lA.AUDIO:"main"===t?this.hls.audioTracks.length?lA.VIDEO:lA.MUXED:void 0}getTopBandwidth(e){let t,i=0;const s=this.hls;if(e===lA.AUDIO)t=s.audioTracks;else{const e=s.maxAutoLevel,i=e>-1?e+1:s.levels.length;t=s.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===lA.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*_m.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}},contentSteeringController:class{constructor(e){this.hls=void 0,this.log=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this.pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=e,this.log=eu.log.bind(eu,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Jc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Jc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(Jc.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Jc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Jc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(Jc.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===qf&&i.flags===Xf){const e=this.levels;let s=this.pathwayPriority,r=this.pathwayId;if(t.context){const{groupId:i,pathwayId:s,type:o}=t.context;i&&e?r=this.getPathwayForGroupId(i,o,r):s&&(r=s)}r in this.penalizedPathways||(this.penalizedPathways[r]=performance.now()),!s&&e&&(s=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),s&&s.length>1&&(this.updatePathwayPriority(s),i.resolved=this.pathwayId!==r),i.resolved||eu.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${r} levels: ${e?e.length:e} priorities: ${JSON.stringify(s)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const 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}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,s=performance.now();Object.keys(i).forEach((e=>{s-i[e]>3e5&&delete i[e]}));for(let s=0;s0){this.log(`Setting Pathway to "${r}"`),this.pathwayId=r,Uf(t),this.hls.trigger(Jc.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[o];a&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=o);break}}}getPathwayForGroupId(e,t,i){const s=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:r,"BASE-ID":o,"URI-REPLACEMENT":a}=e;if(t.some((e=>e.pathwayId===r)))return;const n=this.getLevelsForPathway(o).map((e=>{const t=new su(e.attrs);t["PATHWAY-ID"]=r;const o=t.AUDIO&&`${t.AUDIO}_clone_${r}`,n=t.SUBTITLES&&`${t.SUBTITLES}_clone_${r}`;o&&(i[t.AUDIO]=o,t.AUDIO=o),n&&(s[t.SUBTITLES]=n,t.SUBTITLES=n);const l=UA(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),d=new Cf({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${s}"`);const o=e.data;if(1!==o.VERSION)return void this.log(`Steering VERSION ${o.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=o.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":n,"PATHWAY-PRIORITY":l}=o;if(a)try{this.uri=new self.URL(a,s).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||i.url),n&&this.clonePathways(n);const d={steeringManifest:o,url:s.toString()};this.hls.trigger(Jc.STEERING_MANIFEST_LOADED,d),l&&this.updatePathwayPriority(l)},onError:(e,t,i,s)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let r=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,r);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(r=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${s}`),this.loader.load(r,n,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function JA(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(JA):Object.keys(e).reduce(((t,i)=>(t[i]=JA(e[i]),t)),{}):e}function qA(e){const t=e.loader;if(t!==GA&&t!==NA)eu.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=GA,e.progressive=!0,e.enableSoftwareAES=!0,eu.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let KA;class YA extends em{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(Jc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(Jc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(Jc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(Jc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(Jc.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(Jc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(Jc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(Jc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(Jc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(Jc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(Jc.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,s=[],r={},o={};let a=!1,n=!1,l=!1;t.levels.forEach((e=>{var t,d;const h=e.attrs;let{audioCodec:c,videoCodec:u}=e;-1!==(null==(t=c)?void 0:t.indexOf("mp4a.40.34"))&&(KA||(KA=/chrome|firefox/i.test(navigator.userAgent)),KA&&(e.audioCodec=c=void 0)),c&&(e.audioCodec=c=Mp(c,i)),0===(null==(d=u)?void 0:d.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(",");for(let e=0;e2){let s=i.shift()+".";s+=parseInt(i.shift()).toString(16),s+=("000"+parseInt(i.shift()).toString(16)).slice(-4),t[e]=s}}return t.join(",")}(u));const{width:p,height:f,unknownCodecs:m}=e;if(a||(a=!(!p||!f)),n||(n=!!u),l||(l=!!c),null!=m&&m.length||c&&!Cp(c,"audio",i)||u&&!Cp(u,"video",i))return;const{CODECS:g,"FRAME-RATE":y,"HDCP-LEVEL":A,"PATHWAY-ID":b,RESOLUTION:v,"VIDEO-RANGE":_}=h,w=`${`${b||"."}-`}${e.bitrate}-${v}-${y}-${g}-${_}-${A}`;if(r[w])if(r[w].uri===e.url||e.attrs["PATHWAY-ID"])r[w].addGroupId("audio",h.AUDIO),r[w].addGroupId("text",h.SUBTITLES);else{const t=o[w]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new Cf(e);r[w]=i,s.push(i)}else{const t=new Cf(e);r[w]=t,o[w]=1,s.push(t)}})),this.filterAndSortMediaOptions(s,t,a,n,l)}filterAndSortMediaOptions(e,t,i,s,r){let o=[],a=[],n=e;if((i||s)&&r&&(n=n.filter((({videoCodec:e,videoRange:t,width:i,height:s})=>{return(!!e||!(!i||!s))&&(!!(r=t)&&wf.indexOf(r)>-1);var r}))),0===n.length)return void Promise.resolve().then((()=>{if(this.hls){t.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(t.levels[0].attrs)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;o=t.audioTracks.filter((t=>!t.audioCodec||Cp(t.audioCodec,"audio",e))),QA(o)}t.subtitles&&(a=t.subtitles,QA(a));const l=n.slice(0);n.sort(((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 wf.indexOf(e.videoRange)-wf.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=Rp(e.videoCodec),s=Rp(t.videoCodec);if(i!==s)return s-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=Ip(e.codecSet),s=Ip(t.codecSet);if(i!==s)return s-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let d=l[0];if(this.steering&&(n=this.steering.filterParsedLevels(n),n.length!==l.length))for(let e=0;ei&&i===HA.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const c=r&&!s,u={levels:n,audioTracks:o,subtitleTracks:a,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:r,video:s,altAudio:!c&&o.some((e=>!!e.url))};this.hls.trigger(Jc.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),s=e<0;if(this.hls.trigger(Jc.ERROR,{type:qc.OTHER_ERROR,details:Kc.LEVEL_SWITCH_ERROR,level:e,fatal:s,error:i,reason:i.message}),s)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,s=this.currentLevel,r=s?s.attrs["PATHWAY-ID"]:void 0,o=t[e],a=o.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=o,i===e&&o.details&&s&&r===a)return;this.log(`Switching to level ${e} (${o.height?o.height+"p ":""}${o.videoRange?o.videoRange+" ":""}${o.codecSet?o.codecSet+" ":""}@${o.bitrate})${a?" with Pathway "+a:""} from level ${i}${r?" with Pathway "+r:""}`);const n={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(Jc.LEVEL_SWITCHING,n);const l=o.details;if(!l||l.live){const e=this.switchParams(o.uri,null==s?void 0:s.details,l);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===Qp&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===ef){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:s,details:r}=t,o=this._levels[s];var a;if(!o)return this.warn(`Invalid level index ${s}`),void(null!=(a=t.deliveryDirectives)&&a.skip&&(r.deltaUpdateFailed=!0));s===this.currentLevelIndex?(0===o.fragmentError&&(o.loadError=0),this.playlistLoaded(s,t,o.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let s=i.uri;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const r=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${r?" Pathway "+r:""} ${s}`),this.clearTimer(),this.hls.trigger(Jc.LEVEL_LOADING,{url:s,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));Uf(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(Jc.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(Jc.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function QA(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class XA{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const s=this.keyUriToKeyInfo[i].loader;if(s){var t;if(e&&e!==(null==(t=s.context)?void 0:t.frag.type))return;s.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=Kc.KEY_LOAD_ERROR,i,s,r){return new Im({type:qc.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:r,error:i,networkDetails:s})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:s}=e;for(let e=0;e{r.setKeyFormat(e)}));break}}}}load(e){return!e.decryptdata&&e.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(e).then((t=>this.loadInternal(e,t))):this.loadInternal(e)}loadInternal(e,t){var i,s;t&&e.setKeyFormat(t);const r=e.decryptdata;if(!r){const i=new Error(t?`Expected frag.decryptdata to be defined after setting format ${t}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(e,Kc.KEY_LOAD_ERROR,i))}const o=r.uri;if(!o)return Promise.reject(this.createKeyLoadError(e,Kc.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${o}"`)));let a=this.keyUriToKeyInfo[o];if(null!=(i=a)&&i.decryptdata.key)return r.key=a.decryptdata.key,Promise.resolve({frag:e,keyInfo:a});var n;if(null!=(s=a)&&s.keyLoadPromise)switch(null==(n=a.mediaKeySessionContext)?void 0:n.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((t=>(r.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[o]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===r.keyFormat?this.loadKeyHTTP(a,e):this.loadKeyEME(a,e);case"AES-128":return this.loadKeyHTTP(a,e);default:return Promise.reject(this.createKeyLoadError(e,Kc.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,s=new(0,i.loader)(i);return t.keyLoader=e.loader=s,e.keyLoadPromise=new Promise(((r,o)=>{const a={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},n=i.keyLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{const{frag:a,keyInfo:n,url:l}=i;if(!a.decryptdata||n!==this.keyUriToKeyInfo[l])return o(this.createKeyLoadError(a,Kc.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),s));n.decryptdata.key=a.decryptdata.key=new Uint8Array(e.data),a.keyLoader=null,n.loader=null,r({frag:a,keyInfo:n})},onError:(e,i,s,r)=>{this.resetLoader(i),o(this.createKeyLoadError(t,Kc.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),s,jc({url:a.url,data:void 0},e)))},onTimeout:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,Kc.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),s))},onAbort:(e,i,s)=>{this.resetLoader(i),o(this.createKeyLoadError(t,Kc.INTERNAL_ABORTED,new Error("key loading aborted"),s))}};s.load(a,l,d)}))}resetLoader(e){const{frag:t,keyInfo:i,url:s}=e,r=i.loader;t.keyLoader===r&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[s],r&&r.destroy()}}function ZA(){return self.SourceBuffer||self.WebKitSourceBuffer}function eb(){if(!kp())return!1;const e=ZA();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class tb{constructor(e,t,i,s){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=i,this.hls=s}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:s,stalled:r}=this;if(null===s)return;const{currentTime:o,seeking:a}=s,n=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,o!==e){if(this.moved=!0,a||(this.nudgeRetry=0),null!==r){if(this.stallReported){const e=self.performance.now()-r;eu.warn(`playback not stuck anymore @${o}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||n)return void(this.stalled=null);if(s.paused&&!a||s.ended||0===s.playbackRate||!_m.getBuffered(s).length)return void(this.nudgeRetry=0);const d=_m.bufferInfo(s,o,0),h=d.nextStart||0;if(a){const e=d.len>2,i=!h||t&&t.start<=o||h-o>2&&!this.fragmentTracker.getPartialFragment(o);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var c;if(!(d.len>0)&&!h)return;const e=Math.max(h,d.start||0)-o,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(c=t.details)?void 0:c.live)?2*t.details.targetduration:2,r=this.fragmentTracker.getPartialFragment(o);if(e>0&&(e<=i||r))return void(s.paused||this._trySkipBufferHole(r))}const u=self.performance.now();if(null===r)return void(this.stalled=u);const p=u-r;if(!a&&p>=250&&(this._reportStall(d),!this.media))return;const f=_m.bufferInfo(s,o,i.maxBufferHole);this._tryFixBufferStall(f,p)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:s,media:r}=this;if(null===r)return;const o=r.currentTime,a=s.getPartialFragment(o);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-o1e3*i.highBufferWatchdogPeriod&&(eu.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:s}=this;if(!s&&i){this.stallReported=!0;const s=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);eu.warn(s.message),t.trigger(Jc.ERROR,{type:qc.MEDIA_ERROR,details:Kc.BUFFER_STALLED_ERROR,fatal:!1,error:s,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:s}=this;if(null===s)return 0;const r=s.currentTime,o=_m.bufferInfo(s,r,0),a=r0&&o.len<1&&s.readyState<3,d=a-r;if(d>0&&(n||l)){if(d>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===r){const e=t.getAppendedFrag(0,ef);e&&a1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=Nm,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=Om}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case Km:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],s=null==i?void 0:i.details;if(s&&(!s.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(s))break;this.state=Nm;break}if(this.hls.nextLoadLevel!==this.level){this.state=Nm;break}break}case Wm:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=Nm}}}this.state===Nm&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:s}=this;if(null===t||!s&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const r=e.nextLoadLevel;if(null==i||!i[r])return;const o=i[r],a=this.getMainFwdBufferInfo();if(null===a)return;const n=this.getLevelDetails();if(n&&this._streamEnded(a,n)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(Jc.BUFFER_EOS,e),void(this.state=Hm)}e.loadLevel!==r&&-1===e.manualLevel&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=e.nextLoadLevel=r;const l=o.details;if(!l||this.state===Km||l.live&&this.levelLastLoaded!==o)return this.level=r,void(this.state=Km);const d=a.len,h=this.getMaxBufferLength(o.maxBitrate);if(d>=h)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const c=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(c,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==gm){var p;const e=(null!=(p=this.backtrackFragment)?p:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,c)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?nu:lu,t=(e===lu?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,ef)}u=this.getNextFragmentLoopLoading(u,l,a,ef,h)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,o,c))}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);this.fragCurrent=e,s===pm||s===mm?"initSegment"===e.sn?this._loadInitSegment(e,t):this.bitrateTest?(this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(e,t)):(this.startFragRequested=!0,super.loadFragment(e,t,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,ef)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const s=this.getAppendedFrag(t.currentTime);s&&s.start>1&&this.flushMainBuffer(0,s.start-1);const r=this.getLevelDetails();if(null!=r&&r.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*r.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],s=this.fragLastKbps;i=s&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*s)+1:0}else i=0;const o=this.getBufferedFrag(t.currentTime+i);if(o){const e=this.followingBufferedFrag(o);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,s=Math.max(o.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(s,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case jm:case Gm:case Wm:case $m:case Vm:this.state=Nm}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new tb(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{media:e}=this;e&&this.onvplaying&&this.onvseeked&&(e.removeEventListener("playing",this.onvplaying),e.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){const e=this.media,t=e?e.currentTime:null;$c(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(Jc.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}onManifestParsed(e,t){let i=!1,s=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),s=s||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&s&&!function(){var e;const t=ZA();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),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}onLevelLoading(e,t){const{levels:i}=this;if(!i||this.state!==Nm)return;const s=i[t.level];(!s.details||s.details.live&&this.levelLastLoaded!==s||this.waitForCdnTuneIn(s.details))&&(this.state=Km)}onLevelLoaded(e,t){var i;const{levels:s}=this,r=t.level,o=t.details,a=o.totalduration;if(!s)return void this.warn(`Levels were reset while loading level ${r}`);this.log(`Level ${r} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""}, cc [${o.startCC}, ${o.endCC}] duration:${a}`);const n=s[r],l=this.fragCurrent;!l||this.state!==Gm&&this.state!==Wm||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let d=0;if(o.live||null!=(i=n.details)&&i.live){var h;if(this.checkLiveUpdate(o),o.deltaUpdateFailed)return;d=this.alignPlaylists(o,n.details,null==(h=this.levelLastLoaded)?void 0:h.details)}if(n.details=o,this.levelLastLoaded=n,this.hls.trigger(Jc.LEVEL_UPDATED,{details:o,level:r}),this.state===Km){if(this.waitForCdnTuneIn(o))return;this.state=Nm}this.startFragRequested?o.live&&this.synchronizeToLiveEdge(o):this.setStartPosition(o,d),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{levels:o}=this;if(!o)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const a=o[i.level],n=a.details;if(!n)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=a.videoCodec,d=n.PTSKnown||!n.live,h=null==(t=i.initSegment)?void 0:t.data,c=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new iy(this.hls,ef,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),p=s?s.index:-1,f=-1!==p,m=new wm(i.level,i.sn,i.stats.chunkCount,r.byteLength,p,f),g=this.initPTS[i.cc];u.push(r,h,c,l,i,s,n.totalduration,d,m,g)}onAudioTrackSwitching(e,t){const 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;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(Jc.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(Jc.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,s=!!this.hls.audioTracks[i].url;if(s){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=s,this.tick()}onBufferCreated(e,t){const i=t.tracks;let s,r,o=!1;for(const e in i){const t=i[e];if("main"===t.id){if(r=e,s=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else o=!0}o&&s?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=s.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i&&i.type!==ef)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===Vm&&(this.state=Nm));const r=s?s.stats:i.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,s)}onError(e,t){var i;if(t.fatal)this.state=Jm;else switch(t.details){case Kc.FRAG_GAP:case Kc.FRAG_PARSING_ERROR:case Kc.FRAG_DECRYPT_ERROR:case Kc.FRAG_LOAD_ERROR:case Kc.FRAG_LOAD_TIMEOUT:case Kc.KEY_LOAD_ERROR:case Kc.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(ef,t);break;case Kc.LEVEL_LOAD_ERROR:case Kc.LEVEL_LOAD_TIMEOUT:case Kc.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Km||(null==(i=t.context)?void 0:i.type)!==Qp||(this.state=Nm);break;case Kc.BUFFER_APPEND_ERROR:case Kc.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===Kc.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case Kc.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!_m.getBuffered(e).length){const e=this.state!==Nm?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=Nm,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==nu||this.audioOnly&&!this.altAudio){const e=(t===lu?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,ef),this.tick()}}onLevelsUpdated(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=t.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(r{const{hls:s}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=Nm,this.startFragRequested=!1,this.bitrateTest=!1;const r=e.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),s.trigger(Jc.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:s}=this,{remuxResult:r,chunkMeta:o}=e,a=this.getCurrentContext(o);if(!a)return void this.resetWhenMissingContext(o);const{frag:n,part:l,level:d}=a,{video:h,text:c,id3:u,initSegment:p}=r,{details:f}=d,m=this.altAudio?void 0:r.audio;if(this.fragContextChanged(n))this.fragmentTracker.removeFragment(n);else{if(this.state=$m,p){if(null!=p&&p.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,p.tracks,e,o),s.trigger(Jc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:p.tracks})}const e=p.initPTS,t=p.timescale;$c(e)&&(this.initPTS[n.cc]={baseTime:e,timescale:t},s.trigger(Jc.INIT_PTS_FOUND,{frag:n,id:i,initPTS:e,timescale:t}))}if(h&&f&&"initSegment"!==n.sn){const e=f.fragments[n.sn-1-f.startSN],t=n.sn===f.startSN,i=!e||n.cc>e.cc;if(!1!==r.independent){const{startPTS:e,endPTS:s,startDTS:r,endDTS:a}=h;if(l)l.elementaryStreams[h.type]={startPTS:e,endPTS:s,startDTS:r,endDTS:a};else if(h.firstKeyFrame&&h.independent&&1===o.id&&!i&&(this.couldBacktrack=!0),h.dropped&&h.independent){const r=this.getMainFwdBufferInfo(),o=(r?r.end:this.getLoadPosition())+this.config.maxBufferHole,l=h.firstKeyFramePTS?h.firstKeyFramePTS:e;if(!t&&o2&&(n.gap=!0);n.setElementaryStreamInfo(h.type,e,s,r,a),this.backtrackFragment&&(this.backtrackFragment=n),this.bufferFragmentData(h,n,l,o,t||i)}else{if(!t&&!i)return void this.backtrack(n);n.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=m;l&&(l.elementaryStreams[nu]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(nu,e,t,i,s),this.bufferFragmentData(m,n,l,o)}if(f&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:n,details:f,samples:u.samples};s.trigger(Jc.FRAG_PARSING_METADATA,e)}if(f&&c){const e={id:i,frag:n,details:f,samples:c.samples};s.trigger(Jc.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,s){if(this.state!==$m)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:r,video:o,audiovideo:a}=t;if(r){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const e=r.metadata;e&&"channelCount"in e&&1!==(e.channelCount||1)&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")}t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==r.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),r.levelCodec=t,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${r.codec}]`)}o&&(o.levelCodec=e.videoCodec,o.id="main",this.log(`Init video buffer, container:${o.container}, codecs[level/parsed]=[${e.videoCodec||""}/${o.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${e.codecs}/${a.codec}]`),this.hls.trigger(Jc.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const r=t[e].initSegment;null!=r&&r.byteLength&&this.hls.trigger(Jc.BUFFER_APPENDING,{type:e,data:r,frag:i,part:null,chunkMeta:s,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,ef)}backtrack(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=Nm}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(_m.isBuffered(e,i)?t=this.getAppendedFrag(i):_m.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(Jc.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(Jc.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&$c(t)&&$c(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class sb{static get version(){return"1.5.13"}static isMSESupported(){return eb()}static isSupported(){return function(){if(!eb())return!1;const e=kp();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(Dp(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(Dp(t,"audio")))))}()}static getMediaSource(){return kp()}static get Events(){return Jc}static get ErrorTypes(){return qc}static get ErrorDetails(){return Kc}static get DefaultConfig(){return sb.defaultConfig?sb.defaultConfig:HA}static set DefaultConfig(e){sb.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new ty,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,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){Zc(e,"debug","log","info","warn","error");try{Xc.log(`Debug logs enabled for "${t}" in hls.js version 1.5.13`)}catch(e){Xc=Qc}}else Xc=Qc}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){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"');const i=JA(e),s=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const r=`${"level"===e?"playlist":e}LoadPolicy`,o=void 0===t[r],a=[];s.forEach((s=>{const n=`${e}Loading${s}`,l=t[n];if(void 0!==l&&o){a.push(n);const e=i[r].default;switch(t[r]={default:e},s){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&eu.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${r}": ${JSON.stringify(t[r])}`)})),jc(jc({},i),t)}(sb.DefaultConfig,e);this.userConfig=e,t.progressive&&qA(t);const{abrController:i,bufferController:s,capLevelController:r,errorController:o,fpsController:a}=t,n=new o(this),l=this.abrController=new i(this),d=this.bufferController=new s(this),h=this.capLevelController=new r(this),c=new a(this),u=new af(this),p=new bf(this),f=t.contentSteeringController,m=f?new f(this):null,g=this.levelController=new YA(this,m),y=new ym(this),A=new XA(this.config),b=this.streamController=new ib(this,y,A);h.setStreamController(b),c.setStreamController(b);const v=[u,g,b];m&&v.splice(1,0,m),this.networkControllers=v;const _=[l,d,h,c,p,y];this.audioTrackController=this.createController(t.audioTrackController,v);const w=t.audioStreamController;w&&v.push(new w(this,y,A)),this.subtitleTrackController=this.createController(t.subtitleTrackController,v);const S=t.subtitleStreamController;S&&v.push(new S(this,y,A)),this.createController(t.timelineController,_),A.emeController=this.emeController=this.createController(t.emeController,_),this.cmcdController=this.createController(t.cmcdController,_),this.latencyController=this.createController(vf,_),this.coreComponents=_,v.push(n);const E=n.onErrorOut;"function"==typeof E&&this.on(Jc.ERROR,E,n)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,s){this._emitter.off(e,t,i,s)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(eu.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===Jc.ERROR;this.trigger(Jc.ERROR,{type:qc.OTHER_ERROR,details:Kc.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){eu.log("destroy"),this.trigger(Jc.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){eu.log("attachMedia"),this._media=e,this.trigger(Jc.MEDIA_ATTACHING,{media:e})}detachMedia(){eu.log("detachMedia"),this.trigger(Jc.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,s=this.url=Oc.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,eu.log(`loadSource:${s}`),t&&i&&(i!==s||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(Jc.MANIFEST_LOADING,{url:e})}startLoad(e=-1){eu.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){eu.log("stopLoad"),this.started=!1,this.networkControllers.forEach((e=>{e.stopLoad()}))}resumeBuffering(){this.started&&this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.startLoad(-1)}))}pauseBuffering(){this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.stopLoad()}))}swapAudioCodec(){eu.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){eu.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){eu.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){eu.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){eu.log(`set loadLevel:${e}`),this.levelController.manualLevel=e}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(e){this.levelController.nextLoadLevel=e}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(e){eu.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){eu.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(eu.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return _f.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let s=0;s=t)return s;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let s;if(s=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=s;t--;){const s=e[t].attrs["HDCP-LEVEL"];if(s&&s<=i)return t}return s}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(e){this.abrController.nextAutoLevel=e}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}setAudioOption(e){var t;return null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}sb.defaultConfig=void 0;class rb extends o{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):sb.isSupported()?(this.$videoElement=this.player.video.$videoElement,this.hls=new sb({}),this._initHls(),this._bindEvents()):this.player.debugError(this.TAG_NAME,"init hls error ,not support "),this.player.debugLog(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{if(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.player._opt.useCanvasRender&&this.$videoElement){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}this.$videoElement=null,this.hlsFps=0,this.player.debugLog(this.TAG_NAME,"destroy"),setTimeout((()=>{e()}),0)}))}checkHlsBufferedDelay(){const e=this.$videoElement;let t=0;const i=e.buffered,s=i.length?i.end(i.length-1):0;return t=s-e.currentTime,t<0&&(this.player.debugWarn(this.TAG_NAME,`checkHlsBufferedDelay ${t} < 0, and buffered is ${s} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${s}`),e.currentTime=s,t=0),t}getFps(){return this.hlsFps}_startCanvasRender(){Na()?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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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(At.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(ua(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,Io()&&(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,s=Na(),r=t(i,hs,(t=>{if(this.hls){const i=parseInt(t.timeStamp,10);this.player._opt.useCanvasRender&&Da(s)&&e.updateStats({ts:i,dts:i})}}));this.eventsDestroy.push(r),this._startBandwidthEstimateInterval(),this._startFpsInterval(),this.hls.on(sb.Events.ERROR,((e,t)=>{if(t.fatal)switch(t.type){case sb.ErrorTypes.NETWORK_ERROR:this.player.debugWarn(this.TAG_NAME,"fatal network error encountered, try to recover"),this.hls.startLoad();break;case sb.ErrorTypes.MEDIA_ERROR:this.player.debugWarn(this.TAG_NAME,"fatal media error encountered, try to recover"),this.hls.recoverMediaError()}})),this.hls.on(sb.Events.MEDIA_ATTACHING,(()=>{})),this.hls.on(sb.Events.MEDIA_ATTACHED,(()=>{})),this.hls.on(sb.Events.MEDIA_DETACHING,(()=>{})),this.hls.on(sb.Events.MEDIA_DETACHED,(()=>{})),this.hls.on(sb.Events.BUFFER_RESET,(()=>{})),this.hls.on(sb.Events.BUFFER_CODECS,(()=>{})),this.hls.on(sb.Events.BUFFER_CREATED,(()=>{})),this.hls.on(sb.Events.BUFFER_APPENDING,((e,t)=>{this.player.debugLog(this.TAG_NAME,"BUFFER_APPENDING",t.type)})),this.hls.on(sb.Events.BUFFER_APPENDED,(()=>{})),this.hls.on(sb.Events.BUFFER_EOS,(()=>{})),this.hls.on(sb.Events.BUFFER_FLUSHING,(()=>{})),this.hls.on(sb.Events.BUFFER_FLUSHED,(()=>{})),this.hls.on(sb.Events.MANIFEST_LOADING,(()=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_LOADING 开始加载playlist m3u8资源")})),this.hls.on(sb.Events.MANIFEST_LOADED,((e,t)=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_LOADED playlist m3u8文件加载完成",t.url)})),this.hls.on(sb.Events.MANIFEST_PARSED,(()=>{this.player.debugLog(this.TAG_NAME,"MANIFEST_PARSED playlist m3u8解析完成"),e._times.demuxStart||(e._times.demuxStart=Ao())})),this.hls.on(sb.Events.LEVEL_LOADING,(()=>{})),this.hls.on(sb.Events.LEVEL_LOADED,((e,t)=>{})),this.hls.on(sb.Events.FRAG_LOADING,(()=>{})),this.hls.on(sb.Events.FRAG_LOADED,((t,i)=>{e._times.decodeStart||(e._times.decodeStart=Ao())})),this.hls.on(sb.Events.BUFFER_APPENDING,(()=>{e._times.videoStart||(e._times.videoStart=Ao(),e.handlePlayToRenderTimes())})),this.hls.on(sb.Events.FRAG_DECRYPTED,(()=>{})),this.hls.on(sb.Events.KEY_LOADING,(()=>{})),this.hls.on(sb.Events.KEY_LOADING,(()=>{})),this.hls.on(sb.Events.FPS_DROP,(e=>{})),this.hls.on(sb.Events.FPS_DROP_LEVEL_CAPPING,(e=>{})),this.hls.on(sb.Events.FRAG_PARSING_INIT_SEGMENT,((e,t)=>{this.player.debugLog(this.TAG_NAME,"FRAG_PARSING_INIT_SEGMENT",t);const i=!!(t&&t.tracks&&t.tracks.audio),s=!!(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,s=e.codec;this.player.audio&&this.player.audio.updateAudioInfo({encType:s,channels:i,sampleRate:44100})}if(s&&t.tracks.video){let e=t.tracks.video;const i={encTypeCode:-1!==e.codec.indexOf("avc")?Dt:Rt};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,ls,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,ds,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,hs,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,cs,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,s,r)}loadSource(e){return new Promise(((t,i)=>{this.canVideoPlay?(this.initVideoPlay(e),t()):this.hls.on(sb.Events.MEDIA_ATTACHED,(()=>{this.hls.loadSource(e),t()}))}))}}const ob=2097152,ab="fetch",nb="xhr",lb="arraybuffer",db="text",hb="json",cb="real_time_speed",ub=Object.prototype.toString;function pb(e){if("[object Object]"!==ub.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function fb(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 mb(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function gb(e,t){if(!e)return;if(!t)return e;let i;const s=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]"===ub.call(i)?t=t.toISOString():function(e){return null!==e&&"object"==typeof e}(t)&&(t=JSON.stringify(t)),`${mb(e)}=${mb(t)}`})).join("&")})).filter(Boolean).join("&");if(s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}function yb(e,t,i,s,r,o,a,n,l,d,h){r=null!=r?parseFloat(r):null,s=parseInt(s||"0",10),Number.isNaN(s)&&(s=0);return{data:e,done:t,option:{range:l,vid:d,index:n,contentLength:s,age:r,startTime:o,firstByteTime:a,endTime:Date.now(),priOptions:h},response:i}}function Ab(e,t){return Math.round(8*e*1e3/t/1024)}class bb extends Error{constructor(e,t,i,s){super(s),Lh(this,"retryCount",0),Lh(this,"isTimeout",!1),Lh(this,"loaderType",ab),Lh(this,"startTime",0),Lh(this,"endTime",0),Lh(this,"options",{}),this.url=e,this.request=t,this.response=i}}class vb extends o{constructor(e){super(),Lh(this,"_abortController",null),Lh(this,"_timeoutTimer",null),Lh(this,"_reader",null),Lh(this,"_response",null),Lh(this,"_aborted",!1),Lh(this,"_index",-1),Lh(this,"_range",null),Lh(this,"_receivedLength",0),Lh(this,"_running",!1),Lh(this,"_logger",null),Lh(this,"_vid",""),Lh(this,"_onProcessMinLen",0),Lh(this,"_onCancel",null),Lh(this,"_priOptions",null),Lh(this,"TAG_NAME","FetchLoader"),this.player=e}load(e){var t;let{url:i,vid:s,timeout:r,responseType:o,onProgress:a,index:n,onTimeout:l,onCancel:d,range:h,transformResponse:c,request:u,params:p,logger:f,method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:w,referrerPolicy:S,onProcessMinLen:E,priOptions:T}=e;this._aborted=!1,this._onProcessMinLen=E,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=n,this._range=h||[0,0],this._vid=s||i,this._priOptions=T||{};const k={method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:w,referrerPolicy:S,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal};let L=!1;clearTimeout(this._timeoutTimer),i=gb(i,p);const C=fb(h);C&&(g=u?u.headers:k.headers=k.headers||(Headers?new Headers:{}),Headers&&g instanceof Headers?g.append("Range",C):g.Range=C),r&&(this._timeoutTimer=setTimeout((()=>{if(L=!0,this.cancel(),l){const e=new bb(i,k,null,"timeout");e.isTimeout=!0,l(e,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),r));const x=Date.now();return(Jo(n)||Jo(h))&&this.player.debugLog(this.TAG_NAME,"[fetch load start], index,",n,",range,",h),new Promise(((e,t)=>{fetch(u||i,u?void 0:k).then((async s=>{if(clearTimeout(this._timeoutTimer),this._response=s,this._aborted||!this._running)return;if(c&&(s=c(s,i)||s),!s.ok)throw new bb(i,k,s,"bad network response");const r=Date.now();let l;if(o===db)l=await s.text(),this._running=!1;else if(o===hb)l=await s.json(),this._running=!1;else{if(a)return this.resolve=e,this.reject=t,void this._loadChunk(s,a,x,r);{l=await s.arrayBuffer(),l=new Uint8Array(l),this._running=!1;const e=Date.now()-x,t=Ab(l.byteLength,e);this.emit(cb,{speed:t,len:l.byteLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}(Jo(n)||Jo(h))&&this.player.debugLog(this.TAG_NAME,"[fetch load end], index,",n,",range,",h),e(yb(l,!0,s,s.headers.get("Content-Length"),s.headers.get("age"),x,r,n,h,this._vid,this._priOptions))})).catch((e=>{var s;clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!L||((e=e instanceof bb?e:new bb(i,k,null,null===(s=e)||void 0===s?void 0:s.message)).startTime=x,e.endTime=Date.now(),e.isTimeout=L,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},t(e))}))}))}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,s){if(!e.body||!e.body.getReader){this._running=!1;const t=new bb(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(ob),this._writeIdx=0);const r=this._reader=e.body.getReader();let o,a,n;const l=async()=>{var d;a=Date.now();try{o=await r.read(),n=Date.now()}catch(e){return n=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 h=(null===(d=this._range)||void 0===d?void 0:d.length)>0?this._range[0]:0,c=h+this._receivedLength;if(this._aborted)return this._running=!1,void t(void 0,!1,{range:[c,c],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e);const u=o.value?o.value.byteLength:0;let p;if(this._receivedLength+=u,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress call】,task,",this._range,", start,",c,", end,",h+this._receivedLength,", done,",o.done),this._onProcessMinLen>0){if(this._writeIdx+u>=this._onProcessMinLen||o.done)p=new Uint8Array(this._writeIdx+u),p.set(this._cache.slice(0,this._writeIdx),0),u>0&&p.set(o.value,this._writeIdx),this._writeIdx=0,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress enough】,done,",o.done,",len,",p.byteLength,", writeIdx,",this._writeIdx);else if(u>0&&this._writeIdx+u0){const e=new Uint8Array(this._writeIdx+u+2048);this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress extra start】,size,",this._writeIdx+u+2048,", datalen,",u,", writeIdx,",this._writeIdx),e.set(this._cache.slice(0,this._writeIdx),0),u>0&&e.set(o.value,this._writeIdx),this._writeIdx+=u,delete this._cache,this._cache=e,this.player.debugLog(this.TAG_NAME,"【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",this._writeIdx)}}else p=o.value;if((p&&p.byteLength>0||o.done)&&t(p,o.done,{range:[this._range[0]+this._receivedLength-(p?p.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:a,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e),o.done){const t=Date.now()-i,r=Ab(this._receivedLength,t);this.emit(cb,{speed:r,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this.player.debugLog(this.TAG_NAME,"[fetchLoader onProgress end],task,",this._range,",done,",o.done),this.resolve(yb(o,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),i,s,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 _b{constructor(e,t,i){Lh(this,"TAG_NAME","Task"),this.promise=function(){let e,t;const i=new Promise(((i,s)=>{e=i,t=s}));return i.used=!1,i.resolve=function(){return i.used=!0,e(...arguments)},i.reject=function(){return i.used=!0,t(...arguments)},i}(),this.alive=!!t.onProgress,this._loaderType=e,this.player=i,this._loader=e===ab&&window.fetch?new vb(i):new wb(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:s,...r}=this._config,o=async()=>{try{const e=await this._loader.load(r);this.promise.resolve(e)}catch(a){if(this._loader.running=!1,this.player.debugLog(this.TAG_NAME,"[task request catch err]",a),this._canceled)return;a.loaderType=this._loaderType,a.retryCount=this._retryCount;let n=a;s&&(n=s(n)||n),i&&this._retryCount>0&&i(n,this._retryCount,{index:r.index,vid:r.vid,range:r.range,priOptions:r.priOptions}),this._retryCount++;let l=!0;if(this._retryCheckFunc&&(l=this._retryCheckFunc(a)),l&&this._retryCount<=e)return clearTimeout(this._retryTimer),this.player.debugLog(this.TAG_NAME,"[task request setTimeout],retry",this._retryCount,",retry range,",r.range),void(this._retryTimer=setTimeout(o,t));this.promise.reject(n)}};return o(),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 wb extends o{constructor(e){super(),Lh(this,"_xhr",null),Lh(this,"_aborted",!1),Lh(this,"_timeoutTimer",null),Lh(this,"_range",null),Lh(this,"_receivedLength",0),Lh(this,"_url",null),Lh(this,"_onProgress",null),Lh(this,"_index",-1),Lh(this,"_headers",null),Lh(this,"_currentChunkSizeKB",384),Lh(this,"_timeout",null),Lh(this,"_xhr",null),Lh(this,"_withCredentials",null),Lh(this,"_startTime",-1),Lh(this,"_loadCompleteResolve",null),Lh(this,"_loadCompleteReject",null),Lh(this,"_runing",!1),Lh(this,"_logger",!1),Lh(this,"_vid",""),Lh(this,"_responseType",void 0),Lh(this,"_credentials",void 0),Lh(this,"_method",void 0),Lh(this,"_transformResponse",void 0),Lh(this,"_firstRtt",void 0),Lh(this,"_onCancel",null),Lh(this,"_priOptions",null),Lh(this,"TAG_NAME","XhrLoader"),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.debugLog(this.TAG_NAME,"【xhrLoader task】, range",this._range),this._url=gb(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 bb?e:new bb(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===lb&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const t=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let s=this._range[1];t],tast :",this._range,", SubRange, ",e)}else e=this._range,this.player.debugLog(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=>{var t,i,s;this._running=!1;const r=new bb(this._url,this._request,null==e||null===(t=e.currentTarget)||void 0===t?void 0:t.response,"xhr.onerror.status:"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.status)+",statusText,"+(null==e||null===(s=e.currentTarget)||void 0===s?void 0:s.statusText));r.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(r)},t.ontimeout=e=>{this.cancel();const t=new bb(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||{},s=fb(e);s&&(i.Range=s),i&&Object.keys(i).forEach((e=>{t.setRequestHeader(e,i[e])})),this.player.debugLog(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){var t;const i=e.target.status;if(i<200||i>299){const t=new bb(this._url,null,{...e.target.response,status:i},"bad response,status:"+i);return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}let s,r=null,o=!1;const a=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===lb){var n;const t=new Uint8Array(e.target.response);if(s=a+this._receivedLength,t&&t.byteLength>0){this._receivedLength+=t.byteLength;const e=Date.now()-this._startTime,i=Ab(this._receivedLength,e);this.emit(cb,{speed:i,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:[s,a+this._receivedLength],priOptions:this._priOptions})}r=t,o=!((null===(n=this._range)||void 0===n?void 0:n.length)>1&&this._range[1]&&this._receivedLength], tast :",this._range,", start",s,"end ",a+this._receivedLength,",dataLen,",t?t.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",o)}else o=!0,r=e.target.response;let l={ok:i>=200&&i<300,status:i,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(l=this._transformResponse(l,this._url)||l),this._onProgress&&this._onProgress(r,o,{index:this._index,vid:this._vid,range:[s,a+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},l),o?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(yb(this._onProgress?null:r,o,l,l.headers["content-length"],l.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 Sb extends o{constructor(e,t){super(),Lh(this,"type",ab),Lh(this,"_queue",[]),Lh(this,"_alive",[]),Lh(this,"_currentTask",null),Lh(this,"_config",void 0),this.player=t,this._config=function(e){return{loaderType:ab,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:db,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!==nb&&vb.isSupported()||(this.type=nb)}destroy(){this._queue=[],this._alive=[],this._currentTask=null}isFetch(){return this.type===ab}static isFetchSupport(){return vb.isSupported()}load(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?t=e:t.url=e||t.url||this._config.url,t=Object.assign({},this._config,t),t.params&&(t.params=Object.assign({},t.params)),t.headers&&pb(t.headers)&&(t.headers=Object.assign({},t.headers)),t.body&&pb(t.body)&&(t.body=Object.assign({},t.body)),t.transformRequest&&(t=t.transformRequest(t)||t);const i=new _b(this.type,t,this.player);return i.loader.on(cb,(e=>{this.emit(cb,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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]: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((()=>{var e,t;null!==(e=this._currentTask)&&void 0!==e&&e.alive&&(null===(t=this._alive)||void 0===t?void 0:t.length)>0&&(this._alive=this._alive.filter((e=>e&&e!==this._currentTask))),this._processTask()}))}}const Eb="network",Tb="network_timeout",kb="other",Lb="manifest",Cb="hls",xb="demux";class Db extends Error{constructor(e,t,i,s,r){super(r||(null==i?void 0:i.message)),this.errorType=e===Tb?Eb:e,this.originError=i,this.ext=s,this.errorMessage=this.message}static create(e,t,i,s,r){return e instanceof Db?e:(e instanceof Error&&(i=e,e=""),e||(e=kb),new Db(e,t,i,s,r))}static network(e){var t;return new Db(null!=e&&e.isTimeout?Tb:Eb,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==e||null===(t=e.response)||void 0===t?void 0:t.status})}}const Rb=/^#(EXT[^:]*)(?::(.*))?$/,Ib=/([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g,Pb=/^(?:[a-zA-Z0-9+\-.]+:)?\/\//,Bb=/^((?:[a-zA-Z0-9+\-.]+:)?\/\/[^/?#]*)?([^?#]*\/)?/;function Mb(e){const t=e.match(Rb);if(t&&t[1])return[t[1].replace("EXT-X-",""),t[2]]}function Fb(e){const t={};let i=Ib.exec(e);for(;i;)t[i[1]]=i[2]||i[3],i=Ib.exec(e);return t}function Ub(e,t){if(!t||!e||Pb.test(e))return e;const i=Bb.exec(t);return i?"/"===e[0]?i[1]+e:i[1]+i[2]+e:e}const Ob={audio:[/^mp4a/,/^vorbis$/,/^opus$/,/^flac$/,/^[ae]c-3$/],video:[/^avc/,/^hev/,/^hvc/,/^vp0?[89]/,/^av1$/],text:[/^vtt$/,/^wvtt/,/^stpp/]};function Nb(e,t){const i=Ob[e];if(i&&t&&t.length)for(let e=0;e>8*(15-t)&255}}}class Yb{static parse(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;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 Yb.isMediaPlaylist(e)?function(e,t){const i=new Jb;i.url=t;let s,r=new qb,o=null,a=null,n=0,l=0,d=0,h=0,c=!1;for(;(s=e[h++])&&!c;){if("#"!==s[0]){r.sn=l,r.cc=d,r.url=Ub(s,t),a&&(r.key=a.clone(l)),o&&(r.initSegment=o),i.segments.push(r),r=new qb,l++;continue}const e=Mb(s);if(!e)continue;const[h,u]=e;switch(h){case"VERSION":i.version=parseInt(u);break;case"PLAYLIST-TYPE":i.type=null==u?void 0: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":r.setByteRange(u,i.segments[i.segments.length-1]);break;case"EXTINF":{const[e,t]=u.split(",");r.start=n,r.duration=parseFloat(e),n+=r.duration,r.title=t}break;case"KEY":{const e=Fb(u);if("NONE"===e.METHOD){a=null;break}if("AES-128"!==e.METHOD)throw new Error(`encrypt ${e.METHOD}/${e.KEYFORMAT} is not supported`);if(a=new Kb,a.method=e.METHOD,a.url=/^blob:/.test(e.URI)?e.URI:Ub(e.URI,t),a.keyFormat=e.KEYFORMAT||"identity",a.keyFormatVersions=e.KEYFORMATVERSIONS,e.IV){let t=e.IV.slice(2);t=(1&t.length?"0":"")+t,a.iv=new Uint8Array(t.length/2);for(let e=0,i=t.length/2;e{e.id=t})),o.length&&(o.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.audioGroup&&(e.audioStreams=o.filter((t=>t.group===e.audioGroup)))}))),a.length&&(a.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.subtitleGroup&&(e.subtitleStreams=a.filter((t=>t.group===e.subtitleGroup)))}))),i}(i,t)}static isMediaPlaylist(e){return e.includes("#EXTINF:")||e.includes("#EXT-X-TARGETDURATION:")}}class Qb{constructor(e){Lh(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(qs,{error:Db.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this.TAG_NAME="HlsManifestLoader",this._timer=null;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._loader=new Sb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioLoader=new Sb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._subtitleLoader=new Sb({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,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.debugLog(this.TAG_NAME,"load()",e,t,i);const s=[this._loader.load(e)];let r,o,a,n,l,d;t&&s.push(this._audioLoader.load(t)),i&&s.push(this._subtitleLoader.load(i));try{const[e,i,n]=await Promise.all(s);if(!e)return[];r=e.data,t?(o=null==i?void 0:i.data,a=null==n?void 0:n.data):a=null==i?void 0:i.data}catch(e){throw Db.network(e)}try{var h;if(n=Yb.parse(r,e),!1===(null===(h=n)||void 0===h?void 0:h.live)&&n.segments&&!n.segments.length)throw new Error("empty segments list");o&&(l=Yb.parse(o,t)),a&&(d=Yb.parse(a,i))}catch(e){throw new Db(Lb,Cb,e)}return n&&(n.isMaster?this.hls.emit(Ws,{playlist:n}):this.hls.emit(zs,{playlist:n})),[n,l,d]}poll(e,t,i,s,r,o){clearTimeout(this._timer),o=o||3e3;let a=this.hls.config.pollRetryCount;const n=async()=>{clearTimeout(this._timer);try{const r=await this.load(e,t,i);if(!r[0])return;a=this.hls.config.pollRetryCount,s(r[0],r[1],r[2])}catch(e){a--,a<=0&&r(e)}this._timer=setTimeout(n,o)};this._timer=setTimeout(n,o)}stopPoll(){return clearTimeout(this._timer),this.cancel()}cancel(){return Promise.all([this._loader.cancel(),this._audioLoader.cancel()])}}class Xb{constructor(){Lh(this,"_chunkSpeeds",[]),Lh(this,"_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 Zb{constructor(e){Lh(this,"_emitOnLoaded",((e,t)=>{const{data:i,response:s,option:r}=e,{firstByteTime:o,startTime:a,endTime:n,contentLength:l}=r||{},d=n-a;this._bandwidthService.addRecord(l||i.byteLength,d),this.hls.emit(Ys,{time:d,byteLength:l,url:t}),this.hls.emit(Qs,{url:t,elapsed:d||0}),this.hls.emit(Js,{url:t,responseUrl:s.url,elapsed:o-a}),this.hls.emit(Xs,{headers:s.headers})})),Lh(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(qs,{error:Db.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this._bandwidthService=new Xb;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._segmentLoader=new Sb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioSegmentLoader=new Sb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._keyLoader=new Sb({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,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){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i;const r=[];return e&&(r[0]=this.loadVideoSegment(e,i)),t&&(r[1]=this.loadAudioSegment(t,s)),Promise.all(r)}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){var s;let r,o,a,n,l;const d=[];if(this.hls.emit(Ks,{url:t.url}),d[0]=e.load(t.url),i&&t.initSegment){var h;const i=t.initSegment.url;r=this._mapCache[i],r||(this.hls.emit(Ks,{url:i}),d[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=null===(h=t.initSegment.key)||void 0===h?void 0:h.url;s&&(l=t.initSegment.key.iv,n=this._keyCache[s],n||(this.hls.emit(Ks,{url:s}),d[2]=this._keyLoader.load(s).then((e=>{e&&(n=this._keyCache[s]=e.data,this._emitOnLoaded(e,s))}))))}const c=null===(s=t.key)||void 0===s?void 0:s.url;c&&(a=t.key.iv,o=this._keyCache[c],o||(this.hls.emit(Ks,{url:c}),d[3]=this._keyLoader.load(c).then((e=>{e&&(o=this._keyCache[c]=e.data,this._emitOnLoaded(e,c))}))));const[u]=await Promise.all(d);if(!u)return;const p=u.data;return this._emitOnLoaded(u,t.url),{data:p,map:r,key:o,mapKey:n,keyIv:a,mapKeyIv:l}}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()])}}class ev{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(){var e;return this.targetDuration||(null===(e=this.segments[0])||void 0===e?void 0:e.duration)||0}get liveEdge(){return this.endTime}get endTime(){var e;return(null===(e=this.lastSegment)||void 0===e?void 0:e.end)||0}get currentSubtitleEndSn(){var e;return(null===(e=this.currentSubtitleStream)||void 0===e?void 0:e.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 s=this.segments;for(let t=0,r=s.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 s=i[i.length-1],r=(null==s?void 0:s.sn)||-1;if(re.sn===r)),a=o<0?e.segments:e.segments.slice(o+1);if(i.length&&a.length){let e=s.end;a.forEach((t=>{t.start=e,e=t.end}));const t=(null==s?void 0:s.cc)||-1;t>a[0].cc&&a.forEach((e=>e.cc+=t))}return t.endSN=e.endSN,t.segments=i.concat(a),a}}else t.segments=e.segments}}class tv{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(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.lastSegment}get currentSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer]}get nextSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer+1]}get currentSegments(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.segments}get currentSubtitleEndSn(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.currentSubtitleEndSn}get liveEdge(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.liveEdge}get totalDuration(){var e;return(null===(e=this.currentStream)||void 0===e?void 0:e.totalDuration)||0}get seekRange(){const e=this.currentSegments;if(e&&e.length)return[e[0].start,e[e.length-1].end]}get isEmpty(){var e;return!(null!==(e=this.currentSegments)&&void 0!==e&&e.length)}get isLive(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.live}get hasSubtitle(){var e;return!(null===(e=this.currentStream)||void 0===e||!e.currentSubtitleStream)}getAudioSegment(e){var t;return null===(t=this.currentStream)||void 0===t?void 0:t.getAudioSegment(e)}moveSegmentPointer(e){var t;null==e&&(e=this._segmentPointer+1),this._segmentPointer=bo(e,-1,null===(t=this.currentSegments)||void 0===t?void 0:t.length),this.player.debugLog(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){var t;return null===(t=this.currentSegments)||void 0===t?void 0:t[e]}setNextSegmentByIndex(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this._segmentPointer=e-1,this.player.debugLog(this.TAG_NAME,"setNextSegmentByIndex()",e,this._segmentPointer)}findSegmentIndexByTime(e){const t=this.currentSegments;if(t){for(let i,s=0,r=t.length;s=i.start&&ee.url)).forEach(((e,t)=>{this.streams[t]?this.streams[t].update(e):this.streams[t]=new ev(e)})),this.currentStream=this.streams[0];else if(Array.isArray(e.segments)){const s=this.currentStream;if(s){s.update(e,t,i);const r=s.updateSubtitle(i);r&&this.hls.emit(Gs,{list:r})}else this.reset(),this.currentStream=this.streams[0]=new ev(e,t,i)}this.currentStream&&this.hls.isLive&&!this.dvrWindow&&(this.dvrWindow=this.currentSegments.reduce(((e,t)=>e+=t.duration),0))}switchSubtitle(e){var t;null===(t=this.currentStream)||void 0===t||t.switchSubtitle(e)}clearOldSegment(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50;const t=this.currentStream;if(!this.dvrWindow||!t)return;const i=t.endTime-this.dvrWindow;if(i<=0)return void this.player.debugLog(this.TAG_NAME,`clearOldSegment() stream.endTime:${t.endTime}, this.dvrWindow:${this.dvrWindow} startTime <= 0`);const s=t.segments;if(s.length<=e)return void this.player.debugLog(this.TAG_NAME,`clearOldSegment() segments.length:${s.length} <= maxPlaylistSize:${e}`);const r=this._segmentPointer;this._segmentPointer=t.clearOldSegment(i,r),this.player.debugLog(this.TAG_NAME,"clearOldSegment() update _segmentPointer:",r,this._segmentPointer),this.player.debugLog(this.TAG_NAME,"currentSegments",this.currentSegments)}checkSegmentTrackChange(e,t){const i=this.findSegmentIndexByTime(e),s=this.getSegmentByIndex(i);if(!s)return;if(!s.hasAudio&&!s.hasVideo)return;if(2!==t&&s.hasAudio&&s.hasVideo)return s;if(s.end-e>.3)return;const r=this.getSegmentByIndex(i+1);return r&&(r.hasAudio||r.hasVideo)&&(r.hasAudio!==s.hasAudio||r.hasVideo!==s.hasVideo)?r:void 0}}class iv{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?Uh(e.map,t):t}async _decryptData(e,t,i){if(this.externalDecryptor)return await this.externalDecryptor.decrypt(e,t,i);if(this.subtle){const s=await this.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt","decrypt"]),r=await this.subtle.decrypt({name:"AES-CBC",iv:i},s,e);return new Uint8Array(r)}e=jd(e),t=jd(t),i=jd(i);return function(e){const{words:t}=e,{sigBytes:i}=e,s=new Uint8Array(i);for(let e=0;e>>2]>>>24-e%4*8&255;return s}(Od.AES.decrypt({ciphertext:e},t,{iv:i,mode:Od.mode.CBC}))}}class sv extends gh{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=Dt,this._audioCodecType=Bt,this._vps=null,this._sps=null,this._pps=null,this.TAG_NAME="HlsTsLoader",this.videoTrack=sv.initVideoTrack(),this.audioTrack=sv.initAudioTrack(),this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,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.debugLog(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.videoTrack=null,this.audioTrack=null,this.tempSampleListInfo={},this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._hasCalcFps=!1,this._tempSampleTsList=[],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.player.debugLog(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])}_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let r,o;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?(o=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-o>54e5&&(r=o)):o=r),{data:e.subarray(9+t),pts:r,dts:o,originalPts:r,originalDts:o}}_demux(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t&&(this._pmtId=-1,this.videoTrack=sv.initVideoTrack(),this.audioTrack=sv.initAudioTrack()),!i||t?(this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[]):(this.videoTrack.samples=[],this.audioTrack.samples=[],this._remainingPacketData&&(e=Uh(this._remainingPacketData,e),this._remainingPacketData=null));let s=e.length;const r=s%188;r&&(this._remainingPacketData=e.subarray(s-r),s-=r);for(let t=0;t>4>1){if(r=t+5+e[t+4],r===t+188)continue}else r=t+4;switch(s){case 0:i&&(r+=e[r]+1),this._pmtId=(31&e[r+10])<<8|e[r+11];break;case this._pmtId:{i&&(r+=e[r]+1);const t=r+3+((15&e[r+1])<<8|e[r+2])-4;for(r+=12+((15&e[r+10])<<8|e[r+11]);r=t)return[];const r=[];for(;s{const t=s?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(!s&&5!==t||s&&5===t)break;r.isIFrame=!0,this._gopId++;break;case 6:case 39:case 40:if(!s&&6!==t||s&&6===t)break;const o=uo(function(e){const t=e.byteLength,i=[];let s=1;for(;s=i)return;const r=s,o=[],a=(60&e[s+2])>>>2,n=Hr[a];if(!n)throw new Error(`Invalid sampling index: ${a}`);const l=1+((192&e[s+2])>>>6),d=(1&e[s+2])<<2|(192&e[s+3])>>>6;let h,c,u=0;const p=Zr(n);for(;s+7>5,i-s=i?void 0:e.subarray(s),frames:o,samplingFrequencyIndex:a,sampleRate:n,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=Kr({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});this._isSendAACSeqHeader=!0,this.player.debugLog(this.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),this._doDecodeByHls(e,Ge,0,!1,0)}if(this._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const i=t.pts,s=new Uint8Array(t.data.length+2);s.set([175,1],0),s.set(t.data,2);const r={type:Ge,pts:i,dts:i,payload:s};e.push(r)})),this.audioTrack.samples=this.audioTrack.samples.concat(e)}else this.player.debugWarn(this.TAG_NAME,"aac seq header not send")}else this.player.debugWarn(this.TAG_NAME,"aac parseADTS error")}this._audioPesData=[]}else e&&"startPrefixError"===e.code&&(this._audioPesData=[])}_fix(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=Math.round(9e4*e);const s=this.videoTrack,r=this.audioTrack,o=s.samples,a=r.samples;if(!o.length&&!a.length)return;const n=o[0],l=a[0];let d=0;if(o.length&&a.length&&(d=n.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=n?n.dts-this._baseDts-this._videoNextDts:0,i=l?l.pts-this._baseDts-this._audioNextPts:0;Math.abs(t||i)>xr&&(this._calculateBaseDts(this.audioTrack,this.videoTrack),this._baseDts-=e)}this._resetBaseDtsWhenStreamBreaked(),this._fixAudio(r),this._fixVideo(s);let h=s.samples.concat(r.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===We?this._doDecodeVideo({...e,payload:t}):e.type===Ge&&this._doDecodeAudio({...e,payload:t})})),Da(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(h))}_calculateBaseDts(){const e=this.audioTrack,t=this.videoTrack,i=e.samples,s=t.samples;if(!i.length&&!s.length)return!1;let r=1/0,o=1/0;i.length&&(e.baseDts=r=i[0].pts),s.length&&(t.baseDts=o=s[0].dts),this._baseDts=Math.min(r,o);const a=o-r;return Number.isFinite(a)&&Math.abs(a)>45e3&&this.player.debugWarn(this.TAG_NAME,`large av first frame gap,\n video pts: ${o},\n audio pts: ${r},\n base dts: ${this._baseDts},\n detect is: ${a}`),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 s=0;const r=t[0],o=t[1],a=this._videoNextDts-r.dts;let n;Math.abs(a)>45e3&&(r.dts+=a,r.pts+=a,this.player.debugWarn(this.TAG_NAME,`large video gap between chunk,\n next dts is ${this._videoNextDts},\n first dts is ${r.dts},\n next dts is ${o&&o.dts},\n duration is ${a}`),o&&Math.abs(o.dts-r.dts)>xr&&(this._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=a,e.pts+=a)}))));const l=e.samples[0],d=e.samples[i-1];n=1===i?9e3:Math.floor((d.dts-l.dts)/(i-1));for(let r=0;rxr||s<0){this._videoTimestampBreak=!0,s=this._audioTimestampBreak?n:Math.max(s,2700);const i=this._audioNextPts||0;a&&a.dts>i&&(s=n),this.player.debugWarn(this.TAG_NAME,`large video gap between frames,\n time is ${o/e.timescale},\n dts is ${o},\n origin dts is ${t[r].originalDts},\n next dts is ${this._videoNextDts},\n sample Duration is ${s} ,\n ref Sample DurationInt is ${n}`)}t[r].duration=s,this._videoNextDts+=s}}_doFixAudioInternal(e,t,i){e.sampleDuration||(e.sampleDuration=Zr(e.timescale,i));const s=e.sampleDuration;if(void 0===this._audioNextPts){const e=t[0];this._audioNextPts=e.pts}for(let i=0;i=3*s&&a<=Lr&&!Io()){Xr(e.codec,e.channelCount)||t[0].data.subarray();const n=Math.floor(a/s);Math.abs(o.pts-this._lastAudioExceptionGapDot)>Cr&&(this._lastAudioExceptionGapDot=o.pts),this.player.debugWarn(this.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${n},\n nextPts is ${r},\n ref sample duration is ${s}`);for(let e=0;e=-9e4?(Math.abs(o.pts-this._lastAudioExceptionOverlapDot)>Cr&&(this._lastAudioExceptionOverlapDot=o.pts,this.player.debugWarn(this.TAG_NAME,`audio overlap detected,\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n ref sample duration is ${s}`)),t.splice(i,1),i--):(Math.abs(a)>=Lr&&(this._audioTimestampBreak=!0,Math.abs(o.pts-this._lastAudioExceptionLargeGapDot)>Cr&&(this._lastAudioExceptionLargeGapDot=o.pts,this.player.debugWarn(this.TAG_NAME,`large audio gap detected,\n time is ${o.pts/1e3}\n pts is ${o.pts},\n originPts is ${o.originalPts},\n nextPts is ${r},\n sample duration is ${a}\n ref sample duration is ${s}`))),o.dts=o.pts=r,this._audioNextPts+=s)}}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=_a(this._tempSampleTsList,We);if(i)this._tempSampleTsList=[],this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debugLog(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debugLog(this.TAG_NAME,"_initLoopWorker()");const e=Oa(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(`JbPro:[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((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=Math.round(s.duration/90))):s.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 if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};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 s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),oe),s.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=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debugWarn(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=this.cryptoPayloadAudio(t);this._doDecodeByHls(i,Ge,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?ul(t,e.isIFrame):Xn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,We,e.dts,e.isIFrame,s)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}}function rv(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function ov(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function av(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=Math.pow(2,32);return ov(e,t)*i+ov(e,t+4)}const nv="aac",lv="g7110a",dv="g7110m",hv="avc",cv="hevc";class uv{static getFrameDuration(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}static getRateIndexByRate(e){return uv.FREQ.indexOf(e)}}function pv(e,t,i,s,r,o){const a=[],n=null==r?void 0:r.entries,l=t.entries,d=s.entries,h=i.entrySizes,c=null==o?void 0:o.entries;let u,p,f;c&&(u={},c.forEach((e=>{u[e-1]=!0}))),n&&(p=[],n.forEach((e=>{let{count:t,offset:i}=e;for(let e=0;e{let{count:t,delta:s}=e;for(let e=0;e=w&&(b++,w=l[b+1]?l[b+1].firstChunk-1:1/0),_+=l[b].samplesPerChunk)})),a}function fv(e,t){return e.dataReferenceIndex=rv(t,6),e.width=rv(t,24),e.height=rv(t,26),e.horizresolution=ov(t,28),e.vertresolution=ov(t,32),e.frameCount=rv(t,40),e.depth=rv(t,74),78}function mv(e,t){return e.dataReferenceIndex=rv(t,6),e.channelCount=rv(t,16),e.sampleSize=rv(t,18),e.sampleRate=ov(t,24)/65536,28}function gv(e,t,i){if(!e)return;if(e.size!==e.data.length)throw new Error(`box ${e.type} size !== data.length`);const s={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(s.version=e.data[e.headerSize],s.flags=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),s.headerSize+=4),i(s,e.data.subarray(s.headerSize),s.start+s.headerSize),s}Lh(uv,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);const yv=function(e,t,i){const s=String(i),r=t>>0;let o=Math.ceil(r/s.length);const a=[],n=String(e);for(;o--;)a.push(s);return a.join("").substring(0,r-n.length)+n},Av=function(){const e=[];for(var t=arguments.length,i=new Array(t),s=0;s{e.push(yv(Number(t).toString(16),2,0))})),e[0]};class bv{static probe(e){return!!bv.findBox(e,["ftyp"])}static findBox(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=[];if(!e)return s;let r=0,o="",a=0;for(;e.length>7;){if(r=ov(e),o=String.fromCharCode.apply(null,e.subarray(4,8)),a=8,1===r?(r=av(e,8),a+=8):r||(r=e.length),!t[0]||o===t[0]){const n=e.subarray(0,r);if(!(t.length<2))return bv.findBox(n.subarray(a),t.slice(1),i+a);s.push({start:i,size:r,headerSize:a,type:o,data:n})}i+=r,e=e.subarray(r)}return s}static tfhd(e){return gv(e,!0,((e,t)=>{e.trackId=ov(t);let i=4;const s=1&e.flags,r=2&e.flags,o=8&e.flags,a=16&e.flags,n=32&e.flags;s&&(i+=4,e.baseDataOffset=ov(t,i),i+=4),r&&(e.sampleDescriptionIndex=ov(t,i),i+=4),o&&(e.defaultSampleDuration=ov(t,i),i+=4),a&&(e.defaultSampleSize=ov(t,i),i+=4),n&&(e.defaultSampleFlags=ov(t,i))}))}static sidx(e){return gv(e,!0,((e,t)=>{let i=0;e.reference_ID=ov(t,i),i+=4,e.timescale=ov(t,i),i+=4,0===e.version?(e.earliest_presentation_time=ov(t,i),i+=4,e.first_offset=ov(t,i),i+=4):(e.earliest_presentation_time=av(t,i),i+=8,e.first_offset=av(t,i),i+=8),i+=2,e.references=[];const s=rv(t,i);i+=2;for(let r=0;r>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=ov(t,i),i+=4,r=ov(t,i),i+=4,s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}}))}static moov(e){return gv(e,!1,((e,t,i)=>{e.mvhd=bv.mvhd(bv.findBox(t,["mvhd"],i)[0]),e.trak=bv.findBox(t,["trak"],i).map((e=>bv.trak(e))),e.pssh=bv.pssh(bv.findBox(t,["pssh"],i)[0])}))}static mvhd(e){return gv(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=ov(t,16),e.duration=av(t,20),i+=28):(e.timescale=ov(t,8),e.duration=ov(t,12),i+=16),e.nextTrackId=ov(t,i+76)}))}static trak(e){return gv(e,!1,((e,t,i)=>{e.tkhd=bv.tkhd(bv.findBox(t,["tkhd"],i)[0]),e.mdia=bv.mdia(bv.findBox(t,["mdia"],i)[0])}))}static tkhd(e){return gv(e,!0,((e,t)=>{let i=0;1===e.version?(e.trackId=ov(t,16),e.duration=av(t,24),i+=32):(e.trackId=ov(t,8),e.duration=ov(t,16),i+=20),e.width=ov(t,i+52),e.height=ov(t,i+56)}))}static mdia(e){return gv(e,!1,((e,t,i)=>{e.mdhd=bv.mdhd(bv.findBox(t,["mdhd"],i)[0]),e.hdlr=bv.hdlr(bv.findBox(t,["hdlr"],i)[0]),e.minf=bv.minf(bv.findBox(t,["minf"],i)[0])}))}static mdhd(e){return gv(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=ov(t,16),e.duration=av(t,20),i+=28):(e.timescale=ov(t,8),e.duration=ov(t,12),i+=16);const s=rv(t,i);e.language=String.fromCharCode(96+(s>>10&31),96+(s>>5&31),96+(31&s))}))}static hdlr(e){return gv(e,!0,((e,t)=>{0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}static minf(e){return gv(e,!1,((e,t,i)=>{e.vmhd=bv.vmhd(bv.findBox(t,["vmhd"],i)[0]),e.smhd=bv.smhd(bv.findBox(t,["smhd"],i)[0]),e.stbl=bv.stbl(bv.findBox(t,["stbl"],i)[0])}))}static vmhd(e){return gv(e,!0,((e,t)=>{e.graphicsmode=rv(t),e.opcolor=[rv(t,2),rv(t,4),rv(t,6)]}))}static smhd(e){return gv(e,!0,((e,t)=>{e.balance=rv(t)}))}static stbl(e){return gv(e,!1,((e,t,i)=>{var s,r,o;e.stsd=bv.stsd(bv.findBox(t,["stsd"],i)[0]),e.stts=bv.stts(bv.findBox(t,["stts"],i)[0]),e.ctts=bv.ctts(bv.findBox(t,["ctts"],i)[0]),e.stsc=bv.stsc(bv.findBox(t,["stsc"],i)[0]),e.stsz=bv.stsz(bv.findBox(t,["stsz"],i)[0]),e.stco=bv.stco(bv.findBox(t,["stco"],i)[0]),e.stco||(e.co64=bv.co64(bv.findBox(t,["co64"],i)[0]),e.stco=e.co64);const a=null===(s=e.stsd.entries[0])||void 0===s||null===(r=s.sinf)||void 0===r||null===(o=r.schi)||void 0===o?void 0:o.tenc.default_IV_size;e.stss=bv.stss(bv.findBox(t,["stss"],i)[0]),e.senc=bv.senc(bv.findBox(t,["senc"],i)[0],a)}))}static senc(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return gv(e,!0,((e,i)=>{let s=0;const r=ov(i,s);s+=4,e.samples=[];for(let o=0;o{const i=[],s=[];let r=0;for(let e=0;e<16;e++)s.push(Av(t[r+e]));if(r+=16,e.version>0){const e=ov(t,r);r+=4;for(let s=0;s<(""+e).length;s++)for(let e=0;e<16;e++){const e=t[r];r+=1,i.push(Av(e))}}const o=ov(t,r);e.data_size=o,r+=4,e.kid=i,e.system_id=s,e.buffer=t}))}static stsd(e){return gv(e,!0,((e,t,i)=>{e.entryCount=ov(t),e.entries=bv.findBox(t.subarray(4),[],i+4).map((e=>{switch(e.type){case"avc1":case"avc2":case"avc3":case"avc4":return bv.avc1(e);case"hvc1":case"hev1":return bv.hvc1(e);case"mp4a":return bv.mp4a(e);case"alaw":case"ulaw":return bv.alaw(e);case"enca":return gv(e,!1,((e,t,i)=>{e.channelCount=rv(t,16),e.samplesize=rv(t,18),e.sampleRate=ov(t,24)/65536,t=t.subarray(28),e.sinf=bv.sinf(bv.findBox(t,["sinf"],i)[0]),e.esds=bv.esds(bv.findBox(t,["esds"],i)[0])}));case"encv":return gv(e,!1,((e,t,i)=>{e.width=rv(t,24),e.height=rv(t,26),e.horizresolution=ov(t,28),e.vertresolution=ov(t,32),t=t.subarray(78),e.sinf=bv.sinf(bv.findBox(t,["sinf"],i)[0]),e.avcC=bv.avcC(bv.findBox(t,["avcC"],i)[0]),e.hvcC=bv.hvcC(bv.findBox(t,["hvcC"],i)[0]),e.pasp=bv.pasp(bv.findBox(t,["pasp"],i)[0])}))}})).filter(Boolean)}))}static tenc(e){return gv(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 s=0;s<16;s++)e.default_KID.push(Av(t[i])),i+=1}))}static schi(e){return gv(e,!1,((e,t,i)=>{e.tenc=bv.tenc(bv.findBox(t,["tenc"],i)[0])}))}static sinf(e){return gv(e,!1,((e,t,i)=>{e.schi=bv.schi(bv.findBox(t,["schi"],i)[0]),e.frma=bv.frma(bv.findBox(t,["frma"],i)[0])}))}static frma(e){return gv(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 gv(e,!1,((e,t,i)=>{const s=fv(e,t),r=t.subarray(s);i+=s,e.avcC=bv.avcC(bv.findBox(r,["avcC"],i)[0]),e.pasp=bv.pasp(bv.findBox(r,["pasp"],i)[0])}))}static avcC(e){return gv(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 s=0;s<3;s++)t=e[s].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 s=0;s{const s=fv(e,t),r=t.subarray(s);i+=s,e.hvcC=bv.hvcC(bv.findBox(r,["hvcC"],i)[0]),e.pasp=bv.pasp(bv.findBox(r,["pasp"],i)[0])}))}static hvcC(e){return gv(e,!1,((t,i)=>{t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=i[0];const s=i[1];t.generalProfileSpace=s>>6,t.generalTierFlag=(32&s)>>5,t.generalProfileIdc=31&s,t.generalProfileCompatibility=ov(i,2),t.generalConstraintIndicatorFlags=i.subarray(6,12),t.generalLevelIdc=i[12],t.avgFrameRate=rv(i,19),t.numOfArrays=i[22],t.vps=[],t.sps=[],t.pps=[];let r=23,o=0,a=0,n=0;for(let e=0;e{e.hSpacing=ov(t),e.vSpacing=ov(t,4)}))}static mp4a(e){return gv(e,!1,((e,t,i)=>{const s=mv(e,t);e.esds=bv.esds(bv.findBox(t.subarray(s),["esds"],i+s)[0])}))}static esds(e){return gv(e,!0,((e,t)=>{e.codec="mp4a.";let i=0,s=0,r=0,o=0;for(;t.length;){for(i=0,o=t[i],s=t[i+1],i+=2;128&s;)r=(127&s)<<7,s=t[i],i+=1;if(r+=127&s,3===o)t=t.subarray(i+3);else{if(4!==o){if(5===o){const s=e.config=t.subarray(i,i+r);let o=(248&s[0])>>3;return 31===o&&s.length>=2&&(o=32+((7&s[0])<<3)+((224&s[1])>>5)),e.objectType=o,e.codec+=o.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 gv(e,!1,((e,t)=>{mv(e,t)}))}static stts(e){return gv(e,!0,((e,t)=>{const i=ov(t),s=[];let r=4;for(let e=0;e{const i=ov(t),s=[];let r=4;if(1===e.version)for(let e=0;e{const i=ov(t),s=[];let r=4;for(let e=0;e{const i=ov(t),s=ov(t,4),r=[];if(!i){let e=8;for(let i=0;i{const i=ov(t),s=[];let r=4;for(let e=0;e{const i=ov(t),s=[];let r=4;for(let e=0;e{const i=ov(t),s=[];let r=4;for(let e=0;e{e.mfhd=bv.mfhd(bv.findBox(t,["mfhd"],i)[0]),e.traf=bv.findBox(t,["traf"],i).map((e=>bv.traf(e)))}))}static mfhd(e){return gv(e,!0,((e,t)=>{e.sequenceNumber=ov(t)}))}static traf(e){return gv(e,!1,((e,t,i)=>{e.tfhd=bv.tfhd(bv.findBox(t,["tfhd"],i)[0]),e.tfdt=bv.tfdt(bv.findBox(t,["tfdt"],i)[0]),e.trun=bv.trun(bv.findBox(t,["trun"],i)[0])}))}static trun(e){return gv(e,!0,((e,t)=>{const{version:i,flags:s}=e,r=t.length,o=e.sampleCount=ov(t);let a=4;if(r>a&&1&s&&(e.dataOffset=-(1+~ov(t,a)),a+=4),r>a&&4&s&&(e.firstSampleFlags=ov(t,a),a+=4),e.samples=[],r>a){let r;for(let n=0;n{1===e.version?e.baseMediaDecodeTime=av(t):e.baseMediaDecodeTime=ov(t)}))}static probe(e){return!!bv.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){var s,r;const o=e.trak;if(!o||!o.length)return;const a=o.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),n=o.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(a&&t){var l,d,h,c,u,p,f;const i=t,s=null===(l=a.tkhd)||void 0===l?void 0:l.trackId;null!=s&&(i.id=a.tkhd.trackId),i.tkhdDuration=a.tkhd.duration,i.mvhdDurtion=e.mvhd.duration,i.mvhdTimecale=e.mvhd.timescale,i.timescale=i.formatTimescale=a.mdia.mdhd.timescale,i.duration=a.mdia.mdhd.duration||i.mvhdDurtion/i.mvhdTimecale*i.timescale;const r=a.mdia.minf.stbl.stsd.entries[0];if(i.width=r.width,i.height=r.height,r.pasp&&(i.sarRatio=[r.pasp.hSpacing,r.pasp.vSpacing]),r.hvcC)i.codecType=cv,i.codec=r.hvcC.codec,i.vps=r.hvcC.vps,i.sps=r.hvcC.sps,i.pps=r.hvcC.pps,i.hvcC=r.hvcC.data;else{if(!r.avcC)throw new Error("unknown video stsd entry");i.codecType=hv,i.codec=r.avcC.codec,i.sps=r.avcC.sps,i.pps=r.avcC.pps}var m,g,y,A,b,v,_,w;if(i.present=!0,i.ext={},i.ext.stss=null===(d=a.mdia)||void 0===d||null===(h=d.minf)||void 0===h||null===(c=h.stbl)||void 0===c?void 0:c.stss,i.ext.ctts=null===(u=a.mdia)||void 0===u||null===(p=u.minf)||void 0===p||null===(f=p.stbl)||void 0===f?void 0:f.ctts,r&&"encv"===r.type)i.isVideoEncryption=!0,r.default_KID=null===(m=r.sinf)||void 0===m||null===(g=m.schi)||void 0===g?void 0:g.tenc.default_KID,r.default_IsEncrypted=null===(y=r.sinf)||void 0===y||null===(A=y.schi)||void 0===A?void 0:A.tenc.default_IsEncrypted,r.default_IV_size=null===(b=r.sinf)||void 0===b||null===(v=b.schi)||void 0===v?void 0:v.tenc.default_IV_size,i.videoSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,r.data_format=null===(_=r.sinf)||void 0===_||null===(w=_.frma)||void 0===w?void 0:w.data_format,i.useEME=e.useEME,i.kidValue=e.kidValue,i.pssh=e.pssh,i.encv=r}if(n&&i){var S,E,T,k,L,C,x,D,R;const t=i,o=null===(S=n.tkhd)||void 0===S?void 0:S.trackId;null!=o&&(t.id=n.tkhd.trackId),t.tkhdDuration=n.tkhd.duration,t.mvhdDurtion=e.mvhd.duration,t.mvhdTimecale=e.mvhd.timescale,t.timescale=t.formatTimescale=n.mdia.mdhd.timescale,t.duration=n.mdia.mdhd.duration||t.mvhdDurtion/t.mvhdTimecale*t.timescale;const a=n.mdia.minf.stbl.stsd.entries[0];switch(t.sampleSize=a.sampleSize,t.sampleRate=a.sampleRate,t.channelCount=a.channelCount,t.present=!0,a.type){case"alaw":t.codecType=t.codec=lv,t.sampleRate=8e3;break;case"ulaw":t.codecType=t.codec=dv,t.sampleRate=8e3;break;default:t.codecType=nv,t.sampleDuration=uv.getFrameDuration(t.sampleRate,t.timescale),t.sampleRateIndex=uv.getRateIndexByRate(t.sampleRate),t.objectType=(null===(s=a.esds)||void 0===s?void 0:s.objectType)||2,a.esds&&(t.config=Array.from(a.esds.config)),t.codec=(null===(r=a.esds)||void 0===r?void 0:r.codec)||"mp4a.40.2"}var I,P,B,M,F,U,O,N;if(t.sampleDuration=uv.getFrameDuration(t.sampleRate,t.timescale),t.objectType=(null===(E=a.esds)||void 0===E?void 0:E.objectType)||2,a.esds&&(a.esds.config?t.config=Array.from(a.esds.config):console.warn("esds config is null")),t.codec=(null===(T=a.esds)||void 0===T?void 0:T.codec)||"mp4a.40.2",t.sampleRateIndex=uv.getRateIndexByRate(t.sampleRate),t.ext={},t.ext.stss=null===(k=n.mdia)||void 0===k||null===(L=k.minf)||void 0===L||null===(C=L.stbl)||void 0===C?void 0:C.stss,t.ext.ctts=null===(x=n.mdia)||void 0===x||null===(D=x.minf)||void 0===D||null===(R=D.stbl)||void 0===R?void 0:R.ctts,t.present=!0,a&&"enca"===a.type)t.isAudioEncryption=!0,a.data_format=null===(I=a.sinf)||void 0===I||null===(P=I.frma)||void 0===P?void 0:P.data_format,a.default_KID=null===(B=a.sinf)||void 0===B||null===(M=B.schi)||void 0===M?void 0:M.tenc.default_KID,a.default_IsEncrypted=null===(F=a.sinf)||void 0===F||null===(U=F.schi)||void 0===U?void 0:U.tenc.default_IsEncrypted,a.default_IV_size=null===(O=a.sinf)||void 0===O||null===(N=O.schi)||void 0===N?void 0:N.tenc.default_IV_size,t.audioSenc=n.mdia.minf.stbl.senc&&n.mdia.minf.stbl.senc.samples,t.useEME=e.useEME,t.kidValue=e.kidValue,t.enca=a}if(i&&(i.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!i&&i.isAudioEncryption),null!=t&&t.encv||null!=i&&i.enca){var j,G;const e=null==t||null===(j=t.encv)||void 0===j?void 0:j.default_KID,s=null==i||null===(G=i.enca)||void 0===G?void 0:G.default_KID,r=e||s?(e||s).join(""):null;t&&(t.kid=r),i&&(i.kid=r)}return t&&(t.flags=3841),i&&(i.flags=1793),{videoTrack:t,audioTrack:i}}static evaluateDefaultDuration(e,t,i){var s;const r=null==t||null===(s=t.samples)||void 0===s?void 0:s.length;if(!r)return 1024;return 1024*r/t.timescale*e.timescale/i}static moofToSamples(e,t,i){const s={};return e.mfhd&&(t&&(t.sequenceNumber=e.mfhd.sequenceNumber),i&&(i.sequenceNumber=e.mfhd.sequenceNumber)),e.traf.forEach((e=>{let{tfhd:r,tfdt:o,trun:a}=e;if(!r||!a)return;o&&(t&&t.id===r.trackId&&(t.baseMediaDecodeTime=o.baseMediaDecodeTime),i&&i.id===r.trackId&&(i.baseMediaDecodeTime=o.baseMediaDecodeTime));const n=r.defaultSampleSize||0,l=r.defaultSampleDuration||bv.evaluateDefaultDuration(t,i,a.samples.length||a.sampleCount);let d=a.dataOffset||0,h=0,c=-1;if(!a.samples.length&&a.sampleCount){s[r.trackId]=[];for(let e=0;e((e={offset:d,dts:h,pts:h+(e.cts||0),duration:e.duration||l,size:e.size||n,gopId:c,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(c++,e.gopId=c),h+=e.duration,d+=e.size,e)))})),s}static moovToSamples(e){const t=e.trak;if(!t||!t.length)return;const i=t.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),s=t.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(!i&&!s)return;let r,o;if(i){var a,n;const e=null===(a=i.mdia)||void 0===a||null===(n=a.minf)||void 0===n?void 0:n.stbl;if(!e)return;const{stts:t,stsc:s,stsz:o,stco:l,stss:d,ctts:h}=e;if(!(t&&s&&o&&l&&d))return;r=pv(t,s,o,l,h,d)}if(s){var l,d,h;const e=null===(l=s.mdia)||void 0===l||null===(d=l.minf)||void 0===d?void 0:d.stbl;if(!e)return;const t=null===(h=s.mdia.mdhd)||void 0===h?void 0:h.timescale,{stts:i,stsc:r,stsz:a,stco:n}=e;if(!(t&&i&&r&&a&&n))return;o=pv(i,r,a,n)}return{videoSamples:r,audioSamples:o}}}class vv extends gh{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._tempSampleTsList=[],this._basefps=25,this._isUseWorker()&&this._initLoopWorker(),e.debugLog(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._tempSampleTsList=[],this.videoTrack=null,this.audioTrack=null,this.isInitVideo=!1,this.isInitAudio=!1,this._basefps=25,this.player.debugLog(this.TAG_NAME,"destroy")}demux(e,t){let i=this.audioTrack,s=this.videoTrack;if(this.checkInitAudio(),this.checkInitVideo(),i.samples=[],s.samples=[],t){if(this.player.updateStats({abps:t.byteLength}),Da(this.isInitAudio)){const e=bv.findBox(t,["moov"])[0];if(!e)return void this.player.debugError(this.TAG_NAME,"cannot found moov box");bv.moovToTrack(bv.moov(e),null,i),this.checkInitAudio()&&(this.player.debugLog(this.TAG_NAME,"audioData audio init success"),this._sendAccADTSHeader(i))}const e=bv.findBox(t,["moof"])[0];if(e){const s=bv.moofToSamples(bv.moof(e),null,i)[i.id],r=i.baseMediaDecodeTime;if(s){const o=e.start;s.map((e=>{e.offset+=o;const s=t.subarray(e.offset,e.offset+e.size),a=e.dts+r,n=new Uint8Array(s.length+2);n.set([175,1],0),n.set(s,2),i.samples.push({type:Ge,pts:a,dts:a,payload:n,duration:e.duration,size:n.byteLength})}))}}}if(e){if(this.player.updateStats({vbps:e.byteLength}),Da(this.isInitVideo)&&Da(this.isInitAudio)){const t=bv.findBox(e,["moov"])[0];if(!t)throw new Error("cannot found moov box");if(bv.moovToTrack(bv.moov(t),s,i),Da(this.isInitAudio)&&this.checkInitAudio()&&(this.player.debugLog(this.TAG_NAME,"videoData audio init success",i),this._sendAccADTSHeader(i)),this.checkInitVideo()){this.player.debugLog(this.TAG_NAME,"video init success");let e=null;s.codecType===fs?s.sps.length&&s.vps.length&&s.pps.length&&(e=cl({sps:s.sps[0],pps:s.pps[0],vps:s.vps[0]})):s.sps.length&&s.pps.length&&(e=Qn({sps:s.sps[0],pps:s.pps[0]})),e&&(this.player.debugLog(this.TAG_NAME,"seqHeader"),this._doDecodeByHls(e,We,0,!0,0))}}const t=bv.findBox(e,["moof"])[0];if(t){const r=bv.moofToSamples(bv.moof(t),s,i),o=s.baseMediaDecodeTime,a=i.baseMediaDecodeTime,n=t.start;Object.keys(r).forEach((t=>{s.id==t?r[t].map((t=>{t.offset+=n;const i={type:We,pts:(t.pts||t.dts)+o,dts:t.dts+o,units:[],payload:null,isIFrame:!1};i.duration=t.duration,i.gopId=t.gopId,t.keyframe&&(i.isIFrame=!0);const r=e.subarray(t.offset,t.offset+t.size);i.payload=r,s.samples.push(i)})):i.id==t&&r[t].map((t=>{t.offset+=n;const s=e.subarray(t.offset,t.offset+t.size),r=t.dts+a,o=new Uint8Array(s.length+2);o.set([175,1],0),o.set(s,2),i.samples.push({type:Ge,pts:r,dts:r,payload:o,duration:t.duration,size:o.byteLength})}))}))}}const r=s.samples.concat(i.samples);r.sort(((e,t)=>e.dts-t.dts)),r.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===We?this._doDecodeVideo({...e,payload:t}):e.type===Ge&&this._doDecodeAudio({...e,payload:t})})),Da(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=this._calcDecodeFps(r))}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=Kr({profile:e.objectType,sampleRate:e.sampleRateIndex,channel:e.channelCount});this._doDecodeByHls(t,Ge,0,!0,0)}_calcDecodeFps(e){const t=e.map((e=>({ts:e.dts||e.pts,type:e.type})));this._tempSampleTsList=this._tempSampleTsList.concat(t);const i=_a(this._tempSampleTsList,We);if(i)this._tempSampleTsList=[],this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() video fps is ${i}, update base fps is ${this._basefps}`),this._basefps=i,this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps});else if(this.player.debugLog(this.TAG_NAME,"_calcDecodeFps() streamVideoFps is null"),this._tempSampleTsList.length>200)return this.player.debugLog(this.TAG_NAME,`_calcDecodeFps() _tempSampleTsList is more than 200, clear and use base fps update ${this._basefps}`),this._tempSampleTsList=[],this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps}),!0;return null!==i}_isUseWorker(){return!this.player.isUseMSE()}_initLoopWorker(){this.player.debugLog(this.TAG_NAME,"_initLoopWorker()");const e=Oa(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(`JbPro:[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((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=s.duration)):s.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 if(i.type===e){postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]);let s=this.allSampleList[0];for(;s;){if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]),s=null;break}i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),s=this.allSampleList[0])}}}};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 s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),oe),s.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=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debugWarn(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}),this.cryptoPayloadAudio(t),this._doDecodeByHls(t,Ge,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?ul(t,e.isIFrame):Xn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this._doDecodeByHls(r,We,e.dts,e.isIFrame,s)}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 _v{constructor(e,t){this.hls=e,this.player=this.hls.player,this.isMP4=t,this._initSegmentId="",this.TAG_NAME="HlsTransmuxer",this._demuxer=t?new vv(this.hls.player):new sv(this.hls.player),this.player.debugLog(this.TAG_NAME,`init and isMP4 is ${t}`)}destroy(){this._demuxer&&(this._demuxer.destroy(),this._demuxer=null)}transmux(e,t,i,s,r,o){this.player.debugLog(this.TAG_NAME,`transmux videoChunk:${e&&e.byteLength}, audioChunk:${t&&t.byteLength}, discontinuity:${i}, contiguous:${s}, startTime:${r}, needInit:${o}`);const a=this._demuxer;try{this.isMP4?a.demux(e,t):a.demuxAndFix(Uh(e,t),i,s,r)}catch(e){throw new Db(xb,Cb,e)}}}class wv{constructor(e){this.hls=e,this.player=e.player,this._decryptor=new iv(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(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t._baseDts}get nbSb(){return 0}async updateDuration(e){this.player.debugLog(this.TAG_NAME,"updateDuration()",e)}getBuferredDuration(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getBuferredDuration()}getBufferedSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleListLength()}getBufferedAudioSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleAudioListLength()}getBufferedVideoSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleVideoListLength()}createSource(e,t,i,s){if(this._sourceCreated)return;const r=e||t;r&&(sv.probe(r)?this._transmuxer||(this._transmuxer=new _v(this.hls,!1)):bv.probe(r)?this._transmuxer||(this._transmuxer=new _v(this.hls,!0)):this.player.debugError(this.TAG_NAME,"createSource error: chunk is not ts"))}async appendBuffer(e,t,i,s,r,o,a){if(null!=i&&i.length||null!=s&&s.length)return this._needInitSegment,this._transmuxer.transmux(i,s,r,o,a,this._needInitSegment||r),!0}async clearAllBuffer(){this.player.debugLog(this.TAG_NAME,"clearAllBuffer")}decryptBuffer(e,t){return this._decryptor.decrypt(e,t)}async reset(){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 Sv{constructor(e){this.emitter=e,this._seiSet=new Set,e.on(Zs,(e=>{e&&this._seiSet.add(e)}))}throw(e){if(null==e||!this._seiSet.size)return;const t=e-.2,i=e+.2,s=[];this._seiSet.forEach((e=>{e.time>=t&&e.time<=i&&s.push(e)})),s.forEach((e=>{this._seiSet.delete(e),this.emitter.emit(er,e)}))}reset(){this._seiSet.clear()}}class Ev{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(e){var t;let{data:i}=e;const s=null==i||null===(t=i.onMetaData)||void 0===t?void 0:t.framerate;s&&s>0&&s<100&&(this.fps=s)}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 Tv{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3;Lh(this,"_core",null),Lh(this,"_samples",[]),this._core=e,this._timescale=t,this._stats=new Ev(t),this._bindEvents()}getStats(){var e,t,i,s,r,o,a;const{currentTime:n=0,decodeFps:l=0}=(null===(e=this._core)||void 0===e?void 0:e.media)||{};return{...this._stats.getStats(),downloadSpeed:(null===(t=this._core)||void 0===t||null===(i=t.speedInfo)||void 0===i?void 0:i.call(t).speed)||0,avgSpeed:(null===(s=this._core)||void 0===s||null===(r=s.speedInfo)||void 0===r?void 0:r.call(s).avgSpeed)||0,currentTime:n,bufferEnd:(null===(o=this._core)||void 0===o||null===(a=o.bufferInfo())||void 0===a?void 0:a.remaining)||0,decodeFps:l}}_bindEvents(){this._core.on($s,(e=>this._stats.updateBitrate(e.samples))),this._core.on(Vs,(e=>{this._stats.setFpsFromScriptData(e)})),this._core.on(Hs,(e=>{"video"===e.type?this._stats.setVideoMeta(e.track):this._stats.setAudioMeta(e.track)})),this._core.on(Js,(e=>{this._stats.setDomain(e.responseUrl)}))}reset(){this._samples=[],this._stats=new Ev(this._timescale)}}class kv extends o{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),Lh(this,"_loadSegment",(async()=>{if(this._segmentProcessing)return void this.player.debugWarn("_loadSegment()","_segmentProcessing is ture and return");if(!this._playlist)return void this.player.debugWarn("_loadSegment()","this._playlist is null and return");const e=this._playlist.currentSegment,t=this._playlist.nextSegment;if(this.player.debugLog(this.TAG_NAME,"_loadSegment()","curSeg",e&&e.url,"nextSeg",t&&t.url),t)return this._loadSegmentDirect();this.player.debugLog(this.TAG_NAME,"nextSeg is null and return")})),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 Qb(this),this._segmentLoader=new Zb(this),this._playlist=new tv(this),this._bufferService=new wv(this),this._seiService=new Sv(this),this._stats=new Tv(this,9e4),this.player.debugLog(this.TAG_NAME,"init")}async destroy(){this.player.debugLog(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.debugLog(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.debugLog(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(){var e;return null===(e=this._bufferService)||void 0===e?void 0:e.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 Db(kb,kb,null,null,"m3u8 url is missing"));const t=await this._loadM3U8(e),{currentStream:i}=this._playlist;if(this._urlSwitching){var s,r;if(0===i.bitrate&&null!==(s=this._switchUrlOpts)&&void 0!==s&&s.bitrate)i.bitrate=null===(r=this._switchUrlOpts)||void 0===r?void 0:r.bitrate;const e=this._getSeamlessSwitchPoint();this.config.startTime=e;const t=this._playlist.findSegmentIndexByTime(e),o=this._playlist.getSegmentByIndex(t+1);if(o){const e=o.start;this.player.debugWarn(this.TAG_NAME,`clear buffer from ${e}`)}}t&&(this.isLive?(this.player.debugLog(this.TAG_NAME,"is live"),this._bufferService.setLiveSeekableRange(0,4294967295),this.config.targetLatency{let[t,i,a]=e;t?(this._playlist.upsertPlaylist(t,i,a),this.isLive&&this._pollM3U8(s,r,o)):this.player.debugWarn(this.TAG_NAME,"_refreshM3U8() mediaPlaylist is empty")})).catch((e=>{throw this._emitError(Db.create(e))}))}_pollM3U8(e,t,i){var s;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(Db.create(e))}),1e3*((null===(s=this._playlist.lastSegment)||void 0===s?void 0:s.duration)||0))}async _loadSegmentDirect(){const e=this._playlist.nextSegment;if(!e)return void this.player.debugLog(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(Db.create(i)):(t?(this._urlSwitching&&(this._urlSwitching=!1,this.emit(ir,{url:this.config.url})),this._playlist.moveSegmentPointer(),this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast",e.isLast),e.isLast?(this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast"),this._end()):(this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect()","and next _loadSegment()"),this._loadSegment())):this.player.debugLog(this.TAG_NAME,"_loadSegmentDirect() not appended"),t)}async _reqAndBufferSegment(e,t){this.player.debugLog(this.TAG_NAME,"video seg",e&&e.url,"audio seg",t&&t.url);const i=e?e.cc:t.cc,s=this._prevSegCc!==i;let r=[];try{r=await this._segmentLoader.load(e,t,s)}catch(e){throw e.fatal=!1,this._segmentLoader.error=e,e}if(!r[0])return;const o=await this._bufferService.decryptBuffer(...r);if(!o)return void this.player.debugLog(this.TAG_NAME,"decryptBuffer return null");const a=e?e.sn:t.sn,n=e?e.start:t.start,l=this._playlist.currentStream;return this._bufferService.createSource(o[0],o[1],null==l?void 0:l.videoCodec,null==l?void 0:l.audioCodec),await this._bufferService.appendBuffer(e,t,o[0],o[1],s,this._prevSegSn===a-1,n),this._prevSegCc=i,this._prevSegSn=a,!0}async _clear(){this.player.debugLog(this.TAG_NAME,"_clear()"),clearTimeout(this._disconnectTimer),this._stopTick(),await Promise.all([this._segmentLoader.cancel(),this._manifestLoader.stopPoll()]),this._segmentProcessing=!1}async _reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.player.debugLog(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.debugLog(this.TAG_NAME,"_end()"),this._clear()}_emitError(e){var t;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var s;!1===(null===(t=e.originError)||void 0===t?void 0:t.fatal)?console.warn(e):(console.table(e),console.error(e),console.error(null===(s=this.media)||void 0===s?void 0:s.error),this._stopTick(),this._urlSwitching&&(this._urlSwitching=!1,this.emit(tr,e)),i&&this._end(),this._seiService.reset(),this.emit(or,e));return e}_getSeamlessSwitchPoint(){const{media:e}=this;let t=e.currentTime;if(!e.paused){var i;const s=this._playlist.findSegmentIndexByTime(e.currentTime),r=this._playlist.getSegmentByIndex(s),o=null===(i=this._stats)||void 0===i?void 0:i.getStats().downloadSpeed;if(o&&r){t+=r.duration*this._playlist.currentStream.bitrate/o+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 Lv extends o{constructor(e){super(),Lh(this,"TAG_NAME","Hls256Decoder"),this.player=e,this.$videoElement=this.player.video.$videoElement,this.hls=null,this.eventsDestroy=[],this.bandwidthEstimateInterval=null,this.hls=new kv(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.debugLog(this.TAG_NAME,"destroy"),!0}_bindEvents(){this.hls.on(or,(e=>{this.player.emitError(_t.hlsError,e)})),this._startBandwidthEstimateInterval()}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{const e=this.hls.speedInfo();this.player.emit(At.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 Cv extends o{constructor(e,t){if(super(),this.player=e,this.player.$container.classList.add("jb-pro-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=!!xa(t.isUseFpsRender),this._rate=1,this._audioTimestamp=0,this._videoTimestamp=0,this.controlType=t.controlType||X.normal,t.controlType&&-1===[X.normal,X.simple].indexOf(t.controlType)&&(this.player.debugWarn("Playback","constructor()","controlType is not in [normal,simple]",t.controlType),this.controlType=X.normal),this._currentLocalTimestamp=0,this._localOneFrameTimestamp=t.localOneFrameTimestamp||40,this._localCalculateTimeInterval=null,this._isUseLocalCalculateTime=!!xa(t.isUseLocalCalculateTime),this._isPlaybackPauseClearCache=!Da(t.isPlaybackPauseClearCache),this._isCacheBeforeDecodeForFpsRender=!!xa(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===X.normal)this.initPlaybackList(t.playList,t.showPrecision,t.startTime);else if(t.controlType===X.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(At.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};try{e.debugLog("Playback","init",JSON.stringify(i))}catch(t){e.debugLog("Playback","init",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("jb-pro-container-playback"),this.off(),this.player.debugLog("Playback","destroy")}_listen(){this.player.on(At.stats,(e=>{const t=e.ts;this._playStartTime||(this._playStartTime=t-1e3);let i=t-this._playStartTime;if(this.setPlayingTimestamp(i),this.player.isPlaybackUseMSE()&&this.player.isPlaying()&&0===e.videoCurrentTimeDiff&&(this.player.debugWarn(this.TAG_NAME,`updateStats and videoCurrentTimeDiff is 0 and\n videoCurrentTime is ${e.videoCurrentTime}\n and next update video currentTime`),this.player.mseDecoder.updateVideoCurrentTimeByBufferStart()),this.player.isStreamEnd()&&this.player.isPlaying()&&this.player.isPlaybackUseMSE()&&0===e.videoCurrentTimeDiff){this.player.mseDecoder.isCurrentTimeInBufferEnd()&&this.player.emit(At.playbackEnd)}}))}pause(){this.clearStatsInterval()}resume(){this.startCheckStatsInterval()}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._startFpsTimestamp||(this._startFpsTimestamp=Ao()),Jo(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=Ao(),i=t-this._startFpsTimestamp;if(i<1e3)return;let s=null;this._startfpsTime&&(s=this._playbackTs-this._startfpsTime),this.player.emit(At.playbackStats,{fps:this._renderFps,rate:this.rate,start:this._startfpsTime,end:this._playbackTs,timestamp:i,dataTimestamp:s,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 s=0;if(this.playbackList.forEach(((e,t)=>{10===ra(e.start)?(e.startTimestamp=1e3*e.start,e.startTime=Po(e.startTimestamp)):(e.startTimestamp=e.start,e.startTime=Po(e.startTimestamp)),10===ra(e.end)?(e.endTimestamp=1e3*e.end,e.endTime=Po(e.endTimestamp)):(e.endTimestamp=e.end,e.endTime=Po(e.endTimestamp)),e.duration=e.end-e.start,s+=e.duration})),this._totalDuration=s,this.player.debugLog("Playback",this.playbackList),this.playbackList.length>0){const e=this.playbackList[0].startTimestamp;this._playbackListStartTimestamp=e;let t=e;i&&(10===ra(i)&&(i*=1e3),this._isTimeInPlaybackList(i)&&(t=i)),this.setStartTime(t)}const r=t||Bi;this.setShowPrecision(r)}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(At.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===Bi}get is30Min(){return this.showPrecision===Mi}get is10Min(){return this.showPrecision===Fi}get is5Min(){return this.showPrecision===Ui}get is1Min(){return this.showPrecision===Ui}get isPlaybackPauseClearCache(){return this._isPlaybackPauseClearCache}get isCacheBeforeDecodeForFpsRender(){return this._isCacheBeforeDecodeForFpsRender}setShowPrecision(e){Ni.includes(e)||(this.player.debugWarn("Playback","setShowPrecision()","type is not in PLAYBACK_CONTROL_TIME_PRECISION_ARRAY",e),e=Bi),this._showPrecision&&this._showPrecision===e||(this._showPrecision=e,this.player.emit(At.playbackPrecision,this._showPrecision,this.playbackList),this.player.emit(At.playbackShowPrecisionChange,this._showPrecision))}setPlayingTimestamp(e){let t;if(this.controlType===X.normal){t=this.startTime+e,this._playingTimestamp=t,this.player.emit(At.playbackTime,t);const i=new Date(t);this.player.emit(At.playbackTimestamp,{ts:t,hour:i.getHours(),min:i.getMinutes(),second:i.getSeconds()})}else this.controlType===X.simple&&(t=this.startTime+Math.round(e/1e3),t>this.totalDuration&&(this.player.debugLog("Playback","setPlayingTimestamp()",`timestamp ${t} > this.totalDuration ${this.totalDuration}`),t=this.totalDuration),this._playingTimestamp=t,this.player.emit(At.playbackTime,t),this.player.emit(At.playbackTimestamp,{ts:t}))}get playingTimestamp(){return this._playingTimestamp}narrowPrecision(){const e=Ni.indexOf(this.showPrecision)-1;if(e>=0){const t=Ni[e];this.setShowPrecision(t)}}expandPrecision(){const e=Ni.indexOf(this.showPrecision)+1;if(e<=Ni.length-1){const t=Ni[e];this.setShowPrecision(t)}}seek(e){if(this.player.debugLog("Playback","seek()",e),this.controlType===X.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(At.playbackSeek,i)}}else if(this.controlType===X.simple){let t=e.time;this.player.emit(At.playbackSeek,{ts:t})}}currentTimeScroll(){this.player.emit(At.playbackTimeScroll)}_findMoreInfoByTimestamp(e){let t=null;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=i)})),t}_isTimeInPlaybackList(e){let t=!1;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=!0)})),t}getControlType(){return this.controlType}isControlTypeNormal(){return this.controlType===X.normal}isControlTypeSimple(){return this.controlType===X.simple}isPlaybackPauseNotClearCacheAndCacheBeforeDecode(){return Da(this.isPlaybackPauseClearCache)&&this.isCacheBeforeDecodeForFpsRender}isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender(){return this.isPlaybackPauseNotClearCacheAndCacheBeforeDecode()&&this.isUseFpsRender}}class xv extends o{constructor(e){super(),this.player=e,this.TAG_NAME="zoom",this.bindEvents=[],this.isDragging=!1,this.isGesturing=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.prevGestureScale=null,this.prevGestureTouches=[],this._isZooming=!1,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.player,this.player.on(At.zooming,this._handleZooming.bind(this)),e.debugLog("zoom","init")}destroy(){this._unbindEvents(),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.debugLog("zoom","destroy")}_handleZooming(e){if(e){this.player.$container.classList.add("jb-pro-zoom-control"),this._bindEvents();const e=this.player.video.$videoElement.style.transform;let t=this.player.video.$videoElement.offsetLeft,i=this.player.video.$videoElement.offsetTop;t=parseFloat(t),i=parseFloat(i),t&&(this.videoPosition.left=t),i&&(this.videoPosition.top=i),this.prevVideoElementStyleTransform=e;let s=e.match(/scale\([0-9., ]*\)/g);if(s&&s[0]){let e=s[0].replace("scale(","").replace(")","");this.prevVideoElementStyleScale=e.split(",")}this._isZooming=!0}else{this.player.$container.classList.remove("jb-pro-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,ko()&&this.player._opt.useWebFullScreen&&this.player.resize(),this._isZooming=!1}}_bindEvents(){const{events:{proxy:e}}=this.player,t=Wa(),i=e(this.player.$container,t.move,this.handleMouseMove.bind(this)),s=e(this.player.$container,t.down,this.handleMouseDown.bind(this)),r=e(window,t.up,this.handleMouseUp.bind(this));if(this.bindEvents.push(i,s,r),ko()&&this.player._opt.zoomSupportGestureInMobile)if(Co()){this.handleGestureChangeThrottle=Uo(this.handleGestureChangeForAndroid.bind(this),100);const t=e(this.player.$container,"touchstart",this.handleGestureStartForAndroid.bind(this)),i=e(this.player.$container,"touchmove",this.handleGestureChangeThrottle.bind(this)),s=e(this.player.$container,"touchend",this.handleGestureEndForAndroid.bind(this));this.bindEvents.push(t,i,s)}else{this.handleGestureChangeThrottle=Uo(this.handleGestureChange.bind(this),100);const t=e(this.player.$container,"gesturestart",this.handleGestureStart.bind(this)),i=e(this.player.$container,"gesturechange",this.handleGestureChangeThrottle.bind(this)),s=e(this.player.$container,"gestureend",this.handleGestureEnd.bind(this));this.bindEvents.push(t,i,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}=pa(e),s=this.tempPosition.x-t,r=this.tempPosition.y-i;this.videoPosition.left=this.videoPosition.left-s,this.videoPosition.top=this.videoPosition.top-r,this.tempPosition.x=t,this.tempPosition.y=i,this.updateVideoPosition()}}handleMouseDown(e){e.stopPropagation();const t=ha(e);if(this.player.zooming&&(t.matches("video")||t.matches("canvas"))){e.preventDefault();const{posX:t,posY:i}=pa(e);this.player.$container.style.cursor="grabbing",this.tempPosition.x=t,this.tempPosition.y=i,this.isDragging=!0,this.player.debugLog("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.debugLog("zoom","handleMouseUp is dragging false"))}handleGestureStart(e){e.stopPropagation(),this.player.zooming&&(null===this.prevGestureScale&&(this.prevGestureScale=e.scale),this.isGesturing=!0)}handleGestureStartForAndroid(e){e.stopPropagation(),this.player.zooming&&e.touches.length>=2&&(this.isGesturing=!0,this.prevGestureTouches=e.touches)}handleGestureChangeForAndroid(e){if(e.stopPropagation(),e.preventDefault(),this.player.zooming&&this.isGesturing&&e.touches.length>=2){const s=e.touches,r=t(s[0],s[1])/t(this.prevGestureTouches[0],this.prevGestureTouches[1]);i(s[0],s[1]),i(this.prevGestureTouches[0],this.prevGestureTouches[1]),null===this.prevGestureScale&&(this.prevGestureScale=r);const o=r-this.prevGestureScale,a=this.player._opt.zoomSupportGestureInMobileSpeed;o>0?this.expandPrecision(a):o<0&&this.narrowPrecision(a)}function t(e,t){var i=t.pageX-e.pageX,s=t.pageY-e.pageY;return Math.sqrt(i*i+s*s)}function i(e,t){var i=e.pageX-t.pageX,s=e.pageY-t.pageY;return 180*Math.atan2(s,i)/Math.PI}}handleGestureEndForAndroid(e){e.stopPropagation(),this.player.zooming&&(this.prevGestureScale=null,this.isGesturing=!1,this.prevGestureTouches=[])}handleGestureChange(e){if(e.stopPropagation(),this.player.zooming&&this.isGesturing&&null!==this.prevGestureScale){const t=e.scale,i=t-this.prevGestureScale,s=this.player._opt.zoomSupportGestureInMobileSpeed;i>0?this.expandPrecision(s):i<0&&this.narrowPrecision(s),this.prevGestureScale=t}}handleGestureEnd(e){e.stopPropagation(),this.player.zooming&&(this.prevGestureScale=null,this.isGesturing=!1)}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(e){this.currentZoom<=1||(this.currentZoom-=1,this.updateVideoElementScale(e))}expandPrecision(e){this.currentZoom>=this.player._opt.zoomMaxScale||(this.currentZoom+=1,this.updateVideoElementScale(e))}updateCurrentZoom(e,t){e<1||e>this.player._opt.zoomMaxScale||(this.currentZoom=e,this.updateVideoElementScale(t))}updatePrevVideoElementStyleScale(e){this.prevVideoElementStyleScale=e}updateVideoElementScale(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.5;const t=this.player.video.$videoElement;let i=t.style.transform,s=1,r=1;if(this.prevVideoElementStyleScale){const e=this.prevVideoElementStyleScale[0];void 0!==e&&(s=e,r=e);const t=this.prevVideoElementStyleScale[1];void 0!==t&&(r=t)}r=Mo(r),s=Mo(s);const o=e*s*(this.currentZoom-1)+s,a=e*r*(this.currentZoom-1)+r;let n;n=-1===i.indexOf("scale(")?i+` scale(${o},${a})`:i.replace(/scale\([0-9., ]*\)/,`scale(${o},${a})`),this.player.debugLog("zoom",`updateVideoElementScale end is X: ${s} -> ${o}, Y: ${r} -> ${a} style is ${n}`),t.style.transform=n}isZooming(){return this._isZooming}}class Dv extends o{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.debugLog("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.debugLog("AiLoader","destroy")}initFaceDetector(){if(this.player._opt.useFaceDetector&&window.JessibucaProFaceDetector){const e=new JessibucaProFaceDetector({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.debugLog("AiLoader","init face detector success"),this.faceDetector=e,this.faceDetector.on("jessibuca-pro-face-detector-info",(e=>{if(this.player.emit(At.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.JessibucaProObjectDetector){const e=new JessibucaProObjectDetector({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.debugLog("AiLoader","init object detector success"),this.objectDetector=e,this.objectDetector.on("jessibuca-pro-object-detector-info",(e=>{if(this.player.emit(At.aiObjectDetectorInfo,e),this.player._opt.aiObjectDetectShowRect){const t=[],i=this.player._opt.aiObjectDetectRectConfig||{};(e.list||[]).forEach((e=>{const s={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},r={type:"text",color:i.color||"#000",fontSize:i.fontSize||14,text:e.zh,x:e.rect.x,y:e.rect.y-25};t.push(s,r)})),this.player.video&&this.player.video.addAiContentToCanvas(t)}}))}))}}initImageDetector(){if(this.player._opt.useImageDetector&&window.JessibucaProImageDetector){const e=new JessibucaProImageDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debugLog("AiLoader","init image detector success"),this.imageDetector=e}))}}initOcclusionDetector(){if(this.player._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector){const e=new JessibucaProOcclusionDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debugLog("AiLoader","init occlusion detector success"),this.occlusionDetector=e}))}}updateFaceDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.faceDetector&&this.faceDetector.updateConfig(e)}updateObjectDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.objectDetector&&this.objectDetector.updateConfig(e)}updateImageDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.imageDetector&&this.imageDetector.updateConfig(e)}updateOcclusionDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.occlusionDetector&&this.occlusionDetector.updateConfig(e)}}class Rv extends o{constructor(e){super(),this.player=e,this.LOG_NAME="Contextmenu",this.menuList=[],this.$contextmenus=e.control.$contextmenus,ko()?this.player.debugWarn(this.LOG_NAME,"not support mobile"):this.init(),e.debugLog(this.LOG_NAME,"init")}destroy(){this.menuList=[],this.player.debugLog(this.LOG_NAME,"destroy")}get isShow(){return Sc(this.player.$container,"jb-pro-contextmenus-show")}show(){_c(this.player.$container,"jb-pro-contextmenus-show")}hide(){wc(this.player.$container,"jb-pro-contextmenus-show")}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:s,width:r,left:o,top:a}=this.player.$container.getBoundingClientRect(),{height:n,width:l}=this.$contextmenus.getBoundingClientRect();let d=t-o,h=i-a;t+l>o+r&&(d=r-l),i+n>a+s&&(h=s-n),vo(this.$contextmenus,{left:`${d}px`,top:`${h}px`})})),e(this.player.$container,"click",(e=>{kc(e,this.$contextmenus)||this.hide()})),this.player.on(At.blur,(()=>{this.hide()}))}_validateMenuItem(e){let t=!0;return e.content||(this.player.debugWarn(this.LOG_NAME,"content is required"),t=!1),t}addMenuItem(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Ta(Ms);if(e=Object.assign({},t,e),!this._validateMenuItem(e))return;const{events:{proxy:i},debug:s}=this.player,r=Fo(),o=`\n
    \n ${e.content}\n
    \n `,a=Array.from(this.$contextmenus.children)[e.index];a?a.insertAdjacentHTML("beforebegin",o):Ec(this.$contextmenus,o);const n=this.$contextmenus.querySelector(`.jb-pro-contextmenu-${r}`);e.click&&i(n,"click",(t=>{t.preventDefault(),e.click.call(this.player,this,t),this.hide()})),this.menuList.push({uuid:r,$menuItem:n})}}class Iv extends o{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"),Io()&&(this.$videoElement.style.position="absolute"),this._initVideoEvents()),this.$videoElement.muted=!0,this._initRtcPeerConnection()}destroy(){if(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))if(this.player._opt.webrtcUseCanvasRender){this.$videoElement.pause&&(this.$videoElement.pause(),this.$videoElement.muted=!0),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}}else this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject"));this.$videoElement=null,this.rtcPeerConnection&&(this.rtcPeerConnection.onicecandidate=fo,this.rtcPeerConnection.ontrack=fo,this.rtcPeerConnection.onconnectionstatechange=fo,this.rtcPeerConnection.ondatachannel=fo,this.rtcPeerConnection.close(),this.rtcPeerConnection=null)}_initVideoEvents(){this.player.debugLog(this.TAG_NAME,"_initVideoEvents()");const{proxy:e}=this.player.events,t=e(this.$videoElement,ls,(()=>{this.player.debugLog(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,ds,(()=>{this.player.debugLog(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,us,(()=>{this.player.debugLog(this.TAG_NAME,"video loadedmetadata")})),r=e(this.$videoElement,hs,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debugWarn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debugLog(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debugWarn(this.TAG_NAME,"video is paused and replay error ",e)})))})),o=e(this.$videoElement,cs,(()=>{this.player.debugLog(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,r,o,s)}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debugLog(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debugLog(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debugLog(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debugLog(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(At.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(At.webrtcFailed);break;case"disconnected":t.emit(At.webrtcDisconnect);break;case"closed":t.emit(At.webrtcClosed)}},e.onicecandidate=e=>{this.player.debugLog(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debugLog(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=t=>{if(this.player.debugLog(this.TAG_NAME,"ontrack",t),"video"===t.track.kind){this.player.debugLog(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.debugLog(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.debugLog(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(_t.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debugLog(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(At.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(At.webrtcFailed)}},this.rtcPeerConnection=e}_startBandwidthEstimateInterval(){this.player.debugLog(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 wr:("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 Tr:this.currentWebrtcStats.remoteCandidate=e||{};break;case Er:this.currentWebrtcStats.localCandidate=e||{};break;case Sr:this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcVideoStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcVideoStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.vbps=o,this.prevWebrtcVideoStats=e;break;case kr: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===Sr){this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcAudioStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcAudioStats.bytesReceived||0),o=Math.floor(r/s);i+=o,t.abps=o,this.prevWebrtcAudioStats=e}})),this.player.updateStats(t),this.player.emit(At.kBps,(i/1024).toFixed(2))})):(this.player.updateStats(t),this.player.emit(At.kBps,(i/1024).toFixed(2)))}))}),1e3)}_stopBandwidthEstimateInterval(){this.player.debugLog(this.TAG_NAME,"_stopBandwidthEstimateInterval"),this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startCanvasRender(){Na()?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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debugLog(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.updateStats({dts:i}),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}isVideoPlaying(){return this.$videoElement&&Da(this.$videoElement.paused)&&Da(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class Pv extends Iv{constructor(e){super(e),this.TAG_NAME="WebrtcForSRSDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debugError(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r})).then((()=>{t()})).catch((e=>{this.player&&this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"response sdp is null"),i("response sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class Bv extends Iv{constructor(e){super(e),this.TAG_NAME="WebrtcForOthersDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`),e.text().then((e=>{this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp response");try{let t=JSON.parse(e);this.player.debugLog(this.TAG_NAME,"this is json sdp response"),0!=t.code&&(this.player.debugError(this.TAG_NAME,`response json code ${t.code}`),i(new Error(`response sdp json code: ${t.code}`))),e=t.sdp}catch(e){this.player.debugLog(this.TAG_NAME,"this is raw sdp response")}e?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{t()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"loadSource sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class Mv extends Iv{constructor(e){super(e),this.rtcPeerConnectionDataChannel=null,this.player.isWebrtcH265()&&(this.streamRate=So((t=>{e.emit(At.kBps,(t/1024).toFixed(2))}))),this.TAG_NAME="WebrtcForM7SDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.stopStreamRateInterval(),this.rtcPeerConnectionDataChannel&&(this.rtcPeerConnectionDataChannel.onopen=fo,this.rtcPeerConnectionDataChannel.onclose=fo,this.rtcPeerConnectionDataChannel.onmessage=fo,this.rtcPeerConnectionDataChannel.close(),this.rtcPeerConnectionDataChannel=null),this.player.debugLog(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.debugLog(this.TAG_NAME,"onsignalingstatechange[本地端的信号状态]",e)},e.onicegatheringstatechange=t=>{this.player.debugLog(this.TAG_NAME,"onicegatheringstatechange[ICE收集状态]",t,e.iceGatheringState)},e.onnegotiationneeded=e=>{this.player.debugLog(this.TAG_NAME,"onnegotiationneeded[通信环境发生变化]",e)},e.oniceconnectionstatechange=i=>{this.player.debugLog(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(At.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(At.webrtcFailed);break;case"disconnected":t.emit(At.webrtcDisconnect);break;case"closed":t.emit(At.webrtcClosed)}},e.onicecandidate=e=>{this.player.debugLog(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debugLog(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=i=>{this.player.debugLog(this.TAG_NAME,"ontrack",i);const s=t.getWebrtcVideo();if(t.isWebrtcH264())if("video"===i.track.kind){this.player.debugLog(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];s.autoplay=!0,s.srcObject=t,this.videoStream=t}else"audio"===i.track.kind&&(this.player.debugLog(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.debugLog(this.TAG_NAME,"onicecandidateerror[candidate错误]",e),this.player.emitError(_t.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debugLog(this.TAG_NAME,"onconnectionstatechange[所有ICE 状态总览]",i),this.player.emit(At.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(At.webrtcFailed)}},e.ondatachannel=e=>{const t=e.channel;this.player.debugLog(this.TAG_NAME,"ondatachannel"),t.onopen=()=>{this.player.debugLog(this.TAG_NAME,"ondatachannel and onopen")},t.onmessage=e=>{const t=e.data;if(this.player.isWebrtcH264())return this.player.debugWarn(this.TAG_NAME,"ondatachannel is H265 but decode is h264 so emit webrtcStreamH265 "),void this.player.emit(At.webrtcStreamH265);this.player.isDestroyedOrClosed()?this.player.debugWarn(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.debugWarn(this.TAG_NAME,"ondatachannel and onclose")},this.rtcPeerConnectionDataChannel=t};e.createDataChannel("signal").onmessage=e=>{this.player.debugLog(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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{const r=this.rtcPeerConnection;r.createOffer().then((o=>{r.setLocalDescription(o),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t,i){let s={"Content-Type":"application/sdp"};return i.username&&i.password&&(s.Authorization="Basic "+btoa(i.username+":"+i.password)),fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:s,body:t})}(e,o.sdp,t).then((e=>{e.text().then((e=>{this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp response"),e?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{this.player.isWebrtcH265()&&this.startStreamRateInterval(),i()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),s(e)})):(this.player.debugError(this.TAG_NAME,"loadSource sdp is null"),s("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource response.text() error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),s(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),s(e)}))}))}}class Fv extends Iv{constructor(e){super(e),this.TAG_NAME="WebrtcForZLMDecoder",this.player.debugLog(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debugLog(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debugLog(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return Jl({url:e,type:"POST",data:t,contentType:"text/plain;charset=utf-8",processData:!1,dataType:"json"})}(e,r.sdp).then((e=>{this.player.debugLog(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return this.player.debugError(this.TAG_NAME,`response json code ${r.code}`),i(r.msg);r&&r.sdp?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r.sdp})).then((()=>{t()})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource setRemoteDescription error",e.toString(),e),i(e)})):(this.player.debugError(this.TAG_NAME,"response sdp is null"),i("sdp is null"))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e.toString(),e),i(e)}))})).catch((e=>{this.player.debugError(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e.toString(),e),i(e)}))}))}}class Uv extends o{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.debugLog(this.TAG_NAME,"init")}destroy(){this.aliyunRtc&&(this.aliyunRtcRemoteStream&&(this.aliyunRtcRemoteStream=null),this.aliyunRtc.unsubscribe(),this.aliyunRtc=null),this.$videoElement=null,this.off(),this.player.debugLog(this.TAG_NAME,"destroy")}listenEvents(){this.aliyunRtc.on("onError",(e=>{this.player.debugLog(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),10400!==e.errorCode&&(this.player.debugError(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),this.player.emitError(_t.aliyunRtcError,e))})),this.aliyunRtc.on("reconnect",(e=>{this.player.debugLog(this.TAG_NAME,"reconnect",e)}));const e="canplay",t="waiting",i="playing",s="media";this.aliyunRtc.on("onPlayEvent",(r=>{if(r.event===e)this.player.debugLog(this.TAG_NAME,"onPlayEvent and canplay");else if(r.event===t)this.player.debugLog(this.TAG_NAME,"onPlayEvent and playing - > waiting");else if(r.event===i)this.player.debugLog(this.TAG_NAME,"onPlayEvent and waiting -> playing");else if(r.event===s){const e=r.data;let t={},i=0;if(e.audio){const s=Math.floor(e.audio.bytesReceivedPerSecond);i+=s,t.abps=s}if(e.video){const s=Math.floor(e.video.bytesReceivedPerSecond);i+=s,t.vbps=s}this.player.updateStats(t),this.player.emit(At.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.debugError(this.TAG_NAME,"loadSource and subscribe is not success: ",e.message),i(e.message)}))})).catch((e=>{this.player.debugError(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}isVideoPlaying(){return this.$videoElement&&Da(this.$videoElement.paused)&&Da(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}getVideoBufferTimeRange(){const e=this.$videoElement;let t=null;if(e){const i=e.buffered,s=i.length?i.start(0):0,r=i.length?i.end(i.length-1):0;t={start:s,end:r,diff:r-s}}return t}}class Ov{constructor(e){this.player=e,this.TAG_NAME="PressureObserverCpu",this.observer=null,this.latestCpuInfo=null,this.currentLevel=-1,this.observeCpuSuccess=!1,this._init(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.observer&&(this.observeCpuSuccess&&this.observer.disconnect(),this.observer=null),this.latestCpuInfo=null,this.currentLevel=-1,this.player.debugLog(this.TAG_NAME,"destroy")}getCurrentCpuState(){return this.currentLevel}_init(){Da(ja())?this.player.debugLog(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(At.pressureObserverCpu,this.currentLevel)}})),this.observer&&this.observer.observe("cpu",{sampleInterval:1e3}).then((()=>{this.observeCpuSuccess=!0,this.player.debugLog(this.TAG_NAME,"observe cpu success")})).catch((()=>{this.observeCpuSuccess=!1,this.player.debugLog(this.TAG_NAME,"observe cpu fail")})))}}class Nv extends sn{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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(At.start,(()=>{const e=Da(To)?decodeURIComponent("JessibucaPro%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.debugLog(this.TAG_NAME,"int")}destroy(){super.destroy(),this.shadowRootDynamicDom=null,this.stopAnimation(),this.rafID&&(cancelAnimationFrame(this.rafID),this.rafID=null)}startAnimation(){if(!this.rafID){let e=1,t=1,i=Math.random(),s={width:0,height:0};const r=()=>{try{if(Da(this.isPauseAnimation)&&this.shadowRootDynamicDom&&this.shadowRootInnerDom){const o=this.shadowRootInnerDom,a=this.shadowRootDynamicDom,n=o.getBoundingClientRect(),l=a.getBoundingClientRect();if(l.width&&l.height&&(s.width=l.width,s.height=l.height),!this.shadowRootInnerDom.contains(this.shadowRootDynamicDom))return this.isGhost?Da(this.waterMarkWillAdd)&&(this.waterMarkWillAdd=!0,setTimeout((()=>{this._addDom(n,s),this.waterMarkWillAdd=!1}),1e3*this.ghostConfig.off)):this._addDom(n,s),void(0!==this.speed&&requestAnimationFrame(r));const d=Math.min(1,0===this.speed?0:this.speed?this.speed:.2);let h=l.left-n.left,c=l.top-n.top;h+=d*t*i,c+=d*e*(1-i),h+s.width>n.width?(t=-1,i=Math.random()):h<0&&(t=1,i=Math.random()),c+s.height>n.height?(e=-1,i=Math.random()):c<0&&(e=1,i=Math.random()),h=Math.min(n.width-s.width,h),c=Math.min(n.height-s.height,c);const u=h/n.width*100,p=c/n.height*100;this.shadowRootDynamicDom.style.left=`${u}%`,this.shadowRootDynamicDom.style.top=`${p}%`,Da(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(r)};this.rafID=requestAnimationFrame(r)}}_addDom(e,t){if(this.shadowRootInnerDom&&this.shadowRootDynamicDom){this.shadowRootInnerDom.appendChild(this.shadowRootDynamicDom);let i=e.width*Math.random(),s=e.height*Math.random();i=Math.min(e.width-2*t.width,i),s=Math.min(e.height-2*t.height,s),this.shadowRootDynamicDom.style.left=`${i}px`,this.shadowRootDynamicDom.style.top=`${s}px`}}resumeAnimation(){this.isPauseAnimation=!1}pauseAnimation(){this.isPauseAnimation=!0}stopAnimation(){this.isStopAnimation=!0}}class jv extends o{constructor(e){super(),this.player=e,this.TAG_NAME="DrawRectangle",this.drawingRectangle=!1,this.isDragging=!1,this.bindEvents=[],this.$rectBox=null,this._resetPoint(),this.player.on(At.drawingRect,this._handleDrawingRect.bind(this)),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this._unbindEvents(),this.drawingRectangle=!1,this.isDragging=!1,this._removeRectBox(),this.off(),this.player.debugLog(this.TAG_NAME,"destroy")}_resetPoint(){this.startPagePoint={x:0,y:0},this.startPoint={x:0,y:0},this.endPoint={x:0,y:0}}_handleDrawingRect(e){this.drawingRectangle=e,e?this._bindEvents():(this._unbindEvents(),this._removeRectBox())}_bindEvents(){const{events:{proxy:e}}=this.player,t=e(this.player.$container,"mousemove",this.handleMouseMove.bind(this)),i=e(this.player.$container,"mousedown",this.handleMouseDown.bind(this)),s=e(window,"mouseup",this.handleMouseUp.bind(this));this.bindEvents.push(t,i,s)}_unbindEvents(){this.bindEvents.forEach((e=>{e&&e()})),this.bindEvents=[]}_removeRectBox(){if(this.$rectBox){if(!Lc(this.$rectBox)){const e=this.player.$container.querySelector(".jb-pro-drawing-rect-box");e&&this.player.$container&&this.player.$container.removeChild(e)}this.$rectBox=null}}handleMouseDown(e){if(e.stopPropagation(),!this.drawingRectangle)return;this._removeRectBox();const t=e.offsetX,i=e.offsetY;this.startPoint.x=t,this.startPoint.y=i,this.startPagePoint.x=e.pageX-this.player.$container.offsetLeft,this.startPagePoint.y=e.pageY-this.player.$container.offsetTop,this.$rectBox=document.createElement("div"),this.$rectBox.classList.add("jb-pro-drawing-rect-box"),this.$rectBox.style.border=`${this.player._opt.drawingRectLineWidth}px solid ${this.player._opt.drawingRectColor}`,this.$rectBox.style.position="absolute",this.$rectBox.style.left=`${this.startPoint.x}px`,this.$rectBox.style.top=`${this.startPoint.y}px`,this.player.$container.appendChild(this.$rectBox),this.isDragging=!0}handleMouseMove(e){if(e.stopPropagation(),!this.isDragging)return;if(!this.drawingRectangle)return;if(!this.$rectBox)return;const t=this.player.$container,i=this.player.getControlHeight(),s=e.pageX-t.offsetLeft,r=e.pageY-t.offsetTop;if(sn&&(o=n,this.endPoint.x=this.startPoint.x+o),a>l&&(a=l,this.endPoint.y=this.startPoint.y+a),this.$rectBox.style.width=`${o}px`,this.$rectBox.style.height=`${a}px`}handleMouseUp(e){if(e.stopPropagation(),this.drawingRectangle&&this.isDragging){e.preventDefault(),this.isDragging=!1,this.player._opt.drawingRectEndRemoveDom&&this._removeRectBox();const t={startPoint:this.startPoint,endPoint:this.endPoint,width:Math.abs(this.endPoint.x-this.startPoint.x),height:Math.abs(this.endPoint.y-this.startPoint.y)};this.player._opt.isResize,this.player.emit(At.drawingRectInfo,t),this._resetPoint()}}}class Gv extends o{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this._opt={},this.TAG_NAME="Player",this.$container=e;const i=La();if(this._opt=Object.assign({},i,t),this.debug=new Gr(this),this.debugLog(this.TAG_NAME,"init and version is",Eo),this._opt.forceNoOffscreen=!0,this._canPlayAppleMpegurl=!1,(Io()||Ro())&&(this._canPlayAppleMpegurl=fa(),this.debugLog(this.TAG_NAME,"isIOS or isSafari and canPlayAppleMpegurl",this._canPlayAppleMpegurl)),xa($r.isEnabled)&&xa(this._opt.useWebFullScreen)&&(this.debugLog(this.TAG_NAME,"screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),Da($r.isEnabled)&&Da(this._opt.useWebFullScreen)&&(this.debugLog(this.TAG_NAME,"screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0),Ma()&&(this.debugLog(this.TAG_NAME,"isIphone and set _opt.videoRenderSupportScale false"),this._opt.videoRenderSupportScale=!1,la()&&xa(this._opt.isHls)&&Da(this._opt.supportHls265)&&(this.debugLog(this.TAG_NAME,"isIphone and is in wechat and is hls so set supportHls265 true"),this._opt.supportHls265=!0)),Da(this._opt.playFailedAndReplay)&&(this.debugLog(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.streamErrorReplay=!1,this._opt.streamEndReplay=!1,this._opt.mseWaitVideoCanplayAutoWasm=!1),this._opt.hiddenControl&&(this.debugLog(this.TAG_NAME,"_opt.hiddenControl is true and set others show btn to false"),Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(this._opt.operateBtns[e]=!1)})),this._opt.showBandwidth=!1,this._opt.extendOperateBtns=[],this._opt.controlHtml="",this.isPlayback()&&(this._opt.playbackConfig.showControl=!1)),this._opt.watermarkConfig={image:{src:"data:image/png;base64,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",width:75,height:24},opacity:.1,right:10,top:10},this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.isMpeg4&&(this.debugLog(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()&&(xa(this._opt.useMSE)&&xa(this._opt.mseDecoderUseWorker)&&this.debugLog(this.TAG_NAME,"isPlayback and mseDecoderUseWorker is true, so set mseDecoderUseWorker false"),this._opt.mseDecoderUseWorker=!1,xa(this._opt.useWCS)&&xa(this._opt.wcsDecodeAudio)&&this.debugLog(this.TAG_NAME,"isPlayback and wcsDecodeAudio is true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1),this._opt.poster&&(this._opt.background=this._opt.poster),Da(this._opt.muted)&&(this._opt.isNotMute=!0),this._opt.mseDecoderUseWorker&&(this._opt.mseDecoderUseWorker=!!(jr.Worker&&jr.MediaSource&&"canConstructInDedicatedWorker"in jr.MediaSource&&!0===jr.MediaSource.canConstructInDedicatedWorker),Da(this._opt.mseDecoderUseWorker)&&this.debugLog(this.TAG_NAME,"mseDecoderUseWorker is true but not support so set _opt.mseDecoderUseWorker = false")),(this.isOldHls()||this.isWebrtcH264()||this.isAliyunRtc())&&(this.debugLog(this.TAG_NAME,"isOldHls or isWebrtcH264 or isAliyunRtc is true, so set some params false and set _opt.recordType = 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=E),this._opt.isNakedFlow&&(this.debugLog(this.TAG_NAME,"isNakedFlow is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),xo()&&(this.debugLog(this.TAG_NAME,"isFirefox is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),!this.isOldHls()&&!this.isWebrtcH264()){if(this._opt.useWCS){const e=function(){let e=!1;return"VideoDecoder"in window&&(e=!0),e}(),t=Go();this._opt.useWCS=e,this._opt.useWCS&&this._opt.isH265&&(this._opt.useWCS=t),this._opt.useWCS||this.debugWarn(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.wcsDecodeAudio&&(this._opt.wcsDecodeAudio=function(){let e=!1;return"AudioDecoder"in window&&(e=!0),e}(),this._opt.wcsDecodeAudio||this.debugWarn(this.TAG_NAME,"wcsDecodeAudio is true, but not support so set wcsDecodeAudio false")),this._opt.useOffscreen?this._opt.wcsUseVideoRender=!1:this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=Wo()&&zo(),this._opt.wcsUseVideoRender||this.debugWarn(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 jr&&(e=!0),e}()||function(){let e=!1;return!("MediaSource"in jr)&&"ManagedMediaSource"in jr&&(e=!0),e}(),t=jo()||function(){let e=!1;return!("MediaSource"in jr)&&"ManagedMediaSource"in jr&&jr.ManagedMediaSource&&(jr.ManagedMediaSource.isTypeSupported(Si)||jr.ManagedMediaSource.isTypeSupported(Ei)||jr.ManagedMediaSource.isTypeSupported(Ti)||jr.ManagedMediaSource.isTypeSupported(ki)||jr.ManagedMediaSource.isTypeSupported(Li))&&(e=!0),e}();this._opt.useMSE=e,this._opt.useMSE&&this._opt.isH265&&(this._opt.useMSE=t),this._opt.useMSE||this.debugWarn(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(Da(this._opt.useMSE)&&(this._opt.mseDecodeAudio=!1),Da(this._opt.useWCS)&&(this._opt.wcsDecodeAudio=!1),this._opt.useMSE?(this._opt.useWCS&&this.debugWarn(this.TAG_NAME,"useMSE is true and useWCS is true then useWCS set true->false"),this._opt.forceNoOffscreen||this.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(this.TAG_NAME,"is stream use webTransport is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.wcsDecodeAudio&&this._opt.demuxUseWorker&&(this.debugWarn(this.TAG_NAME,"is wcsDecodeAudio true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),Da(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.debugWarn(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=Ma();this._opt.useSIMD=e&&Da(t),this._opt.useSIMD||this.debugWarn(this.TAG_NAME,`useSIMD is true, but not support(isSupportSimd is ${e} ,isIphone is ${t}) so set useSIMD false`)}var s;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.decoderOld=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-old.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.decoderOld=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-old.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.decoderOld=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-old.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"),this._opt.decoderOld=this._opt.decoder.replace("decoder-pro.js","decoder-pro-old.js")),Da(this._opt.hasAudio)&&(this._opt.operateBtns.audio=!1),Da(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.debugWarn(this.TAG_NAME,"_opt.qualityConfig is empty, so set operateBtns.quality false")),xa(this._opt.useWebGPU)&&(this._opt.useWebGPU=function(){let e=!1;return"gpu"in navigator&&(e=!0),e}(),Da(this._opt.useWebGPU)&&this.debugWarn(this.TAG_NAME,"useWebGPU is true, but not support so set useWebGPU false")),this._opt.useMSE&&this._opt.mseWaitVideoCanplayTimeout>this._opt.loadingTimeout&&(this.debugWarn(this.TAG_NAME,`mseWaitVideoCanplayTimeout ${this._opt.mseWaitVideoCanplayTimeout} is greater than loadingTimeout ${this._opt.loadingTimeout}, so set mseWaitVideoCanplayTimeout = loadingTimeout -1`),this._opt.mseWaitVideoCanplayTimeout=Math.max(this._opt.loadingTimeout-1,1)),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._playbackPause=!1,this._hasLoaded=!1,this._zooming=!1,this._drawingRect=!1,this._destroyed=!1,this._destroyLock=!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._tempTsList=[],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._serverInfo=null,this._mseWorkerData={},this._isStreamEnd=!1,Da(this._opt.useMSE)&&Da(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=Bo()&&Wo()&&zo(),this._opt.wasmUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false"),this._opt.wasmUseVideoRender&&this._opt.wasmPlayAudioUseVideoRender&&(this._opt.wasmPlayAudioUseVideoRender="AudioData"in window,this._opt.wasmPlayAudioUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render play audio, but not support so set wasmPlayAudioUseVideoRender false"))),this._opt.useSIMD?this.debugLog(this.TAG_NAME,"use simd wasm"):this.debugLog(this.TAG_NAME,"use wasm")),this._opt.useWasm&&(this._opt.useFaceDetector&&window.JessibucaProFaceDetector||this._opt.useObjectDetector&&window.JessibucaProObjectDetector||this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||this._opt.useImageDetector&&window.JessibucaProImageDetector)?(this.ai=new Dv(this),this._opt.useFaceDetector&&window.JessibucaProFaceDetector||(this._opt.operateBtns.aiFace=!1),this._opt.useObjectDetector&&window.JessibucaProObjectDetector||(this._opt.operateBtns.aiObject=!1),this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||(this._opt.operateBtns.aiOcclusion=!1),this._opt.useImageDetector&&this._opt.aiImageDetectActive&&window.JessibucaProImageDetector&&(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.JessibucaProFaceDetector||this.debugWarn(this.TAG_NAME,`use face detector, useWasm is ${this._opt.useWasm} and window.JbProFaceDetector is null`)),this._opt.useObjectDetector&&(this._opt.useWasm&&window.JessibucaProObjectDetector||this.debugWarn(this.TAG_NAME,`use object detector, useWasm is ${this._opt.useWasm} and window.JbProObjectDetector is null`)),this._opt.useOcclusionDetector&&(this._opt.useWasm&&window.JessibucaProOcclusionDetector||this.debugWarn(this.TAG_NAME,`use occlusion detector, useWasm is ${this._opt.useWasm} and window.JessibucaProOcclusionDetector is null`)),this._opt.useImageDetector&&(this._opt.useWasm&&window.JessibucaProImageDetector||this.debugWarn(this.TAG_NAME,`use image detector, useWasm is ${this._opt.useWasm} and window.JessibucaProImageDetector is null`)),this._opt.videoRenderType&&(this.debugLog(this.TAG_NAME,`videoRenderType is ${this._opt.videoRenderType}`),this._opt.videoRenderType===J?(this._opt.useVideoRender=!0,this._opt.useCanvasRender=!1):this._opt.videoRenderType===H&&(this._opt.useVideoRender=!1,this._opt.useCanvasRender=!0)),this._opt.useVideoRender&&(this._opt.useWasm&&!this._opt.useOffscreen?(this._opt.wasmUseVideoRender=Bo()&&Wo()&&zo(),this._opt.wasmUseVideoRender||this.debugWarn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")):this._opt.useWCS&&!this._opt.useOffscreen&&(this._opt.wcsUseVideoRender=Wo()&&zo(),this._opt.wcsUseVideoRender||this.debugWarn(this.TAG_NAME,"use wcs video render, but not support so set wcsUseVideoRender false"))),this._opt.useCanvasRender&&(this._opt.useMSE&&Da(this._opt.mseDecoderUseWorker)&&(this._opt.mseUseCanvasRender=!0),this._opt.useWasm&&(this._opt.wasmUseVideoRender=!1),this._opt.useWCS&&(this._opt.wcsUseVideoRender=!1),this.isOldHls()&&!Io()&&(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),this._opt.useCanvasRender&&this.useVideoPlayAudio()&&(this.debugLog(this.TAG_NAME,"useCanvasRender is true and useVideoPlayAudio() return true, so set wcsDecodeAudio false"),this._opt.wcsDecodeAudio=!1,this._opt.wasmPlayAudioUseVideoRender=!1),s=this,Object.defineProperty(s,"rect",{get:()=>{let e={};return s.$container&&(e=s.$container.getBoundingClientRect(),e.width=Math.max(e.width,s.$container.clientWidth),e.height=Math.max(e.height,s.$container.clientHeight)),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(s,e,{get:()=>s.rect[e]||0})})),this.events=new za(this),this._opt.hasVideo&&(this.video=new yn(this),this.recorder=new Cl(this)),this.isOldHls()?(this.hlsDecoder=new rb(this),this.loaded=!0):this.isWebrtcH264()?(this._opt.isWebrtcForZLM?this.webrtc=new Fv(this):this._opt.isWebrtcForSRS?this.webrtc=new Pv(this):this._opt.isWebrtcForOthers?this.webrtc=new Bv(this):this.webrtc=new Mv(this),this.loaded=!0):this.isAliyunRtc()?(this.aliyunRtcDecoder=new Uv(this),this.loaded=!0):(this.isUseHls265()&&(this.hlsDecoder=new Lv(this)),this.isWebrtcH265()&&(this.webrtc=new Mv(this)),Da(ma(this._opt))?this.decoderWorker=new Bl(this):this.loaded=!0),this._opt.hasAudio&&(this.audio=new Fn(this)),this.stream=null,this.demux=null,this._lastVolume=null,this._isMute=null,this._isInZoom=!1,this._playingStartTimestamp=null,this.isMSEVideoDecoderInitializationFailedNotSupportHevc=!1,this.isMSEAudioDecoderError=!1,this.isMSEPlaybackRateChangePause=!1,this.isMSECurrentMoreThanBufferedPause=!1,this.isPlayFailedAndPaused=!1,this._seiList=[],this._opt.useWCS&&(this.webcodecsDecoder=new hc(this),!this._opt.hasAudio&&Da(this._opt.demuxUseWorker)&&(this.loaded=!0)),this._opt.useMSE&&Da(this._opt.mseDecoderUseWorker)&&(this.mseDecoder=new Pc(this),!this._opt.hasAudio&&Da(this._opt.demuxUseWorker)&&(this.loaded=!0)),this.control=new Dc(this),this._opt.contextmenuBtns.length>0&&Da(this._opt.disableContextmenu)&&Lo()?this.contextmenu=new Rv(this):xa(this._opt.disableContextmenu)&&this._opt.contextmenuBtns.length>0&&Lo()&&this.debugWarn(this.TAG_NAME,"disableContextmenu is true, but contextmenuBtns is not empty, so Contextmenu can not be created,please check"),this.isPlayback()&&(this.playback=new Cv(this,this._opt.playbackConfig)),this._opt.operateBtns.zoom&&(this.zoom=new xv(this)),/(iphone|ipad|ipod|ios|android)/i.test(window.navigator.userAgent.toLowerCase())&&Da(this._opt.supportLockScreenPlayAudio&&Ro())&&(this.keepScreenOn=new Mc(this)),(e=>{try{const t=t=>{ha(t)===e.$container&&(e.emit(bt.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};$r.on("change",t),e.events.destroys.push((()=>{$r.off("change",t)}))}catch(e){}if(e.on(At.decoderWorkerInit,(()=>{e.debugLog("player","listen decoderWorkerInit and set loaded true"),e.loaded=!0})),e.on(At.play,(()=>{e.loading=!1})),e.on(At.fullscreen,(t=>{if(t)try{$r.request(e.$container).then((()=>{})).catch((t=>{e.debugError("player","fullscreen request error",t,t.toString()),e.emitError(_t.fullscreenError,t.toString()),ko()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){ko()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{$r.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((t=>{e.debugError("player","fullscreen exit error",t,t.toString()),e.emitError(_t.fullscreenError,t.toString()),e.webFullscreen&&(e.webFullscreen=!1)}))}catch(t){e.webFullscreen&&(e.webFullscreen=!1)}})),ko()&&e.on(At.webFullscreen,(t=>{t?e.$container.classList.add("jb-pro-fullscreen-web"):e.$container.classList.remove("jb-pro-fullscreen-web"),e.emit(bt.fullscreen,e.fullscreen)})),e.on(At.resize,(()=>{e.resize()})),e._opt.debug){const t=[At.timeUpdate,At.currentPts,At.videoSEI,At.videoSEISyncPts,At.performance,At.videoSmooth],i=[At.stats,At.playbackStats,At.playbackTimestamp,At.flvMetaData,At.playToRenderTimes,At.audioInfo,At.videoInfo];Object.keys(At).forEach((s=>{e.on(At[s],(function(r){if(!t.includes(s)){i.includes(s)&&(r=JSON.stringify(r));for(var o=arguments.length,a=new Array(o>1?o-1:0),n=1;n{e.on(_t[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.updateOption({rotate:e?270:0}),this.resize()}),10)}get webFullscreen(){return this.$container.classList.contains("jb-pro-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded||this.isOldHls()||this.isWebrtcH264()||this._opt.useMSE&&Da(this._opt.hasAudio)&&Da(this._opt.demuxUseWorker)||this._opt.useWCS&&!this._opt.hasAudio&&Da(this._opt.demuxUseWorker)}set playing(e){this.isClosed()&&e?this.debugLog(this.TAG_NAME,"player is closed, so can not play"):(e&&xa(this.loading)&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(At.playing,e),this.emit(At.volumechange,this.volume),e?this.emit(At.play):this.emit(At.pause)))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio?(this.audio.setVolume(e),this._lastVolume=this.volume,this._isMute=0===this.volume):this.debugWarn(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(At.loading,this._loading))}get loading(){return this._loading}set zooming(e){this.isDestroyedOrClosed()||this.zooming!==e&&(this.zoom||(this.zoom=new xv(this)),this._zooming=e,this.emit(At.zooming,this.zooming))}get zooming(){return this._zooming}set drawingRect(e){this.isDestroyedOrClosed()||this.drawingRect!==e&&(this.drawRectangle||(this.drawRectangle=new jv(this)),this._drawingRect=e,this.emit(At.drawingRect,this.drawingRect))}get drawingRect(){return this._drawingRect}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(At.streamQualityChange,e))}get streamQuality(){return this._streamQuality}get isDebug(){return xa(this._opt.debug)}get scaleType(){const e=this._opt,t=e.isResize,i=e.isFullResize;let s=di;return Da(i)&&Da(t)?s=di:Da(i)&&xa(t)?s=hi:xa(i)&&xa(t)&&(s=ci),s}set visibility(e){this._visibility!==e&&(this._visibility=e,this.emit(At.visibilityChange,e),this._lastestVisibilityChangeTimestamp=Ao(),e?this.clearVisibilityHiddenTimeout():this.startVisibilityHiddenTimeout())}get visibility(){return this._visibility}set playbackPause(e){this._playbackPause!==e&&(this._playbackPause=e,this.emit(At.playbackPause,e),this.emit(At.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(At.faceDetectActive,e))}get faceDetectActive(){return this._faceDetectActive}set objectDetectActive(e){this._objectDetectActive!==e&&(this._objectDetectActive=e,this.emit(At.objectDetectActive,e))}get objectDetectActive(){return this._objectDetectActive}set occlusionDetectActive(e){this._occlusionDetectActive!==e&&(this._occlusionDetectActive=e,this.emit(At.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()===A}isDestroyed(){return this._destroyed}isDestroying(){return this._destroyed&&this._destroyLock}isClosed(){return this._closed}isDestroyedOrClosed(){return this.isDestroyed()||this.isClosed()}isLoading(){return this.loading}isPlaying(){let e=!1;return this._opt.playType===v?e=this.playing:this._opt.playType===w&&(e=Da(this.playbackPause)&&this.playing),e}updateOption(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._opt=Object.assign({},this._opt,e),xa(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 yn(this)),this.audio||this._opt.hasAudio&&(this.audio=new Fn(this)),this.stream||(this.stream=new Hn(this)),this.isOldHls()?(this.hlsDecoder||(this.hlsDecoder=new rb(this),this.loaded=!0),e()):this.isWebrtcH264()?(this.webrtc||(this._opt.isWebrtcForZLM?this.webrtc=new Fv(this):this._opt.isWebrtcForSRS?this.webrtc=new Pv(this):this._opt.isWebrtcForOthers?this.webrtc=new Bv(this):this.webrtc=new Mv(this),this.loaded=!0),e()):this.isAliyunRtc()?(this.aliyunRtcDecoder||(this.aliyunRtcDecoder=new Uv(this),this.loaded=!0),e()):(this.demux||this._opt.hasVideo&&!this.isUseWorkerDemuxAndDecode&&(this.demux=new ic(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new hc(this))),this._opt.useMSE&&Da(this._opt.mseDecoderUseWorker)&&(this.mseDecoder||(this.mseDecoder=new Pc(this))),this.isUseHls265()&&(this.hlsDecoder||(this.hlsDecoder=new Lv(this))),this.isWebrtcH265()&&(this.webrtc||(this.webrtc=new Mv(this))),this.decoderWorker?this.loaded?e():this.once(At.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debugError(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())})):Da(ma(this._opt))?(this.decoderWorker=new Bl(this),this.once(At.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debugError(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())}))):e())}))}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!e&&!this._opt.url)return s("url is empty");this._closed=!1,this.loading=!0,this.playing=!1,this._times.playInitStart=Ao(),e||(e=this._opt.url),this._opt.url=e,this.control&&this._opt.loadingBackground&&this.control.initLoadingBackground(),this.init().then((()=>{this.debugLog(this.TAG_NAME,"play() init and next fetch stream"),this._times.playStart=Ao(),this._opt.isNotMute&&this.mute(!1),this.enableWakeLock(),this.checkLoadingTimeout(),this.stream?(this.stream.once(_t.fetchError,(e=>{this.emitError(_t.fetchError,e)})),this.stream.once(_t.websocketError,(e=>{this.emitError(_t.websocketError,e)})),this.stream.once(At.streamEnd,(e=>{this.emit(At.streamEnd,e)})),this.stream.once(_t.hlsError,(e=>{this.emitError(_t.hlsError,e)})),this.stream.once(_t.webrtcError,(e=>{this.emitError(_t.webrtcError,e)})),this.stream.once(At.streamSuccess,(()=>{i(),this._times.streamResponse=Ao(),this.video&&this.video.play(),this.checkStatsInterval(),this.isPlayback()&&this.playback&&this.playback.startCheckStatsInterval();{const e=Number("1")||1;setTimeout((()=>{this.destroy(),console.error("Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码)"),alert("Jb pro 体验结束,请刷新页面再次体验,如需要购买商业授权,可以联系微信:bosswancheng"),window.location.reload()}),60*e*60*1e3)}})),this.stream.fetchStream(e,t)):(this.debugWarn(this.TAG_NAME,`play() this.stream is null and is isDestroyedOrClosed is ${this.isDestroyedOrClosed()}`),s("this.stream is null"))})).catch((e=>{s(e)}))}))}playForControl(){return new Promise(((e,t)=>{this.debugLog(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&&Da(this._isMute)&&(this.volume=this.lastVolume)}async _close(){this._closed=!0,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.loading=!1,this.recording=!1,this.zooming=!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:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.stream&&(await this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.webcodecsDecoder&&(await this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.hlsDecoder&&(await this.hlsDecoder.destroy(),this.hlsDecoder=null),this.webrtc&&(this.webrtc.destroy(),this.webrtc=null),this.aliyunRtcDecoder&&(this.aliyunRtcDecoder.destroy(),this.aliyunRtcDecoder=null),this.audio&&(await this.audio.destroy(),this.audio=null),this.playing=!1}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];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.debugLog(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.debugLog(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.debugWarn(this.TAG_NAME,"pauseForControl() and videoInfo is null")}else this.debugWarn(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)}cancelRecord(){return new Promise(((e,t)=>{this.recorder||t("recorder is null"),this.recording&&(this._opt.useWasm&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})))}))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{this.recorder||s("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=>{s(e)}))):s("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),this._opt.controlHtml&&(e=!0),e}useWasmDecode(){return Da(this._opt.useMSE)&&Da(this._opt.useWCS)}canVideoTrackWritter(){const e=this._opt;return!this.isOldHls()&&!this.isWebrtcH264()&&Da(e.useMSE)&&!this.isAliyunRtc()&&(e.useWCS&&Da(e.useOffscreen)&&e.wcsUseVideoRender||this.useWasmDecode())}checkHeartTimeout$2(){if(Da(this.playbackPause)&&this.playing){if(this.isDestroyedOrClosed())return void this.debugWarn(this.TAG_NAME,"checkHeartTimeout$2 but player is destroyed");if(Da(this.isHistoryFpsListAllZero()))return void this.debugWarn(this.TAG_NAME,"checkHeartTimeout$2 but fps is not all zero");if(0!==this._stats.fps)return void this.debugWarn(this.TAG_NAME,`checkHeartTimeout$2 but fps is ${this._stats.fps}`);const e=this._historyFpsList.join(",");this.debugWarn(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(At.timeout,At.delayTimeout),this.emit(At.delayTimeout)}else this.debugLog(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.debugWarn(this.TAG_NAME,`checkLoadingTimeout but loading is ${this.loading} and playing is ${this.playing}`):this.isDestroyedOrClosed()?this.debugWarn(this.TAG_NAME,"checkLoadingTimeout but player is destroyed"):(this.debugWarn(this.TAG_NAME,"checkLoadingTimeout and pause and emit loadingTimeout event"),this.emit(At.timeout,At.loadingTimeout),this.emit(At.loadingTimeout))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(this.debugLog(this.TAG_NAME,"clearCheckLoadingTimeout"),clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.isDestroyedOrClosed()?this.debugWarn(this.TAG_NAME,"handleRender but player is destroyed"):(this.loading&&(this.clearCheckLoadingTimeout(),this.loading=!1,this.emit(At.start)),this.playing||(this.playing=!0))}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.isDestroyedOrClosed())return void this.debugLog(this.TAG_NAME,"updateStats but player is closed or destroyed");if(this._startBpsTime||(this._startBpsTime=Ao()),Jo(e.ts)){const t=parseInt(e.ts,10);this._stats.ts=t,this._tempTsList.push(t),null===this._playingStartTimestamp&&t>0&&(this._playingStartTimestamp=t)}Jo(e.dts)&&(this._stats.dts=parseInt(e.dts,10)),Jo(e.mseTs)&&(this._stats.mseTs=e.mseTs),Jo(e.buf)&&(this._stats.buf=e.buf),Jo(e.netBuf)&&(this._stats.netBuf=e.netBuf),Jo(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=Ao();if(t-this._startBpsTime<1e3)return;null!==this._playingStartTimestamp&&this._stats.fps>0&&(this._stats.pTs+=1);let i=0,s=0,r=0,o=0,a=0;this._opt.useMSE&&(this.mseDecoder?(i=this.mseDecoder.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.mseDecoder.checkSourceBufferStore(),s=s.toFixed(2),o=this.mseDecoder.getDecodePlaybackRate(),a=this.mseDecoder.getPendingSegmentsLength()):this.isMseDecoderUseWorker()&&(i=this.video.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.video.checkSourceBufferStore(),s=s.toFixed(2),o=this.video.getDecodePlaybackRate())),this._opt.useWCS&&this.webcodecsDecoder&&(r=this.webcodecsDecoder.getDecodeDiffTimes()),this.isOldHls()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=parseInt(1e3*i,10));let n=0,l=0,d=0;this.isUseHls265()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=i.toFixed(2),n=this.hlsDecoder.getDemuxBufferedListLength(),d=this.hlsDecoder.getDemuxVideoBufferedListLength(),l=this.hlsDecoder.getDemuxAudioBufferedListLength());let h=0,c=0,u=0,p=!1,f=0,m=0;this._opt.useWasm||this._opt.demuxUseWorker?this._tempWorkerStats&&(c=this._tempWorkerStats.demuxBufferDelay,u=this._tempWorkerStats.audioDemuxBufferDelay,h=this._tempWorkerStats.streamBufferByteLength,this._stats.netBuf=this._tempWorkerStats.netBuf,f=this._tempWorkerStats.pushLatestDelay,p=this._tempWorkerStats.isStreamTsMoreThanLocal,this._stats.buf=this._tempWorkerStats.latestDelay,m=this._tempWorkerStats.wasmDecodeDelay):this.demux&&(h=this.demux.getInputByteLength(),f=this.demux.getPushLatestDelay(),p=this.demux.getIsStreamTsMoreThanLocal(),this.demux.bufferList&&(c=this.demux.bufferList.length));let g=0,y=0;this.audio&&this.audio.bufferList&&(g=this.audio.bufferList.length,y=parseInt(g*this.audio.oneBufferDuration,10));let A=0,b=0;if(this.isPlayback()&&this.video){this._opt.playbackConfig.isUseFpsRender&&(A=this.video.bufferList&&this.video.bufferList.length||0);let e=this.video.getStreamFps();const t=e>0?1e3/e:0;b=parseInt(t*A+t*c,10)}let v=0;this.videoTimestamp>0&&(v=this._stats.dts-this.videoTimestamp);const _=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 w=this.getVideoCurrentTime();const S=this._stats.videoCurrentTime;let E=-1;S&&w&&(E=Mo((w-S).toFixed(2)),w=w.toFixed(2));let T=0;this.audioTimestamp>0&&(T=this.audioTimestamp-this.getRenderCurrentPts()),this._allStatsData=Object.assign(this._stats,{audioBuffer:g,audioBufferDelayTs:y,audioTs:this.audioTimestamp,latestAudioTs:this.latestAudioTimestamp,playbackVideoBuffer:A,playbackVideoWaitingBuffer:0,playbackAudioWaitingBuffer:0,playbackCacheDataDuration:b,demuxBuffer:c,pushLatestDelay:f,audioDemuxBuffer:u,streamBuffer:h,mseDelay:i,mseStore:s,mseDecodeDiffTimes:r,mseDecodePlaybackRate:o,msePendingBuffer:a,wcsDecodeDiffTimes:r,wasmDecodeDelay:m,hlsDelay:i,hlsDemuxLength:n,hlsDemuxAudioLength:l,hlsDemuxVideoLength:d,delayTs:v,totalDelayTs:_,isStreamTsMoreThanLocal:p,videoCurrentTime:w,videoCurrentTimeDiff:E,audioSyncVideo:T});let L=null,C=null,x="";if(this.isPlayer()&&this._opt.hasVideo&&this.playing){L=function(e,t){let i=3;const s=t||25;return e<=s*(1/4)?i=0:e<=.5*s?i=1:e<=s*(3/4)&&(i=2),i}(this._stats.fps,this._flvMetaDataFps),this._allStatsData.performance=L;const e=this.checkVideoSmooth(this._allStatsData);x=e.reason,C=e.result,this._allStatsData.videoSmooth=C}this.emit(At.stats,this._allStatsData),this._allStatsData.streamBuffer>this._opt.flvDemuxBufferSizeMaxLarge&&this.getDemuxType()===k&&this.emit(_t.flvDemuxBufferSizeTooLarge,this._allStatsData.streamBuffer),this._opt.hasVideo?(this.updateHistoryFpsList(this._stats.fps,this._allStatsData.videoCurrentTimeDiff),Jo(L)&&this.emit(At.performance,L),Jo(C)&&this.emit(At.videoSmooth,C,x)):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._tempTsList=[],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={},this._tempTsList=[]}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&&Da(this._opt.isHls)&&(i="vbpsIsZero",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&e.isDropping&&(i="isDroppingIsTrue",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&this.visibility&&this._historyFpsList.length>=this._opt.heartTimeout){const s=function(e){const t=Math.max(...e),i=Math.min(...e);return e.filter((e=>e!==t&&e!==i))}(this._historyFpsList),r=s.reduce(((e,t)=>e+t),0)/s.length,o=.83*r;e.fps=1.5||e.videoCurrentTimeDiff<=.5)&&-1!==e.videoCurrentTimeDiff){if(i="videoCurrentTimeDiffIsNotNormal",this.debugLog(this.TAG_NAME,`checkVideoSmooth false because videoCurrentTimeDiff is ${e.videoCurrentTimeDiff}`),0===Number(e.videoCurrentTimeDiff)){const e=this.isVideoPlaying(),t=this.getVideoCurrentTime(),i=this.getVideoBufferTimeRange();let s=-1,r=-1;i&&(s=i.start,r=i.end),this.debugLog(this.TAG_NAME,`checkVideoSmooth and videoCurrentTimeDiff is 0 so check\n videoCurrentTime is ${t} and isPlaying is ${e}\n bufferStartTime is ${s} and bufferEndTime is ${r}`)}t=!1}return{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(At.beforeDestroy)}handlePlayToRenderTimes(){if(this.isDestroyedOrClosed())return void this.debugLog(this.TAG_NAME,"handlePlayToRenderTimes but player is closed or destroyed");const e=this.getPlayToRenderTimes();this.emit(At.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===v}isPlayback(){return this._opt.playType===w}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()?z:this.isAliyunRtc()?V:this.isOldHls()?$:(t.useMSE&&(e+=U+" ",t.mseDecoderUseWorker&&(e+="worker")),t.useWCS&&(e+=O+" "),t.useWasm&&(e+=j+" ",t.useSIMD&&(e+=G+" "),t.useMThreading&&(e+=W+" ")),t.useOffscreen&&(e+=N+" "),e)}getDemuxType(){return this._opt.demuxType}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}isStreamTypeNotWorker(){return-1===this.getStreamType().indexOf(A)}getAllStatsData(){return this._allStatsData}isFlvDemux(){return this._opt.demuxType===k}isM7SDemux(){return this._opt.demuxType===L}isNakedFlowDemux(){return this._opt.demuxType===R}isMpeg4Demux(){return this._opt.demuxType===P}isTsDemux(){return this._opt.demuxType===M}isFmp4Demux(){return this._opt.demuxType===I}togglePerformancePanel(e){this.updateOption({showPerformance:e}),this.emit(At.togglePerformancePanel,e)}setScaleMode(e){let t={isFullResize:!1,isResize:!1,aspectRatio:"default"};switch(e=Number(e)){case di:t.isFullResize=!1,t.isResize=!1;break;case hi:t.isFullResize=!1,t.isResize=!0;break;case ci:t.isFullResize=!0,t.isResize=!0}this.updateOption(t),this.resize(),this.emit(At.viewResizeChange,e)}startVisibilityHiddenTimeout(){this.clearVisibilityHiddenTimeout(),this._opt.pageVisibilityHiddenTimeout>0&&(this.visibilityHiddenTimeout=setTimeout((()=>{this.emit(At.visibilityHiddenTimeout)}),1e3*this._opt.pageVisibilityHiddenTimeout))}clearVisibilityHiddenTimeout(){this._checkVisibleHiddenTimeout&&(clearTimeout(this._checkVisibleHiddenTimeout),this._checkVisibleHiddenTimeout=null)}faceDetect(e){this.faceDetectActive=e,Da(e)&&this.video&&this.video.addAiContentToCanvas([])}objectDetect(e){this.objectDetectActive=e,Da(e)&&this.video&&this.video.addAiContentToCanvas([])}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 s=!1;if(e&&t&&i){s=1e3/i*t>e}return s}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.video&&this.video.addContentToCanvas(e)}addContentToContainer(){}sendWebsocketMessage(e){const t=this.getStreamType();t===m||t===A+" "+m?this.stream.sendMessage(e):this.debugWarn(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="")}toggleControlHtml(e){this.control&&this.control.toggleControlHtml(e)}getControlHtmlIsShow(){return!!this.control&&this.control.getControlHtmlIsShow()}getControlHtml(){return this.control?this.control.getControlHtml():null}setExtendHtml(e){this.control&&(this.control.$extendDom?this.control.updateExtendDom(e):this.control.addExtendDom({html:e,showBeforePlay:!0}))}clearExtendHtml(){this.control&&this.control.removeExtendDom()}toggleExtendHtml(e){this.control&&this.control.toggleExtendDom(e)}getExtendHtmlIsShow(){return!!this.control&&this.control.getExtendDomIsShow()}getExtendHtml(){return this.control?this.control.getExtendDom():null}updateWatermark(e){this.singleWatermark||(this.singleWatermark=new sn(this)),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){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(At.error,e,t),this.emit(e,t)}updateHistoryFpsList(e,t){this.playbackPause||Da(this.visibility)||(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 xa(this._opt.isHls)&&xa(this._opt.supportHls265)}isHls(){return xa(this._opt.isHls)}isOldHls(){return xa(this._opt.isHls)&&Da(this._opt.supportHls265)}isWebrtcNotH265(){return xa(this._opt.isWebrtc)&&Da(this._opt.isWebrtcH265)}isWebrtcH264(){return xa(this._opt.isWebrtc)&&Da(this._opt.isWebrtcH265)}isWebrtcH265(){return xa(this._opt.isWebrtc)&&xa(this._opt.isWebrtcH265)}isAliyunRtc(){return xa(this._opt.isAliyunRtc)}isUseHls265UseMse(){return this.isUseHls265()&&this.isUseMSE()}isStreamWebTransport(){return this.getStreamType()===y}isPlaybackCacheBeforeDecodeForFpsRender(){return this.isPlayback()&&xa(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)&&xa(this._opt.useWCS)}isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender(){return this.isPlayback()&&Da(this._opt.playbackConfig.isPlaybackPauseClearCache)&&xa(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)}isPlaybackUseWCS(){return this.isPlayback()&&xa(this._opt.useWCS)}isPlaybackUseMSE(){return this.isPlayback()&&xa(this._opt.useMSE)}isPlaybackUseWASM(){return this.isPlayback()&&xa(this._opt.useWasm)}isPlayUseMSE(){return this.isPlayer()&&xa(this._opt.useMSE)}isMSEDecodeAudio(){return this._opt.useMSE&&this._opt.mseDecodeAudio}isWCSDecodeAudio(){this._opt.useWCS&&this._opt.wcsDecodeAudio}isInWebFullscreen(){return this._opt.useWebFullScreen&&ko()&&this.fullscreen}getPlaybackRate(){let e=1;return xa(this.isPlayback())&&this.playback&&(e=this.playback.rate),e}isPlaybackOnlyDecodeIFrame(){return xa(this.isPlayback())&&this.getPlaybackRate()>=this._opt.playbackForwardMaxRateDecodeIFrame&&!this.isMSEDecodeAudio()}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}getVideoBufferTimeRange(){let e=null;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.getVideoBufferTimeRange():this.isMseDecoderUseWorker()&&(e=this.video.getVideoBufferTimeRange()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.getVideoBufferTimeRange():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.getVideoBufferTimeRange())),e}isVideoPlaying(){let e=!0;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.isVideoPlaying():this.isMseDecoderUseWorker()&&(e=this.video.isVideoPlaying()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.isVideoPlaying():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.isVideoPlaying())),e}addMemoryLog(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s0){const e=t/1e3;this._flvMetaDataFps=e}}Ho(e.hasAudio)&&Da(e.hasAudio)&&(this.debugLog("updateMetaData","hasAudio",e.hasAudio,"and update _opt.hasAudio"),this._opt.hasAudio=e.hasAudio),Ho(e.hasVideo)&&Da(e.hasVideo)&&(this.debugLog("updateMetaData","hasVideo",e.hasVideo,"and update _opt.hasVideo"),this._opt.hasVideo=e.hasVideo),e.server&&(this._serverInfo=(e.server+"").substring(0,10)),e.MetaDataCreator&&(this._serverInfo=e.MetaDataCreator)}this.emit(At.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===T}isRecordTypeMp4(){return this.recorder&&this._opt.recordType===S}isRecordTypeWebm(){return this.recorder&&this._opt.recordType===E}isDemuxInWorker(){return this._opt.useWasm||this._opt.demuxUseWorker}isUseMSE(){return xa(this._opt.useMSE)}isUseWCS(){return xa(this._opt.useWCS)}isUseWASM(){return xa(this._opt.useWasm)}isMseDecoderUseWorker(){return this.isUseMSE()&&xa(this._opt.mseDecoderUseWorker)}getAudioSyncVideoDiff(){return this.audioTimestamp-this.getRenderCurrentPts()}getCurrentVideoAndAudio(){return{video:this.getRenderCurrentPts(),audio:this.audioTimestamp}}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(At.currentPts,e),this.emitVideSeiSyncPts(e)}emitVideoSei(e){this.emit(At.videoSEI,e),this._seiList.push(e)}emitVideSeiSyncPts(e){if(0===this._seiList.length||Da(this._opt.isEmitSEI))return;const t=1e3*this._opt.videoSEISyncPtsDiff,i=e-t,s=e+t,r=[];this._seiList.forEach((t=>{t.ts>=i&&t.ts<=s&&(t.pts=e,r.push(t))})),r.forEach((e=>{this.emit(At.videoSEISyncPts,e)})),this._seiList=this._seiList.filter((e=>e.ts>s))}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(){xa(this._opt.checkFirstIFrame)&&(this.mseDecoder?this.mseDecoder.isDecodeFirstIIframe=!1:this.webcodecsDecoder&&(this.webcodecsDecoder.isDecodeFirstIIframe=!1))}isHlsCanVideoPlay(){return this._canPlayAppleMpegurl&&this.isOldHls()}setPtzPosition(e){this.control&&this.control.updatePtzPosition(e)}setRotate(e){this.updateOption({rotate:e}),this.resize()}setPlayFailedAndPaused(){this.isPlayFailedAndPaused=!0}getMseMineType(){let e={};return this.mseDecoder&&(e=this.mseDecoder.getMimeType()),e}getMaxDelayTs(){return this._opt.videoBuffer+this._opt.videoBufferDelay}isMseVideoStateInited(){return!this.video||this.video.getReadyStateInited()}showPlayBtn(){this.control&&this.control.showPlayBtn()}toggleControlExtendBtn(e,t){this.control&&this.control.toggleExtendBtn(e,t)}getControlExtendBtnActive(e){let t=!1;return this.control&&(t=this.control.getExtendBtnActive(e)),t}useVideoPlayAudio(){return this._opt.hasAudio&&(this._opt.useWCS&&this._opt.wcsDecodeAudio||this._opt.useWasm&&this._opt.wasmPlayAudioUseVideoRender)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}debugLog(e){if(this._opt.debug&&this.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s1?t-1:0),s=1;s1?t-1:0),s=1;s1&&0===e[e.length-1]&&0===e[e.length-2]}getShowVideoRect(){let e=this.width,t=this.height;const i=this.getControlHeight();return ko()&&this.fullscreen&&(this._opt.useWebFullScreen||this._opt.androidMobileFullscreenRotate)?e-=i:t-=i,{width:e,height:t}}updateControlSize(e){this.updateOption({controlSize:e}),this.control&&this.control.updateControlSize(),this.resize()}isStreamEnd(){let e=!1;return Da(this._opt.checkStreamEnd)&&(e=this._isStreamEnd),e}updateStreamEndInner(){this._isStreamEnd=!0}checkPlaybackEnd(){return this.isPlayback()&&Da(this._opt.checkStreamEnd),!1}getWebrtcVideo(){let e=null;return this.webrtc&&(e=this.webrtc.$videoElement),e}}class Wv{constructor(e){this.player=e,this.globalSetting=null;const t=Fo();this.defaultSettings={watermark_id:`JbPro_${t}`,watermark_prefix:`JbPro_mask_${t}`,watermark_txt:"JbPro 测试水印",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.load({text:decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),color:"white"}),this.player.debugLog("Watermark","int")}destroy(){this._removeMark(),this.globalSetting=null,this.defaultSettings=null,this.player.debugLog("Watermark","destroy")}remove(){}load(e){this.globalSetting=e,this._loadMark(e)}resize(){this.player.debugLog("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 s="string"==typeof e.watermark_parent_node?document.getElementById(e.watermark_parent_node):e.watermark_parent_node,r=s||document.body;const o=r.getBoundingClientRect();var a=Math.max(r.scrollWidth,r.clientWidth,o.width),n=Math.max(r.scrollHeight,r.clientHeight,o.height),l=arguments[0]||{},d=r;(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=r.children,p=Math.floor(Math.random()*(u.length-1))+1;u[p]?r.insertBefore(h,u[p]):r.appendChild(h)}e.watermark_cols=parseInt((a-e.watermark_x)/(e.watermark_width+e.watermark_x_space));var f,m=parseInt((a-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((n-e.watermark_y)/(e.watermark_height+e.watermark_y_space));var g,y,A,b=parseInt((n-e.watermark_y-e.watermark_height*e.watermark_rows)/e.watermark_rows);e.watermark_y_space=b?e.watermark_y_space:b,s?(f=e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),g=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),g=0+e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1));for(var v=0;v\n \n \n ${m.watermark_txt}\n \n \n ${m.watermark_txt}\n \n \n \n \n `,_=window.btoa(unescape(encodeURIComponent(v)));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=a+"px",w.style.height=n+"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,s=document.createElement("span");s.innerHTML=e,s.setAttribute("style",`font-family: ${t}; font-size: ${i}px; visibility: hidden; display: inline-block`),document.querySelector("body").appendChild(s);const r={width:s.offsetWidth,height:s.offsetHeight};return s.remove(),r}}const $v="right",Vv="left",Hv="up",Jv="down",qv="leftUp",Kv="leftDown",Yv="rightUp",Qv="rightDown",Xv="zoomExpand",Zv="zoomNarrow",e_="apertureFar",t_="apertureNear",i_="focusFar",s_="focusNear",r_="setPos",o_="calPos",a_="delPos",n_="wiperOpen",l_="wiperClose",d_="cruiseStart",h_={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,setCruise:132,decCruise:133,cruiseStart:136,cruiseStop:0},c_=[25,50,75,100,125,150,175,200,225,250],u_=[1,2,3,4,5,6,7,8,9,16],p_=[16,48,80,112,144,160,176,192,208,224];function f_(e){const{type:t,speed:i=5,index:s=0}=e,r=function(e){return c_[(e=e||5)-1]||c_[4]}(i);let o,a,n,l;if(o=h_[t],!o)return"";switch(t){case Hv:case Jv:case e_:case t_:n=r;break;case $v:case Vv:case i_:case s_:a=r;break;case qv:case Kv:case Yv:case Qv:a=r,n=r;break;case Xv:case Zv:l=function(e){return p_[(e=e||5)-1]||p_[4]}(i);break;case o_:case a_:case r_:n=m_(s);break;case l_:case n_:a=1;break;case d_:a=m_(s)}return function(e,t,i,s){let r=[];r[0]=165,r[1]=15,r[2]=1,r[3]=0,r[4]=0,r[5]=0,r[6]=0,e&&(r[3]=e);t&&(r[4]=t);i&&(r[5]=i);s&&(r[6]=s);return r[7]=(r[0]+r[1]+r[2]+r[3]+r[4]+r[5]+r[6])%256,function(e){let t="";for(let i=0;it)){for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i===t?s[r]=y_(e[r]):"object"==typeof e[r]?s[r]=A_(e[r],t,i+1):s[r]=e[r]);return s}}function b_(){return(new Date).toLocaleString()}class v_{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player=e,this.TAG_NAME="MemoryLogger",this.logMaxSize=(null==t?void 0:t.logMaxSize)||204800,this.logSize=0,this.logTextArray=[],this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.clear(),this.player.debugLog(this.TAG_NAME,"destroy")}clear(){this.logSize=0,this.logTextArray=[]}logCache(){let e="";try{for(var t=arguments.length,i=new Array(t),s=0;sA_(e)));e="[JbPro] "+b_()+JSON.stringify(r)}catch(e){return}if(this.logSize+=e.length,this.logTextArray.push(e),this.logSize>this.logMaxSize){const e=this.logTextArray.shift();this.logSize-=e.length}}getLog(){return this.logTextArray.join("\n")}getLogBlob(){const e=this.getLog();return new Blob([e],{type:"text/plain"})}download(){const e=this.getLog();this.clear();const t=new Blob([e],{type:"text/plain"});hn(t,"JbPro-"+b_()+".log")}}class __ extends o{constructor(e){super(),this.player=e,this.TAG_NAME="Network",this.online=this.isOnline(),this.prevOnline=this.online,this.interval=null,this._initListener(),this.player.debugLog(this.TAG_NAME,"init")}destroy(){this.off(),this._stopCheck(),window.removeEventListener("online",this._updateOnlineStatus),window.removeEventListener("offline",this._updateOfflineStatus),this.player.debugLog(this.TAG_NAME,"destroy")}_initListener(){window.addEventListener("online",this._updateOnlineStatus.bind(this)),window.addEventListener("offline",this._updateOfflineStatus.bind(this))}_stopCheck(){this.interval&&(clearInterval(this.interval),this.interval=null)}_startCheck(){this.interval=setInterval((()=>{this.isOnline()!==this.prevOnline&&(this.isOnline()?this._updateOnlineStatus():this._updateOfflineStatus())}),1e3)}_updateOnlineStatus(){this.prevOnline=this.online,this.online=!0,this.logStatus(),this.emit("online")}_updateOfflineStatus(){this.prevOnline=this.online,this.online=!1,this.logStatus(),this.emit("offline")}logStatus(){const e=this.prevOnline?"online":"offline",t=this.online?"online":"offline";this.player.debugLog(this.TAG_NAME,`prevOnline: ${this.prevOnline}, online: ${this.online}, status: ${e} -> ${t}`)}isOnline(){return void 0===navigator.onLine||navigator.onLine}isOffline(){return!this.isOnline()}}class w_ extends o{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this._opt={},this.TAG_NAME="JbPro",this.$container=null,Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`JbPro option "${t}" can not be undefined`)})),this.originalOptions=e;const t=ka();let i=Object.assign({},t,e);i.url="",i.isMulti&&(i.debugUuid=Ea()),this.debug=new Gr(this);let s=e.container;if("string"==typeof e.container&&(s=document.querySelector(e.container)),!s)throw this.debugError("JbPro","JbPro need container option and now container is",e.container),new Error("JbPro need container option");if(Da(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%",s.appendChild(e),this.$videoElement=e,this.$container=s,void(this._opt=i)}if(i.decoder&&Da(-1!==i.decoder.indexOf("decoder-pro.js")||-1!==i.decoder.indexOf("decoder-pro-simd.js")))throw this.debugError("JbPro",`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`),new Error(`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`);if("CANVAS"===s.nodeName||"VIDEO"===s.nodeName)throw this.debugError("JbPro",`JbPro container type can not be ${s.nodeName} type`),new Error(`JbPro container type can not be ${s.nodeName} type`);if(i.videoBuffer>=i.heartTimeout)throw this.debugError("JbPro",`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`),new Error(`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`);if(!s.classList)throw this.debugError(this.TAG_NAME,"JbPro container is invalid, must be a DOM Element",s),new Error("JbPro container is invalid, must be a DOM Element",s);if(this._checkHasCreated(s))throw this.debugError("JbPro","JbPro container has been created and can not be created again",s),new Error("JbPro container has been created and can not be created again",s);if(s.classList.add("jb-pro-container"),Ra(s,se,Fo()),delete i.container,Jo(i.videoBuffer)&&(i.videoBuffer=1e3*Number(i.videoBuffer)),Jo(i.videoBufferDelay)&&(i.videoBufferDelay=1e3*Number(i.videoBufferDelay)),Jo(i.networkDelay)&&(i.networkDelay=1e3*Number(i.networkDelay)),Jo(i.aiFaceDetectInterval)&&(i.aiFaceDetectInterval=1e3*Number(i.aiFaceDetectInterval)),Jo(i.aiObjectDetectInterval)&&(i.aiObjectDetectInterval=1e3*Number(i.aiObjectDetectInterval)),Jo(i.timeout)&&(Vo(i.loadingTimeout)&&(i.loadingTimeout=i.timeout),Vo(i.heartTimeout)&&(i.heartTimeout=i.timeout)),Jo(i.autoWasm)&&(Vo(i.decoderErrorAutoWasm)&&(i.decoderErrorAutoWasm=i.autoWasm),Vo(i.hardDecodingNotSupportAutoWasm)&&(i.hardDecodingNotSupportAutoWasm=i.autoWasm),Vo(i.mseWaitVideoCanplayAutoWasm)&&(i.mseWaitVideoCanplayAutoWasm=i.autoWasm)),Jo(i.aiFaceDetectLevel)&&Vo(i.aiFaceDetectWidth)){const e=ar[i.aiFaceDetectLevel];e&&(i.aiFaceDetectWidth=e)}if(Jo(i.aiObjectDetectLevel)&&Vo(i.aiObjectDetectWidth)){const e=nr[i.aiObjectDetectLevel];e&&(i.aiObjectDetectWidth=e)}xa(i.isCrypto)&&(i.isM7sCrypto=!0),this._opt=i,this.debugLog("JbPro","init"),i.videoBuffer>1e4&&this.debugWarn(this.TAG_NAME,`videoBuffer ${i.videoBuffer/1e3}s is too long, will black screen for ${i.videoBuffer/1e3}s , it is recommended to set it to less than 10s`),this._destroyed=!1,this._destroyLock=!1,this.$container=s,this._tempPlayBgObj={},this._tempVideoLastIframeInfo={},this._tempPlayerIsMute=!0,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this.events=new za(this),this._opt.isUseNewFullscreenWatermark?this.watermark=new zv(this):this.watermark=new Wv(this),this.memoryLogger=new v_(this),this.network=new __(this),this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[],this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.widthOrHeightChangeReplayDelayTimeout=null,this.streamErrorReplayDelayTimeout=null,this.streamEndReplayDelayTimeout=null,this.playbackPauseTimeout=null,this.playbackResumeTimeout=null,this.initDecoderWorkerTimeout=null,this.$loadingBgImage=null,this.$loadingBg=null,this._initOnLock(),this._initPlayer(s,i),this._initWatermark(),this._initNetwork(),this.debugLog("JbPro",'init success and version is "9-2-2024"'),console.log('JbPro Version is "9-2-2024" '+(Da(To)?"and is Trial Version[试用版本]":""))}destroy(){return new Promise(((e,t)=>{if(this.debugLog("JbPro","destroy()"),this._destroyLock)return t("JbPro is destroying");this._destroyLock=!0,this._destroyed=!0,this.off(),this._removeTimeout(),this._clearInitDecoderWorkerTimeout(),this._initOnLock(),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._removeLoadingBackgroundForIOS(),this.player?this.player.destroy().then((()=>{this.player=null,this._destroy(),this._destroyLock=!1,e()})).catch((e=>{this._destroyLock=!1,t(e)})):(this._destroy(),this._destroyLock=!1,e())}))}_removeTimeout(){this.widthOrHeightChangeReplayDelayTimeout&&(clearTimeout(this.widthOrHeightChangeReplayDelayTimeout),this.widthOrHeightChangeReplayDelayTimeout=null),this.streamErrorReplayDelayTimeout&&(clearTimeout(this.streamErrorReplayDelayTimeout),this.streamErrorReplayDelayTimeout=null),this.streamEndReplayDelayTimeout&&(clearTimeout(this.streamEndReplayDelayTimeout),this.streamEndReplayDelayTimeout=null),this.playbackPauseTimeout&&(clearTimeout(this.playbackPauseTimeout),this.playbackPauseTimeout=null),this.playbackResumeTimeout&&(clearTimeout(this.playbackResumeTimeout),this.playbackResumeTimeout=null)}_destroy(){this.events&&(this.events.destroy(),this.events=null),this.watermark&&(this.watermark.destroy(),this.watermark=null),this.network&&(this.network.destroy(),this.network=null),this.memoryLogger&&(this.memoryLogger.destroy(),this.memoryLogger=null),this.$container&&(this.$container.classList.remove("jb-pro-container"),this.$container.classList.remove("jb-pro-fullscreen-web"),Pa(this.$container,se),this.$container=null),this._tempPlayBgObj=null,this._tempVideoLastIframeInfo=null,this._isNetworkOfflinePaused=!1,this._playerOnLock=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this._tempPlayerIsMute=!0,this._resetReplayTimes(),this.debugLog("JbPro","destroy end"),this._opt={},this.debug=null}_resetReplayTimes(){this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[]}_getOriginalOpt(){const e=ka();return Object.assign({},e,this.originalOptions)}_initPlayer(e,t){this.player=new Gv(e,t),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(((t,i)=>{try{this.debugLog(this.TAG_NAME,"_resetPlayer()",JSON.stringify(e))}catch(t){this.debugLog(this.TAG_NAME,"_resetPlayer()",e)}const s=()=>{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,s(),this.debugLog(this.TAG_NAME,"_resetPlayer() end"),t()})).catch((e=>{this.debugError(this.TAG_NAME,"_resetPlayer() error",e),i(e)})):(s(),this.debugLog(this.TAG_NAME,"_resetPlayer() end"),t())}))}_bindEvents(){var e=this;Object.keys(bt).forEach((t=>{this.player.on(bt[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.player&&this.player.showTipsMessageByCode(e)})),this.player.once(At.beforeDestroy,(()=>{this.emit(At.close),this.destroy().then((()=>{})).catch((e=>{}))})),this.player.on(At.resize,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(At.fullscreen,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(At.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(At.memoryLog,(function(){e.memoryLogger.logCache(...arguments)})),this.player.on(At.downloadMemoryLog,(()=>{this.downloadMemoryLog()}))}_initWatermark(){if(this._opt.fullscreenWatermarkConfig.text=decodeURIComponent("JessibucaPro%20%E4%BD%93%E9%AA%8C"),this._opt.fullscreenWatermarkConfig.color="white",aa(this._opt.fullscreenWatermarkConfig)){const e=Ko(this.$container,this._opt.fullscreenWatermarkConfig);if(!e.watermark_txt)return void this.debugWarn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(e)}}_initNetwork(){this.network.on(At.online,(()=>{if(this.emit(At.networkState,At.online),this.isDestroyed())this.debugLog(this.TAG_NAME,"network online and JbPro is destroyed");else if(this.debugLog(this.TAG_NAME,"network online"),this._isNetworkOfflinePaused&&this._isNetworkOfflinePausedAndNextPlayConfig&&this._isNetworkOfflinePausedAndNextPlayConfig.url){const e=this._isNetworkOfflinePausedAndNextPlayConfig.url,t=this._isNetworkOfflinePausedAndNextPlayConfig.playOptions;this._streamErrorReplayTimes++;const i=this._isNetworkOfflinePausedAndNextPlayConfig.type||"unknown";this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.debugLog(this.TAG_NAME,`${i} and network online and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and reset player and play`),this.play(e,t).then((()=>{this.debugLog(this.TAG_NAME,`${i} and network online and play success`)})).catch((e=>{this.emit(At.playFailedAndPaused,_t.fetchError,{},e),this.debugError(this.TAG_NAME,`${i} and network online and play error`,e.toString(),e)}))}})),this.network.on(At.offline,(()=>{this.emit(At.networkState,At.offline),this.debugLog(this.TAG_NAME,"network offline")}))}_checkHasCreated(e){if(!e)return!1;return!!Ia(e,se)}_initOnLock(){this.webglAlignmentErrorOnLock=!1,this.webglContextLostErrorOnLock=!1,this.mediaSourceH265NotSupportOnLock=!1,this.mediaSourceFullOnLock=!1,this.mediaSourceAppendBufferErrorOnLock=!1,this.mseSourceBufferErrorOnLock=!1,this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.mseAddSourceBufferErrorOnLock=!1,this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.mediaSourceTsIsMaxDiffOnLock=!1,this.mseWidthOrHeightChangeOnLock=!1,this.mediaSourceAudioG711NotSupportOnLock=!1,this.mediaSourceAudioInitTimeoutOnLock=!1,this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.mseWorkerAddSourceBufferErrorOnLock=!1,this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.webcodecsH265NotSupportOnLock=!1,this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.webcodecsDecodeConfigureErrorOnLock=!1,this.webcodecsDecodeErrorOnLock=!1,this.wcsWidthOrHeightChangeOnLock=!1,this.webcodecsAudioNoDataTimeoutOnLock=!1,this.webcodecsAudioInitTimeoutOnLock=!1,this.simdDecodeErrorOnLock=!1,this.wasmWidthOrHeightChangeOnLock=!1,this.wasmUseVideoRenderErrorOnLock=!1,this.notSupportNewWasmOnLock=!1,this.videoElementPlayingFailedOnLock=!1,this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.networkDelayTimeoutOnLock=!1,this.flvDemuxBufferSizeTooLargeOnLock=!1,this.fetchErrorOnLock=!1,this.streamEndOnLock=!1,this.websocketErrorOnLock=!1,this.webrtcErrorOnLock=!1,this.hlsErrorOnLock=!1,this.aliyunRtcErrorOnLock=!1,this.decoderWorkerInitErrorOnLock=!1,this.decoderWorkerWasmErrorOnLock=!1,this.videoElementPlayingFailedForWebrtcOnLock=!1,this.videoInfoErrorOnLock=!1,this.playbackEndOnLock=!1,this.webrtcStreamH265OnLock=!1,this.mseWaitVideoCanplayTimeoutOnLock=!1}isDestroyed(){return this._destroyed}getOption(){return this.player?this.player.getOption():{}}setDebug(e){this.debugLog("JbPro",`setDebug() ${e}`),this._opt.debug=!!e,this.player?this.player.updateOption({debug:!!e},!0):this.debugWarn("JbPro","player is not init")}getIsDebug(){let e=!1;return this.player&&(e=this.player._opt.debug),e}mute(){this.debugLog("JbPro","mute()"),this.player&&this.player.mute(!0)}cancelMute(){this.debugLog("JbPro","cancelMute() and is mute is ",this.isMute()),this.player&&this.player.isAudioMute()&&this.player.mute(!1)}setVolume(e){this.debugLog("JbPro",`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.debugLog("JbPro","audioResume() and call cancelMute()"),this.cancelMute()}setTimeout(e){this.debugLog("JbPro",`setTimeout() ${e}`),e=Number(e),isNaN(e)?this.debugWarn("JbPro",`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.debugLog("JbPro",`setScaleMode() ${e}`),this.player?this.player.setScaleMode(e):this.debugWarn("JbPro","setScaleMode() player is null")}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{this.debugLog("JbPro",`pause() ${e}`),this.isDestroyed()&&i("JbPro is destroyed"),(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&(this._tempPlayBgObj=this._getVideoLastIframeInfo()),this._tempPlayerIsMute=this.isMute(),this._pause(e).then((e=>{t(e)})).catch((e=>{i(e)}))}))}_pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{if(this.debugLog("JbPro",`_pause() ${e}`),this.isDestroyed())return i("JbPro is destroyed");this._resetReplayTimes(),this.player?this.player.pause(e).then((e=>{t(e)})).catch((e=>{i(e)})):i("player is null")}))}close(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("JbPro is destroyed");this.debugLog("JbPro","close() and inner destroy()"),this.destroy().then((()=>{e()})).catch((e=>{t(e)}))}))}clearView(){this.debugLog("JbPro","clearView()"),this.player&&this.player.video?this.getRenderType()===H?this.player.video.clearView():this.debugWarn("JbPro","clearView","render type is video, not support clearView, please use canvas render type"):this.debugWarn("JbPro","clearView","player is null")}play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debugLog("JbPro",`play() ${e}`,JSON.stringify(t))}catch(i){this.debugLog("JbPro",`play() ${e}`,t)}if(!e&&!this._opt.url)return this.emit(At.error,_t.playError),void s("url is null and this._opt.url is null");if(e&&(e=(""+e).trim(),-1===e.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 s(`url ${e} must be "http:" or "https:" or "webrtc:" or "ws:" or "wss:" or "wt:" or "artc:" protocol`);if(Da(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 r=t.cryptoKey||this._opt.playOptions.cryptoKey,o=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.m7sCryptoKey&&(!r||!o)){const e=this._opt.m7sCryptoKey.split(".");r=wa(e[0]),o=wa(e[1])}if(!r||!o){const r=e||this._opt.url;return void this._cryptoPlay(r).then((r=>{let{cryptoIV:o,cryptoKey:a}=r;this._opt.playOptions.cryptoKey=a,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=a,this._playBefore(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}this._opt.playOptions.cryptoKey=r,this._opt.playOptions.cryptoIV=o,t.cryptoIV=o,t.cryptoKey=r}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=wa(t[0]),i=wa(t[1])}e&&i&&(this._opt.playOptions.cryptoKey=e,this._opt.playOptions.cryptoIV=i,t.cryptoIV=i,t.cryptoKey=e)}else if(this._opt.isSm4Crypto){let e=t.cryptoKey||this._opt.playOptions.cryptoKey,i=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.sm4CryptoKey&&(!e||!i)){const t=this._opt.sm4CryptoKey.split(".");2===t.length&&(e=Sl(t[0]),i=Sl(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=>{s(e)}))}))}_playBefore(e,t){return new Promise(((i,s)=>{if(this.player)if(e)if(this._opt.url)if(e===this._opt.url)if(this.player.playing)this.debugLog("JbPro","_playBefore","playing and resolve()"),i();else{this.debugLog("JbPro","_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)),Da(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore this.player.play error",e),this.emit(At.crashLog,this.getCrashLog("this.player.play 1",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e),s(e)}))}else{this.debugLog("JbPro","_playBefore",`\n this._url.url is ${this._opt.url}\n and new url is ${e}\n and destroy and play new url`);const r=this._getOriginalOpt();this._resetPlayer(r).then((()=>{this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(At.crashLog,this.getCrashLog("this.player.play 2",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e)}))}else this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(At.crashLog,this.getCrashLog("this.player.play 3",e)),s(e)}));else{let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj)),Da(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(At.crashLog,this.getCrashLog("this.player.play 4",e)),s(e)}))})).catch((e=>{this.debugError("JbPro","_resetPlayer error",e)}))}else e?this._play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(At.crashLog,this.getCrashLog("this.player.play 5",e)),s(e)})):this._play(this._opt.url,this._opt.playOptions).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_playBefore _play error",e),this.emit(At.crashLog,this.getCrashLog("this.player.play 6",e)),s(e)}))}))}_cryptoPlay(e){return new Promise(((t,i)=>{const s=function(e){const t=(e||document.location.toString()).split("//"),i=t[1].indexOf("/");let s=t[1].substring(i);return-1!=s.indexOf("?")&&(s=s.split("?")[0]),s}(e);let r=this._opt.cryptoKeyUrl,o="";const a=Sa(e);if(r){if(o=r,this._opt.isM7sCrypto&&-1===o.indexOf("/crypto/?stream=")){const e=Sa(r);o=e.origin+ie+`?stream=${s}`}}else r=a.origin+ie,o=r+`?stream=${s}`;var n;this.player.debugLog("JbPro",`_cryptoPlay() cryptoKeyUrl: ${o} and opt.cryptoKeyUrl: ${this._opt.cryptoKeyUrl}`),(n=o,new Promise(((e,t)=>{Jl.get(n).then((t=>{e(t)})).catch((e=>{t(e)}))}))).then((e=>{if(e){const s=e.split("."),r=wa(s[0]),o=wa(s[1]);o&&r?t({cryptoIV:o,cryptoKey:r}):i("get cryptoIV or cryptoKey error")}else i(`cryptoKeyUrl: getM7SCryptoStreamKey ${o} res is null`)})).catch((e=>{i(e)}))}))}playback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.isDestroyed())return s("JbPro is destroyed");try{this.debugLog("JbPro",`playback() ${e}, options: `,JSON.stringify(t))}catch(i){this.debugLog("JbPro",`playback() ${e}, options: `,t)}if(Da(this._opt.isLive))return s("this._opt.isLive is false, can not playback");const r=La(),o=Object.assign({},r.playbackConfig,this._opt.playbackConfig,t);Da(o.isUseFpsRender)&&o.isCacheBeforeDecodeForFpsRender&&(o.isCacheBeforeDecodeForFpsRender=!1,this.debugWarn("JbPro","playbackConfig.isUseFpsRender is false, isCacheBeforeDecodeForFpsRender can not be ture, isCacheBeforeDecodeForFpsRender is set to false")),0===o.rateConfig.length&&o.showRateBtn&&(o.showRateBtn=!1,this.debugWarn("JbPro","playbackConfig.rateConfig.length is 0, showRateBtn can not be ture, showRateBtn is set to false")),o.controlType,X.simple,this._resetPlayer({videoBuffer:0,playbackConfig:o,playType:w,openWebglAlignment:!0,useMSE:o.useMSE,useWCS:o.useWCS,useSIMD:!0}).then((()=>{this.play(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}))}playbackPause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro",`playbackPause() ${e}`),this._opt.playType===v?Promise.reject("playType is player, can not call playbackPause method"):new Promise(((t,i)=>{if(!this.player)return i("player is null");xa(e)?this._pause().then((()=>{t()})).catch((e=>{i(e)})):(this.player.playbackPause=!0,this.player.recording=!1,this.player.zooming=!1,this.playbackPauseTimeout=setTimeout((()=>{this.playbackPauseTimeout=null,t()}),100))})))}playbackResume(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro","playbackResume()"),this._opt.playType===v?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,this.playbackResumeTimeout=setTimeout((()=>{this.playbackResumeTimeout=null,e()}),100)})))}forward(e){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):(this.debugLog("JbPro",`forward() ${e}`),Da(this._opt.isLive)||this._opt.playType===v?(this.debugLog("JbPro",`forward() and this._opt.isLive is ${this._opt.isLive} and this._opt.playType is ${this._opt.playType}`),Promise.reject("forward() method only just for playback type")):No(Number(e))?new Promise(((t,i)=>{this.player?(e=bo(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&&Da(this.player.isPlaybackPauseNotClearCacheAndCacheBeforeDecodeAndUseFpsRender())&&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.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((t,i)=>{this.forward(e).then((()=>{t()})).catch((e=>{i(e)}))}))}normal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.forward(1).then((()=>{e()})).catch((e=>{t(e)}))}))}playbackNormal(){return this.isDestroyed()?Promise.reject("JbPro is destroyed"):new Promise(((e,t)=>{this.normal().then((()=>{e()})).catch((e=>{t(e)}))}))}updatePlaybackForwardMaxRateDecodeIFrame(e){this.isDestroyed()||(this.debugLog("JbPro",`updatePlaybackForwardMaxRateDecodeIFrame() ${e}`),e=Number(e),e=bo(e=parseInt(e,10),1,8),this._opt.playbackForwardMaxRateDecodeIFrame=e,this.player?this.player.updateOption({playbackForwardMaxRateDecodeIFrame:e},!0):this.debugWarn("JbPro","updatePlaybackForwardMaxRateDecodeIFrame() player is null"))}setPlaybackStartTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setPlaybackStartTime() ${e}`);const t=ra(e);this.player?this.player.isPlayback()?t<10&&0!==e&&this.player.playback.isControlTypeNormal()?this.debugWarn("JbPro",`setPlaybackStartTime() control type is normal and timestamp: ${e} is not valid`):this.player.playback.isControlTypeSimple()&&e>this.player.playback.totalDuration?this.debugWarn("JbPro",`setPlaybackStartTime() control type is simple and timestamp: ${e} is more than ${this.player.playback.totalDuration}`):this.player.playing&&(this.player.playback.isControlTypeNormal()&&10===t&&(e*=1e3),this.player.playback.setStartTime(e),this.playbackClearCacheBuffer()):this.debugWarn("JbPro","setPlaybackStartTime() playType is not playback"):this.debugWarn("JbPro","setPlaybackStartTime() player is null")}setPlaybackShowPrecision(e){this.isDestroyed()||(this.debugLog("JbPro",`setPlaybackShowPrecision() ${e}`),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.setShowPrecision(e):this.debugWarn("JbPro","control type is not normal , not support!"):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}playbackCurrentTimeScroll(){this.isDestroyed()||(this.debugLog("JbPro","playbackCurrentTimeScroll()"),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.currentTimeScroll():this.debugWarn("JbPro","control type is not normal , not support!"):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}playbackClearCacheBuffer(){this.isDestroyed()||(this.debugLog("JbPro","playbackClearCacheBuffer()"),this.player?this.player.isPlayback()?(this.player.video&&this.player.video.clear(),this.player.audio&&this.player.audio.clear(),this.clearBufferDelay()):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}getPlaybackCurrentRate(){return this.player?this.player.isPlayback()?this.player.getPlaybackRate():(this.debugWarn("JbPro","playType is not playback"),1):(this.debugWarn("JbPro","player is null"),1)}updatePlaybackLocalOneFrameTimestamp(e){this.isDestroyed()||(this.debugLog("JbPro",`updatePlaybackLocalOneFrameTimestamp() ${e}`),this.player?this.player.isPlayback()?this.player.playback.updateLocalOneFrameTimestamp(e):this.debugWarn("JbPro","playType is not playback"):this.debugWarn("JbPro","player is null"))}setStreamQuality(e){if(this.isDestroyed())return;if(this.debugLog("JbPro",`setStreamQuality() ${e}`),!this.player)return void this.debugWarn("JbPro","player is null");if(!this.player._opt.operateBtns.quality)return void this.debugWarn("JbPro","player._opt.operateBtns.quality is false");(this.player._opt.qualityConfig||[]).includes(e)?this.player.streamQuality=e:this.debugWarn("JbPro",`quality: ${e} is not in qualityList`)}_play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!this.player)return s("player is null");let r=!1;this._opt.url&&this._opt.url!==e&&(r=!0),this._opt.url=e,this._opt.playOptions=t;const o=e.split("?")[0],p=o.startsWith("http://")||o.startsWith("https://"),f=o.startsWith("webrtc://"),m=o.startsWith("artc://"),g=o.startsWith("wt://"),y=o.startsWith("ws://")||o.startsWith("wss://"),A=p||y,b=p&&o.endsWith(".m3u8"),v=A&&o.endsWith(".flv"),_=A&&(o.endsWith(".fmp4")||o.endsWith(".mp4")),w=A&&o.endsWith(".mpeg4"),S=A&&(o.endsWith(".h264")||o.endsWith(".h265")),E=A&&o.endsWith(".ts");let T=this._opt.isWebrtcForZLM||!1,F=this._opt.isWebrtcForSRS||!1,U=this._opt.isWebrtcForOthers||!1;f&&(-1!==e.indexOf("/index/api/webrtc")?(T=!0,F=!1,U=!1):-1!==e.indexOf("/rtc/v1/play/")&&(F=!0,T=!1,U=!1));let O=null,N=null;if(v&&Da(this._opt.isFlv)&&this._resetDemuxType("isFlv"),_&&Da(this._opt.isFmp4)&&this._resetDemuxType("isFmp4"),w&&Da(this._opt.isMpeg4)&&this._resetDemuxType("isMpeg4"),S&&Da(this._opt.isNakedFlow)&&this._resetDemuxType("isNakedFlow"),E&&Da(this._opt.isTs)&&this._resetDemuxType("isTs"),p?O=b?l:n:g?O=h:f?O=d:m?O=c:y&&(O=a),this._opt.isNakedFlow?N=R:this._opt.isFmp4?N=I:this._opt.isMpeg4?N=P:this._opt.isFlv?N=k:this._opt.isTs?N=M:b?N=C:f?N=x:m?N=B:g?N=D:y&&(N=L),!O||!N)return this._opt.playFailedAndPausedShowMessage&&this.showErrorMessageTips("url is not support"),s(`play url ${e} is invalid, protocol is ${u[O]}, demuxType is ${N}`);this.debugLog("JbPro",`play url ${e} protocol is ${u[O]}, demuxType is ${N}`);const j=()=>{this.player.on(_t.webglAlignmentError,this._handleWebglAlignmentError.bind(this)),this.player.on(_t.webglContextLostError,this._handleWebglContextLostError.bind(this)),this.player.on(_t.mediaSourceH265NotSupport,this._handleMediaSourceH265NotSupport.bind(this)),this.player.on(_t.mseWaitVideoCanplayTimeout,this._handleMseWaitVideoCanplayTimeout.bind(this)),this.player.on(_t.mediaSourceFull,this._handleMediaSourceFull.bind(this)),this.player.on(_t.mediaSourceAppendBufferError,this._handleMediaSourceAppendBufferError.bind(this)),this.player.on(_t.mseSourceBufferError,this._handleMseSourceBufferError.bind(this)),this.player.on(_t.mediaSourceBufferedIsZeroError,this._handleMediaSourceBufferedIsZeroError.bind(this)),this.player.on(_t.mseAddSourceBufferError,this._handleMseAddSourceBufferError.bind(this)),this.player.on(_t.mediaSourceDecoderConfigurationError,this._handleMediaSourceDecoderConfigurationError.bind(this)),this.player.on(_t.mediaSourceTsIsMaxDiff,this._handleMediaSourceTsIsMaxDiff.bind(this)),this.player.on(_t.mseWidthOrHeightChange,this._handleMseWidthOrHeightChange.bind(this)),this.player.on(_t.mediaSourceAudioG711NotSupport,this._handleMediaSourceAudioG711NotSupport.bind(this)),this.player.on(_t.mediaSourceAudioInitTimeout,this._handleMediaSourceAudioInitTimeout.bind(this)),this.player.once(_t.mediaSourceAudioNoDataTimeout,this._handleMediaSourceAudioNoDataTimeout.bind(this)),this.player.on(_t.mseWorkerAddSourceBufferError,this._handleMseWorkerAddSourceBufferError.bind(this)),this.player.on(_t.mediaSourceUseCanvasRenderPlayFailed,this._handleMediaSourceUseCanvasRenderPlayFailed.bind(this)),this.player.on(_t.webcodecsH265NotSupport,this._handleWebcodecsH265NotSupport.bind(this)),this.player.on(_t.webcodecsUnsupportedConfigurationError,this._handleWebcodecsUnsupportedConfigurationError.bind(this)),this.player.on(_t.webcodecsDecodeConfigureError,this._handleWebcodecsDecodeConfigureError.bind(this)),this.player.on(_t.webcodecsDecodeError,this._handleWebcodecsDecodeError.bind(this)),this.player.on(_t.wcsWidthOrHeightChange,this._handleWcsWidthOrHeightChange.bind(this)),this.player.on(_t.webcodecsAudioNoDataTimeout,this._handleWebcodecsAudioNoDataTimeout.bind(this)),this.player.on(_t.webcodecsAudioInitTimeout,this._handleWebcodecsAudioInitTimeout.bind(this)),this.player.on(_t.simdDecodeError,this._handleSimdDecodeError.bind(this)),this.player.on(_t.wasmWidthOrHeightChange,this._handleWasmWidthOrHeightChange.bind(this)),this.player.on(_t.wasmUseVideoRenderError,this._handleWasmUseVideoRenderError.bind(this)),this.player.on(_t.notSupportNewWasm,this._handleNotSupportNewWasm.bind(this)),this.player.on(_t.videoElementPlayingFailed,this._handleVideoElementPlayingFailed.bind(this)),this.player.on(_t.simdH264DecodeVideoWidthIsTooLarge,this._handleSimdH264DecodeVideoWidthIsTooLarge.bind(this)),this.player.on(At.networkDelayTimeout,this._handleNetworkDelayTimeout.bind(this)),this.player.on(At.flvDemuxBufferSizeTooLarge,this._handleFlvDemuxBufferSizeTooLarge.bind(this)),this.player.on(_t.fetchError,this._handleFetchError.bind(this)),this.player.on(At.streamEnd,this._handleStreamEnd.bind(this)),this.player.on(_t.websocketError,this._handleWebsocketError.bind(this)),this.player.on(_t.webrtcError,this._handleWebrtcError.bind(this)),this.player.on(_t.hlsError,this._handleHlsError.bind(this)),this.player.on(_t.aliyunRtcError,this._handleAliyunRtcError.bind(this)),this.player.on(_t.decoderWorkerInitError,this._handleDecoderWorkerInitError.bind(this)),this.player.on(_t.decoderWorkerWasmError,this._handleDecoderWorkerWasmError.bind(this)),this.player.on(_t.videoElementPlayingFailedForWebrtc,this._handleVideoElementPlayingFailedForWebrtc.bind(this)),this.player.on(_t.videoInfoError,this._handleVideoInfoError.bind(this)),this.player.on(At.webrtcStreamH265,this._handleWebrtcStreamH265.bind(this)),this.player.on(At.playbackEnd,this._handlePlaybackEnd.bind(this)),this.player.on(At.delayTimeout,this._handleDelayTimeout.bind(this)),this.player.on(At.loadingTimeout,this._handleLoadingTimeout.bind(this)),this._hasLoaded()?(this.debugLog(this.TAG_NAME,"_playNext and _hasLoaded() is true"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","_hasLoaded() and play error",e),this.emit(At.crashLog,this.getCrashLog("_hasLoaded() and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debugError("JbPro","_hasLoaded() and play error and next pause error",e)}))}))):(this.debugLog(this.TAG_NAME,"_playNext and waiting decoderWorkerInit callback"),this._checkInitDecoderWorkerTimeout(),this.player.once(At.decoderWorkerInit,(()=>{this._clearInitDecoderWorkerTimeout(),this.isDestroyed()?this.debugLog("JbPro","decoderWorkerInit but player is destroyed"):(this.debugLog(this.TAG_NAME,"_playNext and decoderWorkerInit callback and next play"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debugError("JbPro","decoderWorkerInit and play error",e),this.emit(At.crashLog,this.getCrashLog("decoderWorkerInit and play error",e)),this.player&&this.player.pause().then((()=>{s(e)})).catch((e=>{s(e),this.debugError("JbPro","decoderWorkerInit and play error and next pause error",e)}))})))})))},G=this.player.getOption(),W=b&&Da(this._opt.supportHls265),z=f&&Da(this._opt.isWebrtcH265),$=b&&!!fa(),V=b&&G.demuxUseWorker;if(W||z||m||r||w||$||V)this.debugLog("JbPro",`need reset player and\n isOldHls is ${W} and isOldWebrtc is ${z} and\n isAliyunRtc is ${m} and\n needResetPlayer(url change) is ${r} and\n isMpeg4 is ${w} and\n isHlsCanVideoPlay is ${$} and\n isHlsButDemuxUseWorker is ${V}`),this._resetPlayer({protocol:O,demuxType:N,isHls:b,isWebrtc:f,isWebrtcForZLM:T,isWebrtcForSRS:F,isWebrtcForOthers:U,isAliyunRtc:m,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||"",url:e,playOptions:t}).then((()=>{j()})).catch((e=>{s("reset player error")}));else{const e={protocol:O,demuxType:N,isHls:b,isWebrtc:f,isAliyunRtc:m,isFlv:this._opt.isFlv,isFmp4:this._opt.isFmp4,isMpeg4:this._opt.isMpeg4,isNakedFlow:this._opt.isNakedFlow,isTs:this._opt.isTs,cryptoKey:t.cryptoKey||"",cryptoIV:t.cryptoIV||""};this._opt.isNakedFlow&&(e.mseDecodeAudio=!1,e.wcsDecodeAudio=!1),this.player.updateOption(e),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.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)}resize(){this.isDestroyed()||(this.debugLog("JbPro","resize()"),this.player&&this.player.resize())}setBufferTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setBufferTime() ${e}`),(e=Number(e))>10&&this.debugWarn("JbPro",`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.debugWarn("JbPro","setBufferTime() player is null")}setBufferDelayTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setBufferDelayTime() ${e}`),(e=Number(e))<.2&&this.debugWarn("JbPro",`setBufferDelayTime() buffer time delay is ${e} second, is too small`);const t=1e3*(e=bo(e,.2,100));this._opt.videoBufferDelay=t,this.player?this.player.updateOption({videoBufferDelay:t},!0):this.debugWarn("JbPro","setBufferDelayTime() player is null")}setRotate(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.setRotate(e):this.debugWarn("JbPro","setRotate() player is null")):this.debugWarn("JbPro",`setRotate() rotate is ${e} and this._opt.rotate is ${this._opt.rotate}`)}setMirrorRotate(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.debugWarn("JbPro","setMirrorRotate() player is null")):this.debugWarn("JbPro",`setMirrorRotate() mirrorRotate is ${e} and this._opt.mirrorRotate is ${this._opt.mirrorRotate}`)}setAspectRatio(e){if(this.isDestroyed())return;this.debugLog("JbPro",`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.debugWarn("JbPro","setAspectRatio() player is null")):this.debugWarn("JbPro",`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.isDestroyed()||(this.debugLog("JbPro","setKeepScreenOn()"),this._opt.keepScreenOn=!0,this.player?this.player.updateOption({keepScreenOn:!0}):this.debugWarn("JbPro","setKeepScreenOn() player is not ready"))}setFullscreen(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setFullscreen() ${e}`);const t=!!e;this.player?this.player.fullscreen!==t?this.player.fullscreen=t:this.debugWarn("JbPro",`setFullscreen() fullscreen is ${t} and this.player.fullscreen is ${this.player.fullscreen}`):this.debugWarn("JbPro","setFullscreen() player is not ready")}setWebFullscreen(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setWebFullscreen() ${e}`);const t=!!e;this.player?this.player.webFullscreen=t:this.debugWarn("JbPro","setWebFullscreen() player is not ready")}screenshot(e,t,i,s){if(!this.isDestroyed())return this.debugLog("JbPro",`screenshot() ${e} ${t} ${i} ${s}`),this.player&&this.player.video?this.player.video.screenshot(e,t,i,s):(this.debugWarn("JbPro","screenshot() player is not ready"),null)}screenshotWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debugLog("JbPro","screenshotWatermark()",e),this.player&&this.player.video?this.player.video.screenshotWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debugWarn("JbPro","screenshotWatermark() player is not ready"),i("player is not ready"))}))}screenshotCopyrightWatermark(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");this.debugLog("JbPro","screenshotCopyrightWatermark()",e),this.player&&this.player.video?this.player.video.screenshotCopyrightWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debugWarn("JbPro","screenshotCopyrightWatermark() player is not ready"),i("player is not ready"))}))}startRecord(e,t){return new Promise(((i,s)=>this.isDestroyed()?s("player is destroyed"):(this.debugLog("JbPro",`startRecord() ${e} ${t}`),this.player?void(this.player.playing?(this.player.startRecord(e,t),i()):(this.debugWarn("JbPro","startRecord() player is not playing"),s("not playing"))):(this.debugWarn("JbPro","startRecord() player is not ready"),s("player is not ready")))))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{if(this.isDestroyed())return s("player is destroyed");this.debugLog("JbPro",`stopRecordAndSave() ${e} ${t}`),this.player&&this.player.recording?this.player.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{s(e)})):s("not recording")}))}cancelRecord(){return new Promise(((e,t)=>this.isDestroyed()?t("player is destroyed"):(this.debugLog("JbPro","cancelRecord()"),this.player?void this.player.cancelRecord().then((()=>{e()})).catch((e=>{t(e)})):(this.debugWarn("JbPro","cancelRecord() player is not ready"),t("player is not ready")))))}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===v?e=!this.isPlaying()&&!this.isLoading():this._opt.playType===w&&this.player&&(e=this.player.playbackPause),e}isPaused(){return this.isPause()}isPlaybackPause(){let e=!1;return this._opt.playType===w&&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.isDestroyed()||(this.debugLog("JbPro","clearBufferDelay()"),this.player?this.player.clearBufferDelay():this.debugWarn("JbPro","clearBufferDelay() player is not init"))}setNetworkDelayTime(e){if(this.isDestroyed())return;this.debugLog("JbPro",`setNetworkDelayTime() ${e}`),(e=Number(e))<1&&this.debugWarn("JbPro",`setNetworkDelayTime() network delay is ${e} second, is too small`);const t=1e3*(e=bo(e,1,100));this._opt.networkDelay=t,this.player?this.player.updateOption({networkDelay:t},!0):this.debugWarn("JbPro","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=Cs;return this.player&&(e=this.player.loading?Ts:this.player.playing?ks:Ls),e}getPlayType(){return this.player?this.player._opt.playType:v}togglePerformancePanel(e){if(this.isDestroyed())return;this.debugLog("JbPro",`togglePerformancePanel() ${e}`);const t=this.player._opt.showPerformance;let i=!t;Ho(e)&&(i=e),i!==t?this.player?this.player.togglePerformancePanel(i):this.debugWarn("JbPro","togglePerformancePanel() failed, this.player is not init"):this.debugWarn("JbPro",`togglePerformancePanel() failed, showPerformance is prev: ${t} === now: ${i}`)}openZoom(){if(!this.isDestroyed())if(this.debugLog("JbPro","openZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debugWarn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!0}else this.debugWarn("JbPro","openZoom() failed, this.player is not init")}closeZoom(){if(!this.isDestroyed())if(this.debugLog("JbPro","closeZoom()"),this.player){if(this.player.isDestroyedOrClosed())return void this.debugWarn("JbPro","openZoom() failed, this.player is destroyed or paused");this.player.zooming=!1}else this.debugWarn("JbPro","closeZoom() failed, this.player is not init")}isZoomOpen(){let e=!1;return this.player&&(e=this.player.zooming),e}toggleZoom(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleZoom() ${e}`),Ho(e)||(e=!this.isZoomOpen()),xa(e)?this.openZoom():Da(!1)&&this.closeZoom())}expandZoom(){this.isDestroyed()||(this.debugLog("JbPro","expandZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.expandPrecision():this.debugWarn("JbPro","expandZoom() failed, zoom is not open or not init"))}narrowZoom(){this.isDestroyed()||(this.debugLog("JbPro","narrowZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.narrowPrecision():this.debugWarn("JbPro","narrowZoom failed, zoom is not open or not init"))}updateCurrentZoom(e){this.isDestroyed()||(this.debugLog("JbPro","updateCurrentZoom()",e),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.updateCurrentZoom(e):this.debugWarn("JbPro","narrowZoom failed, zoom is not open or not init"))}getCurrentZoomIndex(){if(this.isDestroyed())return;let e=1;return this.player&&this.player.zoom&&(e=this.player.zoom.currentZoom),e}setNakedFlowFps(e){return new Promise(((t,i)=>{if(this.isDestroyed())return i("player is destroyed");if(this.debugLog("JbPro","setNakedFlowFps()",e),Vo(e))return i("setNakedFlowFps() fps is empty");let s=Number(e);s=bo(s,1,100),this._opt.nakedFlowFps=s,this.player?this.player.updateOption({nakedFlowFps:s}):this.debugWarn("JbPro","setNakedFlowFps() player is null"),t()}))}getCrashLog(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!this.player)return;const i=this.player.getAllStatsData(),s=this.player;let r={url:this._opt.url,playType:s.isPlayback()?"playback":"live",demuxType:s.getDemuxType(),decoderType:s.getDecodeType(),renderType:s.getRenderType(),videoInfo:{encType:"",width:"",height:""},audioInfo:{encType:"",sampleRate:"",channels:""},audioEngine:s.getAudioEngineType(),allTimes:i.pTs,timestamp:Ao(),type:e,error:va(t)||e};if(s.video){const e=s.video.videoInfo||{};r.videoInfo={encType:e.encType||"",width:e.width||"",height:e.height||""}}if(s.audio){const e=s.audio.audioInfo||{};r.audioInfo={encType:e.encType||"",sampleRate:e.sampleRate||"",channels:e.channels||""}}return r}updateDebugLevel(e){this.isDestroyed()||(this.debugLog("JbPro","updateDebugLevel()",e),e===q||e===K?e!==this.player._opt.debugLevel?(this._opt.debugLevel=e,this.player?this.player.updateOption({debugLevel:e},!0):this.debugWarn("JbPro","updateDebugLevel() player is null")):this.debugWarn("JbPro",`updateDebugLevel() level is same, level: ${e}`):this.debugWarn("JbPro",`updateDebugLevel() level is not valid, level: ${e}`))}updateWatermark(e){this.isDestroyed()||(this.debugLog("JbPro","updateWatermark()",e),this.player?this.player.updateWatermark(e):this.debugWarn("JbPro","updateWatermark() player is not init"))}removeWatermark(){this.isDestroyed()||(this.debugLog("JbPro","removeWatermark()"),this.player?this.player.removeWatermark():this.debugWarn("JbPro","removeWatermark() player is not init"))}updateFullscreenWatermark(e){if(!this.isDestroyed())if(this.debugLog("JbPro","updateFullscreenWatermark()",e),aa(e)){this._opt.fullscreenWatermarkConfig=e;const t=Ko(this.$container,e);if(!t.watermark_txt)return void this.debugWarn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(t)}else this.debugWarn("JbPro",`updateFullscreenWatermark() config is not valid, config: ${e}`)}removeFullscreenWatermark(){this.isDestroyed()||(this.debugLog("JbPro","removeFullscreenWatermark()"),this.watermark?this.watermark.remove():this.debugWarn("JbPro","removeFullscreenWatermark() watermark is not init"))}faceDetectOpen(){this.isDestroyed()||(this.debugLog("JbPro","faceDetectOpen()"),this.player?this.player.faceDetect(!0):this.debugWarn("JbPro","faceDetectOpen() player is not init"))}faceDetectClose(){this.isDestroyed()||(this.debugLog("JbPro","faceDetectClose()"),this.player?this.player.faceDetect(!1):this.debugWarn("JbPro","faceDetectClose() player is not init"))}objectDetectOpen(){this.isDestroyed()||(this.debugLog("JbPro","objectDetectOpen()"),this.player?this.player.objectDetect(!0):this.debugWarn("JbPro","objectDetectOpen() player is not init"))}objectDetectClose(){this.isDestroyed()||(this.debugLog("JbPro","objectDetectClose()"),this.player?this.player.objectDetect(!1):this.debugWarn("JbPro","objectDetectClose() player is not init"))}sendWebsocketMessage(e){this.isDestroyed()||(this.debugLog("JbPro","sendWebsocketMessage()",e),this.player?this.player.sendWebsocketMessage(e):this.debugWarn("JbPro","sendWebsocketMessage() player is not init"))}addContentToCanvas(e){this.isDestroyed()||(this.debugLog("JbPro","addContentToCanvas()"),this.player?this.player.addContentToCanvas(e):this.debugWarn("JbPro","addContentToCanvas() player is not init"))}clearContentToCanvas(){this.isDestroyed()||(this.debugLog("JbPro","clearContentToCanvas()"),this.player?this.player.addContentToCanvas([]):this.debugWarn("JbPro","clearContentToCanvas() player is not init"))}addContentToContainer(e){this.isDestroyed()||(this.debugLog("JbPro","addContentToContainer()"),this.player?this.player.addContentToContainer(e):this.debugWarn("JbPro","addContentToContainer() player is not init"))}clearContentToContainer(){this.isDestroyed()||(this.debugLog("JbPro","clearContentToContainer()"),this.player?this.player.addContentToContainer([]):this.debugWarn("JbPro","clearContentToContainer() player is not init"))}setControlHtml(e){this.isDestroyed()||(this.debugLog("JbPro","setControlHtml()",e),this.player?this.player.setControlHtml(e):this.debugWarn("JbPro","setControlHtml() player is not init"))}clearControlHtml(){this.isDestroyed()||(this.debugLog("JbPro","clearControlHtml()"),this.player?this.player.clearControlHtml():this.debugWarn("JbPro","clearControlHtml() player is not init"))}toggleControlHtml(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleControlHtml() ${e}`),this.player?this.player.toggleControlHtml(e):this.debugWarn("JbPro","toggleControlHtml() player is not init"))}getControlHtmlIsShow(){return!!this.player&&this.player.getControlHtmlIsShow()}getControlHtml(){return this.player?this.player.getControlHtml():null}setExtendHtml(e){this.isDestroyed()||(this.debugLog("JbPro","setExtendHtml()",e),this.player?this.player.setExtendHtml(e):this.debugWarn("JbPro","setExtendHtml() player is not init"))}clearExtendHtml(){this.isDestroyed()||(this.debugLog("JbPro","clearExtendHtml()"),this.player?this.player.clearExtendHtml():this.debugWarn("JbPro","clearExtendHtml() player is not init"))}toggleExtendHtml(e){this.isDestroyed()||(this.debugLog("JbPro",`toggleExtendHtml() ${e}`),this.player?this.player.toggleExtendHtml(e):this.debugWarn("JbPro","toggleExtendHtml() player is not init"))}getExtendHtmlIsShow(){return!!this.player&&this.player.getExtendHtmlIsShow()}getExtendHtml(){return this.player?this.player.getExtendHtml():null}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){if(this.isDestroyed())return;this.debugLog("JbPro","setSm4CryptoKey()",e);const t=(e=""+e).split(".");if(32!==e.length&&2!==t.length)return void this.debugWarn("JbPro",`setSm4CryptoKey() key is invalid and length is ${e.length} !== 32`);if(2===t.length&&(32!==t[0].length||32!==t[1].length))return void this.debugWarn("JbPro",`setSm4CryptoKey() key is invalid and key length is ${t[0].length} !== 32 or iv length ${t[1].length} !== 32`);this._opt.sm4CryptoKey=e;let i=2===t.length;if(i&&(this._opt.playOptions.cryptoKey=Sl(t[0]),this._opt.playOptions.cryptoIV=Sl(t[1])),this.player){const t={sm4CryptoKey:e};i&&(t.cryptoKey=this._opt.playOptions.cryptoKey,t.cryptoIV=this._opt.playOptions.cryptoIV),this.player.updateOption(t,!0)}else this.debugWarn("JbPro","setSm4CryptoKey() player is null")}setM7sCryptoKey(e){this.isDestroyed()||(this.debugLog("JbPro","setM7sCryptoKey()",e),e=""+e,this._opt.m7sCryptoKey=e,this.player?this.player.updateOption({m7sCryptoKey:e},!0):this.debugWarn("JbPro","setM7sCryptoKey() player is null"))}setXorCryptoKey(e){this.isDestroyed()||(this.debugLog("JbPro","setXorCryptoKey()",e),e=""+e,this._opt.xorCryptoKey=e,this.player?this.player.updateOption({xorCryptoKey:e},!0):this.debugWarn("JbPro","setXorCryptoKey() player is null"))}updateLoadingText(e){this.isDestroyed()||(this.debugLog("JbPro","updateLoadingText()",e),this.player?this.player.updateLoadingText(e):this.debugWarn("JbPro","updateLoadingText() player is null"))}updateIsEmitSEI(e){this.isDestroyed()||(this.debugLog("JbPro","updateIsEmitSEI()",e),this._opt.isEmitSEI=e,this.player?this.player.updateOption({isEmitSEI:e},!0):this.debugWarn("JbPro","updateIsEmitSEI() player is null"))}getPTZCmd(e,t){return this.debugLog("JbPro","getPTZCmd()",e),e?this.player?f_({type:e,index:0,speed:t}):(this.debugWarn("JbPro","getPTZCmd() player is null"),null):(this.debugWarn("JbPro","getPTZCmd() ptz is null"),null)}downloadTempNakedFlowFile(){return new Promise(((e,t)=>{this.player?(this.player.downloadNakedFlowFile(),e()):t("player is not init")}))}downloadTempFmp4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadFmp4File(),e()):t("player is not init")}))}downloadTempMpeg4File(){return new Promise(((e,t)=>{if(this.isDestroyed())return t("player is destroyed");this.player?(this.player.downloadMpeg4File(),e()):t("player is not init")}))}downloadMemoryLog(){this.isDestroyed()||this.memoryLogger&&this.memoryLogger.download()}_getVideoLastIframeInfo(){const e=this.getVideoInfo()||{},t={loadingBackground:this.screenshot("","png",.92,"base64"),loadingBackgroundWidth:e.width||0,loadingBackgroundHeight:e.height||0};return t.loadingBackground&&t.loadingBackgroundWidth&&t.loadingBackgroundHeight&&(this._tempVideoLastIframeInfo=t),this._tempVideoLastIframeInfo||{}}getExtendBtnList(){this.debugLog("JbPro","getExtendBtnList()");let e=[];return this.player?e=this.player.getExtendBtnList():this.debugWarn("JbPro","getExtendBtnList() player is null"),e}getFlvMetaData(){this.debugLog("JbPro","getFlvMetaData()");let e=null;return this.player?e=this.player.getMetaData():this.debugWarn("JbPro","getFlvMetaData() player is null"),e}updateAiFaceDetectInterval(e){if(this.isDestroyed())return;this.debugLog("JbPro","updateAiFaceDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiFaceDetectInterval=t,this.player?this.player.updateOption({aiFaceDetectInterval:t}):this.debugWarn("JbPro","updateAiFaceDetectInterval() player is null")}updateAiFaceDetectLevel(e){if(this.isDestroyed())return;if(this.debugLog("JbPro","updateAiFaceDetectLevel()",e),!ar[e])return void this.debugWarn("JbPro",`'updateAiFaceDetectLevel() level ${e} is invalid'`);const t=ar[e];this._opt.aiFaceDetectWidth=t,this.player?(this.player.updateOption({aiFaceDetectWidth:t}),this.player.ai&&this.player.ai.updateFaceDetectorConfig({detectWidth:t})):this.debugWarn("JbPro","updateAiFaceDetectLevel() player is null")}updateAiObjectDetectInterval(e){if(this.isDestroyed())return;this.debugLog("JbPro","updateAiObjectDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiObjectDetectInterval=t,this.player?this.player.updateOption({aiObjectDetectInterval:t}):this.debugWarn("JbPro","updateAiObjectDetectInterval() player is null")}updateAiObjectDetectLevel(e){if(this.isDestroyed())return;if(this.debugLog("JbPro","updateAiObjectDetectLevel()",e),!nr[e])return void this.debugWarn("JbPro",`'updateAiObjectDetectLevel() level ${e} is invalid'`);const t=nr[e];this._opt.aiObjectDetectWidth=t,this.player?(this.player.updateOption({aiObjectDetectWidth:t}),this.player.ai&&this.player.ai.updateObjectDetectorConfig({detectWidth:t})):this.debugWarn("JbPro","updateAiObjectDetectLevel() player is null")}setCryptoKeyUrl(e){this.isDestroyed()||(this.debugLog("JbPro","setCryptoKeyUrl()",e),e&&(this._opt.cryptoKeyUrl=e))}showErrorMessageTips(e){this.isDestroyed()||(this.debugLog("JbPro","showErrorMessageTips()",e),e&&(this.player?this.player.showTipsMessageByContent(e):this.debugWarn("JbPro","showErrorMessageTips() player is null")))}setPtzPosition(e){this.debugLog("JbPro","setPtzPosition()",e),e&&!oa(e)&&(this.player?this.player.setPtzPosition(e):this.debugWarn("JbPro","setPtzPosition() player is null"))}hideErrorMessageTips(){this.isDestroyed()||(this.debugLog("JbPro","hideErrorMessageTips()"),this.player?this.player.hideTipsMessage():this.debugWarn("JbPro","hideErrorMessageTips() player is null"))}getContainerRect(){return this._getContainerRect()}proxy(e,t,i,s){return this.events.proxy(e,t,i,s)}getUrl(){return this._opt.url}toggleControlExtendBtn(e,t){this.isDestroyed()||(this.debugLog(this.TAG_NAME,`toggleControlExtendBtn() ${e} ${t}`),this.player?this.player.toggleControlExtendBtn(e,t):this.debugWarn(this.TAG_NAME,"toggleControlExtendBtn() player is null"))}getControlExtendBtnActive(e){if(this.isDestroyed())return;this.debugLog(this.TAG_NAME,`getControlExtendBtnActive() ${e}`);let t=!1;return this.player?t=this.player.getControlExtendBtnActive(e):this.debugWarn(this.TAG_NAME,"getControlExtendBtnActive() player is null"),t}toggleControlBar(e){this.isDestroyed()||(this.debugLog(this.TAG_NAME,`toggleControlBar() ${e}`),this.player?this.player.toggleControlBar(e):this.debugWarn(this.TAG_NAME,"toggleControlBar() player is null"))}getControlBarShow(){if(this.isDestroyed())return!1;this.debugLog(this.TAG_NAME,"getControlBarShow()");let e=!1;return this.player?e=this.player.getControlBarShow():this.debugWarn(this.TAG_NAME,"getControlBarShow() player is null"),e}static getCopyrightWatermarkHash(e){return Qo(e)}static extractScreenshotCopyrightWatermark(e){return function(e){for(var t=e,i=0,s=0,r=0;r<32;r++)s|=(1&t[i])<=5){const s=i[0],r=i[i.length-1],o=r-s;o<=1e4&&(this.debugWarn(this.TAG_NAME,`retry type is ${e}, and retry length is ${i.length}, and start is ${s} and end is ${r} and diff is ${o}`),t=!1)}return t}_initLoadingBackgroundForIOS(e){(Ro()||Io())&&e.loadingBackground&&e.loadingBackgroundWidth&&e.loadingBackgroundHeight&&(this._initLoadingBg(),"default"===this.player._opt.aspectRatio||ko()?this.player.getRenderType()===H?this._doInitLoadingBackgroundForCanvas(e):this.player.getRenderType()===J&&this._doInitLoadingBackgroundForVideo(e):this._doInitLoadingBackgroundForRatio(e))}_doInitLoadingBackgroundForVideo(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForVideo");const t=this._getContainerRect();let i=t.width,s=t.height;const r=this.player._opt;s-=this.player.getControlHeight();let o=i,a=s;const n=r.rotate;270!==n&&90!==n||(o=s,a=i),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,this.$loadingBgImage.src=e.loadingBackground;let l=(i-o)/2,d=(s-a)/2,h="contain";r.isResize||(h="fill"),r.isFullResize&&(h="none");let c="";"none"===r.mirrorRotate&&n&&(c+=" rotate("+n+"deg)"),"level"===r.mirrorRotate?c+=" rotateY(180deg)":"vertical"===r.mirrorRotate&&(c+=" rotateX(180deg)"),this._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=h),this.$loadingBgImage.style.transform=c,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px",this.$loadingBgImage.complete?_c(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{_c(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_doInitLoadingBackgroundForCanvas(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForCanvas");const t=this._getContainerRect();let i=t.width,s=t.height;const r=this.player._opt;s-=this.player.getControlHeight();let o=i,a=s;const n=r.rotate;let l=(i-o)/2,d=(s-a)/2;270!==n&&90!==n||(o=s,a=i),this.$loadingBgImage.width=o,this.$loadingBgImage.height=a,this.$loadingBgImage.src=e.loadingBackground;const h=i/o,c=s/a;let u=h>c?c:h;Da(r.isResize)&&h!==c&&(u=h+","+c),r.isFullResize&&(u=h>c?h:c);let p="scale("+u+")";"none"===r.mirrorRotate&&n&&(p+=" rotate("+n+"deg)"),"level"===r.mirrorRotate?p+=" rotateY(180deg)":"vertical"===r.mirrorRotate&&(p+=" rotateX(180deg)"),this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.transform=p,this.$loadingBgImage.style.left=l+"px",this.$loadingBgImage.style.top=d+"px",this.$loadingBgImage.complete?_c(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{_c(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_doInitLoadingBackgroundForRatio(e){this.debugLog(this.TAG_NAME,"_doInitLoadingBackgroundForRatio");const t=this.player._opt.aspectRatio.split(":").map(Number),i=this._getContainerRect();let s=i.width,r=i.height,o=this.player.getControlHeight();r-=o;const a=e.loadingBackgroundWidth,n=e.loadingBackgroundHeight,l=a/n,d=t[0]/t[1];if(this.$loadingBgImage.src=e.loadingBackground,l>d){const e=d*n/a;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${o}px)`,this.$loadingBgImage.style.padding=`0 ${(s-s*e)/2}px`}else{const e=a/d/n;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${o}px)`,this.$loadingBgImage.style.padding=(r-r*e)/2+"px 0"}this.$loadingBgImage.complete?_c(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{_c(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_initLoadingBg(){if(!this.$loadingBg){const e=document.createElement("div"),t=document.createElement("img");e.className="jb-pro-loading-bg-for-ios",this.$loadingBg=e,this.$loadingBgImage=t,e.appendChild(t),this.$container.appendChild(e)}}_removeLoadingBackgroundForIOS(){if(this.$loadingBg){this.debugLog(this.TAG_NAME,"_removeLoadingBackgroundForIOS()");if(!Lc(this.$loadingBg)){const e=this.$container.querySelector(".jb-pro-loading-bg-for-ios");e&&this.$container&&this.$container.removeChild(e)}this.$loadingBg=null,this.$loadingBgImage=null}}_getContainerRect(){let e={};return this.$container&&(e=this.$container.getBoundingClientRect(),e.width=Math.max(e.width,this.$container.clientWidth),e.height=Math.max(e.height,this.$container.clientHeight)),e}_isNeedNetworkDisconnectReplay(){return this._opt.networkDisconnectReplay&&this.network.isOffline()}_handleWebglAlignmentError(e){if(this.isDestroyed())this.debugLog("JbPro","webglAlignmentError but player is destroyed");else if(this.webglAlignmentErrorOnLock)this.debugLog("JbPro","webglAlignmentErrorOnLock is true");else if(this.emit(At.crashLog,this.getCrashLog(_t.webglAlignmentError,e)),this.webglAlignmentErrorOnLock=!0,this.player&&this.player._opt.webglAlignmentErrorReplay){this.debugLog("JbPro","webglAlignmentError");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({openWebglAlignment:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webglAlignmentError and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.webglAlignmentError,{},e),this.debugError("JbPro","webglAlignmentError and play error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))})).catch((e=>{this.webglAlignmentErrorOnLock=!1,this.debugError("JbPro","webglAlignmentError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.webglAlignmentError,{},e),this.debugLog("JbPro","webglAlignmentError and webglAlignmentErrorReplay is false")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.webglAlignmentError,{},e),this.debugError("JbPro","webglAlignmentError and pause error",t)})).finally((()=>{this.webglAlignmentErrorOnLock=!1}))}}_handleWebglContextLostError(e){if(this.isDestroyed())return void this.debugLog("JbPro","webglContextLostError but player is destroyed");if(this.webglContextLostErrorOnLock)return void this.debugLog("JbPro","webglContextLostErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.webglContextLostError,e));const t=this._getVideoLastIframeInfo();if(this.webglContextLostErrorOnLock=!0,this.player&&this.player._opt.webglContextLostErrorReplay){this.debugLog("JbPro","webglContextLostError");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","webglContextLostError and play success")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.webglContextLostError,t,e),this.debugError("JbPro","webglContextLostError and play error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))})).catch((i=>{this.webglContextLostErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.webglContextLostError,t,e),this.debugError("JbPro","webglContextLostError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.webglContextLostError,t,e),this.debugLog("JbPro","webglContextLostError and webglContextLostErrorReplay is false")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.webglContextLostError,t,e),this.debugError("JbPro","webglAlignmentError and pause error",i)})).finally((()=>{this.webglContextLostErrorOnLock=!1}))}}_handleMediaSourceH265NotSupport(e){if(this.isDestroyed())this.debugLog("JbPro","mediaSourceH265NotSupport but player is destroyed");else if(this.mediaSourceH265NotSupportOnLock)this.debugLog("JbPro","mediaSourceH265NotSupportOnLock is true");else if(this.emit(At.crashLog,this.getCrashLog(_t.mediaSourceH265NotSupport,e)),this.mediaSourceH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.mediaSourceH265NotSupport,e),this.debugError("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))})).catch((t=>{this.mediaSourceH265NotSupportOnLock=!1,this.emit(At.playFailedAndPaused,_t.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.mediaSourceH265NotSupport,{},e),this.debugLog("JbPro","mediaSourceH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mediaSourceH265NotSupportOnLock=!1}))}}_handleMseWaitVideoCanplayTimeout(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mseWaitVideoCanplayTimeout but player is destroyed");else if(this.mseWaitVideoCanplayTimeoutOnLock)this.debugLog("JbPro","mseWaitVideoCanplayTimeoutOnLock is true");else if(this.emit(At.crashLog,this.getCrashLog(_t.mseWaitVideoCanplayTimeout,e)),this.mseWaitVideoCanplayTimeoutOnLock=!0,this.player&&this.player._opt.mseWaitVideoCanplayAutoWasm){this.debugLog("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.mseWaitVideoCanplayTimeout,e),this.debugError("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))})).catch((t=>{this.mseWaitVideoCanplayTimeoutOnLock=!1,this.emit(At.playFailedAndPaused,_t.mseWaitVideoCanplayTimeout,{},e),this.debugError("JbPro","mseWaitVideoCanplayTimeout auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.mseWaitVideoCanplayTimeout,{},e),this.debugLog("JbPro","mseWaitVideoCanplayTimeout and autoWasm is false")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.mediaSourceH265NotSupport,{},e),this.debugError("JbPro","mediaSourceH265NotSupport and pause error",t)})).finally((()=>{this.mseWaitVideoCanplayTimeoutOnLock=!1}))}}_handleMediaSourceFull(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceFull but player is destroyed"));if(this.mediaSourceFullOnLock)return void this.debugLog("JbPro","mediaSourceFullOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.mediaSourceFull,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceFullOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Rr)?this._mseDecodeErrorRetryLog.push(Ao()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mediaSourceFull and auto wasm ${Da(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceFull and reset player and play success")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and reset player and play error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))})).catch((i=>{this.mediaSourceFullOnLock=!1,this.emit(At.playFailedAndPaused,_t.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.mediaSourceFull,t,e),this.debugLog("JbPro","mediaSourceFull and autoWasm is false")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mediaSourceFull,t,e),this.debugError("JbPro","mediaSourceFull and pause error",i)})).finally((()=>{this.mediaSourceFullOnLock=!1}))}}_handleMediaSourceAppendBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAppendBufferError but player is destroyed"));if(this.mediaSourceAppendBufferErrorOnLock)return void this.debugLog("JbPro","mediaSourceAppendBufferErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.mediaSourceAppendBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceAppendBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Rr)?this._mseDecodeErrorRetryLog.push(Ao()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEAudioDecoderError&&(this.player.debugLog("JbPro","mediaSourceAppendBufferError and isMSEAudioDecoderError is true so set mseDecodeAudio = false"),r.mseDecodeAudio=!1),this.debugLog("JbPro",`mediaSourceAppendBufferError and auto wasm ${Da(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceAppendBufferError and reset player and play success")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and reset player and play error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))})).catch((i=>{this.mediaSourceAppendBufferErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAppendBufferError,t,e),this.debugLog("JbPro","mediaSourceAppendBufferError and autoWasm is false")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAppendBufferError,t,e),this.debugError("JbPro","mediaSourceAppendBufferError and pause error",i)})).finally((()=>{this.mediaSourceAppendBufferErrorOnLock=!1}))}}_handleMseSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseSourceBufferError but player is destroyed"));if(this.mseSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseSourceBufferErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.mseSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseSourceBufferErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={};if(this.player._opt.mseDecoderUseWorker)r={mseDecoderUseWorker:!1},this.debugLog("JbPro","mseSourceBufferError auto wasm [mse worker -> mse] reset player and play");else{let e=this.player._opt.decoderErrorAutoWasm,t=!0;e?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Rr)?this._mseDecodeErrorRetryLog.push(Ao()):(e=!0,t=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc&&(this.debugLog("JbPro","mseSourceBufferError and isMSEVideoDecoderInitializationFailedNotSupportHevc is true so auto wasm"),r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mseSourceBufferError auto wasm ${Da(t)?" and is not meaningful Retry":""} [mse-> ${e?"wasm":"mse"}] reset player and play`)}this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mseSourceBufferError reset player and play success")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError reset player and play error",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseSourceBufferErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.mseSourceBufferError,t,e),this.debugLog("JbPro","mseSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mseSourceBufferError,t,e),this.debugError("JbPro","mseSourceBufferError and pause error:",i)})).finally((()=>{this.mseSourceBufferErrorOnLock=!1}))}}_handleMediaSourceBufferedIsZeroError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceBufferedIsZeroError but player is destroyed"));if(this.mediaSourceBufferedIsZeroErrorOnLock)return void this.debugLog("JbPro","mediaSourceBufferedIsZeroErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.mediaSourceBufferedIsZeroError,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceBufferedIsZeroErrorOnLock=!0,this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Rr)?this._mseDecodeErrorRetryLog.push(Ao()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`mediaSourceBufferedIsZeroError auto wasm ${Da(a)?" and is not meaningful Retry":""} [mse-> ${o?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceBufferedIsZeroError reset player and play success")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError reset player and play error",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))})).catch((i=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.mediaSourceBufferedIsZeroError,t,e),this.debugLog("JbPro","mediaSourceBufferedIsZeroError and autoWasm is false")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mediaSourceBufferedIsZeroError,t,e),this.debugError("JbPro","mediaSourceBufferedIsZeroError and pause error:",i)})).finally((()=>{this.mediaSourceBufferedIsZeroErrorOnLock=!1}))}}_handleMseAddSourceBufferError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseAddSourceBufferError but player is destroyed"));if(this.mseAddSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseAddSourceBufferErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.mseAddSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.mseAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useWCS:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play success")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))})).catch((i=>{this.mseAddSourceBufferErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.mseAddSourceBufferError,t,e),this.debugLog("JbPro","mseAddSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mseAddSourceBufferError,t,e),this.debugError("JbPro","mseAddSourceBufferError and pause error",i)})).finally((()=>{this.mseAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceDecoderConfigurationError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mediaSourceDecoderConfigurationError but player is destroyed");else if(this.mediaSourceDecoderConfigurationErrorOnLock)this.debugLog("JbPro","mediaSourceDecoderConfigurationErrorOnLock is true");else if(this.emit(At.crashLog,this.getCrashLog(_t.mediaSourceDecoderConfigurationError,e)),this.mediaSourceDecoderConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;let s={useMSE:!1,useWCS:!1};this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))})).catch((t=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.mediaSourceDecoderConfigurationError,e),this.debugLog("JbPro","mediaSourceDecoderConfigurationError and autoWasm is false")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.mediaSourceDecoderConfigurationError,e),this.debugError("JbPro","mediaSourceDecoderConfigurationError and pause error",t)})).finally((()=>{this.mediaSourceDecoderConfigurationErrorOnLock=!1}))}}_handleMediaSourceTsIsMaxDiff(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceTsIsMaxDiff but player is destroyed"));if(this.mediaSourceTsIsMaxDiffOnLock)return void this.debugLog("JbPro","mediaSourceTsIsMaxDiffOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.mediaSourceTsIsMaxDiff,e));const t=this._getVideoLastIframeInfo();if(this.mediaSourceTsIsMaxDiffOnLock=!0,this.player&&this.player._opt.mediaSourceTsIsMaxDiffReplay){this.debugLog("JbPro","mediaSourceTsIsMaxDiff reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","mediaSourceTsIsMaxDiff replay success")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff replay error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))})).catch((i=>{this.mediaSourceTsIsMaxDiffOnLock=!1,this.emit(At.playFailedAndPaused,_t.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.mediaSourceTsIsMaxDiff,t,e),this.debugLog("JbPro","mediaSourceTsIsMaxDiff and replay is false")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.mediaSourceTsIsMaxDiff,t,e),this.debugError("JbPro","mediaSourceTsIsMaxDiff and pause error",i)})).finally((()=>{this.mediaSourceTsIsMaxDiffOnLock=!1}))}}_handleMseWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseWidthOrHeightChange but player is destroyed"));if(this.mseWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","mseWidthOrHeightChangeOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.mseWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.mseWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.player._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","mseWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}),1e3*this.player._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.mseWidthOrHeightChangeOnLock=!1,this.emit(At.playFailedAndPaused,_t.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(At.playFailedAndPaused,_t.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(At.playFailedAndPaused,_t.mseWidthOrHeightChange,i,t),this.debugError("JbPro","mseWidthOrHeightChange error and pause error",e)})).finally((()=>{this.mseWidthOrHeightChangeOnLock=!1}))}}_handleMediaSourceAudioG711NotSupport(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioG711NotSupport but player is destroyed"));if(this.mediaSourceAudioG711NotSupportOnLock)return void this.debugLog("JbPro","mediaSourceAudioG711NotSupportOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioG711NotSupportOnLock=!0,this.player&&this.player._opt.mediaSourceAudioG711NotSupportReplay){this.debugLog("JbPro","mediaSourceAudioG711NotSupport and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioG711NotSupport and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))})).catch((e=>{this.mediaSourceAudioG711NotSupportOnLock=!1,this.emit(At.playFailedAndPaused,_t.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)})).catch((e=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAudioG711NotSupport,i,t),this.debugError("JbPro","mediaSourceAudioG711NotSupport error and pause error",e)})).finally((()=>{this.mediaSourceAudioG711NotSupportOnLock=!1}))}}_handleMediaSourceAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioInitTimeout but player is destroyed"));if(this.mediaSourceAudioInitTimeoutOnLock)return void this.debugLog("JbPro","mediaSourceAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioInitTimeoutReplay){this.debugLog("JbPro","mediaSourceAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAudioInitTimeout,i,t),this.debugError("JbPro","mediaSourceAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioInitTimeoutOnLock=!1,this.emit(At.playFailedAndPaused,_t.mediaSourceAudioInitTimeout,i,t),this.debugError("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAudioInitTimeout,i),this.debugError("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAudioInitTimeout,i),this.debugError("JbPro","mediaSourceAudioInitTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioInitTimeoutOnLock=!1}))}}_handleMediaSourceAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mediaSourceAudioNoDataTimeout but player is destroyed"));if(this.mediaSourceAudioNoDataTimeoutOnLock)return void this.debugLog("JbPro","mediaSourceAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mediaSourceAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.mediaSourceAudioNoDataTimeoutReplay){this.debugLog("JbPro","mediaSourceAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mediaSourceAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAudioNoDataTimeout,i,t),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1,this.emit(At.playFailedAndPaused,_t.mediaSourceAudioNoDataTimeout,i,t),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAudioNoDataTimeout,i),this.debugError("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(At.playFailedAndPaused,_t.mediaSourceAudioNoDataTimeout,i),this.debugError("JbPro","mediaSourceAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.mediaSourceAudioNoDataTimeoutOnLock=!1}))}}_handleMseWorkerAddSourceBufferError(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","mseWorkerAddSourceBufferError but player is destroyed"));if(this.mseWorkerAddSourceBufferErrorOnLock)return void this.debugLog("JbPro","mseWorkerAddSourceBufferErrorOnLock is true");const i=this._getVideoLastIframeInfo();if(this.mseWorkerAddSourceBufferErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","mseWorkerAddSourceBufferError and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecoderUseWorker:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","mseWorkerAddSourceBufferError and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.mseWorkerAddSourceBufferError,i,t),this.debugError("JbPro","mseWorkerAddSourceBufferError and reset player and play error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))})).catch((e=>{this.mseWorkerAddSourceBufferErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.mseWorkerAddSourceBufferError,i,t),this.debugError("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.mseWorkerAddSourceBufferError,i),this.debugError("JbPro","mseWorkerAddSourceBufferError and _resetPlayer error",e)})).catch((e=>{this.emit(At.playFailedAndPaused,_t.mseWorkerAddSourceBufferError,i),this.debugError("JbPro","mseWorkerAddSourceBufferError error and pause error",e)})).finally((()=>{this.mseWorkerAddSourceBufferErrorOnLock=!1}))}}_handleMediaSourceUseCanvasRenderPlayFailed(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed but player is destroyed");else if(this.mediaSourceUseCanvasRenderPlayFailedOnLock)this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailedOnLock is true");else if(this.emit(At.crashLog,this.getCrashLog(_t.mediaSourceUseCanvasRenderPlayFailed,e)),this.mediaSourceUseCanvasRenderPlayFailedOnLock=!0,this.player&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplay&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType){this.debugLog("JbPro",`mediaSourceUseCanvasRenderPlayFailed relayType is ${this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType} and reset player and play`);const t=this._opt.url,i=this._opt.playOptions;let s={};const r=this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType;r===H?s={useMSE:!1,useWCS:!1}:r===J&&(s={useVideoRender:!0,useCanvasRender:!1}),this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play error",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))})).catch((t=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1,this.emit(At.playFailedAndPaused,_t.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed auto and _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.debugLog("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause player success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.mediaSourceUseCanvasRenderPlayFailed,e),this.debugError("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause",t)})).finally((()=>{this.mediaSourceUseCanvasRenderPlayFailedOnLock=!1}))}}_handleWebcodecsH265NotSupport(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsH265NotSupport but player is destroyed");else if(this.webcodecsH265NotSupportOnLock)this.debugLog("JbPro","webcodecsH265NotSupportOnLock is true");else if(this.emit(At.crashLog,this.getCrashLog(_t.webcodecsH265NotSupport,e)),this.webcodecsH265NotSupportOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.webcodecsH265NotSupport,e),this.debugError("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))})).catch((e=>{this.webcodecsH265NotSupportOnLock=!1,this.debugError("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.webcodecsH265NotSupport,e),this.debugLog("JbPro","webcodecsH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.webcodecsH265NotSupport,e),this.debugError("JbPro","webcodecsH265NotSupport and pause error",t)})).finally((()=>{this.webcodecsH265NotSupportOnLock=!1}))}}_handleWebcodecsUnsupportedConfigurationError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsUnsupportedConfigurationError but player is destroyed");else if(this.webcodecsUnsupportedConfigurationErrorOnLock)this.debugLog("JbPro","webcodecsUnsupportedConfigurationErrorOnLock is true");else if(this.emit(At.crashLog,this.getCrashLog(_t.webcodecsUnsupportedConfigurationError,e)),this.webcodecsUnsupportedConfigurationErrorOnLock=!0,this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))})).catch((t=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.webcodecsUnsupportedConfigurationError,e),this.debugLog("JbPro","webcodecsUnsupportedConfigurationError and autoWasm is false")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.webcodecsUnsupportedConfigurationError,e),this.debugError("JbPro","webcodecsUnsupportedConfigurationError and pause error",t)})).finally((()=>{this.webcodecsUnsupportedConfigurationErrorOnLock=!1}))}}_handleWebcodecsDecodeConfigureError(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","webcodecsDecodeConfigureError but player is destroyed");else if(this.webcodecsDecodeConfigureErrorOnLock)this.debugLog("JbPro","webcodecsDecodeConfigureErrorOnLock is true");else if(this.emit(At.crashLog,this.getCrashLog(_t.webcodecsDecodeConfigureError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debugLog("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))})).catch((t=>{this.webcodecsDecodeConfigureErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.webcodecsDecodeConfigureError,e),this.debugLog("JbPro","webcodecsDecodeConfigureError and autoWasm is false")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.webcodecsDecodeConfigureError,e),this.debugError("JbPro","webcodecsDecodeConfigureError and pause error",t)})).finally((()=>{this.webcodecsDecodeConfigureErrorOnLock=!1}))}}_handleWebcodecsDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsDecodeError but player is destroyed"));if(this.webcodecsDecodeErrorOnLock)return void this.debugLog("JbPro","webcodecsDecodeErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.webcodecsDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.webcodecsDecodeErrorOnLock=!0,this.player&&this.player._opt.wcsDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},o=this.player._opt.decoderErrorAutoWasm,a=!0;o?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Ir)?this._wcsDecodeErrorRetryLog.push(Ao()):(o=!0,a=!1,r={useMSE:!1,useWCS:!1}),this.debugLog("JbPro",`webcodecs decode error autoWasm ${Da(a)?" and is not meaningful Retry":""} [wcs-> ${o?"wasm":"wcs"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","webcodecs decode error reset player and play success")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error reset player and play error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))})).catch((()=>{this.webcodecsDecodeErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.webcodecsDecodeError,t,e),this.debugLog("JbPro","webcodecs decode error and autoWasm is false")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.webcodecsDecodeError,t,e),this.debugError("JbPro","webcodecs decode error and pause error",i)})).finally((()=>{this.webcodecsDecodeErrorOnLock=!1}))}}_handleWcsWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wcsWidthOrHeightChange but player is destroyed"));if(this.wcsWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","wcsWidthOrHeightChangeOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.wcsWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wcsWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","wcsWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wcsWidthOrHeightChangeOnLock=!1,this.emit(At.playFailedAndPaused,_t.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(At.playFailedAndPaused,_t.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(At.playFailedAndPaused,_t.wcsWidthOrHeightChange,i,t),this.debugError("JbPro","wcsWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wcsWidthOrHeightChangeOnLock=!1}))}}_handleWebcodecsAudioNoDataTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsAudioNoDataTimeout but player is destroyed"));if(this.webcodecsAudioNoDataTimeoutOnLock)return void this.debugLog("JbPro","webcodecsAudioNoDataTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioNoDataTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioNoDataTimeoutReplay){this.debugLog("JbPro","webcodecsAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","webcodecsAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.webcodecsAudioNoDataTimeout,i,t),this.debugError("JbPro","webcodecsAudioNoDataTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioNoDataTimeoutOnLock=!1,this.emit(At.playFailedAndPaused,_t.webcodecsAudioNoDataTimeout,i,t),this.debugError("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.webcodecsAudioNoDataTimeout,i),this.debugError("JbPro","webcodecsAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(At.playFailedAndPaused,_t.webcodecsAudioNoDataTimeout,i),this.debugError("JbPro","webcodecsAudioNoDataTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioNoDataTimeoutOnLock=!1}))}}_handleWebcodecsAudioInitTimeout(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webcodecsAudioInitTimeout but player is destroyed"));if(this.webcodecsAudioInitTimeoutOnLock)return void this.debugLog("JbPro","webcodecsAudioInitTimeoutOnLock is true");const i=this._getVideoLastIframeInfo();if(this.webcodecsAudioInitTimeoutOnLock=!0,this.player&&this.player._opt.webcodecsAudioInitTimeoutReplay){this.debugLog("JbPro","webcodecsAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={wcsDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debugLog("JbPro","webcodecsAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.webcodecsAudioInitTimeout,i,t),this.debugError("JbPro","webcodecsAudioInitTimeout and reset player and play error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))})).catch((e=>{this.webcodecsAudioInitTimeoutOnLock=!1,this.emit(At.playFailedAndPaused,_t.webcodecsAudioInitTimeout,i,t),this.debugError("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.webcodecsAudioInitTimeout,i),this.debugError("JbPro","webcodecsAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(At.playFailedAndPaused,_t.webcodecsAudioInitTimeout,i),this.debugError("JbPro","webcodecsAudioInitTimeout error and pause error",e)})).finally((()=>{this.webcodecsAudioInitTimeoutOnLock=!1}))}}_handleSimdDecodeError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","simdDecodeError but player is destroyed"));if(this.simdDecodeErrorOnLock)return void this.debugLog("JbPro","simdDecodeErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.simdDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.simdDecodeErrorOnLock=!0,this.player&&this.player._opt.simdDecodeErrorReplay){this.debugLog("JbPro",`simdDecodeError error simdDecodeErrorReplayType is ${this.player._opt.simdDecodeErrorReplayType} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.simdDecodeErrorReplayType===j&&(r={useSIMD:!1}),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","simdDecodeError and reset player and play success")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and reset player and play error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))})).catch((i=>{this.simdDecodeErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError and simdDecodeErrorReplay is false")})).catch((i=>{this.emit(At.playFailedAndPaused,_t.simdDecodeError,t,e),this.debugError("JbPro","simdDecodeError error and pause error",i)})).finally((()=>{this.simdDecodeErrorOnLock=!1}))}}_handleWasmWidthOrHeightChange(t){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wasmWidthOrHeightChange but player is destroyed"));if(this.wasmWidthOrHeightChangeOnLock)return void this.debugLog("JbPro","wasmWidthOrHeightChangeOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.wasmWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.wasmWidthOrHeightChangeOnLock=!0,this.player&&this.player._opt.widthOrHeightChangeReplay){this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.widthOrHeightChangeReplayDelayTimeout=null,this.isDestroyed()?this.debug&&this.debugLog("JbPro","wasmWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debugLog("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(At.playFailedAndPaused,_t.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and reset player and play error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))})).catch((e=>{this.wasmWidthOrHeightChangeOnLock=!1,this.emit(At.playFailedAndPaused,_t.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(At.playFailedAndPaused,_t.wasmWidthOrHeightChange,i,t),this.debugError("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(At.playFailedAndPaused,_t.wasmWidthOrHeightChange,i),this.debugError("JbPro","wasmWidthOrHeightChange error and pause error",e)})).finally((()=>{this.wasmWidthOrHeightChangeOnLock=!1}))}}_handleWasmUseVideoRenderError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","wasmUseVideoRenderError but player is destroyed"));if(this.wasmUseVideoRenderErrorOnLock)return void this.debugLog("JbPro","wasmUseVideoRenderErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.wasmUseVideoRenderError,e)),this.debugLog("JbPro","wasmUseVideoRenderError and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.wasmUseVideoRenderErrorOnLock=!0,this._resetPlayer({useVideoRender:!1,useCanvasRender:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","wasmUseVideoRenderError and reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.wasmUseVideoRenderError,{},e),this.debugError("JbPro","wasmUseVideoRenderError and reset player and play error",t)})).finally((()=>{this.wasmUseVideoRenderErrorOnLock=!1}))})).catch((t=>{this.wasmUseVideoRenderErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.wasmUseVideoRenderError,{},e),this.debugError("JbPro","wasmUseVideoRenderError and _resetPlayer error",t)}))}_handleNotSupportNewWasm(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","notSupportNewWasm but player is destroyed"));if(this.notSupportNewWasmOnLock)return void this.debugLog("JbPro","notSupportNewWasmOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.notSupportNewWasm,e)),this.notSupportNewWasmOnLock=!0,this.debugLog("JbPro","notSupportNewWasm auto wasm [wasm-> old wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useOldWasm:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","notSupportNewWasm auto wasm [wasm-> old wasm] reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.webcodecsH265NotSupport,e),this.debugError("JbPro","notSupportNewWasm auto wasm [wasm-> old wasm] reset player and play error",t)})).finally((()=>{this.notSupportNewWasmOnLock=!1}))})).catch((e=>{this.notSupportNewWasmOnLock=!1,this.debugError("JbPro","notSupportNewWasm auto wasm [wasm-> old wasm] _resetPlayer and play error",e)}))}_handleVideoElementPlayingFailed(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoElementPlayingFailed but player is destroyed"));if(this.videoElementPlayingFailedOnLock)return void this.debugLog("JbPro","videoElementPlayingFailedOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.videoElementPlayingFailed,e));const t=this._getVideoLastIframeInfo();if(this.videoElementPlayingFailedOnLock=!0,this.player&&this.player._opt.videoElementPlayingFailedReplay){this.debugLog("JbPro",`videoElementPlayingFailed and useMSE is ${this._opt.useMSE} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useVideoRender:!1,useCanvasRender:!0};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","videoElementPlayingFailed and reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and reset player and play error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))})).catch((t=>{this.videoElementPlayingFailedOnLock=!1,this.emit(At.playFailedAndPaused,_t.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and videoElementPlayingFailedReplay is false")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.videoElementPlayingFailed,{},e),this.debugError("JbPro","videoElementPlayingFailed and _pause error",t)})).finally((()=>{this.videoElementPlayingFailedOnLock=!1}))}}_handleSimdH264DecodeVideoWidthIsTooLarge(e){if(this.isDestroyed())this.debug&&this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge but player is destroyed");else if(this.simdH264DecodeVideoWidthIsTooLargeOnLock)this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLargeOnLock is true");else if(this.emit(At.crashLog,this.getCrashLog(_t.simdH264DecodeVideoWidthIsTooLarge,e)),this.simdH264DecodeVideoWidthIsTooLargeOnLock=!0,this.player&&this.player._opt.simdH264DecodeVideoWidthIsTooLargeReplay){this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useSIMD:!1}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))})).catch((t=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1,this.emit(At.playFailedAndPaused,_t.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and simdDecodeErrorReplay is false")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debugError("JbPro","simdH264DecodeVideoWidthIsTooLarge and pause error",t)})).finally((()=>{this.simdH264DecodeVideoWidthIsTooLargeOnLock=!1}))}}_handleNetworkDelayTimeout(e){if(this.player._opt.networkDelayTimeoutReplay){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","networkDelayTimeout but player is destroyed"));if(this.networkDelayTimeoutOnLock)return void this.debugLog("JbPro","networkDelayTimeoutOnLock is true");this.emit(At.crashLog,this.getCrashLog(At.networkDelayTimeout,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","network delay time out and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this.networkDelayTimeoutOnLock=!0,this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog("JbPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(At.playFailedAndPaused,At.networkDelayTimeout,t,e),this.debugError("JbPro","wasm decode error and reset player and play error",i)})).finally((()=>{this.networkDelayTimeoutOnLock=!1}))})).catch((()=>{this.networkDelayTimeoutOnLock=!1,this.emit(At.playFailedAndPaused,At.networkDelayTimeout,t,e),this.debugError("JbPro","wasm decode error and _resetPlayer error")}))}}_handleFlvDemuxBufferSizeTooLarge(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","flvDemuxBufferSizeTooLarge but player is destroyed"));if(this.flvDemuxBufferSizeTooLargeOnLock)return void this.debugLog("JbPro","flvDemuxBufferSizeTooLargeOnLock is true");const t=this._getVideoLastIframeInfo();if(this.flvDemuxBufferSizeTooLargeOnLock=!0,this.player._opt.flvDemuxBufferSizeTooLargeReplay){this.emit(At.crashLog,this.getCrashLog(At.flvDemuxBufferSizeTooLarge,e)),this.debugLog("JbPro","flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeReplay = true and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debugLog(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play success")})).catch((i=>{this.emit(At.playFailedAndPaused,At.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play error",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))})).catch((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1,this.emit(At.playFailedAndPaused,At.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large and _resetPlayer error")}))}else if(this._opt.flvDemuxBufferSizeTooLargeEmitFailed){this.debugLog(this.TAG_NAME,"flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeEmitFailed = true and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.flvDemuxBufferSizeTooLarge,t,e)})).catch((i=>{this.emit(At.playFailedAndPaused,_t.flvDemuxBufferSizeTooLarge,t,e),this.debugError(this.TAG_NAME,"flv Demux Buffer Size Too Large",i)})).finally((()=>{this.flvDemuxBufferSizeTooLargeOnLock=!1}))}}_handleFetchError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","fetchError but player is destroyed"));if(this.fetchErrorOnLock)return void this.debugLog("JbPro","fetchErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.fetchError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.fetchErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debugLog("JbPro","fetch error and network is disconnect and reset player and play"):this.debugLog("JbPro",`fetch error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes}, streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())this.debug&&this.debugLog("JbPro","fetch error and _resetPlayer but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","fetch error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:_t.fetchError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debugLog("JbPro","fetch error and reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.fetchError,{},e),this.debugError("JbPro","fetch error and reset player and play error",t)})).finally((()=>{this.fetchErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.fetchErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.fetchError,{},e),this.debugError("JbPro","fetch error and _resetPlayer error",t)}))}else{this.debugLog("JbPro","fetch error and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.fetchError,t,e)})).catch((i=>{this.emit(At.playFailedAndPaused,_t.fetchError,t,e),this.debugError("JbPro","fetch error and pause",i)})).finally((()=>{this.fetchErrorOnLock=!1}))}}_handleStreamEnd(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","streamEnd but player is destroyed and return"));if(this.streamEndOnLock)return void this.debugLog("JbPro","streamEndOnLock is true");this.emit(At.crashLog,this.getCrashLog(At.streamEnd,e));const t=this._getVideoLastIframeInfo(),i=""+e=="1006"&&this.player._opt.websocket1006ErrorReplay,s=!!i&&this._checkIsMeaningfulRetry(Dr),r=i&&s,o=this.player._opt.streamEndReplay,a=this._isNeedNetworkDisconnectReplay();if(this.streamEndOnLock=!0,r||o||a){a?this.debugLog("JbPro","streamEnd and network is disconnect and reset player and play"):r?this.debugLog("JbPro",`streamEnd and websocket1006ErrorReplay is true and error is 1006 and _websocket1006ErrorReplayTimes is ${this._websocket1006ErrorReplayTimes} , delay ${this._opt.websocket1006ErrorReplayDelayTime}s reset player and play`):this.debugLog("JbPro",`streamEnd and isStreamEndReplay is true and and _streamEndReplayTimes is ${this._streamEndReplayTimes} , delay ${this._opt.streamEndReplayDelayTime}s reset player and play`);const s=this._opt.playOptions,o=this._opt.url;i&&this._websocket1006ErrorRetryLog.push(Ao());let n={};this.player._opt.replayUseLastFrameShow&&(n=Object.assign({},n,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(n.isNotMute=!0);let l=r?this._opt.websocket1006ErrorReplayDelayTime:this._opt.streamEndReplayDelayTime;a&&(l=1),this._resetPlayer(n).then((()=>{this.streamEndReplayDelayTimeout=setTimeout((()=>{if(this.streamEndReplayDelayTimeout=null,this._removeLoadingBackgroundForIOS(),this.isDestroyed())a?this.debug&&this.debugLog("JbPro","streamEnd and network is disconnect and _resetPlayer() but player is destroyed and return"):r?this.debug&&this.debugLog("JbPro","streamEnd and 1006 error and _resetPlayer() but player is destroyed and return"):this.debug&&this.debugLog("JbPro","streamEnd and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return r?this.debugLog("JbPro","streamEnd and 1006 error network is offline and wait network online to play , so return"):this.debugLog("JbPro","streamEnd and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:s,type:r?_t.websocket1006Error:_t.streamEnd});r?this._websocket1006ErrorReplayTimes++:this._streamEndReplayTimes++,this.play(o,s).then((()=>{r?this.debugLog("JbPro","streamEnd and 1006 error and reset player and play success"):this.debugLog("JbPro","streamEnd and reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.streamEnd,{},e),r?this.debugError("JbPro","streamEnd and 1006 error and reset player and play error",t):this.debugError("JbPro","streamEnd and reset player and play error",t)})).finally((()=>{this.streamEndOnLock=!1}))}}),1e3*l)})).catch((t=>{this.streamEndOnLock=!1,this.emit(At.playFailedAndPaused,_t.streamEnd,{},e),r?this.debugError("JbPro","streamEnd and 1006 and _resetPlayer error",t):this.debugError("JbPro","streamEnd and _resetPlayer error",t)}))}else{i?this.debugLog("JbPro","streamEnd pause player "+(Da(s)?"and is not meaningful retry":"")):this.debugLog("JbPro","streamEnd pause player");const r=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(r).then((()=>{this.emit(At.playFailedAndPaused,At.streamEnd,t,e)})).catch((i=>{this.emit(At.playFailedAndPaused,At.streamEnd,t,e),this.debugError("JbPro","streamEnd pause",i)})).finally((()=>{this.streamEndOnLock=!1}))}}_handleWebsocketError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","websocketError but player is destroyed"));if(this.websocketErrorOnLock)return void this.debugLog("JbPro","websocketErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.websocketError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.websocketErrorOnLock=!0,this.player._opt.streamErrorReplay||i){i?this.debugLog("JbPro","websocketError error and network is disconnect and reset player and play"):this.debugLog("JbPro",`websocketError error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,o=this._opt.url,a=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.streamErrorReplayDelayTimeout=null,this.isDestroyed())i?this.debug&&this.debugLog("JbPro","websocketError error and network is disconnect and _resetPlayer() but player is destroyed and return"):this.debug&&this.debugLog("JbPro","websocketError error and _resetPlayer() but player is destroyed and return");else{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","websocketError error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:o,options:r,type:_t.websocketError});this._streamErrorReplayTimes++,this.play(o,r).then((()=>{this.debugLog("JbPro","websocketError error and reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,_t.fetchError,{},e),this.debugError("JbPro","websocketError error and reset player and play error",t)})).finally((()=>{this.websocketErrorOnLock=!1}))}}),1e3*a)})).catch((t=>{this.websocketErrorOnLock=!1,this.emit(At.playFailedAndPaused,_t.fetchError,{},e),this.debugError("JbPro","websocketError error and _resetPlayer error",t)}))}else{this.debugLog("JbPro","websocketError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.websocketError,t,e)})).catch((i=>{this.emit(At.playFailedAndPaused,_t.websocketError,t,e),this.debugError("JbPro","websocketError and pause",i)})).finally((()=>{this.websocketErrorOnLock=!1}))}}_handleWebrtcError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webrtcError but player is destroyed"));if(this.webrtcErrorOnLock)return void this.debugLog("JbPro","webrtcErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.webrtcError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debugLog("JbPro","webrtcError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:_t.webrtcError}})).catch((()=>{this.emit(At.playFailedAndPaused,_t.webrtcError,t,e),this.debugError("JbPro","webrtcError and _resetPlayer error")})).finally((()=>{this.webrtcErrorOnLock=!1}))}else{this.debugLog("JbPro","webrtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.webrtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.webrtcError,t,e)})).catch((i=>{this.emit(At.playFailedAndPaused,_t.webrtcError,t,e),this.debugError("JbPro","webrtcError and pause",i)})).finally((()=>{this.webrtcErrorOnLock=!1}))}}_handleHlsError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","hlsError but player is destroyed"));if(this.hlsErrorOnLock)return void this.debugLog("JbPro","hlsErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.hlsError,e));const t=this._getVideoLastIframeInfo();if(this._isNeedNetworkDisconnectReplay()){this.debugLog("JbPro","hlsError error and network is offline and wait network online to play , so _resetPlayer and wait play");const i=this._opt.playOptions,s=this._opt.url;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),Da(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._isNetworkOfflinePaused=!0,this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:_t.hlsError}})).catch((()=>{this.emit(At.playFailedAndPaused,_t.hlsError,t,e),this.debugError("JbPro","hlsError and _resetPlayer error")})).finally((()=>{this.hlsErrorOnLock=!1}))}else{this.debugLog("JbPro","hlsError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.hlsErrorOnLock=!0,this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.hlsError,t,e)})).catch((i=>{this.emit(At.playFailedAndPaused,_t.hlsError,t,e),this.debugError("JbPro","hlsError and pause",i)})).finally((()=>{this.hlsErrorOnLock=!1}))}}_handleAliyunRtcError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","aliyunRtcError but player is destroyed"));if(this.aliyunRtcErrorOnLock)return void this.debugLog("JbPro","aliyunRtcErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.aliyunRtcError,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","aliyunRtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.aliyunRtcErrorOnLock=!0,this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.aliyunRtcError,t,e)})).catch((i=>{this.emit(At.playFailedAndPaused,_t.aliyunRtcError,t,e),this.debugError("JbPro","aliyunRtcError and pause",i)})).finally((()=>{this.aliyunRtcErrorOnLock=!1}))}_handleDecoderWorkerInitError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","decoderWorkerInitError but player is destroyed"));if(this.decoderWorkerInitErrorOnLock)return void this.debugLog("JbPro","decoderWorkerInitErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.decoderWorkerInitError,e));const t=this._getVideoLastIframeInfo();this.debugLog("JbPro","decoderWorkerInitError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerInitErrorOnLock=!0,this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.decoderWorkerInitError,t,e)})).catch((i=>{this.emit(At.playFailedAndPaused,_t.decoderWorkerInitError,t,e),this.debugError("JbPro","decoderWorkerInitError and pause",i)})).finally((()=>{this.decoderWorkerInitErrorOnLock=!1}))}_handleDecoderWorkerWasmError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","decoderWorkerWasmError but player is destroyed"));if(this.decoderWorkerWasmErrorOnLock)return void this.debugLog("JbPro","decoderWorkerWasmErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.decoderWorkerWasmError,e)),this.debugLog("JbPro","decoderWorkerWasmError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.decoderWorkerWasmErrorOnLock=!0,this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.decoderWorkerWasmError,{},e)})).catch((t=>{this.emit(At.playFailedAndPaused,_t.decoderWorkerWasmError,{},e),this.debugError("JbPro","decoderWorkerWasmError and pause",t)})).finally((()=>{this.decoderWorkerWasmErrorOnLock=!1}))}_handleVideoElementPlayingFailedForWebrtc(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoElementPlayingFailedForWebrtc but player is destroyed"));if(this.videoElementPlayingFailedForWebrtcOnLock)return void this.debugLog("JbPro","videoElementPlayingFailedForWebrtcOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.videoElementPlayingFailedForWebrtc,e)),this.debugLog("JbPro","videoElementPlayingFailedForWebrtc and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoElementPlayingFailedForWebrtcOnLock=!0,this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.videoElementPlayingFailedForWebrtc,{},e)})).catch((t=>{this.emit(At.playFailedAndPaused,_t.videoElementPlayingFailedForWebrtc,{},e),this.debugError("JbPro","videoElementPlayingFailedForWebrtc and pause",t)})).finally((()=>{this.videoElementPlayingFailedForWebrtcOnLock=!1}))}_handleVideoInfoError(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","videoInfoError but player is destroyed"));if(this.videoInfoErrorOnLock)return void this.debugLog("JbPro","videoInfoErrorOnLock is true");this.emit(At.crashLog,this.getCrashLog(_t.videoInfoError,e)),this.debugLog("JbPro","videoInfoError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this.videoInfoErrorOnLock=!0,this._pause(t).then((()=>{this.emit(At.playFailedAndPaused,_t.videoInfoError,{},e)})).catch((t=>{this.emit(At.playFailedAndPaused,_t.videoInfoError,{},e),this.debugError("JbPro","videoInfoError and pause",t)})).finally((()=>{this.videoInfoErrorOnLock=!1}))}_handleWebrtcStreamH265(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","webrtcStreamH265 but player is destroyed"));if(this.webrtcStreamH265OnLock)return void this.debugLog("JbPro","webrtcStreamH265OnLock is true");this.debugLog("JbPro","webrtcStreamH265 and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this.webrtcStreamH265OnLock=!0,this._resetPlayer({isWebrtcH265:!0}).then((()=>{this.play(t,i).then((()=>{this.debugLog("JbPro","webrtcStreamH265 and reset player and play success")})).catch((t=>{this.emit(At.playFailedAndPaused,At.webrtcStreamH265,{},e),this.debugError("JbPro","webrtcStreamH265 and reset player and play error",t)})).finally((()=>{this.webrtcStreamH265OnLock=!1}))})).catch((()=>{this.webrtcStreamH265OnLock=!1,this.emit(At.playFailedAndPaused,At.webrtcStreamH265,{},e),this.debugError("JbPro","webrtcStreamH265 and _resetPlayer error")}))}_handlePlaybackEnd(){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","playbackEnd but player is destroyed"));if(this.playbackEndOnLock)return void this.debugLog("JbPro","playbackEndOnLock is true");const e=!1===this._opt.playFailedUseLastFrameShow,t=this._getVideoLastIframeInfo();this.player.setPlayFailedAndPaused(),this.playbackEndOnLock=!0,this._pause(e).then((()=>{this.emit(At.playFailedAndPaused,At.playbackEnd,t,"")})).catch((e=>{this.emit(At.playFailedAndPaused,At.playbackEnd,t,""),this.debugError("JbPro","playbackEnd and pause",e)})).finally((()=>{this.playbackEndOnLock=!1}))}_handleDelayTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debugWarn("JbPro","delay timeout replay but player is destroyed"));this.emit(At.crashLog,this.getCrashLog(At.delayTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","delayTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:At.delayTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(At.playFailedAndPaused,At.delayTimeout,t,e),this.debugError("JbPro","delay timeout replay error",i)}))})).catch((i=>{this.emit(At.playFailedAndPaused,At.delayTimeout,t,e),this.debugError("JbPro","delay timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,At.delayTimeout,t,e),this.player&&(this.emit(At.delayTimeoutRetryEnd),this.emit(At.playFailedAndPaused,At.delayTimeoutRetryEnd)),this.debugWarn("JbPro",`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(At.playFailedAndPaused,At.delayTimeout,t,e),this.debugError("JbPro","delay timeout and pause error",i)}))}}_handleLoadingTimeout(e){if(this.isDestroyed())return void(this.debug&&this.debugLog("JbPro","loading timeout but player is destroyed"));this.emit(At.crashLog,this.getCrashLog(At.loadingTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debugLog("JbPro","loadingTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:At.loadingTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(At.playFailedAndPaused,At.loadingTimeout,t,e),this.debugError("JbPro","loading timeout replay error",i)}))})).catch((i=>{this.emit(At.playFailedAndPaused,At.loadingTimeout,t,e),this.debugError("JbPro","loading timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,At.loadingTimeout,t,e),this.player&&(this.emit(At.loadingTimeoutRetryEnd),this.emit(At.playFailedAndPaused,At.loadingTimeoutRetryEnd,t,e),this._opt.loadingTimeoutRetryEndShowPlayBtn&&this.player.showPlayBtn()),this.debugLog("JbPro",`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((i=>{this.emit(At.playFailedAndPaused,At.loadingTimeout,t,e),this.debugError("JbPro","loading timeout and pause error",i)}))}}_handleInitDecoderWorkerTimeout(e){if(this.isDestroyed())return void this.debugLog("JbPro","InitDecoderWorkerTimeout but player is destroyed");this.emit(At.crashLog,this.getCrashLog(_t.initDecoderWorkerTimeout,e)),this.debugLog("JbPro","InitDecoderWorkerTimeout and pause player");const t=this._getVideoLastIframeInfo(),i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(At.playFailedAndPaused,_t.initDecoderWorkerTimeout,t,e)})).catch((i=>{this.emit(At.playFailedAndPaused,_t.initDecoderWorkerTimeout,t,e),this.debugError("JbPro","videoInfoError and pause",i)}))}_checkInitDecoderWorkerTimeout(){this._clearInitDecoderWorkerTimeout(),this.initDecoderWorkerTimeout=setTimeout((()=>{this._handleInitDecoderWorkerTimeout(_t.initDecoderWorkerTimeout)}),1e3*this._opt.initDecoderWorkerTimeout)}_clearInitDecoderWorkerTimeout(){this.initDecoderWorkerTimeout&&(clearTimeout(this.initDecoderWorkerTimeout),this.initDecoderWorkerTimeout=null)}debugLog(e){if(this._opt.debug&&this.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s1?t-1:0),s=1;s1?t-1:0),s=1;s{if(this.isDestroyed())return t("player is destroyed");this.debugLog("JbPro","resetPlayer()");const i=this._getOriginalOpt();this._resetPlayer(i).then((()=>{this.debugLog("JbPro","resetPlayer() success"),e()})).catch((e=>{this.debugWarn("JbPro","resetPlayer() error",e.toString(),e),t(e)}))}))}}w_.ERROR=_t,w_.EVENTS=bt,window.JessibucaPro=w_,window.JbPro=w_,window.WebPlayerPro=w_;xc('.jb-pro-multi-container .jb-pro-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)}.jb-pro-multi-container .jb-pro-multi-player-container-v2 .jb-pro-multi-player{overflow:hidden;position:relative;width:100%;height:100%}.jb-pro-multi-container .jb-pro-multi-player-container-v2 .jb-pro-multi-player .jb-pro-multi-player-draw-window{position:absolute;z-index:1;width:calc(100% - 2px);height:calc(100% - 2px);color:#fff;transition:all .25s}.jb-pro-multi-container .jb-pro-multi-player-container-v2 .jb-pro-multi-player .jb-pro-multi-player-video-window{position:absolute;left:1px;top:1px;z-index:2;width:calc(100% - 2px);height:calc(100% - 2px)}.jb-pro-multi-container .jb-pro-multi-player[fullscreen="1"]{grid-column-start:1;grid-column-end:9;grid-row-start:1;grid-row-end:9;z-index:1}.jb-pro-multi-container .jb-pro-multi-layout-6 .jb-pro-multi-player[order="0"]{grid-column-start:1;grid-column-end:3;grid-row-start:1;grid-row-end:3}.jb-pro-multi-container .jb-pro-multi-layout-6 .jb-pro-multi-player[fullscreen="1"]{grid-column-start:1;grid-column-end:9;grid-row-start:1;grid-row-end:9;z-index:1}.jb-pro-multi-container .jb-pro-multi-layout-9 .jb-pro-multi-player[order="0"]{grid-column-start:1;grid-column-end:4;grid-row-start:1;grid-row-end:4}.jb-pro-multi-container .jb-pro-multi-layout-9 .jb-pro-multi-player[fullscreen="1"]{grid-column-start:1;grid-column-end:9;grid-row-start:1;grid-row-end:9;z-index:1}');class S_ extends o{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this._opt={},Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`jb-pro-multi option "${t}" can not be undefined`)}));const t=Ta(Fs);this._opt=Object.assign({},t,e),this.LOG_TAG="jbProMulti",this.debug=new Gr(this);let i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw this.debugError(this.TAG_NAME,"Jb-pro-multi need container option"),new Error("Jb-pro-multi need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jb-pro-multi container type can not be ${i.nodeName} type`);if(!i.classList)throw this.debugError(this.TAG_NAME,"Jb-pro-multi container is invalid, must be a DOM Element",i),new Error("Jb-pro-multi container is invalid, must be a DOM Element",i);if(this._checkHasCreated(i))throw this.debugError(this.TAG_NAME,"Jb-pro-multi container has been created and can not be created again",i),new Error("Jb-pro-multi container has been created and can not be created again",i);i.classList.add("jb-pro-multi-container"),Ra(i,re,Fo()),delete this._opt.container,this.maxWindowSize=this._opt.maxSplit*this._opt.maxSplit,this.currentWindowIndex=-1,this.currentWindowUuid=null,this.specialLayoutType=null,this.startDragWindowItem=null,this.checkRectInterval=null,this.windowList=[],this.$container=i,this.events=new za(this),this._opt.split||(this._opt.split=1),xa(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.debugLog(this.LOG_TAG,"destroy()"),this.off(),this.events&&(this.events.destroy(),this.events=null),this.checkRectInterval&&(clearInterval(this.checkRectInterval),this.checkRectInterval=null),this.specialLayoutType=null,this.startDragWindowItem=null,this.currentWindowUuid=null,this.currentWindowIndex=-1,this.$container&&(this.$container.classList.remove("jb-pro-multi-container"),Pa(this.$container,re),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.debugLog(this.LOG_TAG,"destroy")}))}_createPlayer(e){var t=this;const i=this._findWindowItemIndex(e),s=e.uuid,r=this._opt;r.supportDblclickContainerFullscreen&&(r.supportDblclickFullscreen=!1);const o=new w_({...r,isMulti:!0,multiIndex:i,multiUuid:s,container:e.$player});return Object.keys(bt).forEach((e=>{o.on(bt[e],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.emit(At.close,i),e.player=null})),o}_initWindows(){let e="";for(let t=0;t\n
    \n
    \n \n `;const t=`
    ${e}
    `;this.$container.innerHTML=t;const i=this.$container.querySelectorAll(".jb-pro-multi-player");for(let e=0;e\n
    \n
    \n \n `;const i=`
    \n ${e}\n
    `;this.$container.innerHTML=i,this.$multiContainer=this.$container.querySelector(".jb-pro-multi-player-container-v2");const s=this.$container.querySelectorAll(".jb-pro-multi-player");for(let e=0;e{const s=t.$playerContainer,r=e(s,"click",(e=>{e.preventDefault();const t=Ia(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerClickDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);if(this.emit(Us.selected,i,e),this.getSelectedWindowUuid()===t){if(this._getWindowItem(t).isContainerFullscreen)return}1!==this._opt.split&&this._handleWindowSelect(i)})),o=e(s,"dblclick",(e=>{e.preventDefault();const t=Ia(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"dblclickDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Us.dblSelected,i,e),this._opt.supportDblclickContainerFullscreen&&1!==this._opt.split&&this._handleWindowContainerFullscreen(i)})),a=e(s,"mouseup",(e=>{const t=Ia(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerMouseupDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Us.mouseup,i,e)})),n=e(s,"mouseover",(e=>{const t=Ia(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerMouseoverDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Us.mouseover,i,e)})),l=e(s,"mouseout",(e=>{const t=Ia(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerMouseoutDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Us.mouseout,i,e)})),d=e(s,"mousedown",(e=>{const t=Ia(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerMousedownDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Us.mousedown,i,e)})),h=e(s,"dragover",(e=>{e.preventDefault()})),c=e(s,"dragenter",(e=>{const t=Ia(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerDragEnterDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this._getWindowItem(t),this.emit(Us.dragenter,i,e,{uuid:t})})),u=e(s,"dragleave",(e=>{const t=Ia(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerDragLeaveDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this._getWindowItem(t),this.emit(Us.dragleave,i,e,{uuid:t})})),p=e(s,"drop",(e=>{e.preventDefault();const t=Ia(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerDropDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t),r={};if(this._opt.draggable&&this.startDragWindowItem){const e=this.startDragWindowItem.$playerContainer,i=this.startDragWindowItem.player,o=this.startDragWindowItem.uuid,a=e.style.order;e.style.order=s.style.order,e.setAttribute("order",e.style.order),s.style.order=a,s.setAttribute("order",a);const n=this.getWindowItem(t);this.debugLog(this.LOG_TAG,`player Drop ${a} -> ${e.style.order}`),this._sortWindows(),r.fromUuid=o,r.toUuid=t,r.fromOrderIndex=Mo(a),r.toOrderIndex=Mo(e.style.order),i&&i._updateMultiIndex(Mo(e.style.order)),n.player&&n.player._updateMultiIndex(Mo(a))}this.emit(Us.drop,i,e,r)}));if(t.$playerContainerEvents=[r,a,n,l,d,o,h,c,u,p],this._opt.draggable){const i=e(s,"dragstart",(e=>{const t=Ia(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerDragStartDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this._handleWindowSelect(i),this.startDragWindowItem=this._getWindowItem(i),this.emit(Us.dragstart,i,e,{uuid:t})}));t.$playerContainerEvents.push(i)}if(this._opt.supportMousemoveEvent){const i=e(s,"mousemove",(e=>{const t=Ia(s,"uuid");if(!t)return void this.debugError(this.LOG_TAG,"playerMousemoveDestroy() data-uuid is not exist");const i=this._findWindowItemIndexByUuid(t);this.emit(Us.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,s=this._opt.split,r=t%s,o=i%s,a=(t-r-2*s)/s,n=(i-o-2*s)/s,l=(t-r)/s,d=(i-o)/s;let h=this._getCurrentMaxSplit();for(let e=0;e=Math.pow(s,2)?o:0),f=l+(e%s==s-1?r:0),m=d+(e+s>=Math.pow(s,2)?o:0);i.style.width=f+"px",i.style.height=m+"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,s=e.$playerBorder,r=t.style.width.replace("px",""),o=t.style.height.replace("px",""),a=i.style.width.replace("px",""),n=i.style.height.replace("px","");let l,d,c,u;this.specialLayoutType===Os?(l=2*r,d=2*o,c=2*a+2,u=2*n+2):this.specialLayoutType===Ns&&(l=3*r,d=3*o,c=3*a+4,u=3*n+4),t.style.width=l+"px",t.style.height=d+"px",i.style.width=c+"px",i.style.height=u+"px",s.style.width=c+"px",s.style.height=u+"px",e.player&&e.player.resize(),h=this._getSpecialMaxSplit()}for(let e=h;e{0===t&&vo(e.$playerContainer,"display","block"),e.$playerContainer.setAttribute("fullscreen","0"),e.$playerContainer.style.fullscreen="0",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.debugWarn(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(Ho(t)&&t===i.isContainerFullscreen)return;if(this._opt.draggable){if(i.isContainerFullscreen){if(i.$playerContainer.setAttribute("fullscreen","0"),i.$playerContainer.style.fullscreen="0",this.specialLayoutType){vo(this.windowList[0].$playerContainer,"display","block")}}else if(i.$playerContainer.setAttribute("fullscreen","1"),i.$playerContainer.style.fullscreen="1",this.specialLayoutType){if(0!==this._findWindowItemIndexByUuid(i.uuid)){vo(this.windowList[0].$playerContainer,"display","none")}}}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,s=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=s+"px",i.$player.style.width=t+"px",i.$player.style.height=s+"px",i.$playerBorder.style.display="none"}i.isContainerFullscreen=!i.isContainerFullscreen,i.player&&i.player.resize()}else this.debugWarn(this.LOG_TAG,`handleWindowContainerFullscreen() ${e} is not exist`)}_handleFullscreenResize(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5,t=this._getContainerRect(),i=0;this.checkRectInterval=setInterval((()=>{const s=$r.isFullscreen,r=this._getContainerRect(),o={width:screen.width,height:screen.height};this.debugLog(this.LOG_TAG,`isInFullscreen ${s} , checkRectInterval times : ${i} nowRect:${JSON.stringify(r)}, prevRect:${JSON.stringify(t)} ,window screen rect:${JSON.stringify(o)}`);const a=r.width===t.width&&r.height===t.height,n=!s||o.width-r.width<10&&o.height-r.height<10;if(a&&n||i>=e)return this.checkRectInterval&&(clearInterval(this.checkRectInterval),this.checkRectInterval=null),void this.resize();t=r,i++}),1e3)}_listenFullscreenChange(){try{const e=e=>{ha(e)===this.$container&&(this.emit(Us.multiFullscreen,$r.isFullscreen),$r.isFullscreen||-1!==window.navigator.userAgent.indexOf("Edg")?this._handleFullscreenResize():this.resize())};$r.on("change",e),this.events.destroys.push((()=>{$r.off("change",e)}))}catch(e){}}play(e,t,i){return new Promise(((s,r)=>{(No(t)||na(t))&&(i=t,t={});const o=this._getWindowItem(i);if(o)if(o.player)o.player.play(e,t).then((()=>{s()})).catch((e=>{r(e)}));else{const i=this._createPlayer(o);o.player=i,i.play(e,t).then((()=>{s()})).catch((e=>{r(e)}))}else r(`play() windowIndex ${i} is not exist`)}))}getOption(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getOption():(this.debugWarn(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.debugWarn(this.LOG_TAG,`setDebug() windowIndex ${t} is not exist`)}mute(e){const t=this._getWindowItem(e);t&&t.player?t.player.mute():this.debugWarn(this.LOG_TAG,`mute() windowIndex ${e} is not exist`)}cancelMute(e){const t=this._getWindowItem(e);t&&t.player?t.player.cancelMute():this.debugWarn(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.debugWarn(this.LOG_TAG,`setVolume() windowIndex ${t} is not exist`)}audioResume(e){const t=this._getWindowItem(e);t&&t.player?t.player.audioResume():this.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`setScaleMode() windowIndex ${t} is not exist`)}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{const r=this._getWindowItem(t);r&&r.player?r.player.pause(e).then((()=>{i()})).catch((e=>{s(e)})):s(`pause() windowIndex ${t} is not exist`)}))}close(e){return new Promise(((t,i)=>{const s=this._getWindowItem(e);s&&s.player?s.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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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(((s,r)=>{const o=this._getWindowItem(i);o&&o.player?o.player.startRecord(e,t).then((()=>{s()})).catch((e=>{r(e)})):(this.debugWarn(this.LOG_TAG,`startRecord() windowIndex ${i} is not exist`),r(`windowIndex ${i} is not exist`))}))}stopRecordAndSave(e,t,i){return new Promise(((s,r)=>{const o=this._getWindowItem(i);o&&o.player?o.player.stopRecordAndSave(e,t).then((e=>{s(e)})).catch((e=>{r(e)})):(this.debugWarn(this.LOG_TAG,`stopRecordAndSave() windowIndex ${i} is not exist`),r(`windowIndex ${i} is not exist`))}))}isPlaying(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isPlaying():(this.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`windowIndex ${e} is not exist`),!1)}isMute(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isMute():(this.debugWarn(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.debugWarn(this.LOG_TAG,`isRecording() windowIndex ${e} is not exist`),!1)}clearBufferDelay(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearBufferDelay():this.debugWarn(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.debugWarn(this.LOG_TAG,`setNetworkDelayTime() windowIndex ${t} is not exist`)}getDecodeType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getDecodeType():(this.debugWarn(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.debugWarn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getAudioEngineType(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getAudioEngineType():(this.debugWarn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getPlayingTimestamp(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getPlayingTimestamp():(this.debugWarn(this.LOG_TAG,`windowIndex ${e} is not exist`),null)}getStatus(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getStatus():(this.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`togglePerformancePanel() windowIndex ${t} is not exist`)}openZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.openZoom():this.debugWarn(this.LOG_TAG,`openZoom() windowIndex ${e} is not exist`)}closeZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.closeZoom():this.debugWarn(this.LOG_TAG,`closeZoom() windowIndex ${e} is not exist`)}isZoomOpen(e){const t=this._getWindowItem(e);return t&&t.player?t.player.isZoomOpen():(this.debugWarn(this.LOG_TAG,`isZoomOpen() windowIndex ${e} is not exist`),!1)}expandZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.expandZoom():this.debugWarn(this.LOG_TAG,`expandZoom() windowIndex ${e} is not exist`)}narrowZoom(e){const t=this._getWindowItem(e);t&&t.player?t.player.narrowZoom():this.debugWarn(this.LOG_TAG,`narrowZoom() windowIndex ${e} is not exist`)}getCurrentZoomIndex(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getCurrentZoomIndex():(this.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`updateWatermark() windowIndex ${t} is not exist`)}removeWatermark(e){const t=this._getWindowItem(e);t&&t.player?t.player.removeWatermark():this.debugWarn(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.debugWarn(this.LOG_TAG,`updateFullscreenWatermark() windowIndex ${t} is not exist`)}removeFullscreenWatermark(e){const t=this._getWindowItem(e);t&&t.player?t.player.removeFullscreenWatermark():this.debugWarn(this.LOG_TAG,`removeFullscreenWatermark() windowIndex ${e} is not exist`)}faceDetectOpen(e){const t=this._getWindowItem(e);t&&t.player?t.player.faceDetectOpen():this.debugWarn(this.LOG_TAG,`faceDetectOpen() windowIndex ${e} is not exist`)}faceDetectClose(e){const t=this._getWindowItem(e);t&&t.player?t.player.faceDetectClose():this.debugWarn(this.LOG_TAG,`faceDetectClose() windowIndex ${e} is not exist`)}objectDetectOpen(e){const t=this._getWindowItem(e);t&&t.player?t.player.objectDetectOpen():this.debugWarn(this.LOG_TAG,`objectDetectOpen() windowIndex ${e} is not exist`)}objectDetectClose(e){const t=this._getWindowItem(e);t&&t.player?t.player.objectDetectClose():this.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`addContentToCanvas() windowIndex ${t} is not exist`)}clearContentToCanvas(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearContentToCanvas():this.debugWarn(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.debugWarn(this.LOG_TAG,`setControlHtml() windowIndex ${t} is not exist`)}clearControlHtml(e){const t=this._getWindowItem(e);t&&t.player?t.player.clearControlHtml():this.debugWarn(this.LOG_TAG,`clearControlHtml() windowIndex ${e} is not exist`)}getFlvMetaData(e){const t=this._getWindowItem(e);return t&&t.player?t.player.getFlvMetaData():(this.debugWarn(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.debugWarn(this.LOG_TAG,`getExtendBtnList() windowIndex ${e} is not exist`),null)}updateAiFaceDetectInterval(e,t){const i=this._getWindowItem(t);if(!i||!i.player)return this.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(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.debugWarn(this.LOG_TAG,`hideErrorMessageTips() windowIndex ${e} is not exist`),null;t.player.hideErrorMessageTips()}destroySingle(e){return new Promise(((t,i)=>{const s=this._getWindowItem(e);s?s.player&&s.player.destroy().then((()=>{s.player=null,t()})).catch((e=>{i(e)})):(i("windowIndex is not exist"),this.debugWarn(this.LOG_TAG,`destroySingle() windowIndex ${e} is not exist`))}))}initSingle(e){return new Promise(((t,i)=>{const s=this._getWindowItem(e);if(s)if(s.player)s.player.destroy().then((()=>{s.player=null;const e=this._createPlayer(s);s.player=e,t()})).catch((e=>{i(e)}));else{const e=this._createPlayer(s);s.player=e,t()}else i("windowIndex is not exist"),this.debugWarn(this.LOG_TAG,`destroySingle() windowIndex ${e} is not exist`)}))}setFullscreenMulti(e){return new Promise(((t,i)=>{if(this.debugLog(this.LOG_TAG,"setFullscreenMulti",e),e)try{$r.request(this.$container).then((()=>{t()})).catch((e=>{this.debugError(this.LOG_TAG,"fullscreen request inner error",e),i(e)}))}catch(e){this.debugError(this.LOG_TAG,"fullscreen request error",e),i(e)}else try{$r.exit().then((()=>{t()})).catch((e=>{this.debugError(this.LOG_TAG,"fullscreen exit inner error",e),i(e)}))}catch(e){this.debugError(this.LOG_TAG,"fullscreen exit error",e),i(e)}}))}toggleSingleWindowContainerFullscreen(e,t){this.debugLog(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.debugLog(this.LOG_TAG,"selectWindow",e),this._handleWindowSelect(e)}arrangeWindow(e){this.debugLog(this.LOG_TAG,"arrangeWindow",e),this._innerArrangeWindow(e)}_innerArrangeWindow(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return void this.debugWarn(this.LOG_TAG,`arrangeWindow() split ${e} is not valid`);if([Os,Ns].includes(e))this._arrangeSpecialWindow(e);else{if(this._opt.split===e&&null===this.specialLayoutType&&Da(t))return void this.debugWarn(this.LOG_TAG,`arrangeWindow() split ${e} is not changed`);this.specialLayoutType=null,this._arrangeWindow(e)}}_arrangeWindow(e){(e=Mo(e))<1||!No(e)?this.debugWarn(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===Ns||this._opt.maxSplit<=2&&e===Os?this.debugWarn(this.LOG_TAG,`_arrangeSpecialWindow() type ${e} is not valid because maxSplit is ${this._opt.maxSplit}`):this.specialLayoutType&&this.specialLayoutType===e?this.debugWarn(this.LOG_TAG,`_arrangeSpecialWindow() type ${e} is not changed`):(this.specialLayoutType=e,e===Os?this._arrangeWindow(3):e===Ns?this._arrangeWindow(4):this.debugWarn(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===Os?e=9:this.specialLayoutType===Ns&&(e=16),e}return this._opt.split*this._opt.split}_getCurrentMaxSplitV2(){return this.specialLayoutType?this._getSpecialMaxSplit():this._opt.split*this._opt.split}_getSpecialMaxSplit(){let e=0;return this.specialLayoutType===Os?e=6:this.specialLayoutType===Ns&&(e=8),e}getSelectedWindowIndex(){return this.currentWindowIndex}getSelectedWindowUuid(){return this.currentWindowUuid}getWindowItem(e){let t=this._getWindowItem(e),i=this._findWindowItemIndexByUuid(t.uuid),s=null;return t&&(s={index:i,$player:t.$player,$playerContainer:t.$playerContainer,player:t.player,uuid:t.uuid}),s}getNextWindowItem(e){this.debugLog(this.LOG_TAG,"getNextWindowItem",e);let t=null,i=this._getWindowItem(e);if(i){const e=this._getWindowUuidList()||[],s=e.findIndex((e=>e===i.uuid));if(se===i.uuid));if(s>0){const i=s-1,r=this._findWindowItemByUuid(e[i]);if(r){t={index:this._findWindowItemIndexByUuid(r.uuid),$player:r.$player,$playerContainer:r.$playerContainer,player:r.player,uuid:r.uuid}}}}return t}getWindowUuidList(){return this._getWindowUuidList()||[]}isWindowItemHasInitPlayer(e){let t=!1,i=this._getWindowItem(e);return i&&i.player&&(t=!0),t}_getWindowItem(e){let t=null;const i=na(e)&&16===e.length;return t=i||!No(e)?this._findWindowItemByUuid(i?e:this.currentWindowUuid):this.windowList[e]||this.windowList[this.currentWindowIndex],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))}_checkHasCreated(e){if(!e)return!1;return!!Ia(e,re)}debugLog(e){if(this._opt.debug&&this.debug){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s1?t-1:0),s=1;s1?t-1:0),s=1;s1?i-1:0),o=1;o1?i-1:0),o=1;o1?t-1:0),r=1;r3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,r)));e.addEventListener(t,i,r);const o=()=>e.removeEventListener(t,i,r);return this.destroys.push(o),o}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var fe=t((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,o=i.length,s={};r0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),r=t[0].replace("data:","").replace(";base64","");let o=i.length,s=new Uint8Array(o);for(;o--;)s[o]=i.charCodeAt(o);return new File([s],"file",{type:r})}function ve(){return(new Date).getTime()}function we(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function Se(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{Se(e,i,t[i])})),e.style[t]=i,e}function Ee(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const r=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(r):r}function Be(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Ce(e){let t=0,i=Be();return r=>{t+=r;const o=Be(),s=o-i;s>=1e3&&(e(t/s*1e3),i=o,t=0)}}function Re(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function ke(e){if(null==e||""===e||0===parseInt(e)||isNaN(parseInt(e)))return"0KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}function Te(e){return null==e}function Ie(e){return!0===e||!1===e}function xe(e){return!Te(e)}function De(e){var t;if(e>-1){var i=Math.floor(e/3600),r=Math.floor(e/60)%60,o=e%60;t=i<10?"0"+i+":":i+":",r<10&&(t+="0"),t+=r+":",(o=Math.round(o))<10&&(t+="0"),t+=o.toFixed(0)}return t}function je(e){const t=e||window.event;return t.target||t.srcElement}function Le(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}function Fe(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 Ve(e){return!0!==e&&"true"!==e}fe.isEnabled,(()=>{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 Oe{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 o(){r.off(e,o);for(var s=arguments.length,a=new Array(s),n=0;n1?i-1:0),o=1;o{delete i[e]})),void delete this.e;const r=i[e],o=[];if(r&&t)for(let e=0,i=r.length;e=200&&t.status<=299}function Je(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 Pe=Ue.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),Ge="object"!=typeof window||window!==Ue?function(){}:"download"in HTMLAnchorElement.prototype&&!Pe?function(e,t,i){var r=Ue.URL||Ue.webkitURL,o=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",o.download=t,o.rel="noopener","string"==typeof e?(o.href=e,o.origin!==location.origin?We(o.href)?Qe(e,t,i):Je(o,o.target="_blank"):Je(o)):(o.href=r.createObjectURL(e),setTimeout((function(){r.revokeObjectURL(o.href)}),4e4),setTimeout((function(){Je(o)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(We(e))Qe(e,t,i);else{var r=document.createElement("a");r.href=e,r.target="_blank",setTimeout((function(){Je(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 Qe(e,t,i);var o="application/octet-stream"===e.type,s=/constructor/i.test(Ue.HTMLElement)||Ue.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||o&&s||Pe)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location=e,r=null},n.readAsDataURL(e)}else{var A=Ue.URL||Ue.webkitURL,d=A.createObjectURL(e);r?r.location=d:location.href=d,r=null,setTimeout((function(){A.revokeObjectURL(d)}),4e4)}};class Ne extends Me{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.contextGlRender=null,this.contextGlDestroy=null,this.bitmaprenderer=null,this.renderType=null,this.videoInfo={width:"",height:"",encType:""},this._initCanvasRender(),this.player.debug.log("CanvasVideo","init")}async destroy(){super.destroy(),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.player.debug.log("CanvasVideoLoader","destroy")}_initContextGl(){if(this.contextGl=function(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let r=0;for(;!t&&r{var i=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),r=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,i),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(o));var s=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(s,r),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(s));var a=e.createProgram();e.attachShader(a,o),e.attachShader(a,s),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(a)),e.useProgram(a);var n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var A=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(A),e.vertexAttribPointer(A,2,e.FLOAT,!1,0,0);var d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(a,"texturePos");function l(t,i){var r=e.createTexture();return e.bindTexture(e.TEXTURE_2D,r),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),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,t),i),r}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var u=l("ySampler",0),h=l("uSampler",1),p=l("vSampler",2);return{render:function(t,i,r,o,s){e.viewport(0,0,t,i),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t,i,0,e.LUMINANCE,e.UNSIGNED_BYTE,r),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,h),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,s),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(n),e.deleteBuffer(d),e.deleteTexture(u),e.deleteTexture(h),e.deleteTexture(p)}catch(e){}}}})(this.contextGl,this.player._opt.openWebglAlignment);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}else this.player.debug.error("CanvasVideoLoader","init webgl fail")}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=Y,this._initContext2D()):this._supportOffscreen()?(this.renderType=q,this._bindOffscreen()):(this.renderType=X,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}render(e){switch(this.player.videoTimestamp=e.ts,this.renderType){case q:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case X:this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2]);break;case Y:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),(t=e.videoFrame).close?t.close():t.destroy&&t.destroy()}var t}screenshot(e,t,i,r){e=e||ve(),r=r||Q.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!o[t]&&Q[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.toDataURL(o[t]||o.png,s);if(r===Q.base64)return a;{const t=ye(a);if(r===Q.blob)return t;r===Q.download&&Ge(t,e)}}clearView(){switch(this.renderType){case q:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,window.createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case X:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case Y:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}resize(){this.player.debug.log("canvasVideo","resize");const e=this.player._opt;let t=this.player.width,i=this.player.height;this.player.isControlBarShow()&&(Re()&&this.player.fullscreen&&e.useWebFullScreen?t-=G:i-=G);let r=this.$videoElement.width,o=this.$videoElement.height;const s=e.rotate;let a=(t-r)/2,n=(i-o)/2;270!==s&&90!==s||(r=this.$videoElement.height,o=this.$videoElement.width);const A=t/r,d=i/o;let c=A>d?d:A;e.isResize||A!==d&&(c=A+","+d),e.isFullResize&&(c=A>d?A:d);let l="scale("+c+")";s&&(l+=" rotate("+s+"deg)"),this.$videoElement.style.transform=l,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}}class He extends Me{constructor(e){super(),this.player=e;const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.disablePictureInPicture=!0,function(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.videoInfo={width:"",height:"",encType:""};const r=this.player._opt;r.useWCS&&r.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.fixChromeVideoFlashBug(),this.resize();const{proxy:o}=this.player.events;o(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this._delayPlay&&(this.player.debug.log("Video","canplay and _delayPlay is true and next play()"),this._play())})),o(this.$videoElement,"waiting",(()=>{this.player.debug.log("Video","waiting")})),o(this.$videoElement,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.emit(j.timeUpdate,t),!this.isPlaying()&&this.init&&(this.player.debug.log("Video","timeupdate and this.isPlaying is false and retry play"),this.$videoElement.play())})),this.player.debug.log("Video","init")}async destroy(){super.destroy(),this.$canvasElement=null,this.canvasContext=null,this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src="",this.$videoElement.removeAttribute("src"),this.$videoElement=null),this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.player.debug.log("Video","destroy")}fixChromeVideoFlashBug(){const e=function(){const e=navigator.userAgent.toLowerCase(),t={},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)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");i=e.match(/chrome\/([\d.]+)/)[1]}else"Firefox"===r?i=e.match(/firefox\/([\d.]+)/)[1]:"Opera"===r?i=e.match(/opera\/([\d.]+)/)[1]:"Safari"===r?i=e.match(/version\/([\d.]+)/)[1]:"Edge"===r?i=e.match(/edge\/([\d.]+)/)[1]:"QQBrowser"===r&&(i=e.match(/qqbrowser\/([\d.]+)/)[1]);t.type=r,t.version=parseInt(i)}return t}().type.toLowerCase();if("chrome"===e||"edge"===e){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.translateZ="0"}}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.warn("Video","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._play()}}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),setTimeout((()=>{this.isPlaying()||(this.player.debug.warn("Video","play failed and retry play"),this._play())}),100)})).catch((e=>{this.player.debug.error("Video","_play error",e)}))}pause(e){e?this.$videoElement&&this.$videoElement.pause():setTimeout((()=>{this.$videoElement&&this.$videoElement.pause()}),100)}clearView(){}screenshot(e,t,i,r){e=e||ve(),r=r||Q.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!o[t]&&Q[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 A=n.toDataURL(o[t]||o.png,s);if(this.canvasContext.clearRect(0,0,n.width,n.height),n.width=0,n.height=0,r===Q.base64)return A;{const t=ye(A);if(r===Q.blob)return t;r===Q.download&&Ge(t,e)}}initCanvasViewSize(){this.resize()}render(e){this.vwriter&&(this.vwriter.write(e.videoFrame),e.videoFrame.close())}resize(){let e=this.player.width,t=this.player.height;const i=this.player._opt,r=i.rotate;this.player.isControlBarShow()&&(Re()&&this.player.fullscreen&&i.useWebFullScreen?e-=G:t-=G),this.$videoElement.width=e,this.$videoElement.height=t,270!==r&&90!==r||(this.$videoElement.width=t,this.$videoElement.height=e);let o=(e-this.$videoElement.width)/2,s=(t-this.$videoElement.height)/2,a="contain";i.isResize||(a="fill"),i.isFullResize&&(a="none"),this.$videoElement.style.objectFit=a,this.$videoElement.style.transform="rotate("+r+"deg)",this.$videoElement.style.left=o+"px",this.$videoElement.style.top=s+"px"}isPlaying(){return this.$videoElement&&!this.$videoElement.paused}}class ze{constructor(e){return new(ze.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&!e.useOffscreen&&e.wcsUseVideoRender?He:Ne}}class Ye extends Oe{constructor(e){super(),this.bufferList=[],this.player=e,this.scriptNode=null,this.hasInitScriptNode=!1,this.audioContextChannel=null,this.audioContext=new(window.AudioContext||window.webkitAudioContext),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.audioEnabled(!0),this.gainNode.gain.value=0,this._prevVolume=null,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.on(j.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}resetInit(){this.init=!1,this.audioInfo={encType:"",channels:"",sampleRate:""}}async destroy(){this.closeAudio(),this.resetInit(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=be,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this._prevVolume=null,this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=P[e.encTypeCode],this.audioInfo.encTypeCode=e.encTypeCode),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(j.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}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE&&this.player._opt.wasmDecodeAudioSyncVideo){if(this.audioSyncVideoOption.diff>ie)return void this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`);if(this.audioSyncVideoOption.diff<-1e3){this.player.debug.warn("AudioContext",`audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`);let e=this.bufferList.shift();for(;e.ts-this.player.videoTimestamp<-1e3&&this.bufferList.length>0;)e=this.bufferList.shift();if(0===this.bufferList.length)return}}if(0===this.bufferList.length)return;const t=this.bufferList.shift();t&&t.ts&&(this.player.audioTimestamp=t.ts);for(let r=0;r0?this.player.emit(j.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(j.mute,!0),this.gainNode.gain.value=e,this.gainNode.gain.setValueAtTime(e,this.audioContext.currentTime),this.player.emit(j.volumechange,this.player.volume),this.player.emit(j.volume,this.player.volume),this._prevVolume=e)}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.gainNode&&this.gainNode.disconnect(this.audioContext.destination),this.gainNode&&this.gainNode.disconnect(this.mediaStreamAudioDestinationNode)),this.clear()}audioEnabled(e){e?"suspended"===this.audioContext.state&&this.audioContext.resume():"running"===this.audioContext.state&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContext.state}isStateSuspended(){return"suspended"===this.audioContext.state}clear(){this.bufferList=[]}play(e,t){this.isMute||(this.hasAudio=!0,this.bufferList.push({buffer:e,ts:t}),this.bufferList.length>20&&(this.player.debug.warn("AudioContext",`bufferList is large: ${this.bufferList.length}`),this.bufferList.length>50&&this.bufferList.shift()))}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1,this.clear()}resume(){this.playing=!0}getLastVolume(){return this._prevVolume}}class Xe{constructor(e){return new(Xe.getLoaderFactory())(e)}static getLoaderFactory(){return Ye}}class qe extends Oe{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=Ce((t=>{e.emit(j.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}async destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player.debug.log("FetchStream","fetchStream",e,JSON.stringify(t)),this.player._times.streamStart=ve();const r=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,r).then((e=>{const t=e.body.getReader();this.emit(j.streamSuccess);const r=()=>{t.read().then((e=>{let{done:t,value:o}=e;t?i.close():(this.streamRate&&this.streamRate(o.byteLength),i.dispatch(o),r())})).catch((e=>{i.close();const t=e.toString();-1===t.indexOf(Ae)&&-1===t.indexOf(de)&&e.name!==ce&&(this.abort(),this.emit(F.fetchError,e),this.player.emit(j.error,F.fetchError))}))};r()})).catch((e=>{"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(F.fetchError,e),this.player.emit(j.error,F.fetchError))}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class Ze extends Oe{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=V,this.wsUrl=null,this.streamRate=Ce((t=>{e.emit(j.kBps,(t/1024).toFixed(2))})),e.debug.log("WebsocketLoader","init")}async destroy(){this.socket&&(this.socket.close(1e3,"Client disconnecting"),this.socket=null),this.socketStatus=V,this.streamRate=null,this.wsUrl=null,this.off(),this.player.debug.log("websocketLoader","destroy")}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:r}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(j.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=O})),i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),i(this.socket,"close",(()=>{t.log("websocketLoader","socket close"),this.emit(j.streamEnd),this.socketStatus=M})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(F.websocketError,e),this.player.emit(j.error,F.websocketError),this.socketStatus=U,r.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("websocketLoader","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=ve(),this.wsUrl=e,this._createWebSocket()}}class Ke{constructor(e){return new(Ke.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===a?qe:e===s?Ze:void 0}}var _e=t((function(t){function i(e,t){if(!e)throw"First parameter is required.";t=new r(e,t=t||{type:"video"});var s=this;function a(i){i&&(t.initCallback=function(){i(),i=t.initCallback=null});var r=new o(e,t);(h=new r(e,t)).record(),u("recording"),t.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",t.type)}function n(e){if(e=e||function(){},h){if("paused"===s.state)return s.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===s.state||t.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',s.state),t.disableLogs||console.log("Stopped recording "+t.type+" stream."),"gif"!==t.type?h.stop(i):(h.stop(),i()),u("stopped")}else m();function i(i){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(s[e]=h[e])}));var r=h.blob;if(!r){if(!i)throw"Recording failed.";h.blob=r=i}if(r&&!t.disableLogs&&console.log(r.type,"->",b(r.size)),e){var o;try{o=l.createObjectURL(r)}catch(e){}"function"==typeof e.call?e.call(s,o):e(o)}t.autoWriteToDisk&&d((function(e){var i={};i[t.type+"Blob"]=e,x.Store(i)}))}else"function"==typeof e.call?e.call(s,""):e("")}}function A(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,i){if(!e)throw"Pass a callback function over getDataURL.";var r=i?i.blob:(h||{}).blob;if(!r)return t.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,i)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var o=new FileReader;o.readAsDataURL(r),o.onload=function(t){e(t.target.result)}}else{var s=function(e){try{var t=l.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return l.revokeObjectURL(t),i}catch(e){}}(A);s.onmessage=function(t){e(t.data)},s.postMessage(r)}}function c(e){e=e||0,"paused"!==s.state?"stopped"!==s.state&&(e>=s.recordingDuration?n(s.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){s&&(s.state=e,"function"==typeof s.onStateChanged.call?s.onStateChanged.call(s,e):s.onStateChanged(e))}var h,p='It seems that recorder is destroyed or "startRecording" is not invoked for '+t.type+" recorder.";function m(){!0!==t.disableLogs&&console.warn(p)}var g={startRecording:function(i){return t.disableLogs||console.log("RecordRTC version: ",s.version),i&&(t=new r(e,i)),t.disableLogs||console.log("started recording "+t.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),s.recordingDuration&&c(),s):(a((function(){s.recordingDuration&&c()})),s)},stopRecording:n,pauseRecording:function(){h?"recording"===s.state?(u("paused"),h.pause(),t.disableLogs||console.log("Paused recording.")):t.disableLogs||console.warn("Unable to pause the recording. Recording state: ",s.state):m()},resumeRecording:function(){h?"paused"===s.state?(u("recording"),h.resume(),t.disableLogs||console.log("Resumed recording.")):t.disableLogs||console.warn("Unable to resume the recording. Recording state: ",s.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return s.recordingDuration=e,s.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){s.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),t.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(h)return h.blob;m()},getDataURL:d,toURL:function(){if(h)return l.createObjectURL(h.blob);m()},getInternalRecorder:function(){return h},save:function(e){h?y(h.blob,e):m()},getFromDisk:function(e){h?i.getFromDisk(t.type,e):m()},setAdvertisementArray:function(e){t.advertisement=[];for(var i=e.length,r=0;r-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),m=!h&&!u&&!!navigator.webkitGetUserMedia||v()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),g=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);g&&!m&&-1!==navigator.userAgent.indexOf("CriOS")&&(g=!1,m=!0);var f=window.MediaStream;function b(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 y(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 o=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,o);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,o);var s=document.createElement("a");s.href=l.createObjectURL(e),s.download=o,s.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(s),"function"==typeof s.click?s.click():(s.target="_blank",s.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),l.revokeObjectURL(s.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 w(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function S(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===f&&"undefined"!=typeof webkitMediaStream&&(f=webkitMediaStream),void 0!==f&&void 0===f.prototype.stop&&(f.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),i.invokeSaveAsDialog=y,i.getTracks=w,i.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,o=EBML.tools,s=new FileReader;s.onload=function(e){r.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var s=o.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([s,a],{type:"video/webm"});t(n)},s.readAsArrayBuffer(e)},i.bytesToSize=b,i.isElectron=v;var E={};function B(){if(p||g||u)return!0;var e,t,i=navigator.userAgent,r=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return(m||h)&&(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)),o=parseInt(""+r,10),isNaN(o)&&(r=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),o>=49}function C(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(w(e,"video").length&&w(e,"audio").length)navigator.mozGetUserMedia?(r=new f).addTrack(w(e,"audio")[0]):r=new f(w(e,"audio")),e=r;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=m?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var o,s=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return o&&o.mimeType?o.mimeType:e.mimeType||"video/webm"}function A(){s=[],o=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return s},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],s=[];var r=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",r),o&&(o=null),m&&!B()&&(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{o=new MediaRecorder(e,r),t.mimeType=r.mimeType}catch(t){o=new MediaRecorder(e)}r.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in o&&!1===o.canRecordMimeType(r.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType)),o.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+b(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:n(r)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(r)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(s.push(e.data),a(),"function"==typeof t.ondataavailable)){var o=t.getNativeBlob?e.data:new Blob([e.data],{type:n(r)});t.ondataavailable(o)}},o.onstart=function(){d.push("started")},o.onpause=function(){d.push("paused")},o.onresume=function(){d.push("resumed")},o.onstop=function(){d.push("stopped")},o.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&&o&&"inactive"===o.state)return delete t.timeslice,void o.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==o.state&&"stopped"!==o.state&&o.stop())},"number"==typeof t.timeSlice?(a(),o.start(t.timeSlice)):o.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,o&&(this.recordingCallback=e,"recording"===o.state&&o.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(s,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){o&&"recording"===o.state&&o.pause()},this.resume=function(){o&&"paused"===o.state&&o.resume()},this.clearRecordedData=function(){o&&"recording"===o.state&&i.stop(A),A()},this.getInternalRecorder=function(){return o},this.blob=null,this.getState=function(){return o&&o.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function r(){if(o&&!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 R(e,t){if(!w(e,"audio").length)throw"Your stream has no audio tracks.";var r,o=this,s=[],a=[],n=!1,A=0,d=2,c=(t=t||{}).desiredSampRate;function u(){if(!1===t.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,r=e.numberOfAudioChannels,o=e.leftBuffers.slice(0),s=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,A=e.desiredSampRate;function d(e,t,i){var r=Math.round(e.length*(t/i)),o=[],s=Number((e.length-1)/(r-1));o[0]=e[0];for(var a=1;a96e3)&&(t.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),t.disableLogs||t.desiredSampRate&&console.log("Desired sample-rate: "+t.desiredSampRate);var y=!1;function v(){s=[],a=[],A=0,E=!1,n=!1,y=!1,p=null,o.leftchannel=s,o.rightchannel=a,o.numberOfAudioChannels=d,o.desiredSampRate=c,o.sampleRate=b,o.recordingLength=A,B={left:[],right:[],recordingLength:0}}function S(){r&&(r.onaudioprocess=null,r.disconnect(),r=null),m&&(m.disconnect(),m=null),v()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return t.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){t.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;r.onaudioprocess=function(e){if(!y)if(!1===u()&&(t.disableLogs||console.log("MediaStream seems stopped."),r.disconnect(),n=!1),n){E||(E=!0,t.onAudioProcessStarted&&t.onAudioProcessStarted(),t.initCallback&&t.initCallback());var i=e.inputBuffer.getChannelData(0),c=new Float32Array(i);if(s.push(c),2===d){var l=e.inputBuffer.getChannelData(1),h=new Float32Array(l);a.push(h)}A+=f,o.recordingLength=A,void 0!==t.timeSlice&&(B.recordingLength+=f,B.left.push(c),2===d&&B.right.push(h))}else m&&(m.disconnect(),m=null)},p.createMediaStreamDestination?r.connect(p.createMediaStreamDestination()):r.connect(p.destination),this.leftchannel=s,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=b,o.recordingLength=A;var B={left:[],right:[],recordingLength:0};function C(){n&&"function"==typeof t.ondataavailable&&void 0!==t.timeSlice&&(B.left.length?(h({desiredSampRate:c,sampleRate:b,numberOfAudioChannels:d,internalInterleavedLength:B.recordingLength,leftBuffers:B.left,rightBuffers:1===d?[]:B.right},(function(e,i){var r=new Blob([i],{type:"audio/wav"});t.ondataavailable(r),setTimeout(C,t.timeSlice)})),B={left:[],right:[],recordingLength:0}):setTimeout(C,t.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,o,s,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&A&&A[2]&&(n=parseInt(A[2],10)),a&&n<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(s=!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 a=new f;a.addTrack(w(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(o=new C(e,{mimeType:t.mimeType||"video/webm"})).record()}else h.frames=[],u=(new Date).getTime(),l();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var r=h.frames.length;h.frames.forEach((function(e,i){var o=r-i;t.disableLogs||console.log(o+"/"+r+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(o,r);var s=e.image.toDataURL("image/webp",1);h.frames[i].image=s})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){s=!1;var r=this;i&&o?o.stop(e):this.getWebPImages((function(){h.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),h.frames=[]}))}))};var d=!1;function c(){h.frames=[],s=!1,d=!1}function l(){if(d)return u=(new Date).getTime(),setTimeout(l,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),h.frames.push({image:(r=document.createElement("canvas"),o=r.getContext("2d"),r.width=e.width,r.height=e.height,o.drawImage(e,0,0),r),duration:i}),void(s&&setTimeout(l,t.frameInterval))}var r,o;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(l,t.frameInterval);u=(new Date).getTime(),h.frames.push({image:e.toDataURL("image/webp",1),duration:i}),s&&setTimeout(l,t.frameInterval)}})}this.pause=function(){d=!0,o instanceof C&&o.pause()},this.resume=function(){d=!1,o instanceof C?o.resume():s||this.record()},this.clearRecordedData=function(){s&&this.stop(c),c()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new I.Video(100)}function T(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?s?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),n.paused&&n.play(),l.drawImage(n,0,0,c.width,c.height),d.frames.push({duration:t,image:c.toDataURL("image/webp")}),void(o||setTimeout(i,e,e))):setTimeout(i,e,e)}function r(e,t,i,r,o){var s=document.createElement("canvas");s.width=c.width,s.height=c.height;var a,n,A,d=s.getContext("2d"),l=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,p=0,m=0,g=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=r&&r>=0&&r<=1?r:0,v=!1;n=-1,A=(a={length:h,functionToLoop:function(t,i){var r,o,s,a=function(){!v&&s-r<=s*y||(u&&(v=!0),l.push(e[i])),t()};if(v)a();else{var n=new Image;n.onload=function(){d.drawImage(n,0,0,c.width,c.height);var e=d.getImageData(0,0,c.width,c.height);r=0,o=e.data.length,s=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({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*s[0].width:s[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),o.height=s[0].height*n}else o.width=a.width||360,o.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),s.forEach((function(e,t){u(e,t)})),setTimeout(l,a.frameInterval)}}function u(e,t){if(!r){var i=0,o=0,a=e.width,n=e.height;1===t&&(i=e.width),2===t&&(o=e.height),3===t&&(i=e.width,o=e.height),4===t&&(o=2*e.height),5===t&&(i=e.width,o=2*e.height),6===t&&(o=3*e.height),7===t&&(i=e.width,o=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(o=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),s.drawImage(e,i,o,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(s,i,o,a,n,t)}}function h(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function p(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=h(e);t.stream=e,i.push(t)}}))}void 0!==n?c.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(c.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){l()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var r=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var o=h(t);o.stream=t,i.push(o),r.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var s=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),s.connect(a.audioDestination),r.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(r)}))},this.releaseStreams=function(){i=[],r=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,s.clearRect(0,0,o.width,o.height),o.stream&&(o.stream.stop(),o.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),p(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){r=!1;var t=function(){var e;p(),"captureStream"in o?e=o.captureStream():"mozCaptureStream"in o?e=o.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),o.stream=t,t}(),i=function(){c.AudioContextConstructor||(c.AudioContextConstructor=new c.AudioContext);a.audioContext=c.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.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=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.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 L(e,t){e=e||[];var i,r,o=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 o;i=new j(e,t.elementClass||"multi-streams-mixer"),(o=[],e.forEach((function(e){w(e,"video").forEach((function(e){o.push(e)}))})),o).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 C(i.getMixedStream(),t)).record()},this.stop=function(e){r&&r.stop((function(t){o.blob=t,e(t),o.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(o){if(!o)throw"First parameter is required.";o instanceof Array||(o=[o]),e.concat(o),r&&i&&(i.appendStreams(o),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 F(e,t){var i,r,o;function s(){return new ReadableStream({start:function(r){var o=document.createElement("canvas"),s=document.createElement("video"),a=!0;s.srcObject=e,s.muted=!0,s.height=t.height,s.width=t.width,s.volume=0,s.onplaying=function(){o.width=t.width,o.height=t.height;var e=o.getContext("2d"),n=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),r.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(s,0,0),"closed"!==r._controlledReadableStream.state)try{r.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},s.play()}})}function a(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var d=new Blob([A],{type:"text/javascript"});t.workerPath=l.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}),s().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&&(o||n.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(){n=[],o=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){o=!0},this.resume=function(){o=!1};var n=[];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(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],o=!1,this.blob=null},this.blob=null}i.DiskStorage=x,i.GifRecorder=D,i.MultiStreamRecorder=L,i.RecordRTCPromisesHandler=function(e,t){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var r=this;r.recordRTC=new i(e,t),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"},i.WebAssemblyRecorder=F}));class $e extends Oe{constructor(e){super(),this.player=e,this.fileName="",this.fileType=e._opt.recordType||c,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}destroy(){this._reset(),this.player.debug.log("Recorder","destroy")}setFileName(e,t){this.fileName=e,d!==t&&c!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25);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 t=this.player.audio.mediaStreamAudioDestinationNode.stream;if(t.getAudioTracks().length>0){const i=t.getAudioTracks()[0];i&&i.enabled&&e.addTrack(i)}}this.recorder=_e(e,t)}catch(t){e.error("Recorder","startRecord error",t),this.emit(j.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(j.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(j.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(j.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(j.recordEnd);const e=(this.fileName||ve())+"."+(this.fileType||c);Ge(this.recorder.getBlob(),e),this._reset(),this.player.emit(j.recording,!1)}))}_reset(){this.isRecording=!1,this.recordingTimestamp=0,this.recorder&&(this.recorder.destroy(),this.recorder=null),this.fileName=null,this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}}class et{constructor(e){return new(et.getLoaderFactory())(e)}static getLoaderFactory(){return $e}}class tt{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}async destroy(){this.decoderWorker.postMessage({cmd:x}),this.decoderWorker.terminate(),this.decoderWorker=null,this.player.debug.log("decoderWorker","destroy")}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case p:e.log("decoderWorker","onmessage:",p),this.player.loaded||this.player.emit(j.load),this.player.emit(j.decoderWorkerInit),this._initWork();break;case v:e.log("decoderWorker","onmessage:",v,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=ve()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case y:e.log("decoderWorker","onmessage:",y,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case m:if(e.log("decoderWorker","onmessage:",m,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0)return void this.player.emit(F.webglAlignmentError);this.player.video.initCanvasViewSize();break;case b:e.log("decoderWorker","onmessage:",b,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i));break;case g:this.player.handleRender(),this.player.video.render(i),this.player.emit(j.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=ve(),this.player.handlePlayToRenderTimes());break;case f:this.player.playing&&this.player.audio&&this.player.audio.play(i.buffer,i.ts);break;case w:i.message&&-1!==i.message.indexOf(S)&&this.player.emitError(F.wasmDecodeError);break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:k,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,i){const r={type:B,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:T,buffer:e,options:r},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:E,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:T,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:I,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:D,key:e.key,value:e.value})}}class it extends Oe{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off(),this.player.debug.log("CommonDemux","destroy")}getDelay(e){if(!e)return-1;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;this.delay=t>=i?t-i:i-t}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}initInterval(){this.player.debug.log("common dumex","init Interval");let e=()=>{let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay;if(this.player._opt.useMSE&&this.player.mseDecoder&&this.player.mseDecoder.getSourceBufferUpdating())this.player.debug.warn("CommonDemux",`_loop getSourceBufferUpdating is true and bufferList length is ${this.bufferList.length}`);else if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===E&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===E&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&this.getDelay(e.ts)<=Math.min(t,200)&&(this.dropping=!1,this._doDecoderDecode(e))}else e=this.bufferList[0],-1===this.getDelay(e.ts)?(this.bufferList.shift(),this._doDecoderDecode(e)):this.delay>t+i?(this.resetDelay(),this.dropping=!0):(e=this.bufferList[0],this.getDelay(e.ts)>t&&(this.bufferList.shift(),this._doDecoderDecode(e)))};e(),this.stopId=setInterval(e,10)}_doDecode(e,t,i,r,o){const s=this.player;let a={ts:i,cts:o,type:t,isIFrame:!1};s._opt.useWCS&&!s._opt.useOffscreen||s._opt.useMSE?(t===B&&(a.isIFrame=r),this.pushBuffer(e,a)):t===B?s.decoderWorker&&s.decoderWorker.decodeVideo(e,i,r):t===E&&s._opt.hasAudio&&s.decoderWorker&&s.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:r}=t;e.type===E?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===B&&(t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&r.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts))}pushBuffer(e,t){t.type===E?this.bufferList.push({ts:t.ts,payload:e,type:E}):t.type===B&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:B,isIFrame:t.isIFrame})}close(){}_decodeEnhancedH265Video(e,t){const i=e[0],r=48&i,o=15&i,s=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),A="a"==String.fromCharCode(s[0]);if(o===le){if(r===pe){const t=e.slice(5);if(!A){const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this._doDecode(e,B,0,!0,0)}}}else if(o===ue){let i=e,o=0;const s=r===pe;if(!A){n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,o=n[0];i=Fe(e.slice(8),s),this._doDecode(i,B,t,s,o)}}else if(o===he){const i=r===pe;let o=Fe(e.slice(5),i);this._doDecode(o,B,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}}class rt extends it{constructor(e){super(e),this.input=this._inputFlv(),this.flvDemux=this.dispatchFlvData(this.input),e.debug.log("FlvDemux","init")}destroy(){super.destroy(),this.input=null,this.flvDemux=null,this.player.debug.log("FlvDemux","destroy")}dispatch(e){this.flvDemux(e)}*_inputFlv(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),r=this.player;for(;;){t[3]=0;const e=yield 15,o=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];let a=i[0];16777215===a&&(t[3]=e[11],a=i[0]);const n=yield s;switch(o){case C:r._opt.hasAudio&&(r.updateStats({abps:n.byteLength}),n.byteLength>0&&this._doDecode(n,E,a));break;case R:if(r._times.demuxStart||(r._times.demuxStart=ve()),r._opt.hasVideo){r.updateStats({vbps:n.byteLength});const e=n[0];if(this._isEnhancedH265Header(e))this._decodeEnhancedH265Video(n,a);else{const e=n[0]>>4==1;if(n.byteLength>0){i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let t=i[0];this._doDecode(n,B,a,e,t)}}}}}}dispatchFlvData(e){let t=e.next(),i=null;return r=>{let o=new Uint8Array(r);if(i){let e=new Uint8Array(i.length+o.length);e.set(i),e.set(o,i.length),o=e,i=null}for(;o.length>=t.value;){let i=o.slice(t.value);t=e.next(o.slice(0,t.value)),o=i}o.length>0&&(i=o)}}close(){this.input&&this.input.return(null)}}class ot extends it{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy"),this.player=null}dispatch(e){const t=this.player,i=new DataView(e),r=i.getUint8(0),o=i.getUint32(1,!1),s=new ArrayBuffer(4),a=new Uint32Array(s);switch(r){case E:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,r,o)}break;case B:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=ve()),i.byteLength>5){const s=new Uint8Array(e,5),n=s[0];if(this._isEnhancedH265Header(n))this._decodeEnhancedH265Video(s,o);else{const e=i.getUint8(5)>>4==1;t.updateStats({vbps:s.byteLength}),a[0]=s[4],a[1]=s[3],a[2]=s[2],a[3]=0;let n=a[0];this._doDecode(s,r,o,e,n)}}else this.player.debug.warn("M7sDemux","dispatch","dv byteLength is",i.byteLength)}}}class st{constructor(e){return new(st.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===A?ot:e===n?rt:void 0}}class at{constructor(e){this.TAG="ExpGolomb",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,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<=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),o=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 nt{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),o=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[o]=t[e],o++);return new Uint8Array(r.buffer,0,o)}static parseSPS(e){let t=nt._ebsp2rbsp(e),i=new at(t);i.readByte();let r=i.readByte();i.readByte();let o=i.readByte();i.readUEG();let s=nt.getProfileString(r),a=nt.getLevelString(o),n=1,A=420,d=[0,420,422,444],c=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(A=d[n]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],w=r[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);E=i.readBool(),B=t,C=2*e,S=B/C}}let R=1;1===v&&1===w||(R=v/w);let k=0,T=0;if(0===n)k=1,T=2-m;else{k=3===n?1:2,T=(1===n?2:1)*(2-m)}let I=16*(h+1),x=16*(p+1)*(2-m);I-=(g+f)*k,x-=(b+y)*T;let D=Math.ceil(I*R);return i.destroy(),i=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:u,chroma_format:A,chroma_format_string:nt.getChromaFormatString(A),frame_rate:{fixed:E,fps:S,fps_den:C,fps_num:B},sar_ratio:{width:v,height:w},codec_size:{width:I,height:x},present_size:{width:D,height:x}}}static _skipScalingList(e,t){let i=8,r=8,o=0;for(let s=0;s ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),void this.player.emit(F.webcodecsWidthOrHeightChange)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?Z:K});this.player.emit(j.timeUpdate,t);try{if(this.isDecodeStateClosed())return void this.player.debug.warn("Webcodecs","VideoDecoder isDecodeStateClosed true");this.decoder.decode(r)}catch(e){this.player.debug.error("Webcodecs","VideoDecoder",e),(-1!==e.toString().indexOf(ae)||-1!==e.toString().indexOf(ne))&&this.player.emitError(F.webcodecsDecodeError)}}else this.player.debug.warn("Webcodecs","VideoDecoder isDecodeFirstIIframe false")}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===J)return void this.emit(F.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=ve());const i=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));this.player.debug.log("Webcodecs","VideoDecoder configure",i);try{this.decoder.configure(i)}catch(e){return this.player.debug.error("Webcodecs","VideoDecoder configure",e),void this.player.emit(F.webcodecsConfigureError)}this.hasInit=!0}}isDecodeStateClosed(){return"closed"===this.decoder.state}}const ct={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var lt=Object.keys(ct).reduce(((e,t)=>(e[t]=`\n \n ${ct[t]?`${ct[t]}`:""}\n`,e)),{}),ut=(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",Se(r,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let o=e.width,s=e.height;i(r,"load",(()=>{i(r.contentDocument.defaultView,"resize",(()=>{e.width===o&&e.height===s||(o=e.width,s=e.height,e.emit(j.resize),n())}))})),e.$container.appendChild(r),e.on(j.destroy,(()=>{e.$container.removeChild(r)})),e.on(j.volumechange,(()=>{!function(e){if(0===e)Se(t.$volumeOn,"display","none"),Se(t.$volumeOff,"display","flex"),Se(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=Ee(t.$volumePanel,"height")||60,r=Ee(t.$volumeHandle,"height"),o=i-(i-r)*e-r;Se(t.$volumeHandle,"top",`${o}px`),Se(t.$volumeOn,"display","flex"),Se(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(j.loading,(e=>{Se(t.$loading,"display",e?"flex":"none"),Se(t.$poster,"display","none"),e&&Se(t.$playBig,"display","none")}));const a=i=>{let r=Ie(i)?i:e.fullscreen;Se(t.$fullscreenExit,"display",r?"flex":"none"),Se(t.$fullscreen,"display",r?"none":"flex")},n=()=>{Re()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){let i=e.height/2-e.width+19,r=e.height/2-19;t.$controls.style.transform=`translateX(${-i}px) translateY(-${r}px) rotate(-90deg)`}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)"}),10)};try{fe.on("change",a),e.events.destroys.push((()=>{fe.off("change",a)}))}catch(e){}e.on(j.webFullscreen,(e=>{a(e),n()})),e.on(j.recording,(()=>{Se(t.$record,"display",e.recording?"none":"flex"),Se(t.$recordStop,"display",e.recording?"flex":"none"),Se(t.$recording,"display",e.recording?"flex":"none"),!e.recording&&t.$recordingTime&&(t.$recordingTime.innerHTML=De(0))})),e.on(j.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=De(e))})),e.on(j.playing,(e=>{Se(t.$play,"display",e?"none":"flex"),Se(t.$playBig,"display",e?"none":"block"),Se(t.$pause,"display",e?"flex":"none"),Se(t.$screenshot,"display",e?"flex":"none"),Se(t.$record,"display",e?"flex":"none"),Se(t.$qualityMenu,"display",e?"flex":"none"),Se(t.$volume,"display",e?"flex":"none"),a(),e||t.$speed&&(t.$speed.innerHTML=ke(""))})),e.on(j.kBps,(e=>{const i=ke(e);t.$speed&&(t.$speed.innerHTML=i)}))};function ht(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===i&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}ht('@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}}.jessibuca-container .jessibuca-icon{cursor:pointer;width:16px;height:16px}.jessibuca-container .jessibuca-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}.jessibuca-container .jessibuca-play-big{position:absolute;display:none;height:100%;width:100%;background:rgba(0,0,0,.4)}.jessibuca-container .jessibuca-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,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.jessibuca-container .jessibuca-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC")}.jessibuca-container .jessibuca-recording{display:none;position:absolute;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:95px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jessibuca-container .jessibuca-recording .jessibuca-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;animation:magentaPulse 1s linear infinite}.jessibuca-container .jessibuca-recording .jessibuca-recording-time{font-size:14px;font-weight:500;color:#ddd}.jessibuca-container .jessibuca-recording .jessibuca-icon-recordStop{width:16px;height:16px;cursor:pointer}.jessibuca-container .jessibuca-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}.jessibuca-container .jessibuca-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jessibuca-container .jessibuca-controls{background-color:#161616;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:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;-webkit-user-select:none;user-select:none}.jessibuca-container .jessibuca-controls .jessibuca-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jessibuca-container .jessibuca-controls .jessibuca-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jessibuca-container .jessibuca-controls .jessibuca-fullscreen,.jessibuca-container .jessibuca-controls .jessibuca-fullscreen-exit,.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-microphone-close,.jessibuca-container .jessibuca-controls .jessibuca-pause,.jessibuca-container .jessibuca-controls .jessibuca-play,.jessibuca-container .jessibuca-controls .jessibuca-record,.jessibuca-container .jessibuca-controls .jessibuca-record-stop,.jessibuca-container .jessibuca-controls .jessibuca-screenshot{display:none}.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-icon-mute{z-index:1}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom{display:flex;justify-content:space-between;height:100%}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-left,.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-right{display:flex;align-items:center}.jessibuca-container.jessibuca-controls-show .jessibuca-controls{opacity:1;visibility:visible}.jessibuca-container.jessibuca-controls-show-auto-hide .jessibuca-controls{opacity:.8;visibility:visible;display:none}.jessibuca-container.jessibuca-hide-cursor *{cursor:none!important}.jessibuca-container .jessibuca-icon-loading{width:50px;height:50px;background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%;animation:rotation 1s linear infinite}.jessibuca-container .jessibuca-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAE5UlEQVRoQ+1YW2sdVRT+1s7JxbsoVkEUrIIX0ouz15zYNA+N1RdtQfCltlUfvLbqL/BCwZ8grbHtizQqPojgBSr0JkiMmT2nxgapqBURtPVCq7HxJCeZJVPmxDlzZubMmXOSEsnAvOy917fXt9e39tp7E5b4R0vcfywTuNgRbBgBx3HuJqLVzPzmYjprjHkcwAlmLqXNm4XAISLaSESPaq2HF4OE67rbRGRYRA7btn1fbgLGmKsA/Azg0gBkGzO/vZAkHMd5hIiqc5wHcCMz/5k0Z2oExsfHV1QqldPAf8lORNu11m8tBAljzFYAYWxRSl1vWdZvuQj4RsYYF4AVBlgIOVVlE55HRIxt23ZuCfmGjuOsJ6LPoiAistW27XfaEYmIbOYhPc9bXywWR1oiEJDYQkR1zrYjEjGyqfqbKd8a7kJVtLgQ+30i8pht2wfyRKIdmJkJBPkQTbILfudJ7CTZNBvVpggEcgpvc/ML38zESbLJsxBNE/A9biX0rdjGyTQXgbxyapdsarb0PMlXtWnGoXbKpm0Essqp3bJpK4E0OXmed3+hUBDP8w5FI91M0rdcyLLILElOCbaZilSWeXMncRx4klTCY1spfG3dhZJWx3GcDUR0EEB3ZMw0ET2gtT6SZWWzjmlrBIJCl0hAKfWgZVmHszqXZVxbCSxpCS2JJA6umIhe8ZKKVLPbaBJ+S9toqVRa53nedgAbAKwIwH4FcAzAa0R0l4i8F7PPz189k6RFRA+LyNcAXojDV0oNW5b1eW4Cxpg9AHZkSaaa6hhzb065uDSCH2LmRB8Sk9gY4293g43Qo/1pV80m8yQMfZSZ781cB1zXHRKRZ2IMpgD8A+DamL4ZItqitX4/jbQx5iEA7wLoihn3V/ACckWMJN/QWj9b1x5tGBsbW6uUOh5pPy0iL3Z2dn6ilJqanp5ep5TaJSLhF4NppdRNaU8gPmapVLrO87yfIoXuWyJ6uVKp+HmFjo6OQSJ6FcBtYT+UUmstyxqvkWuUgDFmP4AnQu2/e563qlgs+u9DNZ8xZhRAX7VRRPbath0XuXk7Y8xeAE+FgL6fnJzsHRwcLIfBR0ZGLunq6poAsDLUvp+Zw7b1r9PGmJMAbg8Z7WDmoThZuK67WkS+DD18fcPMdzSQUBR/EzN/nIC/SUQ+DPXV4dclsTHmHAD/SfHCNzc3t7Kvr++HJKeMMacA3BL0nyuXyzcPDAxMxo0fHR29slAo/Ajg6qD/fE9Pzw29vb1/x42fmJi4vFwu+5G/LOg/y8zXNJLQ2dAES5JANMQ7mfn1jBI6ycx3NiMhItqstf4oAX+ziHwQ6qvDj5NQNIn/ALCKmX+JSeIvABRD7fuY+ekGBPYBeDI05tTMzExvf3+/vz2Hk91/ET8RSeI6/DoCpVJpjed5fmKGvzMAXpqdnT3oed5Ud3d3v4jsAqBr9Ei0Rmv9VRqBBPzvROQVETnq2xJRdRu9tRF+bCVOKWT+Kvl/TSIFk6SW/LAjKfjV5K8rZABi8dOOEv7FI7Z8x6zwEWbemLbyMfJr5qiSiJ96oclymBOR3bZtP9+M89WxxpjdAHY2sN3DzM8ljWl4I3Nd9x7/OE1ENcdpETnmH3e11n41zv0l4J8RkU+J6AAz+xtF4teQQG7PFslwmcAiLfSyhC72Qv9/I/Avns2OT7QJskoAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAED0lEQVRoQ+2ZycsdRRTFf2ejqHFAMQqiYBTUoElUHLNx3GgCgpuYRF2o0UT9CxwQ/BMkMSbZSKLiQgQHUDCJgjiAxiEiESdEcJbEedgcKaj3UV+/6q7u/jovPPkK3qbr1ql76p5bt6qemPKmKfefeQKHOoLFCNg+H1gi6fFJOmv7VmCvpD1N87Yh8ApwNXCzpB2TIGF7DRDm2inpmt4EbB8LfAMcGUHWSHryYJKwfRMwmuMP4BRJv9TN2RgB2wuB72BWsq+V9MTBIGF7NZBiGzhJ0o+9CIRBtt8FLqgADC6nRDbpVO9Iuqi3hCKB5cDrGZDVkp4aIhIV2aSQyyW9MScCkcQqIOfsnCORkc3I31b5VtyFRmg1IQ7dt0ja3icSQ2C2JhAjUU2ykd+dE7tBNp2i2olAJJFuc+nCt564QTadF6IzgUhiVGiqyinKaQjZpJP2ItBXTkPJZhACXeU0pGwGI9BWTkPLZlACBTldG4o5EA6E1dY66edcyNrs8Q36zg1vVaTazNs7iXPgDVJJzYs7VRvHRzaDEohyugJ4CTi84sg/wHWSdnVxsGQ7aQLXS9pZcqpL/6AEplpCU5HE8YpJ9YrXUKQ6baN1+HPaRm1fBqwFQnKGK2ZoPwCvAo8Ai4FnMpPMHMwapHUj8DFwbw3+Dklv9iZgexOwvktSRduxU2VDlErwmyXV+lCbxLbDdndlCT3TX3vV7JgnKfRuSVflfMkSsL0ZuDMz4E/gL+CETN+/wCpJzzaRtn0D8DRwWMbu1/gCcnSm7zFJd1W/jxGwvQx4r2IYnlbuA14GAomQFw8B6YtBKFSnNj2BxEJ3IvB1pdB9CjwQ8yqYhcg/DJxZ8WOZpA/SbzkC24DbEqOfgPMkBRKzmu23gEuSj1sk5SI3Y2J7C3BHMuZz4FxJf6fgto8APgIWJd+3SUrHjr9O294HnJUMWi8pSGqs2V4CvJ88fH0i6eyChKr4KyS9WIO/Ang+6RvDz0XgABCeFEdtkaQv65yy/QVweuwPY0+T9FuNQ8cAXwHHxf7wdHiypN9r7BfEl8GjYv9+SceXJLQ/mSDYTh2Baog3SHq0pYT2STqno4RWSnqhBn8l8FzSN4bfJol/jkn8bXUS228DFyfft0paVyCwFbg9sQkSDEkctueZZju8iO+tJPEYfo7A0piYKd73wP3xnB+20cvjNnphxdmlkj4sEMjhfwY8COyOY0fb6Bkl/K6FLKxS+M1KpDhJY8mvrG5doRwlf66QZfGbjhLh4pEt35kV3iUp/IvTunU8qtTil/7gaHOY2yjpntaez9b5RmBDYewmSXfX2RRvZLYvbThOh+NuqMa9Ww1+yLnXgO2SwkZR24oEens2oYHzBCa00PMSOtQL/f+NwH+Hg8hAnbrYgQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABA0lEQVRoQ+1YwQqCUBAcfWXXsLr2AXWTPXno8yVB8AP6Aa3oHI+kCDqYaawJljSe133uzO44bx0M/HEG/v1gAd9mkAyQgY4I/F8LJUlyrQFtD2AtIkcNoFEU+Z7n7QD4DfFHEVlocrVmgAUAIAOl3mILPcDgEFcUhyrUKMGUUcroc3NQRimj9XJBGaWMvvPydKN0o6/9QTdKN6rZANxj6EbpRulGuZnjYqs8BbyR8Ub2Izeys+u6yyAIDpo/ehzHM2NMDsA0xFsRmWhyfTIDWSXxCEBmrd2EYXjSHJqm6bQoii2AOYBL5Z0xgFxEVppcrQvQJO0zhgX0iXbdWWSADHRE4AZQ731AhEUeNwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAA7klEQVRoQ+2YSwrCQBBEX6HiVvxsPYDewfN7By/gD9ciQkvERQwJdBSiYs0mEDo96aruombEjy/9+P/jAj7NoBkwA28i8H8tFBFRA9oeWEo6ZgCNiDGwAYpn3TpKmmVytWbABQBmoNRbbqEHGB7iiuJYhRol2DJqGX1uDsuoZdRmLuNZSzGWUcuoZdRHSp/IylNgK2ErYSthK3FHwLcSvpXIjoLt9Jfa6TMwl3TIMBkRE2AH9BriL5KGmVyvWIltJXEfKN6tJJ0ym0bECFgDU+Ba+WZQFCdpkcnVuoBM0i5jXECXaNftZQbMwJsI3AAPN3dAQflHegAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC+UlEQVRoQ+1ZS2sTURT+zlDJYE3XSq219QHVuEjnJDT+Bff9Abqw2voAEfGxqygUqWhVFHGl/yMLu9BwByxk5SNI66ML6U7axjhHbmhgWiftncxoOiV3FcI53z3f/e65594zhIQPSnj86BBot4IdBToKRFyBnbeFlFIScVEiuYvIWC6Xe2YK8pcC7SYA4CMzH4mDQBXAqilQBDsLQLfPf9FxnF4i8kwwmypARI+Wl5dvmIBEsUmlUkNE9NaHsVCpVAZGR0d/m+A2JSAid3K53E0TkCg2pVKpz7KseR/GfKVSGYxMAMA0M1+JEpyJb6lUOm5ZVnkrAsVisaunp+esiByr1Wp3R0ZGvmifzZK4XQQWHMc52MgBpdQuAOcAXABwuB400ZTjONdaIjA7O5u2bVsnWU1EujzP+5nP5xdMVjvIJkCBD8x8VCm1G8AYgAkAAxt8Z5j5YmgCSqlTAJ4D2OcD/AXgATNfbYVEAIFPIvKKiE4D6GuCea8xX6gtpJT6DmBvECgRFRzHeROWRAABE4iWCbwHEFhkPM/L5vP5dyaz+23+KwHXdR3P854S0YG1ILSCuthNMfNM2OC1/RYENLY+ygcBnPfht6ZAA6BYLNr6dyqVokKhsGpaNQ2TWJstreXaE2aed133sojcj41AKyvdzCdAgSXLsk4MDw9/a/i4rntbRPxFNZoC/5jAV2be759DKTUJ4FZSFFi0bbs/k8noy2R9dAjEuWU2YgXkQOK3kD6BMsysi2Z9JC2Jdcw/ALzwPO+xvmcl7Rj177JVEbkO4BARjSflFDJJuW1dBxJPoCIiL4noDIB1BS0pW6j+oJmbm+uuVqvjRKQfLr0bZHnIzJf0f6HeAybahrUJqAPruhLlcnnPysqKfpXp11n/Gv62zoHAroS+AafT6QkiGrIsazKbzX7eVIHEt1US39gCkOzWYthkjNE+tuZujDGZQ8XRXn8N4KT5lLFZ6uaYPt+nwyDuvC80YdhvB9uOAu1WoaNAR4GIK/AHvdr+QAexB7EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACfUlEQVRoQ+2ZSYsUQRCFvycK4nJXXEbHBdwO4kn/gv9CD467ICIutxEFkREdFUU86T/xojcPntyQcT2INw+uISFVkD1Wd2dWlU7nUHlqisiX+fJFZGREi8yHMt8/HYG5VrBToFOg4QnMPxcyM2t4KE2nT0i6EwvylwIjQOCFpE1tEPgGfI0FamC3AFgazP8IrJL0KwZzkAI3gLMxIA1ttgCPA4w3wHpJP2NwBxG4KOlcDEgTGzNbA8wEGP57vA0CU5JONtlczFwz2wY8HUbAzBYCB4CtwCVJb33OIAXmioC70LoyBsxsEXAQOApsLIhelnS6FgEzW+5BBvwA/FS+SPJFa40KBZ5L2mxmS4AJ4IjHxCzwaUnHkgmY2V7gLrAyAPwOXJN0qg6DCgIvgQfAPsDjo2pcKddLciEz+wCs6AO6W9KjVBIVBGIgahN4BvRLMjslPYlZPbT53wR2AbeBtcUmXEFPdh5U06mbd/shBBzbr/Jx4FCAX0+BEsDMFocEYrNmFcE+BD4XsXZL0oyZnQCutkagzkn3m1NBwDe/Q9L74MAuFEqUn5op8I8JvJO0elacTALnc1HAH3Njkvwx+WeYWUegTa/pwaqIgexdyIN4uyRPmqULZRXEvulPwD3gpr+zcrtGQxfzRHYG2AAczuUWiom3kc4D2RN4BdwH9gM9CS0XFyoLGu9UuN974eIFVDiuSzruH5LqgRhtU20q8kBPV8LMlhVVmVdnYwX+SMdAZVeieAF7eeltmElJr4cpkH1bJfvGVvatxdR4bMu+teZuWxtKxWncXn8I7EldtQV7vz79fp9KwZp//9CksB8F206BuVahU6BToOEJ/Ab7+KdABdTt8AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADd0lEQVRoQ+2Zz2sdVRTHv+fJBDW6anDVXen6wZszYxYBiYgtFGst3VSDunKjpS0GpUlqfjVpsVVs6aaL0or4YxMVFCJZ2ZLdPUP+gq5bQnTxtNAkfTnlhnnlkmQy9yV9780rudt77tzv5/y4v4bQ4Y06XD/2ANodwec/AiJygJnvtdvTWfPnRkBEJAiCN8rl8kMfiPn5+Ve7u7v3rays0Orq6lJfX99/PuN2auMDoAD+BvA2M6/mTWSMOUtE48D6AjHGzN/kjdlNvy+AnWOOmQ/lTSYiEwDOWzsimgrDcCRvzG76GwGw8/zJzO9sN6GInAMwbW1UdSSKoqndCMwb6wNwGsB39Q+p6h/M/C4R2dTa1AoHYBWKyCkA1+pqiWi2Wq0e7e/vf7yRoJAAKcQggMtuJKIoOtoxACnE0/xOi/SXMAxPuhCFjUBdpIjYVWXSEf0TM3/g9BeriDMKdSPEz8z8vrU1xgwT0YXCrEJZy1iSJKOqOub0/8jMA0mSfKKqNwoPkHp7ioiGHIhRIvpHVa93BEBa2JcAfOlALAHo6RgAKzRJkk9V1S6xL7kpV4idOM31taxaIKJHqmpPnMMA9hcOQES2PDJkAT1XAAC+ZebPfWB3auNzmLObVsNRUNUXVHUujuM7OxXnMy4XwOcj29mIyOuq+lapVGrYCelKpkEQ3CyXy4tbzdN0AGPMxr2iYZ+sra3FcRybtgCIiK2BKw2rdgaUSqWoUqlIkQAepFDdAF7cBq5ERI9rtdr1OI7tmE2t6SmUEYFHAEaexYW/1QC2EF+ru5GIvg7D0D2GNJxprQY4o6qv1I/b6SpzOYqiLxpWng5oOQAzXxWRWwA+dkRfYOb1p5hGW6sBJpn5KytSRG4D+KguWFXHoyhy7xdeLC0F2ChSRL4H8OFuINoKYIUbY34gogHH3eeZef1K6tPaDpCm068A3nMEDzHzxY4BUNWSiPxORO6z5aDPPlGICNQ9bYyZIaLjjudzIQoFkKbTbwCO+UI0HcB9J/LdeY0xs0R02IGYYObRrWqiFQCfEZEtSHsfmGZm+4qxbbM/hQD8BeBNa0hEM2EYnmgLgP3lFARBT1dXly4vL//b29tbzQNIU+llAHeJaLFSqRzJes5vegR8xGbZLCwsHKzVav8z8/0sm0ID+MDvAfh4qZk2exFopnd9vv0ELrXBQO7fD10AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC/ElEQVRoQ+2Zy49NQRCHvx+ReK6IlZ34E7CUiCAR4xEbTLCyQRATYswwb2IQZDYWgojHZpCQECts+ResiQwLj0RClNSkb9Lu3HtPz7mZc8+V6eXt6tP1VVV3VdcVbT7U5vozC9BqD/7/HjCzlZLet9rS9fbP9ICZvQPWSfqRAmFmS4ClMHm+JiR9S1mXVyYFwIBXwEZJv7I2MrPjQH8A6JN0OWtNM/OpAL7HS0mbsjYzswGgN8gNS+rJWtPM/HQAfJ9nkrY22tDMTgMjQaZH0nAzCmatTQE4ClyNPvQU2CbJQ2vKKB2Aa2hmR4DrkbbPgQ5Jv6sJSgkQILqA0dgTkjraBiBAxPHtPz2UtDuGKK0HKkqamd8qg5HS9yXtjebLdYjrHNRqiAeS9gQvnQGGSnML1bvGzOwc0BfN35PUaWYHgRulBwjW9ju+O4JwqM/AWFsABIgLwKkIYgJY1jYAAeJQuGIXVIVcKTKxh8WfBin9J+AVpx/eFWUEqFkyNACKp0rhgWYArkg6kQibSyylmPOklQdibijBX+fSLHFRJkDid+qKmdlaYENOI0zeEcBNSZ9qbVIEQHWuyGOTNZLetgrAz8ClPFpHa1ZL8rf5lFGEB2oBfAxQi4D5DeDmAP7mGJPka0oD4LnDr9imH/xFe8AP4vLIjBclxWXItCOtaIBjwOKo3HaFRyWdnLbmYUHhAJKumdkt4ECk9JCkSitmWixFAwxKOjt5uZvdBvZH2vZLit8XSSBFA/yjpJndAfY1A9FSgOCJu0BnBNErqfIkzfRCywECxCNgR6Rtt6TzmdqHBmyKXG4ZM4sTWc04NzNPWE+AuG3ZlZInSuGBinXMbBzYGVkrE6JUACGcHgPbUyGKAIj7REmZ18y897o5ghiQ5E/bltRChwE/kF7Xj0jyLkbDYWbzgBfA+iA4LmlXqwD8LydvszjAF0lfswBCKC0E3gBeP22p186f8RBKUbaejJmtAr5L+lBPptQAKfCzAClWmkmZWQ/MpHVTvv0X9iFAQGQyevIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrUlEQVRoQ+2ZPYgTURCAZzbBXJnCeL2Cnb87b9MEtPBUrrMQFAtrtT5/ClGs9LBWWz0RtbBUFCF4oJDsbO68wsLA2YqQSmLlvpEHu7IuMdlLcus+yUKKhJfZ+ebnvZl5CJY/aLn+MAP41x7M1QPMfFtr/crzvHfTAs8FoNPp1LTWzwHgqIg0lFLvrQHwfX8BER8DwC6jNCIecF13wwoA3/dvIuKNpLJa60Oe560XGoCZd4rICiKeTCtaeABmPg4AJmRqg6xcaABmvg4At4aFRyEBhoVM4UMoCplHADCfJTEL5YEsIVNID5iQAYCHALCYxeq5b6PMfF5EBAAEESthGK7W6/XPRpFWq7W3VCqtZg2ZcT3g+/6i4zjzIlLSWn/yPO/DIGMNLCWY2Sj/+xGRK0qpZfNDEASnROTFVi0fr8+aA8z8Ld6KEfGt67oLYwMAwEUium8EREn7OgeAjwCwPyo/nrque3YSgAtE9GDaAM1mc65arc4Zuf1+P2w0Gt9jJZl5DQAORt+fENG5wgEw8zUAMB/zbBBRwyqAIAjuiMjlSOlNItpjFUCqWl0josMzgChR/9hGAWBbknjmAdPhDdqa0gfZzAMJKyVP4v8hhJYRcSni+0JEu63ahZj5anyQici6UuqIVQDdbrfS6/UqRulyufyTiH5sF8AlIro37VpoWEHIzGZ2tM+sEZFnSqkzk9RCS0R01wjIsZz+mug53hDRia0AnI4bGgDYISItz/M2jYC8Gpp2u30MEWuO4zha665Sqp0ZYFStX/iWchRAItFGzoHSsrJ2ZFl1mHg6bfVYJeGJv85CC++BpIJZ5kSFC6G0ha0e7mYJqcJ7IOkRay84UhD2XjHFIFZf8iW9YcYoYRi+tO6aNeupOs66iU/icV46zf/MAKZpzXFk/QL+JG1PUPhRiQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACSElEQVRoQ+2Zu4sUQRCHf5+C+gf4yBXMfMYHGvjCzEBQDIzV+HwEohipGKupD0QNDE8UEwUFTe68wEDhTMVUMFJ+0tArzbjs9u3Ojt0wBR0M9MzUV1XdXVWNKhcq1189wP/2YKcesH1d0nPgdVvgnQDY3iTpqaT9kuaAt9UA2D4o6aGkzVHpXcByFQC2r0q60lB2D7BUNIDtjZIeSDoyRNGyAWwfiiET4n6YlAtg+7Kka2PCozyAMSHT5CkLIIbMfUlbMhdmOQCZIVOeB2LI3JN0NNPq6bTZe8D2aUmOY72kN8DnoIXt7eF5FSEzkQdsB+OEsFwr6RPwbpixhqYStoPyqVwAbkaAY5KeTWD5wStZHrD9XdJgK34FhBP9H8kFOAvciQBhn3/RAcBHSTvjfx4DJ6cBOAPcbRvA9gZJYQT5DfwYKGl7UdLu+PwIOFUiwCVJYQRZBuZqA7gh6XxUegXYVhtAmq0uAnt7gLhQm9vorBZx74Hcc6D3QLKH/z2JGyVnlYs4pCfzEe4rsLW2XehicpAtAftqAwiZbhhBfgE/ZwVwDrjddi40KiG0HXpHO+KcJ8CJaXKheeBWBOgqnf6W1BwvgcOrATieFDTrJL0HViJAVwXNgVgPrJH0BfiQDTDKtREiNK7KLSnHASQLLacP1PxcVkWWq8PU3emq2yqJJ0b1Qsv2QKpdZp+orBBqmrfq5m5mSJXtgUZI1XnB0YCo94opCal6L/ka3ghtlIXqrllzT9VJ5k19Ek/y0zbf6QHatOYk3/oDujC8QMWgjf4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-text{font-size:14px;width:30px}.jessibuca-container .jessibuca-speed{font-size:14px;color:#fff}.jessibuca-container .jessibuca-quality-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .jessibuca-quality-menu-list.jessibuca-quality-menu-shown{visibility:visible;opacity:1}.jessibuca-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}.jessibuca-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jessibuca-container .jessibuca-quality-menu{padding:8px 0}.jessibuca-container .jessibuca-quality-menu-item{display:block;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}.jessibuca-container .jessibuca-quality-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-quality-menu-item:focus{outline:none}.jessibuca-container .jessibuca-quality-menu-item.jessibuca-quality-menu-item-active{color:#2298fc}.jessibuca-container .jessibuca-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}.jessibuca-container .jessibuca-volume-panel-wrap.jessibuca-volume-panel-wrap-show{visibility:visible;opacity:1}.jessibuca-container .jessibuca-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jessibuca-container .jessibuca-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:before{bottom:-54px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-volume-panel-handle:after,.jessibuca-container .jessibuca-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-controls{width:100vh}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading{flex-direction:row}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading-text{transform:rotate(270deg)}');class pt{constructor(e){var t;this.player=e,((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("jessibuca-controls-show-auto-hide"):e.$container.classList.add("jessibuca-controls-show");const i=e._opt,r=i.operateBtns;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
    `:""}\n
    \n ${lt.loading}\n ${i.loadingText?`
    ${i.loadingText}
    `:""}\n
    \n ${i.hasControl&&r.play?'
    ':""}\n ${i.hasControl?`\n
    \n
    \n
    00:00:01
    \n
    ${lt.recordStop}
    \n
    \n `:""}\n ${i.hasControl?`\n
    \n
    \n
    \n ${i.showBandwidth?'
    ':""}\n
    \n
    \n ${r.audio?`\n
    \n ${lt.audio}\n ${lt.mute}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `:""}\n ${r.play?`
    ${lt.play}
    ${lt.pause}
    `:""}\n ${r.screenshot?`
    ${lt.screenshot}
    `:""}\n ${r.record?`
    ${lt.record}
    ${lt.recordStop}
    `:""}\n ${r.fullscreen?`
    ${lt.fullscreen}
    ${lt.fullscreenExit}
    `:""}\n
    \n
    \n
    \n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jessibuca-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jessibuca-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jessibuca-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")})})(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),ut(e,this),((e,t)=>{const{events:{proxy:i},debug:r}=e;function o(e){const{bottom:i,height:r}=t.$volumePanel.getBoundingClientRect(),{height:o}=t.$volumeHandle.getBoundingClientRect();return we(i-e.y-o/2,0,r-o/2)/(r-o)}if(i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$playBig,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),Se(t.$volumeOn,"display","none"),Se(t.$volumeOff,"display","block");const r=e.volume;e.volume=0,e._lastVolume=r})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),Se(t.$volumeOn,"display","block"),Se(t.$volumeOff,"display","none"),e.volume=e.lastVolume||.5})),i(t.$screenshot,"click",(t=>{t.stopPropagation(),e.video.screenshot()})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=o(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=o(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)})),i(t.$record,"click",(t=>{t.stopPropagation(),e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$fullscreen,"click",(t=>{t.stopPropagation(),e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),e.fullscreen=!1})),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(Se(t.$controls,"display","block"),o())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(Se(t.$controls,"display","block"),o()))})),i(e.$container,"mouseout",(()=>{s(),Se(t.$controls,"display","none")}));let r=null;const o=()=>{s(),r=setTimeout((()=>{Se(t.$controls,"display","none")}),5e3)},s=()=>{r&&(clearTimeout(r),r=null)}}})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,r={};function o(e,t){r[e]?r[e].push(t):r[e]=[t]}o(re,(()=>{e.fullscreen&&(e.fullscreen=!1)})),o(oe,(()=>{e.volume+=.05})),o(se,(()=>{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.player.debug.log("Control","init")}destroy(){if(this.$poster){if(!Le(this.$poster)){const e=this.player.$container.querySelector(".jessibuca-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loading){if(!Le(this.$loading)){const e=this.player.$container.querySelector(".jessibuca-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$controls){if(!Le(this.$controls)){const e=this.player.$container.querySelector(".jessibuca-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$recording){if(!Le(this.$recording)){const e=this.player.$container.querySelector(".jessibuca-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$playBig){if(!Le(this.$playBig)){const e=this.player.$container.querySelector(".jessibuca-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}}this.player.$container&&(this.player.$container.classList.remove("jessibuca-controls-show-auto-hide"),this.player.$container.classList.remove("jessibuca-controls-show")),this.player.debug.log("control","destroy")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,r=t/i,o=e.video.$videoElement.width/e.video.$videoElement.height;if(r>o){const r=(t-i*o)/2;e.$container.style.padding=`0 ${r}px`}else{const r=(i-t/o)/2;e.$container.style.padding=`${r}px 0`}}toggleBar(e){this.$controls&&(Ie(e)||(e="none"===Ee(this.$controls,"display",!1)),Se(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==Ee(this.$controls,"display",!1)),e}}ht(".jessibuca-container{position:relative;display:block;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class mt{static init(){mt.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:[]};for(let e in mt.types)mt.types.hasOwnProperty(e)&&(mt.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=mt.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),o=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 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 mt.box(mt.types.trak,mt.tkhd(e),mt.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,o=e.presentHeight;return mt.box(mt.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,o>>>8&255,255&o,0,0]))}static mdia(e){return mt.box(mt.types.mdia,mt.mdhd(e),mt.hdlr(e),mt.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return mt.box(mt.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?mt.constants.HDLR_AUDIO:mt.constants.HDLR_VIDEO,mt.box(mt.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?mt.box(mt.types.smhd,mt.constants.SMHD):mt.box(mt.types.vmhd,mt.constants.VMHD),mt.box(mt.types.minf,t,mt.dinf(),mt.stbl(e))}static dinf(){return mt.box(mt.types.dinf,mt.box(mt.types.dref,mt.constants.DREF))}static stbl(e){return mt.box(mt.types.stbl,mt.stsd(e),mt.box(mt.types.stts,mt.constants.STTS),mt.box(mt.types.stsc,mt.constants.STSC),mt.box(mt.types.stsz,mt.constants.STSZ),mt.box(mt.types.stco,mt.constants.STCO))}static stsd(e){return"audio"===e.type?mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.mp4a(e)):"avc"===e.videoType?mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.avc1(e)):mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.hvc1(e))}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 mt.box(mt.types.mp4a,r,mt.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 mt.box(mt.types.esds,r)}static avc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let o=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 mt.box(mt.types.avc1,o,mt.box(mt.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let o=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 mt.box(mt.types.hvc1,o,mt.box(mt.types.hvcC,t))}static mvex(e){return mt.box(mt.types.mvex,mt.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 mt.box(mt.types.trex,i)}static moof(e,t){return mt.box(mt.types.moof,mt.mfhd(e.sequenceNumber),mt.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 mt.box(mt.types.mfhd,t)}static traf(e,t){let i=e.id,r=mt.box(mt.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),o=mt.box(mt.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=mt.sdtp(e),a=mt.trun(e,s.byteLength+16+16+8+16+8+8);return mt.box(mt.types.traf,r,o,a,s)}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,mt.box(mt.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,o=e.size,s=e.flags,a=e.cts;return i.set([r>>>24&255,r>>>16&255,r>>>8&255,255&r,o>>>24&255,o>>>16&255,o>>>8&255,255&o,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),mt.box(mt.types.trun,i)}static mdat(e){return mt.box(mt.types.mdat,e)}}mt.init();class gt extends Oe{constructor(e){super(),this.player=e,this.isAvc=!0,this.mediaSource=new window.MediaSource,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.cacheTrack={},this.timeInit=!1,this.sequenceNumber=0,this.mediaSourceOpen=!1,this.dropping=!1,this.firstRenderTime=null,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.player.video.$videoElement.src=window.URL.createObjectURL(this.mediaSource);const{debug:t,events:{proxy:i}}=e;i(this.mediaSource,"sourceopen",(()=>{this.mediaSourceOpen=!0,this.player.emit(j.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(j.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===ee}get isStateClosed(){return this.state===te}get isStateEnded(){return this.state===$}get duration(){return this.mediaSource&&this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i,r){const o=this.player;if(o)if(this.hasInit){if(i&&0===e[1]){let t=At(e.slice(5));const i=this.player.video.videoInfo;i&&i.width&&i.height&&t&&t.codecWidth&&t.codecHeight&&(t.codecWidth!==i.width||t.codecHeight!==i.height)&&(this.player.debug.warn("MediaSource",`width or height is update, width ${i.width}-> ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),this.isInitInfo=!1,this.player.video.init=!1)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){null===this.firstRenderTime&&(this.firstRenderTime=t);const o=t-this.firstRenderTime;this._decodeVideo(e,o,i,r)}else this.player.debug.warn("MediaSource","decodeVideo isDecodeFirstIIframe false")}else if(i&&0===e[1]){const r=15&e[0];if(o.video.updateVideoInfo({encTypeCode:r}),r===J)return void this.emit(F.mediaSourceH265NotSupport);o._times.decodeStart||(o._times.decodeStart=ve()),this._decodeConfigurationRecord(e,t,i,r),this.hasInit=!0}}_decodeConfigurationRecord(e,t,i,r){let o=e.slice(5),s={};s=At(o);const a={id:1,type:"video",timescale:1e3,duration:0,avcc:o,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},n=mt.generateInitSegment(a);this.isAvc=!0,this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1}_decodeVideo(e,t,i,r){const o=this.player;let s=e.slice(5),a=s.byteLength;const n=o.video.$videoElement,A=o._opt.videoBufferDelay;if(n.buffered.length>1&&(this.removeBuffer(n.buffered.start(0),n.buffered.end(0)),this.timeInit=!1),this.dropping&&t-this.cacheTrack.dts>A)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&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(mt.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let r=mt.moof(this.cacheTrack,this.cacheTrack.dts),s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),this.appendBuffer(s.buffer),o.handleRender(),o.updateStats({fps:!0,ts:t,buf:o.demux&&o.demux.delay||0}),o._times.videoStart||(o._times.videoStart=ve(),o.handlePlayToRenderTimes())}else o.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=a,this.cacheTrack.dts=t,this.cacheTrack.cts=r,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=s,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==n.buffered.length||(o.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,n.currentTime=n.buffered.end(0)),!this.isInitInfo&&n.videoWidth>0&&n.videoHeight>0&&(o.debug.log("MediaSource",`updateVideoInfo: ${n.videoWidth},${n.videoHeight}`),o.video.updateVideoInfo({width:n.videoWidth,height:n.videoHeight}),o.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;if(null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(_),i(this.sourceBuffer,"error",(e=>{t.error("MediaSource","sourceBuffer error",e),this.player.emit(j.mseSourceBufferError,e)}))),this.mediaSourceAppendBufferError)t.error("MediaSource","this.mediaSourceAppendBufferError is true");else if(this.mediaSourceAppendBufferFull)t.error("MediaSource","this.mediaSourceAppendBufferFull is true");else if(!1===this.sourceBuffer.updating&&this.isStateOpen)try{this.sourceBuffer.appendBuffer(e)}catch(e){t.warn("MediaSource","this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.emit(F.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.emit(F.mediaSourceAppendBufferError)):(t.error("MediaSource","appendBuffer error",e),this.player.emit(j.mseSourceBufferError,e))}else this.isStateClosed?this.player.emitError(F.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emitError(F.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(j.mseSourceBufferBusy)}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(this.player.debug.warn("MediaSource","dropSourceBuffer",`$video.buffered.end(0) is ${t.buffered.end(0)} - $video.currentTime ${t.currentTime}`),t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn("MediaSource","removeBuffer() error",e)}else this.player.debug.warn("MediaSource","removeBuffer() this.isStateOpen is",this.isStateOpen,"this.sourceBuffer.updating",this.sourceBuffer.updating)}endOfStream(){const e=this.player.video&&this.player.video.$videoElement;if(this.isStateOpen&&e&&e.readyState>=1)try{this.mediaSource.endOfStream()}catch(e){this.player.debug.warn("MediaSource","endOfStream() error",e)}}abortSourceBuffer(){this.isStateOpen&&this.sourceBuffer&&(this.sourceBuffer.abort(),this.sourceBuffer=null)}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource&&this.sourceBuffer)try{this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.warn("MediaSource","removeSourceBuffer() error",e)}}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}}const ft=()=>"undefined"!=typeof navigator&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,bt=()=>"wakeLock"in navigator;class yt{constructor(e){if(this.player=e,this.enabled=!1,bt()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else ft()?this.noSleepTimer=null:(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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"),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,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"),this.noSleepVideo.addEventListener("loadedmetadata",(()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",(()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}))})))}_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(bt())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.error("wakeLock",`${t.name}, ${t.message}`),t}));if(ft())return this.disable(),this.noSleepTimer=window.setInterval((()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))}),15e3),this.enabled=!0,Promise.resolve();return this.noSleepVideo.play().then((e=>(this.enabled=!0,e))).catch((e=>{throw this.enabled=!1,e}))}disable(){const e=this.player.debug;bt()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):ft()?this.noSleepTimer&&(e.warn("wakeLock","NoSleep now disabled for older iOS devices."),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}class vt extends Oe{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},h,t),this.debug=new me(this),this.debug.log("Player","init"),this._opt.forceNoOffscreen=!0,(Re()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))&&(this.debug.log("Player","isMobile and set _opt.controlAutoHide false"),this._opt.controlAutoHide=!1),fe.isEnabled&&this._opt.useWebFullScreen&&(this.debug.log("Player","screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),Ve(fe.isEnabled)&&Ve(this._opt.useWebFullScreen)&&(this.debug.log("Player","screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported(_)),this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=window.MediaStreamTrackGenerator&&"function"==typeof window.MediaStreamTrackGenerator),this._opt.useMSE&&(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasAudio||(this._opt.operateBtns.audio=!1),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,i=this,Object.defineProperty(i,"rect",{get:()=>{const e=i.$container.getBoundingClientRect();return e.width=Math.max(e.width,i.$container.clientWidth),e.height=Math.max(e.height,i.$container.clientHeight),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new ge(this),this.video=new ze(this),this._opt.hasAudio&&(this.audio=new Xe(this)),this.recorder=new et(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new tt(this),this.stream=null,this.demux=null,this._lastVolume=null,this._opt.useWCS&&(this.webcodecsDecoder=new dt(this),this.loaded=!0),this._opt.useMSE&&(this.mseDecoder=new gt(this),this.loaded=!0),this.control=new pt(this),Re()&&(this.keepScreenOn=new yt(this)),(e=>{try{const t=t=>{je(t)===e.$container&&(e.emit(L.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};fe.on("change",t),e.events.destroys.push((()=>{fe.off("change",t)}))}catch(e){}if(e.on(j.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(j.play,(()=>{e.loading=!1})),e.on(j.fullscreen,(t=>{if(t)try{fe.request(e.$container).then((()=>{})).catch((t=>{Re()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){Re()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{fe.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),Re()&&e.on(j.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web"),e.emit(L.fullscreen,e.fullscreen)})),e.on(j.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[j.timeUpdate],i=[j.stats,j.playToRenderTimes,j.audioInfo,j.videoInfo];Object.keys(j).forEach((r=>{e.on(j[r],(o=>{t.includes(r)||(i.includes(r)&&(o=JSON.stringify(o)),e.debug.log("player events",j[r],o))}))})),Object.keys(F).forEach((t=>{e.on(F[t],(i=>{e.debug.log("player event error",F[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:r}}=e;t.supportDblclickFullscreen&&r(e.$container,"dblclick",(t=>{const i=je(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),r(document,"visibilitychange",(()=>{t.hiddenAutoPause&&(i.log("visibilitychange",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),r(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this.debug.log("Player","init and version is",u),this._opt.useWCS&&this.debug.log("Player","use WCS"),this._opt.useMSE&&this.debug.log("Player","use MSE"),this._opt.useOffscreen&&this.debug.log("Player","use offscreen");try{this.debug.log("Player options",JSON.stringify(this._opt))}catch(e){}}async destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(await this.stream.destroy(),this.stream=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.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}set fullscreen(e){Re()&&this._opt.useWebFullScreen?(this.emit(j.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(j.fullscreen,e)}get fullscreen(){return fe.isFullscreen||this.webFullscreen}set webFullscreen(e){this.emit(j.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("jessibuca-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(j.playing,e),this.emit(j.volumechange,this.volume),e?this.emit(j.play):this.emit(j.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio&&this.audio.setVolume(e),this._lastVolume=e)}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(j.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder&&this.recorder.startRecord():this.recorder&&this.recorder.stopRecordAndSave()}get recording(){return!!this.recorder&&this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio&&this.audio.emit(j.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}get isDebug(){return!0===this._opt.debug}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new Ke(this)),this.audio||this._opt.hasAudio&&(this.audio=new Xe(this)),this.demux||(this.demux=new st(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new dt(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new gt(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new tt(this),this.debug.log("Player","waiting decoderWorker init"),this.once(j.decoderWorkerInit,(()=>{this.debug.log("Player","decoderWorker init success"),e()})))}))}play(e,t){return new Promise(((i,r)=>{if(!e&&!this._opt.url)return r();this.loading=!0,this.playing=!1,this._times.playInitStart=ve(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=ve(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(F.webcodecsH265NotSupport,(()=>{this.emit(F.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(j.error,F.webcodecsH265NotSupport)})),this.mseDecoder&&(this.mseDecoder.once(F.mediaSourceH265NotSupport,(()=>{this.emit(F.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(j.error,F.mediaSourceH265NotSupport)})),this.mseDecoder.once(F.mediaSourceFull,(()=>{this.emitError(F.mediaSourceFull)})),this.mseDecoder.once(F.mediaSourceAppendBufferError,(()=>{this.emitError(F.mediaSourceAppendBufferError)})),this.mseDecoder.once(F.mediaSourceBufferListLarge,(()=>{this.emitError(F.mediaSourceBufferListLarge)})),this.mseDecoder.once(F.mediaSourceAppendBufferEndTimeout,(()=>{this.emitError(F.mediaSourceAppendBufferEndTimeout)}))),this.enableWakeLock(),this.stream.fetchStream(e,t),this.checkLoadingTimeout(),this.stream.once(F.fetchError,(e=>{this.emitError(F.fetchError,e)})),this.stream.once(F.websocketError,(e=>{this.emitError(F.websocketError,e)})),this.stream.once(j.streamEnd,(e=>{this.emitError(j.streamEnd,e)})),this.stream.once(j.streamSuccess,(()=>{i(),this._times.streamResponse=ve(),this.video.play(),this.checkStatsInterval()}))})).catch((e=>{r(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()}))}))}resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.audio&&(this.audio.destroy(),this.audio=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.playing=!1,this.loading=!1,this.recording=!1,this.video&&(this.video.resetInit(),this.video.pause(!0)),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:""},setTimeout((()=>{e()}),0)}))}pause(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.close():this._close()}mute(e){if(this.audio){const t=this.audio.getLastVolume();this.audio.mute(e),this._lastVolume=e?0:t||.5}}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),e}_onlyMseOrWcsVideo(){return!1===this._opt.hasAudio&&(this._opt.useMSE||this._opt.useWCS&&!this._opt.useOffscreen)}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{if(this.playing){if(0!==this._stats.fps)return;this.pause().then((()=>{this.emit(j.timeout,j.delayTimeout),this.emit(j.delayTimeout)}))}}),1e3*this._opt.heartTimeout)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing||this.pause().then((()=>{this.emit(j.timeout,j.loadingTimeout),this.emit(j.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.loading&&(this.emit(j.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=ve()),xe(e.ts)&&(this._stats.ts=e.ts),xe(e.buf)&&(this._stats.buf=e.buf),e.fps&&(this._stats.fps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps);const t=ve();t-this._startBpsTime<1e3||(this.emit(j.stats,this._stats),this.emit(j.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}handlePlayToRenderTimes(){const e=this._times;e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart,e.demuxTimestamp=e.demuxStart-e.streamResponse,e.decodeTimestamp=e.decodeStart-e.demuxStart,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,this.emit(j.playToRenderTimes,e)}getOption(){return this._opt}emitError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(j.error,e,t),this.emit(e,t)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}}class wt extends Oe{constructor(e){super();let t=e,i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("Jessibuca need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jessibuca container type can not be ${i.nodeName} type`);if(t.videoBuffer>=t.heartTimeout)throw new Error(`Jessibuca videoBuffer ${t.videoBuffer}s must be less than heartTimeout ${t.heartTimeout}s`);if(this._checkHasCreated(i))throw new Error("Jessibuca container has been created and can not be created again",i);if(t.videoBuffer>10&&console.warn("Jessibuca",`videoBuffer ${t.videoBuffer}s is too long, will black screen for ${t.videoBuffer}s , it is recommended to set it to less than 10s`),!i.classList)throw new Error("Jessibuca container option must be DOM Element");var r,o,s;i.classList.add("jessibuca-container"),r=i,o=l,s="xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})),r&&(r.dataset?r.dataset[o]=s:r.setAttribute("data-"+o,s)),delete t.container,t.forceNoOffscreen=!0,Re()&&(t.controlAutoHide=!1),xe(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),xe(t.timeout)&&(Te(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),Te(t.heartTimeout)&&(t.heartTimeout=t.timeout)),this._opt=t,this.$container=i,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.initDecoderWorkerTimeout=null,this._destroyed=!1,this.events=new ge(this),this.debug=new me(this),this._initPlayer(i,t),console.log('Jessibuca version: "3.2.8"')}async destroy(){var e,t;this._destroyed=!0,this.off(),this._clearInitDecoderWorkerTimeout(),this.player&&(await this.player.destroy(),this.player=null),this.events&&(this.events.destroy(),this.events=null),this.$container&&(this.$container.classList.remove("jessibuca-container"),this.$container.classList.remove("jessibuca-fullscreen-web"),e=this.$container,t=l,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this._opt={},this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0}_initPlayer(e,t){this.player=new vt(e,t);try{this.debug.log("jessibuca","_initPlayer",JSON.stringify(this.player.getOption()))}catch(e){}this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.player.destroy(),this.player=null,this._opt=Object.assign(this._opt,e),this._opt.url="",this._initPlayer(this.$container,this._opt)}_bindEvents(){Object.keys(L).forEach((e=>{this.player.on(L[e],(t=>{this.emit(e,t)}))}))}isDestroyed(){return this._destroyed}setDebug(e){this.player.updateOption({debug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio&&this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case N:t.isFullResize=!1,t.isResize=!1;break;case H:t.isFullResize=!1,t.isResize=!0;break;case z:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return new Promise(((e,t)=>{this.player?this.player.pause().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}async close(){return await this.destroy(),!0}clearView(){this.player.video.clearView()}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,r)=>{if(!this.isDestroyed())return e||this._opt.url?void(e?this._opt.url?e===this._opt.url?this.player.playing?i():(this.clearView(),this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","pause -> play and play error",e),this.player.pause().then((()=>{r(e)}))}))):this.player.pause().then((()=>{this.clearView(),this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),r(e)}))})).catch((e=>{this.debug.warn("jessibuca","this._opt.url is null and pause error",e),r(e)})):this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),r(e)})):this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","url is null and play error",e),this.player.pause().then((()=>{r(e)}))}))):(this.emit(j.error,F.playError),void r("play url is empty"));r("Jessibuca is destroyed")}))}_play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,r)=>{this._opt.url=e,this._opt.playOptions=t;const o=0===e.indexOf("http"),d=o?a:s,c=o||-1!==e.indexOf(".flv")||this._opt.isFlv?n:A;this.player.updateOption({protocol:d,demuxType:c}),this.player.once(F.webglAlignmentError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webglAlignmentError"),this._resetPlayer({openWebglAlignment:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webglAlignmentError and play success")})).catch((()=>{this.debug.log("Jessibuca","webglAlignmentError and play error")}))}))})),this.player.once(F.mediaSourceH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","media source h265 not support and paused")}))})),this.player.once(F.mediaSourceFull,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source full"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source full and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source full and reset player and play error")}))}))})),this.player.once(F.mediaSourceAppendBufferError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer error"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer error and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer error and reset player and play error")}))}))})),this.player.once(F.mediaSourceBufferListLarge,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source buffer list large"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source buffer list large and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source buffer list large and reset player and play error")}))}))})),this.player.once(F.mediaSourceAppendBufferEndTimeout,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer end timeout and reset player and play error")}))}))})),this.player.once(F.mseSourceBufferError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","mse source buffer error and paused")}))})),this.player.once(F.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","webcodecs h265 not support and paused")}))})),this.player.once(F.webcodecsWidthOrHeightChange,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play"),this._resetPlayer({useWCS:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Width Or Height Change reset player and play error")}))}))})),this.player.once(F.webcodecsDecodeError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs decode error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs decode error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs decode error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs decode error and paused")}))})),this.player.once(F.webcodecsConfigureError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs Configure error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Configure error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Configure error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs Configure error and paused")}))})),this.player.once(F.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay?this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and reset player and play error")}))})):this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and paused")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and paused error",e)}))})),this.player.once(F.fetchError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","fetch error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","fetch error and pause play error",e)}))})),this.player.once(F.websocketError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","websocket Error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","websocket Error and pause play error",e)}))})),this.player.once(j.streamEnd,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","stream End and pause play")})).catch((e=>{this.debug.warn("Jessibuca","stream End and pause play error",e)}))})),this.player.on(j.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.on(j.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","hasLoaded and play error",e),this.player&&this.player.pause().then((()=>{r(e)}))})):(this.debug.log("Jessibuca","_play ant waiting decoderWorkerInit"),this._checkInitDecoderWorkerTimeout(),this.player.once(j.decoderWorkerInit,(()=>{this._clearInitDecoderWorkerTimeout(),this.isDestroyed()||(this.debug.log("Jessibuca","_play decoderWorkerInit success and play"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","decoderWorkerInit and play error",e),this.player&&this.player.pause().then((()=>{r(e)}))})))})))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e}),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"videoBuffer",value:1e3*e})}setRotate(e){e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,r){return this.player.video?this.player.video.screenshot(e,t,i,r):""}startRecord(e,t){return new Promise(((i,r)=>{this.player.playing?(this.player.startRecord(e,t),i()):r()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return!!this.player&&this.player.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}_checkHasCreated(e){if(!e)return!1;const t=function(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}(e,l);return!!t}toggleControlBar(e){this.isDestroyed()||this.player&&this.player.toggleControlBar(e)}getControlBarShow(){if(this.isDestroyed())return!1;let e=!1;return this.player&&(e=this.player.getControlBarShow()),e}_clearInitDecoderWorkerTimeout(){this.initDecoderWorkerTimeout&&(clearTimeout(this.initDecoderWorkerTimeout),this.initDecoderWorkerTimeout=null)}_checkInitDecoderWorkerTimeout(){this._clearInitDecoderWorkerTimeout(),this.initDecoderWorkerTimeout=setTimeout((()=>{this._handleInitDecoderWorkerTimeout()}),1e3*this._opt.initDecoderWorkerTimeout)}_handleInitDecoderWorkerTimeout(){this.pause().then((()=>{this.debug.log("Jessibuca","init decoder worker timeout and pause play")})).catch((e=>{this.debug.warn("Jessibuca","init decoder worker timeout and pause play error",e)}))}}return o(wt,"ERROR",F),o(wt,"TIMEOUT",{loadingTimeout:j.loadingTimeout,delayTimeout:j.delayTimeout}),window.Jessibuca=wt,wt})); +!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).jessibuca=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var i,r=t((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),o=(i=r)&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i;const s=0,a=1,n="flv",A="m7s",d="mp4",c="webm",l="jessibuca",u='"3.2.8"',h={videoBuffer:1e3,videoBufferDelay:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,hotKey:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,supportDblclickFullscreen:!1,showBandwidth:!1,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1},controlAutoHide:!1,hasControl:!1,loadingText:"",background:"",decoder:"decoder.js",url:"",rotate:0,forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:a,demuxType:n,useWCS:!1,wcsUseVideoRender:!1,useMSE:!1,useOffscreen:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1,wasmDecodeAudioSyncVideo:!1,recordType:c,useWebFullScreen:!1,initDecoderWorkerTimeout:10},p="init",m="initVideo",g="render",f="playAudio",b="initAudio",y="audioCode",v="videoCode",w="wasmError",S="Invalid NAL unit size",E=1,B=2,C=8,R=9,k="init",T="decode",I="audioDecode",x="close",D="updateConfig",j={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",loadingTimeout:"loadingTimeout",stats:"stats",performance:"performance",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",buffer:"buffer",videoFrame:"videoFrame",start:"start",metadata:"metadata",resize:"resize",streamEnd:"streamEnd",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",volumechange:"volumechange",volume:"volume",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes"},L={load:j.load,timeUpdate:j.timeUpdate,videoInfo:j.videoInfo,audioInfo:j.audioInfo,error:j.error,kBps:j.kBps,log:j.log,start:j.start,timeout:j.timeout,loadingTimeout:j.loadingTimeout,delayTimeout:j.delayTimeout,fullscreen:"fullscreen",webFullscreen:j.webFullscreen,play:j.play,pause:j.pause,mute:j.mute,stats:j.stats,volumechange:j.volumechange,performance:j.performance,recordingTimestamp:j.recordingTimestamp,recordStart:j.recordStart,recordEnd:j.recordEnd,playToRenderTimes:j.playToRenderTimes,volume:j.volume},F={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsConfigureError:"webcodecsConfigureError",webcodecsDecodeError:"webcodecsDecodeError",webcodecsWidthOrHeightChange:"webcodecsWidthOrHeightChange",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceFull:j.mseSourceBufferFull,mseSourceBufferError:j.mseSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceBufferListLarge:"mediaSourceBufferListLarge",mediaSourceAppendBufferEndTimeout:"mediaSourceAppendBufferEndTimeout",wasmDecodeError:"wasmDecodeError",webglAlignmentError:"webglAlignmentError"},V="notConnect",O="open",M="close",U="error",Q={download:"download",base64:"base64",blob:"blob"},W={7:"H264(AVC)",12:"H265(HEVC)"},J=12,P={10:"AAC",7:"ALAW",8:"MULAW"},G=38,N=0,H=1,z=2,Y="webcodecs",X="webgl",q="offscreen",Z="key",K="delta",_='video/mp4; codecs="avc1.64002A"',$="ended",ee="open",te="closed",ie=1e3,re=27,oe=38,se=40,ae="A key frame is required after configure() or flush()",ne="Cannot call 'decode' on a closed codec",Ae="The user aborted a request",de="AbortError",ce="AbortError",le=0,ue=1,he=3,pe=16;class me{constructor(e){this.log=function(t){if(e._opt&&e._opt.debug){for(var i=arguments.length,r=new Array(i>1?i-1:0),o=1;o1?i-1:0),o=1;o1?t-1:0),r=1;r3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,r)));e.addEventListener(t,i,r);const o=()=>e.removeEventListener(t,i,r);return this.destroys.push(o),o}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var fe=t((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,o=i.length,s={};r0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),r=t[0].replace("data:","").replace(";base64","");let o=i.length,s=new Uint8Array(o);for(;o--;)s[o]=i.charCodeAt(o);return new File([s],"file",{type:r})}function ve(){return(new Date).getTime()}function we(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function Se(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{Se(e,i,t[i])})),e.style[t]=i,e}function Ee(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const r=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(r):r}function Be(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Ce(e){let t=0,i=Be();return r=>{t+=r;const o=Be(),s=o-i;s>=1e3&&(e(t/s*1e3),i=o,t=0)}}function Re(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function ke(e){if(null==e||""===e||0===parseInt(e)||isNaN(parseInt(e)))return"0KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}function Te(e){return null==e}function Ie(e){return!0===e||!1===e}function xe(e){return!Te(e)}function De(e){var t;if(e>-1){var i=Math.floor(e/3600),r=Math.floor(e/60)%60,o=e%60;t=i<10?"0"+i+":":i+":",r<10&&(t+="0"),t+=r+":",(o=Math.round(o))<10&&(t+="0"),t+=o.toFixed(0)}return t}function je(e){const t=e||window.event;return t.target||t.srcElement}function Le(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}function Fe(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 Ve(e){return!0!==e&&"true"!==e}fe.isEnabled,(()=>{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 Oe{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 o(){r.off(e,o);for(var s=arguments.length,a=new Array(s),n=0;n1?i-1:0),o=1;o{delete i[e]})),void delete this.e;const r=i[e],o=[];if(r&&t)for(let e=0,i=r.length;e=200&&t.status<=299}function Je(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 Pe=Ue.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),Ge="object"!=typeof window||window!==Ue?function(){}:"download"in HTMLAnchorElement.prototype&&!Pe?function(e,t,i){var r=Ue.URL||Ue.webkitURL,o=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",o.download=t,o.rel="noopener","string"==typeof e?(o.href=e,o.origin!==location.origin?We(o.href)?Qe(e,t,i):Je(o,o.target="_blank"):Je(o)):(o.href=r.createObjectURL(e),setTimeout((function(){r.revokeObjectURL(o.href)}),4e4),setTimeout((function(){Je(o)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(We(e))Qe(e,t,i);else{var r=document.createElement("a");r.href=e,r.target="_blank",setTimeout((function(){Je(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 Qe(e,t,i);var o="application/octet-stream"===e.type,s=/constructor/i.test(Ue.HTMLElement)||Ue.safari,a=/CriOS\/[\d]+/.test(navigator.userAgent);if((a||o&&s||Pe)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=a?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=e:location=e,r=null},n.readAsDataURL(e)}else{var A=Ue.URL||Ue.webkitURL,d=A.createObjectURL(e);r?r.location=d:location.href=d,r=null,setTimeout((function(){A.revokeObjectURL(d)}),4e4)}};class Ne extends Me{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.contextGlRender=null,this.contextGlDestroy=null,this.bitmaprenderer=null,this.renderType=null,this.videoInfo={width:"",height:"",encType:""},this._initCanvasRender(),this.player.debug.log("CanvasVideo","init")}async destroy(){super.destroy(),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.contextGlRender&&(this.contextGlDestroy&&this.contextGlDestroy(),this.contextGlDestroy=null,this.contextGlRender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.player.debug.log("CanvasVideoLoader","destroy")}_initContextGl(){if(this.contextGl=function(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let r=0;for(;!t&&r{var i=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),r=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,i),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(o));var s=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(s,r),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(s));var a=e.createProgram();e.attachShader(a,o),e.attachShader(a,s),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(a)),e.useProgram(a);var n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var A=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(A),e.vertexAttribPointer(A,2,e.FLOAT,!1,0,0);var d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var c=e.getAttribLocation(a,"texturePos");function l(t,i){var r=e.createTexture();return e.bindTexture(e.TEXTURE_2D,r),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),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,t),i),r}e.enableVertexAttribArray(c),e.vertexAttribPointer(c,2,e.FLOAT,!1,0,0);var u=l("ySampler",0),h=l("uSampler",1),p=l("vSampler",2);return{render:function(t,i,r,o,s){e.viewport(0,0,t,i),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t,i,0,e.LUMINANCE,e.UNSIGNED_BYTE,r),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,h),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,s),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(n),e.deleteBuffer(d),e.deleteTexture(u),e.deleteTexture(h),e.deleteTexture(p)}catch(e){}}}})(this.contextGl,this.player._opt.openWebglAlignment);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}else this.player.debug.error("CanvasVideoLoader","init webgl fail")}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=Y,this._initContext2D()):this._supportOffscreen()?(this.renderType=q,this._bindOffscreen()):(this.renderType=X,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}render(e){switch(this.player.videoTimestamp=e.ts,this.renderType){case q:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case X:this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2]);break;case Y:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),(t=e.videoFrame).close?t.close():t.destroy&&t.destroy()}var t}screenshot(e,t,i,r){e=e||ve(),r=r||Q.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!o[t]&&Q[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.toDataURL(o[t]||o.png,s);if(r===Q.base64)return a;{const t=ye(a);if(r===Q.blob)return t;r===Q.download&&Ge(t,e)}}clearView(){switch(this.renderType){case q:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,window.createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case X:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case Y:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}resize(){this.player.debug.log("canvasVideo","resize");const e=this.player._opt;let t=this.player.width,i=this.player.height;this.player.isControlBarShow()&&(Re()&&this.player.fullscreen&&e.useWebFullScreen?t-=G:i-=G);let r=this.$videoElement.width,o=this.$videoElement.height;const s=e.rotate;let a=(t-r)/2,n=(i-o)/2;270!==s&&90!==s||(r=this.$videoElement.height,o=this.$videoElement.width);const A=t/r,d=i/o;let c=A>d?d:A;e.isResize||A!==d&&(c=A+","+d),e.isFullResize&&(c=A>d?A:d);let l="scale("+c+")";s&&(l+=" rotate("+s+"deg)"),this.$videoElement.style.transform=l,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}}class He extends Me{constructor(e){super(),this.player=e;const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.disablePictureInPicture=!0,function(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}()&&(t.poster="noposter"),t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.videoInfo={width:"",height:"",encType:""};const r=this.player._opt;r.useWCS&&r.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.fixChromeVideoFlashBug(),this.resize();const{proxy:o}=this.player.events;o(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this._delayPlay&&(this.player.debug.log("Video","canplay and _delayPlay is true and next play()"),this._play())})),o(this.$videoElement,"waiting",(()=>{this.player.debug.log("Video","waiting")})),o(this.$videoElement,"timeupdate",(e=>{const t=parseInt(e.timeStamp,10);this.player.emit(j.timeUpdate,t),!this.isPlaying()&&this.init&&(this.player.debug.log("Video","timeupdate and this.isPlaying is false and retry play"),this.$videoElement.play())})),this.player.debug.log("Video","init")}async destroy(){super.destroy(),this.$canvasElement=null,this.canvasContext=null,this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src="",this.$videoElement.removeAttribute("src"),this.$videoElement=null),this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this.player.debug.log("Video","destroy")}fixChromeVideoFlashBug(){const e=function(){const e=navigator.userAgent.toLowerCase(),t={},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)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");i=e.match(/chrome\/([\d.]+)/)[1]}else"Firefox"===r?i=e.match(/firefox\/([\d.]+)/)[1]:"Opera"===r?i=e.match(/opera\/([\d.]+)/)[1]:"Safari"===r?i=e.match(/version\/([\d.]+)/)[1]:"Edge"===r?i=e.match(/edge\/([\d.]+)/)[1]:"QQBrowser"===r&&(i=e.match(/qqbrowser\/([\d.]+)/)[1]);t.type=r,t.version=parseInt(i)}return t}().type.toLowerCase();if("chrome"===e||"edge"===e){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.translateZ="0"}}play(){if(this.$videoElement){const e=this._getVideoReadyState();if(this.player.debug.log("Video",`play and readyState: ${e}`),0===e)return this.player.debug.warn("Video","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._play()}}_getVideoReadyState(){let e=0;return this.$videoElement&&(e=this.$videoElement.readyState),e}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),setTimeout((()=>{this.isPlaying()||(this.player.debug.warn("Video","play failed and retry play"),this._play())}),100)})).catch((e=>{this.player.debug.error("Video","_play error",e)}))}pause(e){e?this.$videoElement&&this.$videoElement.pause():setTimeout((()=>{this.$videoElement&&this.$videoElement.pause()}),100)}clearView(){}screenshot(e,t,i,r){e=e||ve(),r=r||Q.download;const o={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let s=.92;!o[t]&&Q[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 A=n.toDataURL(o[t]||o.png,s);if(this.canvasContext.clearRect(0,0,n.width,n.height),n.width=0,n.height=0,r===Q.base64)return A;{const t=ye(A);if(r===Q.blob)return t;r===Q.download&&Ge(t,e)}}initCanvasViewSize(){this.resize()}render(e){this.vwriter&&(this.vwriter.write(e.videoFrame),e.videoFrame.close())}resize(){let e=this.player.width,t=this.player.height;const i=this.player._opt,r=i.rotate;this.player.isControlBarShow()&&(Re()&&this.player.fullscreen&&i.useWebFullScreen?e-=G:t-=G),this.$videoElement.width=e,this.$videoElement.height=t,270!==r&&90!==r||(this.$videoElement.width=t,this.$videoElement.height=e);let o=(e-this.$videoElement.width)/2,s=(t-this.$videoElement.height)/2,a="contain";i.isResize||(a="fill"),i.isFullResize&&(a="none"),this.$videoElement.style.objectFit=a,this.$videoElement.style.transform="rotate("+r+"deg)",this.$videoElement.style.left=o+"px",this.$videoElement.style.top=s+"px"}isPlaying(){return this.$videoElement&&!this.$videoElement.paused}}class ze{constructor(e){return new(ze.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&!e.useOffscreen&&e.wcsUseVideoRender?He:Ne}}class Ye extends Oe{constructor(e){super(),this.bufferList=[],this.player=e,this.scriptNode=null,this.hasInitScriptNode=!1,this.audioContextChannel=null,this.audioContext=new(window.AudioContext||window.webkitAudioContext),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.audioEnabled(!0),this.gainNode.gain.value=0,this._prevVolume=null,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.on(j.videoSyncAudio,(e=>{this.audioSyncVideoOption=e})),this.player.debug.log("AudioContext","init")}resetInit(){this.init=!1,this.audioInfo={encType:"",channels:"",sampleRate:""}}async destroy(){this.closeAudio(),this.resetInit(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode=null,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=be,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this._prevVolume=null,this.off(),this.player.debug.log("AudioContext","destroy")}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=P[e.encTypeCode],this.audioInfo.encTypeCode=e.encTypeCode),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(j.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}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE&&this.player._opt.wasmDecodeAudioSyncVideo){if(this.audioSyncVideoOption.diff>ie)return void this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`);if(this.audioSyncVideoOption.diff<-1e3){this.player.debug.warn("AudioContext",`audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`);let e=this.bufferList.shift();for(;e.ts-this.player.videoTimestamp<-1e3&&this.bufferList.length>0;)e=this.bufferList.shift();if(0===this.bufferList.length)return}}if(0===this.bufferList.length)return;const t=this.bufferList.shift();t&&t.ts&&(this.player.audioTimestamp=t.ts);for(let r=0;r0?this.player.emit(j.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(j.mute,!0),this.gainNode.gain.value=e,this.gainNode.gain.setValueAtTime(e,this.audioContext.currentTime),this.player.emit(j.volumechange,this.player.volume),this.player.emit(j.volume,this.player.volume),this._prevVolume=e)}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.gainNode&&this.gainNode.disconnect(this.audioContext.destination),this.gainNode&&this.gainNode.disconnect(this.mediaStreamAudioDestinationNode)),this.clear()}audioEnabled(e){e?"suspended"===this.audioContext.state&&this.audioContext.resume():"running"===this.audioContext.state&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContext.state}isStateSuspended(){return"suspended"===this.audioContext.state}clear(){this.bufferList=[]}play(e,t){this.isMute||(this.hasAudio=!0,this.bufferList.push({buffer:e,ts:t}),this.bufferList.length>20&&(this.player.debug.warn("AudioContext",`bufferList is large: ${this.bufferList.length}`),this.bufferList.length>50&&this.bufferList.shift()))}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1,this.clear()}resume(){this.playing=!0}getLastVolume(){return this._prevVolume}}class Xe{constructor(e){return new(Xe.getLoaderFactory())(e)}static getLoaderFactory(){return Ye}}class qe extends Oe{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=Ce((t=>{e.emit(j.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}async destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player.debug.log("FetchStream","fetchStream",e,JSON.stringify(t)),this.player._times.streamStart=ve();const r=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,r).then((e=>{const t=e.body.getReader();this.emit(j.streamSuccess);const r=()=>{t.read().then((e=>{let{done:t,value:o}=e;t?i.close():(this.streamRate&&this.streamRate(o.byteLength),i.dispatch(o),r())})).catch((e=>{i.close();const t=e.toString();-1===t.indexOf(Ae)&&-1===t.indexOf(de)&&e.name!==ce&&(this.abort(),this.emit(F.fetchError,e),this.player.emit(j.error,F.fetchError))}))};r()})).catch((e=>{"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(F.fetchError,e),this.player.emit(j.error,F.fetchError))}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class Ze extends Oe{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=V,this.wsUrl=null,this.streamRate=Ce((t=>{e.emit(j.kBps,(t/1024).toFixed(2))})),e.debug.log("WebsocketLoader","init")}async destroy(){this.socket&&(this.socket.close(1e3,"Client disconnecting"),this.socket=null),this.socketStatus=V,this.streamRate=null,this.wsUrl=null,this.off(),this.player.debug.log("websocketLoader","destroy")}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:r}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(j.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=O})),i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),i(this.socket,"close",(()=>{t.log("websocketLoader","socket close"),this.emit(j.streamEnd),this.socketStatus=M})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(F.websocketError,e),this.player.emit(j.error,F.websocketError),this.socketStatus=U,r.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("websocketLoader","websocket handle message demux is null")}fetchStream(e,t){this.player._times.streamStart=ve(),this.wsUrl=e,this._createWebSocket()}}class Ke{constructor(e){return new(Ke.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(e){return e===a?qe:e===s?Ze:void 0}}var _e=t((function(t){function i(e,t){if(!e)throw"First parameter is required.";t=new r(e,t=t||{type:"video"});var s=this;function a(i){i&&(t.initCallback=function(){i(),i=t.initCallback=null});var r=new o(e,t);(h=new r(e,t)).record(),u("recording"),t.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",t.type)}function n(e){if(e=e||function(){},h){if("paused"===s.state)return s.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===s.state||t.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',s.state),t.disableLogs||console.log("Stopped recording "+t.type+" stream."),"gif"!==t.type?h.stop(i):(h.stop(),i()),u("stopped")}else m();function i(i){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(s[e]=h[e])}));var r=h.blob;if(!r){if(!i)throw"Recording failed.";h.blob=r=i}if(r&&!t.disableLogs&&console.log(r.type,"->",b(r.size)),e){var o;try{o=l.createObjectURL(r)}catch(e){}"function"==typeof e.call?e.call(s,o):e(o)}t.autoWriteToDisk&&d((function(e){var i={};i[t.type+"Blob"]=e,x.Store(i)}))}else"function"==typeof e.call?e.call(s,""):e("")}}function A(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,i){if(!e)throw"Pass a callback function over getDataURL.";var r=i?i.blob:(h||{}).blob;if(!r)return t.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,i)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var o=new FileReader;o.readAsDataURL(r),o.onload=function(t){e(t.target.result)}}else{var s=function(e){try{var t=l.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return l.revokeObjectURL(t),i}catch(e){}}(A);s.onmessage=function(t){e(t.data)},s.postMessage(r)}}function c(e){e=e||0,"paused"!==s.state?"stopped"!==s.state&&(e>=s.recordingDuration?n(s.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){s&&(s.state=e,"function"==typeof s.onStateChanged.call?s.onStateChanged.call(s,e):s.onStateChanged(e))}var h,p='It seems that recorder is destroyed or "startRecording" is not invoked for '+t.type+" recorder.";function m(){!0!==t.disableLogs&&console.warn(p)}var g={startRecording:function(i){return t.disableLogs||console.log("RecordRTC version: ",s.version),i&&(t=new r(e,i)),t.disableLogs||console.log("started recording "+t.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),s.recordingDuration&&c(),s):(a((function(){s.recordingDuration&&c()})),s)},stopRecording:n,pauseRecording:function(){h?"recording"===s.state?(u("paused"),h.pause(),t.disableLogs||console.log("Paused recording.")):t.disableLogs||console.warn("Unable to pause the recording. Recording state: ",s.state):m()},resumeRecording:function(){h?"paused"===s.state?(u("recording"),h.resume(),t.disableLogs||console.log("Resumed recording.")):t.disableLogs||console.warn("Unable to resume the recording. Recording state: ",s.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return s.recordingDuration=e,s.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){s.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),t.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(h)return h.blob;m()},getDataURL:d,toURL:function(){if(h)return l.createObjectURL(h.blob);m()},getInternalRecorder:function(){return h},save:function(e){h?y(h.blob,e):m()},getFromDisk:function(e){h?i.getFromDisk(t.type,e):m()},setAdvertisementArray:function(e){t.advertisement=[];for(var i=e.length,r=0;r-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),m=!h&&!u&&!!navigator.webkitGetUserMedia||v()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),g=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);g&&!m&&-1!==navigator.userAgent.indexOf("CriOS")&&(g=!1,m=!0);var f=window.MediaStream;function b(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 y(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 o=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,o);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,o);var s=document.createElement("a");s.href=l.createObjectURL(e),s.download=o,s.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(s),"function"==typeof s.click?s.click():(s.target="_blank",s.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),l.revokeObjectURL(s.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 w(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function S(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===f&&"undefined"!=typeof webkitMediaStream&&(f=webkitMediaStream),void 0!==f&&void 0===f.prototype.stop&&(f.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),i.invokeSaveAsDialog=y,i.getTracks=w,i.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,o=EBML.tools,s=new FileReader;s.onload=function(e){r.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var s=o.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([s,a],{type:"video/webm"});t(n)},s.readAsArrayBuffer(e)},i.bytesToSize=b,i.isElectron=v;var E={};function B(){if(p||g||u)return!0;var e,t,i=navigator.userAgent,r=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10);return(m||h)&&(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)),o=parseInt(""+r,10),isNaN(o)&&(r=""+parseFloat(navigator.appVersion),o=parseInt(navigator.appVersion,10)),o>=49}function C(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(w(e,"video").length&&w(e,"audio").length)navigator.mozGetUserMedia?(r=new f).addTrack(w(e,"audio")[0]):r=new f(w(e,"audio")),e=r;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=m?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var o,s=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return o&&o.mimeType?o.mimeType:e.mimeType||"video/webm"}function A(){s=[],o=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return s},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],s=[];var r=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",r),o&&(o=null),m&&!B()&&(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{o=new MediaRecorder(e,r),t.mimeType=r.mimeType}catch(t){o=new MediaRecorder(e)}r.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in o&&!1===o.canRecordMimeType(r.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",r.mimeType)),o.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+b(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:n(r)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(r)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(s.push(e.data),a(),"function"==typeof t.ondataavailable)){var o=t.getNativeBlob?e.data:new Blob([e.data],{type:n(r)});t.ondataavailable(o)}},o.onstart=function(){d.push("started")},o.onpause=function(){d.push("paused")},o.onresume=function(){d.push("resumed")},o.onstop=function(){d.push("stopped")},o.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&&o&&"inactive"===o.state)return delete t.timeslice,void o.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==o.state&&"stopped"!==o.state&&o.stop())},"number"==typeof t.timeSlice?(a(),o.start(t.timeSlice)):o.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,o&&(this.recordingCallback=e,"recording"===o.state&&o.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(s,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){o&&"recording"===o.state&&o.pause()},this.resume=function(){o&&"paused"===o.state&&o.resume()},this.clearRecordedData=function(){o&&"recording"===o.state&&i.stop(A),A()},this.getInternalRecorder=function(){return o},this.blob=null,this.getState=function(){return o&&o.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function r(){if(o&&!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 R(e,t){if(!w(e,"audio").length)throw"Your stream has no audio tracks.";var r,o=this,s=[],a=[],n=!1,A=0,d=2,c=(t=t||{}).desiredSampRate;function u(){if(!1===t.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,r=e.numberOfAudioChannels,o=e.leftBuffers.slice(0),s=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,A=e.desiredSampRate;function d(e,t,i){var r=Math.round(e.length*(t/i)),o=[],s=Number((e.length-1)/(r-1));o[0]=e[0];for(var a=1;a96e3)&&(t.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),t.disableLogs||t.desiredSampRate&&console.log("Desired sample-rate: "+t.desiredSampRate);var y=!1;function v(){s=[],a=[],A=0,E=!1,n=!1,y=!1,p=null,o.leftchannel=s,o.rightchannel=a,o.numberOfAudioChannels=d,o.desiredSampRate=c,o.sampleRate=b,o.recordingLength=A,B={left:[],right:[],recordingLength:0}}function S(){r&&(r.onaudioprocess=null,r.disconnect(),r=null),m&&(m.disconnect(),m=null),v()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return t.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){t.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var E=!1;r.onaudioprocess=function(e){if(!y)if(!1===u()&&(t.disableLogs||console.log("MediaStream seems stopped."),r.disconnect(),n=!1),n){E||(E=!0,t.onAudioProcessStarted&&t.onAudioProcessStarted(),t.initCallback&&t.initCallback());var i=e.inputBuffer.getChannelData(0),c=new Float32Array(i);if(s.push(c),2===d){var l=e.inputBuffer.getChannelData(1),h=new Float32Array(l);a.push(h)}A+=f,o.recordingLength=A,void 0!==t.timeSlice&&(B.recordingLength+=f,B.left.push(c),2===d&&B.right.push(h))}else m&&(m.disconnect(),m=null)},p.createMediaStreamDestination?r.connect(p.createMediaStreamDestination()):r.connect(p.destination),this.leftchannel=s,this.rightchannel=a,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=b,o.recordingLength=A;var B={left:[],right:[],recordingLength:0};function C(){n&&"function"==typeof t.ondataavailable&&void 0!==t.timeSlice&&(B.left.length?(h({desiredSampRate:c,sampleRate:b,numberOfAudioChannels:d,internalInterleavedLength:B.recordingLength,leftBuffers:B.left,rightBuffers:1===d?[]:B.right},(function(e,i){var r=new Blob([i],{type:"audio/wav"});t.ondataavailable(r),setTimeout(C,t.timeSlice)})),B={left:[],right:[],recordingLength:0}):setTimeout(C,t.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,o,s,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&A&&A[2]&&(n=parseInt(A[2],10)),a&&n<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(s=!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 a=new f;a.addTrack(w(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(o=new C(e,{mimeType:t.mimeType||"video/webm"})).record()}else h.frames=[],u=(new Date).getTime(),l();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var r=h.frames.length;h.frames.forEach((function(e,i){var o=r-i;t.disableLogs||console.log(o+"/"+r+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(o,r);var s=e.image.toDataURL("image/webp",1);h.frames[i].image=s})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){s=!1;var r=this;i&&o?o.stop(e):this.getWebPImages((function(){h.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),h.frames=[]}))}))};var d=!1;function c(){h.frames=[],s=!1,d=!1}function l(){if(d)return u=(new Date).getTime(),setTimeout(l,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),h.frames.push({image:(r=document.createElement("canvas"),o=r.getContext("2d"),r.width=e.width,r.height=e.height,o.drawImage(e,0,0),r),duration:i}),void(s&&setTimeout(l,t.frameInterval))}var r,o;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(l,t.frameInterval);u=(new Date).getTime(),h.frames.push({image:e.toDataURL("image/webp",1),duration:i}),s&&setTimeout(l,t.frameInterval)}})}this.pause=function(){d=!0,o instanceof C&&o.pause()},this.resume=function(){d=!1,o instanceof C?o.resume():s||this.record()},this.clearRecordedData=function(){s&&this.stop(c),c()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new I.Video(100)}function T(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?s?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),n.paused&&n.play(),l.drawImage(n,0,0,c.width,c.height),d.frames.push({duration:t,image:c.toDataURL("image/webp")}),void(o||setTimeout(i,e,e))):setTimeout(i,e,e)}function r(e,t,i,r,o){var s=document.createElement("canvas");s.width=c.width,s.height=c.height;var a,n,A,d=s.getContext("2d"),l=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,p=0,m=0,g=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=r&&r>=0&&r<=1?r:0,v=!1;n=-1,A=(a={length:h,functionToLoop:function(t,i){var r,o,s,a=function(){!v&&s-r<=s*y||(u&&(v=!0),l.push(e[i])),t()};if(v)a();else{var n=new Image;n.onload=function(){d.drawImage(n,0,0,c.width,c.height);var e=d.getImageData(0,0,c.width,c.height);r=0,o=e.data.length,s=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({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*s[0].width:s[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),o.height=s[0].height*n}else o.width=a.width||360,o.height=a.height||240;t&&t instanceof HTMLVideoElement&&u(t),s.forEach((function(e,t){u(e,t)})),setTimeout(l,a.frameInterval)}}function u(e,t){if(!r){var i=0,o=0,a=e.width,n=e.height;1===t&&(i=e.width),2===t&&(o=e.height),3===t&&(i=e.width,o=e.height),4===t&&(o=2*e.height),5===t&&(i=e.width,o=2*e.height),6===t&&(o=3*e.height),7===t&&(i=e.width,o=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(o=e.stream.top),void 0!==e.stream.width&&(a=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),s.drawImage(e,i,o,a,n),"function"==typeof e.stream.onRender&&e.stream.onRender(s,i,o,a,n,t)}}function h(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||a.width||360,i.height=e.height||a.height||240,i.play(),i}function p(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=h(e);t.stream=e,i.push(t)}}))}void 0!==n?c.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(c.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){l()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var r=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var o=h(t);o.stream=t,i.push(o),r.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var s=a.audioContext.createMediaStreamSource(t);a.audioDestination=a.audioContext.createMediaStreamDestination(),s.connect(a.audioDestination),r.addTrack(a.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(r)}))},this.releaseStreams=function(){i=[],r=!0,a.gainNode&&(a.gainNode.disconnect(),a.gainNode=null),a.audioSources.length&&(a.audioSources.forEach((function(e){e.disconnect()})),a.audioSources=[]),a.audioDestination&&(a.audioDestination.disconnect(),a.audioDestination=null),a.audioContext&&a.audioContext.close(),a.audioContext=null,s.clearRect(0,0,o.width,o.height),o.stream&&(o.stream.stop(),o.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),p(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){r=!1;var t=function(){var e;p(),"captureStream"in o?e=o.captureStream():"mozCaptureStream"in o?e=o.mozCaptureStream():a.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),o.stream=t,t}(),i=function(){c.AudioContextConstructor||(c.AudioContextConstructor=new c.AudioContext);a.audioContext=c.AudioContextConstructor,a.audioSources=[],!0===a.useGainNode&&(a.gainNode=a.audioContext.createGain(),a.gainNode.connect(a.audioContext.destination),a.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=a.audioContext.createMediaStreamSource(e);!0===a.useGainNode&&i.connect(a.gainNode),a.audioSources.push(i)}})),!t)return;return a.audioDestination=a.audioContext.createMediaStreamDestination(),a.audioSources.forEach((function(e){e.connect(a.audioDestination)})),a.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 L(e,t){e=e||[];var i,r,o=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 o;i=new j(e,t.elementClass||"multi-streams-mixer"),(o=[],e.forEach((function(e){w(e,"video").forEach((function(e){o.push(e)}))})),o).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 C(i.getMixedStream(),t)).record()},this.stop=function(e){r&&r.stop((function(t){o.blob=t,e(t),o.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(o){if(!o)throw"First parameter is required.";o instanceof Array||(o=[o]),e.concat(o),r&&i&&(i.appendStreams(o),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 F(e,t){var i,r,o;function s(){return new ReadableStream({start:function(r){var o=document.createElement("canvas"),s=document.createElement("video"),a=!0;s.srcObject=e,s.muted=!0,s.height=t.height,s.width=t.width,s.volume=0,s.onplaying=function(){o.width=t.width,o.height=t.height;var e=o.getContext("2d"),n=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),r.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(s,0,0),"closed"!==r._controlledReadableStream.state)try{r.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},s.play()}})}function a(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var d=new Blob([A],{type:"text/javascript"});t.workerPath=l.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}),s().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&&(o||n.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(){n=[],o=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){o=!0},this.resume=function(){o=!1};var n=[];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(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],o=!1,this.blob=null},this.blob=null}i.DiskStorage=x,i.GifRecorder=D,i.MultiStreamRecorder=L,i.RecordRTCPromisesHandler=function(e,t){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var r=this;r.recordRTC=new i(e,t),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"},i.WebAssemblyRecorder=F}));class $e extends Oe{constructor(e){super(),this.player=e,this.fileName="",this.fileType=e._opt.recordType||c,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}destroy(){this._reset(),this.player.debug.log("Recorder","destroy")}setFileName(e,t){this.fileName=e,d!==t&&c!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25);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 t=this.player.audio.mediaStreamAudioDestinationNode.stream;if(t.getAudioTracks().length>0){const i=t.getAudioTracks()[0];i&&i.enabled&&e.addTrack(i)}}this.recorder=_e(e,t)}catch(t){e.error("Recorder","startRecord error",t),this.emit(j.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(j.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(j.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(j.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(j.recordEnd);const e=(this.fileName||ve())+"."+(this.fileType||c);Ge(this.recorder.getBlob(),e),this._reset(),this.player.emit(j.recording,!1)}))}_reset(){this.isRecording=!1,this.recordingTimestamp=0,this.recorder&&(this.recorder.destroy(),this.recorder=null),this.fileName=null,this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}}class et{constructor(e){return new(et.getLoaderFactory())(e)}static getLoaderFactory(){return $e}}class tt{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}async destroy(){this.decoderWorker.postMessage({cmd:x}),this.decoderWorker.terminate(),this.decoderWorker=null,this.player.debug.log("decoderWorker","destroy")}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case p:e.log("decoderWorker","onmessage:",p),this.player.loaded||this.player.emit(j.load),this.player.emit(j.decoderWorkerInit),this._initWork();break;case v:e.log("decoderWorker","onmessage:",v,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=ve()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case y:e.log("decoderWorker","onmessage:",y,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case m:if(e.log("decoderWorker","onmessage:",m,`width:${i.w},height:${i.h}`),this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0)return void this.player.emit(F.webglAlignmentError);this.player.video.initCanvasViewSize();break;case b:e.log("decoderWorker","onmessage:",b,`channels:${i.channels},sampleRate:${i.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player.audio.initScriptNode(i));break;case g:this.player.handleRender(),this.player.video.render(i),this.player.emit(j.timeUpdate,i.ts),this.player.updateStats({fps:!0,ts:i.ts,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=ve(),this.player.handlePlayToRenderTimes());break;case f:this.player.playing&&this.player.audio&&this.player.audio.play(i.buffer,i.ts);break;case w:i.message&&-1!==i.message.indexOf(S)&&this.player.emitError(F.wasmDecodeError);break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:k,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,i){const r={type:B,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:T,buffer:e,options:r},[e.buffer])}decodeAudio(e,t){this.player._opt.useWCS||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t)}_decodeAudio(e,t){const i={type:E,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:T,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:I,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:D,key:e.key,value:e.value})}}class it extends Oe{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off(),this.player.debug.log("CommonDemux","destroy")}getDelay(e){if(!e)return-1;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;this.delay=t>=i?t-i:i-t}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.delay}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}initInterval(){this.player.debug.log("common dumex","init Interval");let e=()=>{let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay;if(this.player._opt.useMSE&&this.player.mseDecoder&&this.player.mseDecoder.getSourceBufferUpdating())this.player.debug.warn("CommonDemux",`_loop getSourceBufferUpdating is true and bufferList length is ${this.bufferList.length}`);else if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===E&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===E&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&this.getDelay(e.ts)<=Math.min(t,200)&&(this.dropping=!1,this._doDecoderDecode(e))}else e=this.bufferList[0],-1===this.getDelay(e.ts)?(this.bufferList.shift(),this._doDecoderDecode(e)):this.delay>t+i?(this.resetDelay(),this.dropping=!0):(e=this.bufferList[0],this.getDelay(e.ts)>t&&(this.bufferList.shift(),this._doDecoderDecode(e)))};e(),this.stopId=setInterval(e,10)}_doDecode(e,t,i,r,o){const s=this.player;let a={ts:i,cts:o,type:t,isIFrame:!1};s._opt.useWCS&&!s._opt.useOffscreen||s._opt.useMSE?(t===B&&(a.isIFrame=r),this.pushBuffer(e,a)):t===B?s.decoderWorker&&s.decoderWorker.decodeVideo(e,i,r):t===E&&s._opt.hasAudio&&s.decoderWorker&&s.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:r}=t;e.type===E?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===B&&(t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&r.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts))}pushBuffer(e,t){t.type===E?this.bufferList.push({ts:t.ts,payload:e,type:E}):t.type===B&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:B,isIFrame:t.isIFrame})}close(){}_decodeEnhancedH265Video(e,t){const i=e[0],r=48&i,o=15&i,s=e.slice(1,5),a=new ArrayBuffer(4),n=new Uint32Array(a),A="a"==String.fromCharCode(s[0]);if(o===le){if(r===pe){const t=e.slice(5);if(!A){const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this._doDecode(e,B,0,!0,0)}}}else if(o===ue){let i=e,o=0;const s=r===pe;if(!A){n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,o=n[0];i=Fe(e.slice(8),s),this._doDecode(i,B,t,s,o)}}else if(o===he){const i=r===pe;let o=Fe(e.slice(5),i);this._doDecode(o,B,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}}class rt extends it{constructor(e){super(e),this.input=this._inputFlv(),this.flvDemux=this.dispatchFlvData(this.input),e.debug.log("FlvDemux","init")}destroy(){super.destroy(),this.input=null,this.flvDemux=null,this.player.debug.log("FlvDemux","destroy")}dispatch(e){this.flvDemux(e)}*_inputFlv(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),r=this.player;for(;;){t[3]=0;const e=yield 15,o=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];let a=i[0];16777215===a&&(t[3]=e[11],a=i[0]);const n=yield s;switch(o){case C:r._opt.hasAudio&&(r.updateStats({abps:n.byteLength}),n.byteLength>0&&this._doDecode(n,E,a));break;case R:if(r._times.demuxStart||(r._times.demuxStart=ve()),r._opt.hasVideo){r.updateStats({vbps:n.byteLength});const e=n[0];if(this._isEnhancedH265Header(e))this._decodeEnhancedH265Video(n,a);else{const e=n[0]>>4==1;if(n.byteLength>0){i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let t=i[0];this._doDecode(n,B,a,e,t)}}}}}}dispatchFlvData(e){let t=e.next(),i=null;return r=>{let o=new Uint8Array(r);if(i){let e=new Uint8Array(i.length+o.length);e.set(i),e.set(o,i.length),o=e,i=null}for(;o.length>=t.value;){let i=o.slice(t.value);t=e.next(o.slice(0,t.value)),o=i}o.length>0&&(i=o)}}close(){this.input&&this.input.return(null)}}class ot extends it{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy"),this.player=null}dispatch(e){const t=this.player,i=new DataView(e),r=i.getUint8(0),o=i.getUint32(1,!1),s=new ArrayBuffer(4),a=new Uint32Array(s);switch(r){case E:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,r,o)}break;case B:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=ve()),i.byteLength>5){const s=new Uint8Array(e,5),n=s[0];if(this._isEnhancedH265Header(n))this._decodeEnhancedH265Video(s,o);else{const e=i.getUint8(5)>>4==1;t.updateStats({vbps:s.byteLength}),a[0]=s[4],a[1]=s[3],a[2]=s[2],a[3]=0;let n=a[0];this._doDecode(s,r,o,e,n)}}else this.player.debug.warn("M7sDemux","dispatch","dv byteLength is",i.byteLength)}}}class st{constructor(e){return new(st.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===A?ot:e===n?rt:void 0}}class at{constructor(e){this.TAG="ExpGolomb",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,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<=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),o=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 nt{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),o=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[o]=t[e],o++);return new Uint8Array(r.buffer,0,o)}static parseSPS(e){let t=nt._ebsp2rbsp(e),i=new at(t);i.readByte();let r=i.readByte();i.readByte();let o=i.readByte();i.readUEG();let s=nt.getProfileString(r),a=nt.getLevelString(o),n=1,A=420,d=[0,420,422,444],c=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(A=d[n]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],w=r[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);E=i.readBool(),B=t,C=2*e,S=B/C}}let R=1;1===v&&1===w||(R=v/w);let k=0,T=0;if(0===n)k=1,T=2-m;else{k=3===n?1:2,T=(1===n?2:1)*(2-m)}let I=16*(h+1),x=16*(p+1)*(2-m);I-=(g+f)*k,x-=(b+y)*T;let D=Math.ceil(I*R);return i.destroy(),i=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:u,chroma_format:A,chroma_format_string:nt.getChromaFormatString(A),frame_rate:{fixed:E,fps:S,fps_den:C,fps_num:B},sar_ratio:{width:v,height:w},codec_size:{width:I,height:x},present_size:{width:D,height:x}}}static _skipScalingList(e,t){let i=8,r=8,o=0;for(let s=0;s ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),void this.player.emit(F.webcodecsWidthOrHeightChange)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?Z:K});this.player.emit(j.timeUpdate,t);try{if(this.isDecodeStateClosed())return void this.player.debug.warn("Webcodecs","VideoDecoder isDecodeStateClosed true");this.decoder.decode(r)}catch(e){this.player.debug.error("Webcodecs","VideoDecoder",e),(-1!==e.toString().indexOf(ae)||-1!==e.toString().indexOf(ne))&&this.player.emitError(F.webcodecsDecodeError)}}else this.player.debug.warn("Webcodecs","VideoDecoder isDecodeFirstIIframe false")}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===J)return void this.emit(F.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=ve());const i=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));this.player.debug.log("Webcodecs","VideoDecoder configure",i);try{this.decoder.configure(i)}catch(e){return this.player.debug.error("Webcodecs","VideoDecoder configure",e),void this.player.emit(F.webcodecsConfigureError)}this.hasInit=!0}}isDecodeStateClosed(){return"closed"===this.decoder.state}}const ct={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制"};var lt=Object.keys(ct).reduce(((e,t)=>(e[t]=`\n \n ${ct[t]?`${ct[t]}`:""}\n`,e)),{}),ut=(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",Se(r,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let o=e.width,s=e.height;i(r,"load",(()=>{i(r.contentDocument.defaultView,"resize",(()=>{e.width===o&&e.height===s||(o=e.width,s=e.height,e.emit(j.resize),n())}))})),e.$container.appendChild(r),e.on(j.destroy,(()=>{e.$container.removeChild(r)})),e.on(j.volumechange,(()=>{!function(e){if(0===e)Se(t.$volumeOn,"display","none"),Se(t.$volumeOff,"display","flex"),Se(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=Ee(t.$volumePanel,"height")||60,r=Ee(t.$volumeHandle,"height"),o=i-(i-r)*e-r;Se(t.$volumeHandle,"top",`${o}px`),Se(t.$volumeOn,"display","flex"),Se(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(j.loading,(e=>{Se(t.$loading,"display",e?"flex":"none"),Se(t.$poster,"display","none"),e&&Se(t.$playBig,"display","none")}));const a=i=>{let r=Ie(i)?i:e.fullscreen;Se(t.$fullscreenExit,"display",r?"flex":"none"),Se(t.$fullscreen,"display",r?"none":"flex")},n=()=>{Re()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){let i=e.height/2-e.width+19,r=e.height/2-19;t.$controls.style.transform=`translateX(${-i}px) translateY(-${r}px) rotate(-90deg)`}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)"}),10)};try{fe.on("change",a),e.events.destroys.push((()=>{fe.off("change",a)}))}catch(e){}e.on(j.webFullscreen,(e=>{a(e),n()})),e.on(j.recording,(()=>{Se(t.$record,"display",e.recording?"none":"flex"),Se(t.$recordStop,"display",e.recording?"flex":"none"),Se(t.$recording,"display",e.recording?"flex":"none"),!e.recording&&t.$recordingTime&&(t.$recordingTime.innerHTML=De(0))})),e.on(j.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=De(e))})),e.on(j.playing,(e=>{Se(t.$play,"display",e?"none":"flex"),Se(t.$playBig,"display",e?"none":"block"),Se(t.$pause,"display",e?"flex":"none"),Se(t.$screenshot,"display",e?"flex":"none"),Se(t.$record,"display",e?"flex":"none"),Se(t.$qualityMenu,"display",e?"flex":"none"),Se(t.$volume,"display",e?"flex":"none"),a(),e||t.$speed&&(t.$speed.innerHTML=ke(""))})),e.on(j.kBps,(e=>{const i=ke(e);t.$speed&&(t.$speed.innerHTML=i)}))};function ht(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===i&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}ht('@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}}.jessibuca-container .jessibuca-icon{cursor:pointer;width:16px;height:16px}.jessibuca-container .jessibuca-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}.jessibuca-container .jessibuca-play-big{position:absolute;display:none;height:100%;width:100%;background:rgba(0,0,0,.4)}.jessibuca-container .jessibuca-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,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.jessibuca-container .jessibuca-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC")}.jessibuca-container .jessibuca-recording{display:none;position:absolute;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:95px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jessibuca-container .jessibuca-recording .jessibuca-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;animation:magentaPulse 1s linear infinite}.jessibuca-container .jessibuca-recording .jessibuca-recording-time{font-size:14px;font-weight:500;color:#ddd}.jessibuca-container .jessibuca-recording .jessibuca-icon-recordStop{width:16px;height:16px;cursor:pointer}.jessibuca-container .jessibuca-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}.jessibuca-container .jessibuca-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jessibuca-container .jessibuca-controls{background-color:#161616;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:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;-webkit-user-select:none;user-select:none}.jessibuca-container .jessibuca-controls .jessibuca-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jessibuca-container .jessibuca-controls .jessibuca-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jessibuca-container .jessibuca-controls .jessibuca-fullscreen,.jessibuca-container .jessibuca-controls .jessibuca-fullscreen-exit,.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-microphone-close,.jessibuca-container .jessibuca-controls .jessibuca-pause,.jessibuca-container .jessibuca-controls .jessibuca-play,.jessibuca-container .jessibuca-controls .jessibuca-record,.jessibuca-container .jessibuca-controls .jessibuca-record-stop,.jessibuca-container .jessibuca-controls .jessibuca-screenshot{display:none}.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-icon-mute{z-index:1}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom{display:flex;justify-content:space-between;height:100%}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-left,.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-right{display:flex;align-items:center}.jessibuca-container.jessibuca-controls-show .jessibuca-controls{opacity:1;visibility:visible}.jessibuca-container.jessibuca-controls-show-auto-hide .jessibuca-controls{opacity:.8;visibility:visible;display:none}.jessibuca-container.jessibuca-hide-cursor *{cursor:none!important}.jessibuca-container .jessibuca-icon-loading{width:50px;height:50px;background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%;animation:rotation 1s linear infinite}.jessibuca-container .jessibuca-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAE5UlEQVRoQ+1YW2sdVRT+1s7JxbsoVkEUrIIX0ouz15zYNA+N1RdtQfCltlUfvLbqL/BCwZ8grbHtizQqPojgBSr0JkiMmT2nxgapqBURtPVCq7HxJCeZJVPmxDlzZubMmXOSEsnAvOy917fXt9e39tp7E5b4R0vcfywTuNgRbBgBx3HuJqLVzPzmYjprjHkcwAlmLqXNm4XAISLaSESPaq2HF4OE67rbRGRYRA7btn1fbgLGmKsA/Azg0gBkGzO/vZAkHMd5hIiqc5wHcCMz/5k0Z2oExsfHV1QqldPAf8lORNu11m8tBAljzFYAYWxRSl1vWdZvuQj4RsYYF4AVBlgIOVVlE55HRIxt23ZuCfmGjuOsJ6LPoiAistW27XfaEYmIbOYhPc9bXywWR1oiEJDYQkR1zrYjEjGyqfqbKd8a7kJVtLgQ+30i8pht2wfyRKIdmJkJBPkQTbILfudJ7CTZNBvVpggEcgpvc/ML38zESbLJsxBNE/A9biX0rdjGyTQXgbxyapdsarb0PMlXtWnGoXbKpm0Essqp3bJpK4E0OXmed3+hUBDP8w5FI91M0rdcyLLILElOCbaZilSWeXMncRx4klTCY1spfG3dhZJWx3GcDUR0EEB3ZMw0ET2gtT6SZWWzjmlrBIJCl0hAKfWgZVmHszqXZVxbCSxpCS2JJA6umIhe8ZKKVLPbaBJ+S9toqVRa53nedgAbAKwIwH4FcAzAa0R0l4i8F7PPz189k6RFRA+LyNcAXojDV0oNW5b1eW4Cxpg9AHZkSaaa6hhzb065uDSCH2LmRB8Sk9gY4293g43Qo/1pV80m8yQMfZSZ781cB1zXHRKRZ2IMpgD8A+DamL4ZItqitX4/jbQx5iEA7wLoihn3V/ACckWMJN/QWj9b1x5tGBsbW6uUOh5pPy0iL3Z2dn6ilJqanp5ep5TaJSLhF4NppdRNaU8gPmapVLrO87yfIoXuWyJ6uVKp+HmFjo6OQSJ6FcBtYT+UUmstyxqvkWuUgDFmP4AnQu2/e563qlgs+u9DNZ8xZhRAX7VRRPbath0XuXk7Y8xeAE+FgL6fnJzsHRwcLIfBR0ZGLunq6poAsDLUvp+Zw7b1r9PGmJMAbg8Z7WDmoThZuK67WkS+DD18fcPMdzSQUBR/EzN/nIC/SUQ+DPXV4dclsTHmHAD/SfHCNzc3t7Kvr++HJKeMMacA3BL0nyuXyzcPDAxMxo0fHR29slAo/Ajg6qD/fE9Pzw29vb1/x42fmJi4vFwu+5G/LOg/y8zXNJLQ2dAES5JANMQ7mfn1jBI6ycx3NiMhItqstf4oAX+ziHwQ6qvDj5NQNIn/ALCKmX+JSeIvABRD7fuY+ekGBPYBeDI05tTMzExvf3+/vz2Hk91/ET8RSeI6/DoCpVJpjed5fmKGvzMAXpqdnT3oed5Ud3d3v4jsAqBr9Ei0Rmv9VRqBBPzvROQVETnq2xJRdRu9tRF+bCVOKWT+Kvl/TSIFk6SW/LAjKfjV5K8rZABi8dOOEv7FI7Z8x6zwEWbemLbyMfJr5qiSiJ96oclymBOR3bZtP9+M89WxxpjdAHY2sN3DzM8ljWl4I3Nd9x7/OE1ENcdpETnmH3e11n41zv0l4J8RkU+J6AAz+xtF4teQQG7PFslwmcAiLfSyhC72Qv9/I/Avns2OT7QJskoAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAED0lEQVRoQ+2ZycsdRRTFf2ejqHFAMQqiYBTUoElUHLNx3GgCgpuYRF2o0UT9CxwQ/BMkMSbZSKLiQgQHUDCJgjiAxiEiESdEcJbEedgcKaj3UV+/6q7u/jovPPkK3qbr1ql76p5bt6qemPKmKfefeQKHOoLFCNg+H1gi6fFJOmv7VmCvpD1N87Yh8ApwNXCzpB2TIGF7DRDm2inpmt4EbB8LfAMcGUHWSHryYJKwfRMwmuMP4BRJv9TN2RgB2wuB72BWsq+V9MTBIGF7NZBiGzhJ0o+9CIRBtt8FLqgADC6nRDbpVO9Iuqi3hCKB5cDrGZDVkp4aIhIV2aSQyyW9MScCkcQqIOfsnCORkc3I31b5VtyFRmg1IQ7dt0ja3icSQ2C2JhAjUU2ykd+dE7tBNp2i2olAJJFuc+nCt564QTadF6IzgUhiVGiqyinKaQjZpJP2ItBXTkPJZhACXeU0pGwGI9BWTkPLZlACBTldG4o5EA6E1dY66edcyNrs8Q36zg1vVaTazNs7iXPgDVJJzYs7VRvHRzaDEohyugJ4CTi84sg/wHWSdnVxsGQ7aQLXS9pZcqpL/6AEplpCU5HE8YpJ9YrXUKQ6baN1+HPaRm1fBqwFQnKGK2ZoPwCvAo8Ai4FnMpPMHMwapHUj8DFwbw3+Dklv9iZgexOwvktSRduxU2VDlErwmyXV+lCbxLbDdndlCT3TX3vV7JgnKfRuSVflfMkSsL0ZuDMz4E/gL+CETN+/wCpJzzaRtn0D8DRwWMbu1/gCcnSm7zFJd1W/jxGwvQx4r2IYnlbuA14GAomQFw8B6YtBKFSnNj2BxEJ3IvB1pdB9CjwQ8yqYhcg/DJxZ8WOZpA/SbzkC24DbEqOfgPMkBRKzmu23gEuSj1sk5SI3Y2J7C3BHMuZz4FxJf6fgto8APgIWJd+3SUrHjr9O294HnJUMWi8pSGqs2V4CvJ88fH0i6eyChKr4KyS9WIO/Ang+6RvDz0XgABCeFEdtkaQv65yy/QVweuwPY0+T9FuNQ8cAXwHHxf7wdHiypN9r7BfEl8GjYv9+SceXJLQ/mSDYTh2Baog3SHq0pYT2STqno4RWSnqhBn8l8FzSN4bfJol/jkn8bXUS228DFyfft0paVyCwFbg9sQkSDEkctueZZju8iO+tJPEYfo7A0piYKd73wP3xnB+20cvjNnphxdmlkj4sEMjhfwY8COyOY0fb6Bkl/K6FLKxS+M1KpDhJY8mvrG5doRwlf66QZfGbjhLh4pEt35kV3iUp/IvTunU8qtTil/7gaHOY2yjpntaez9b5RmBDYewmSXfX2RRvZLYvbThOh+NuqMa9Ww1+yLnXgO2SwkZR24oEens2oYHzBCa00PMSOtQL/f+NwH+Hg8hAnbrYgQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABA0lEQVRoQ+1YwQqCUBAcfWXXsLr2AXWTPXno8yVB8AP6Aa3oHI+kCDqYaawJljSe133uzO44bx0M/HEG/v1gAd9mkAyQgY4I/F8LJUlyrQFtD2AtIkcNoFEU+Z7n7QD4DfFHEVlocrVmgAUAIAOl3mILPcDgEFcUhyrUKMGUUcroc3NQRimj9XJBGaWMvvPydKN0o6/9QTdKN6rZANxj6EbpRulGuZnjYqs8BbyR8Ub2Izeys+u6yyAIDpo/ehzHM2NMDsA0xFsRmWhyfTIDWSXxCEBmrd2EYXjSHJqm6bQoii2AOYBL5Z0xgFxEVppcrQvQJO0zhgX0iXbdWWSADHRE4AZQ731AhEUeNwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAA7klEQVRoQ+2YSwrCQBBEX6HiVvxsPYDewfN7By/gD9ciQkvERQwJdBSiYs0mEDo96aruombEjy/9+P/jAj7NoBkwA28i8H8tFBFRA9oeWEo6ZgCNiDGwAYpn3TpKmmVytWbABQBmoNRbbqEHGB7iiuJYhRol2DJqGX1uDsuoZdRmLuNZSzGWUcuoZdRHSp/IylNgK2ErYSthK3FHwLcSvpXIjoLt9Jfa6TMwl3TIMBkRE2AH9BriL5KGmVyvWIltJXEfKN6tJJ0ym0bECFgDU+Ba+WZQFCdpkcnVuoBM0i5jXECXaNftZQbMwJsI3AAPN3dAQflHegAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC+UlEQVRoQ+1ZS2sTURT+zlDJYE3XSq219QHVuEjnJDT+Bff9Abqw2voAEfGxqygUqWhVFHGl/yMLu9BwByxk5SNI66ML6U7axjhHbmhgWiftncxoOiV3FcI53z3f/e65594zhIQPSnj86BBot4IdBToKRFyBnbeFlFIScVEiuYvIWC6Xe2YK8pcC7SYA4CMzH4mDQBXAqilQBDsLQLfPf9FxnF4i8kwwmypARI+Wl5dvmIBEsUmlUkNE9NaHsVCpVAZGR0d/m+A2JSAid3K53E0TkCg2pVKpz7KseR/GfKVSGYxMAMA0M1+JEpyJb6lUOm5ZVnkrAsVisaunp+esiByr1Wp3R0ZGvmifzZK4XQQWHMc52MgBpdQuAOcAXABwuB400ZTjONdaIjA7O5u2bVsnWU1EujzP+5nP5xdMVjvIJkCBD8x8VCm1G8AYgAkAAxt8Z5j5YmgCSqlTAJ4D2OcD/AXgATNfbYVEAIFPIvKKiE4D6GuCea8xX6gtpJT6DmBvECgRFRzHeROWRAABE4iWCbwHEFhkPM/L5vP5dyaz+23+KwHXdR3P854S0YG1ILSCuthNMfNM2OC1/RYENLY+ygcBnPfht6ZAA6BYLNr6dyqVokKhsGpaNQ2TWJstreXaE2aed133sojcj41AKyvdzCdAgSXLsk4MDw9/a/i4rntbRPxFNZoC/5jAV2be759DKTUJ4FZSFFi0bbs/k8noy2R9dAjEuWU2YgXkQOK3kD6BMsysi2Z9JC2Jdcw/ALzwPO+xvmcl7Rj177JVEbkO4BARjSflFDJJuW1dBxJPoCIiL4noDIB1BS0pW6j+oJmbm+uuVqvjRKQfLr0bZHnIzJf0f6HeAybahrUJqAPruhLlcnnPysqKfpXp11n/Gv62zoHAroS+AafT6QkiGrIsazKbzX7eVIHEt1US39gCkOzWYthkjNE+tuZujDGZQ8XRXn8N4KT5lLFZ6uaYPt+nwyDuvC80YdhvB9uOAu1WoaNAR4GIK/AHvdr+QAexB7EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACfUlEQVRoQ+2ZSYsUQRCFvycK4nJXXEbHBdwO4kn/gv9CD467ICIutxEFkREdFUU86T/xojcPntyQcT2INw+uISFVkD1Wd2dWlU7nUHlqisiX+fJFZGREi8yHMt8/HYG5VrBToFOg4QnMPxcyM2t4KE2nT0i6EwvylwIjQOCFpE1tEPgGfI0FamC3AFgazP8IrJL0KwZzkAI3gLMxIA1ttgCPA4w3wHpJP2NwBxG4KOlcDEgTGzNbA8wEGP57vA0CU5JONtlczFwz2wY8HUbAzBYCB4CtwCVJb33OIAXmioC70LoyBsxsEXAQOApsLIhelnS6FgEzW+5BBvwA/FS+SPJFa40KBZ5L2mxmS4AJ4IjHxCzwaUnHkgmY2V7gLrAyAPwOXJN0qg6DCgIvgQfAPsDjo2pcKddLciEz+wCs6AO6W9KjVBIVBGIgahN4BvRLMjslPYlZPbT53wR2AbeBtcUmXEFPdh5U06mbd/shBBzbr/Jx4FCAX0+BEsDMFocEYrNmFcE+BD4XsXZL0oyZnQCutkagzkn3m1NBwDe/Q9L74MAuFEqUn5op8I8JvJO0elacTALnc1HAH3Njkvwx+WeYWUegTa/pwaqIgexdyIN4uyRPmqULZRXEvulPwD3gpr+zcrtGQxfzRHYG2AAczuUWiom3kc4D2RN4BdwH9gM9CS0XFyoLGu9UuN974eIFVDiuSzruH5LqgRhtU20q8kBPV8LMlhVVmVdnYwX+SMdAZVeieAF7eeltmElJr4cpkH1bJfvGVvatxdR4bMu+teZuWxtKxWncXn8I7EldtQV7vz79fp9KwZp//9CksB8F206BuVahU6BToOEJ/Ab7+KdABdTt8AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADd0lEQVRoQ+2Zz2sdVRTHv+fJBDW6anDVXen6wZszYxYBiYgtFGst3VSDunKjpS0GpUlqfjVpsVVs6aaL0or4YxMVFCJZ2ZLdPUP+gq5bQnTxtNAkfTnlhnnlkmQy9yV9780rudt77tzv5/y4v4bQ4Y06XD/2ANodwec/AiJygJnvtdvTWfPnRkBEJAiCN8rl8kMfiPn5+Ve7u7v3rays0Orq6lJfX99/PuN2auMDoAD+BvA2M6/mTWSMOUtE48D6AjHGzN/kjdlNvy+AnWOOmQ/lTSYiEwDOWzsimgrDcCRvzG76GwGw8/zJzO9sN6GInAMwbW1UdSSKoqndCMwb6wNwGsB39Q+p6h/M/C4R2dTa1AoHYBWKyCkA1+pqiWi2Wq0e7e/vf7yRoJAAKcQggMtuJKIoOtoxACnE0/xOi/SXMAxPuhCFjUBdpIjYVWXSEf0TM3/g9BeriDMKdSPEz8z8vrU1xgwT0YXCrEJZy1iSJKOqOub0/8jMA0mSfKKqNwoPkHp7ioiGHIhRIvpHVa93BEBa2JcAfOlALAHo6RgAKzRJkk9V1S6xL7kpV4idOM31taxaIKJHqmpPnMMA9hcOQES2PDJkAT1XAAC+ZebPfWB3auNzmLObVsNRUNUXVHUujuM7OxXnMy4XwOcj29mIyOuq+lapVGrYCelKpkEQ3CyXy4tbzdN0AGPMxr2iYZ+sra3FcRybtgCIiK2BKw2rdgaUSqWoUqlIkQAepFDdAF7cBq5ERI9rtdr1OI7tmE2t6SmUEYFHAEaexYW/1QC2EF+ru5GIvg7D0D2GNJxprQY4o6qv1I/b6SpzOYqiLxpWng5oOQAzXxWRWwA+dkRfYOb1p5hGW6sBJpn5KytSRG4D+KguWFXHoyhy7xdeLC0F2ChSRL4H8OFuINoKYIUbY34gogHH3eeZef1K6tPaDpCm068A3nMEDzHzxY4BUNWSiPxORO6z5aDPPlGICNQ9bYyZIaLjjudzIQoFkKbTbwCO+UI0HcB9J/LdeY0xs0R02IGYYObRrWqiFQCfEZEtSHsfmGZm+4qxbbM/hQD8BeBNa0hEM2EYnmgLgP3lFARBT1dXly4vL//b29tbzQNIU+llAHeJaLFSqRzJes5vegR8xGbZLCwsHKzVav8z8/0sm0ID+MDvAfh4qZk2exFopnd9vv0ELrXBQO7fD10AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC/ElEQVRoQ+2Zy49NQRCHvx+ReK6IlZ34E7CUiCAR4xEbTLCyQRATYswwb2IQZDYWgojHZpCQECts+ResiQwLj0RClNSkb9Lu3HtPz7mZc8+V6eXt6tP1VVV3VdcVbT7U5vozC9BqD/7/HjCzlZLet9rS9fbP9ICZvQPWSfqRAmFmS4ClMHm+JiR9S1mXVyYFwIBXwEZJv7I2MrPjQH8A6JN0OWtNM/OpAL7HS0mbsjYzswGgN8gNS+rJWtPM/HQAfJ9nkrY22tDMTgMjQaZH0nAzCmatTQE4ClyNPvQU2CbJQ2vKKB2Aa2hmR4DrkbbPgQ5Jv6sJSgkQILqA0dgTkjraBiBAxPHtPz2UtDuGKK0HKkqamd8qg5HS9yXtjebLdYjrHNRqiAeS9gQvnQGGSnML1bvGzOwc0BfN35PUaWYHgRulBwjW9ju+O4JwqM/AWFsABIgLwKkIYgJY1jYAAeJQuGIXVIVcKTKxh8WfBin9J+AVpx/eFWUEqFkyNACKp0rhgWYArkg6kQibSyylmPOklQdibijBX+fSLHFRJkDid+qKmdlaYENOI0zeEcBNSZ9qbVIEQHWuyGOTNZLetgrAz8ClPFpHa1ZL8rf5lFGEB2oBfAxQi4D5DeDmAP7mGJPka0oD4LnDr9imH/xFe8AP4vLIjBclxWXItCOtaIBjwOKo3HaFRyWdnLbmYUHhAJKumdkt4ECk9JCkSitmWixFAwxKOjt5uZvdBvZH2vZLit8XSSBFA/yjpJndAfY1A9FSgOCJu0BnBNErqfIkzfRCywECxCNgR6Rtt6TzmdqHBmyKXG4ZM4sTWc04NzNPWE+AuG3ZlZInSuGBinXMbBzYGVkrE6JUACGcHgPbUyGKAIj7REmZ18y897o5ghiQ5E/bltRChwE/kF7Xj0jyLkbDYWbzgBfA+iA4LmlXqwD8LydvszjAF0lfswBCKC0E3gBeP22p186f8RBKUbaejJmtAr5L+lBPptQAKfCzAClWmkmZWQ/MpHVTvv0X9iFAQGQyevIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrUlEQVRoQ+2ZPYgTURCAZzbBXJnCeL2Cnb87b9MEtPBUrrMQFAtrtT5/ClGs9LBWWz0RtbBUFCF4oJDsbO68wsLA2YqQSmLlvpEHu7IuMdlLcus+yUKKhJfZ+ebnvZl5CJY/aLn+MAP41x7M1QPMfFtr/crzvHfTAs8FoNPp1LTWzwHgqIg0lFLvrQHwfX8BER8DwC6jNCIecF13wwoA3/dvIuKNpLJa60Oe560XGoCZd4rICiKeTCtaeABmPg4AJmRqg6xcaABmvg4At4aFRyEBhoVM4UMoCplHADCfJTEL5YEsIVNID5iQAYCHALCYxeq5b6PMfF5EBAAEESthGK7W6/XPRpFWq7W3VCqtZg2ZcT3g+/6i4zjzIlLSWn/yPO/DIGMNLCWY2Sj/+xGRK0qpZfNDEASnROTFVi0fr8+aA8z8Ld6KEfGt67oLYwMAwEUium8EREn7OgeAjwCwPyo/nrque3YSgAtE9GDaAM1mc65arc4Zuf1+P2w0Gt9jJZl5DQAORt+fENG5wgEw8zUAMB/zbBBRwyqAIAjuiMjlSOlNItpjFUCqWl0josMzgChR/9hGAWBbknjmAdPhDdqa0gfZzAMJKyVP4v8hhJYRcSni+0JEu63ahZj5anyQici6UuqIVQDdbrfS6/UqRulyufyTiH5sF8AlIro37VpoWEHIzGZ2tM+sEZFnSqkzk9RCS0R01wjIsZz+mug53hDRia0AnI4bGgDYISItz/M2jYC8Gpp2u30MEWuO4zha665Sqp0ZYFStX/iWchRAItFGzoHSsrJ2ZFl1mHg6bfVYJeGJv85CC++BpIJZ5kSFC6G0ha0e7mYJqcJ7IOkRay84UhD2XjHFIFZf8iW9YcYoYRi+tO6aNeupOs66iU/icV46zf/MAKZpzXFk/QL+JG1PUPhRiQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACSElEQVRoQ+2Zu4sUQRCHf5+C+gf4yBXMfMYHGvjCzEBQDIzV+HwEohipGKupD0QNDE8UEwUFTe68wEDhTMVUMFJ+0tArzbjs9u3Ojt0wBR0M9MzUV1XdXVWNKhcq1189wP/2YKcesH1d0nPgdVvgnQDY3iTpqaT9kuaAt9UA2D4o6aGkzVHpXcByFQC2r0q60lB2D7BUNIDtjZIeSDoyRNGyAWwfiiET4n6YlAtg+7Kka2PCozyAMSHT5CkLIIbMfUlbMhdmOQCZIVOeB2LI3JN0NNPq6bTZe8D2aUmOY72kN8DnoIXt7eF5FSEzkQdsB+OEsFwr6RPwbpixhqYStoPyqVwAbkaAY5KeTWD5wStZHrD9XdJgK34FhBP9H8kFOAvciQBhn3/RAcBHSTvjfx4DJ6cBOAPcbRvA9gZJYQT5DfwYKGl7UdLu+PwIOFUiwCVJYQRZBuZqA7gh6XxUegXYVhtAmq0uAnt7gLhQm9vorBZx74Hcc6D3QLKH/z2JGyVnlYs4pCfzEe4rsLW2XehicpAtAftqAwiZbhhBfgE/ZwVwDrjddi40KiG0HXpHO+KcJ8CJaXKheeBWBOgqnf6W1BwvgcOrATieFDTrJL0HViJAVwXNgVgPrJH0BfiQDTDKtREiNK7KLSnHASQLLacP1PxcVkWWq8PU3emq2yqJJ0b1Qsv2QKpdZp+orBBqmrfq5m5mSJXtgUZI1XnB0YCo94opCal6L/ka3ghtlIXqrllzT9VJ5k19Ek/y0zbf6QHatOYk3/oDujC8QMWgjf4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-text{font-size:14px;width:30px}.jessibuca-container .jessibuca-speed{font-size:14px;color:#fff}.jessibuca-container .jessibuca-quality-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .jessibuca-quality-menu-list.jessibuca-quality-menu-shown{visibility:visible;opacity:1}.jessibuca-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}.jessibuca-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jessibuca-container .jessibuca-quality-menu{padding:8px 0}.jessibuca-container .jessibuca-quality-menu-item{display:block;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}.jessibuca-container .jessibuca-quality-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-quality-menu-item:focus{outline:none}.jessibuca-container .jessibuca-quality-menu-item.jessibuca-quality-menu-item-active{color:#2298fc}.jessibuca-container .jessibuca-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}.jessibuca-container .jessibuca-volume-panel-wrap.jessibuca-volume-panel-wrap-show{visibility:visible;opacity:1}.jessibuca-container .jessibuca-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jessibuca-container .jessibuca-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:before{bottom:-54px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-volume-panel-handle:after,.jessibuca-container .jessibuca-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-controls{width:100vh}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading{flex-direction:row}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading-text{transform:rotate(270deg)}');class pt{constructor(e){var t;this.player=e,((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("jessibuca-controls-show-auto-hide"):e.$container.classList.add("jessibuca-controls-show");const i=e._opt,r=i.operateBtns;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
    `:""}\n
    \n ${lt.loading}\n ${i.loadingText?`
    ${i.loadingText}
    `:""}\n
    \n ${i.hasControl&&r.play?'
    ':""}\n ${i.hasControl?`\n
    \n
    \n
    00:00:01
    \n
    ${lt.recordStop}
    \n
    \n `:""}\n ${i.hasControl?`\n
    \n
    \n
    \n ${i.showBandwidth?'
    ':""}\n
    \n
    \n ${r.audio?`\n
    \n ${lt.audio}\n ${lt.mute}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n `:""}\n ${r.play?`
    ${lt.play}
    ${lt.pause}
    `:""}\n ${r.screenshot?`
    ${lt.screenshot}
    `:""}\n ${r.record?`
    ${lt.record}
    ${lt.recordStop}
    `:""}\n ${r.fullscreen?`
    ${lt.fullscreen}
    ${lt.fullscreenExit}
    `:""}\n
    \n
    \n
    \n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jessibuca-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jessibuca-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jessibuca-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")})})(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),ut(e,this),((e,t)=>{const{events:{proxy:i},debug:r}=e;function o(e){const{bottom:i,height:r}=t.$volumePanel.getBoundingClientRect(),{height:o}=t.$volumeHandle.getBoundingClientRect();return we(i-e.y-o/2,0,r-o/2)/(r-o)}if(i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$playBig,"click",(t=>{e.play(),e.resumeAudioAfterPause()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),Se(t.$volumeOn,"display","none"),Se(t.$volumeOff,"display","block");const r=e.volume;e.volume=0,e._lastVolume=r})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),Se(t.$volumeOn,"display","block"),Se(t.$volumeOff,"display","none"),e.volume=e.lastVolume||.5})),i(t.$screenshot,"click",(t=>{t.stopPropagation(),e.video.screenshot()})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=o(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=o(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)})),i(t.$record,"click",(t=>{t.stopPropagation(),e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$fullscreen,"click",(t=>{t.stopPropagation(),e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),e.fullscreen=!1})),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(Se(t.$controls,"display","block"),o())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(Se(t.$controls,"display","block"),o()))})),i(e.$container,"mouseout",(()=>{s(),Se(t.$controls,"display","none")}));let r=null;const o=()=>{s(),r=setTimeout((()=>{Se(t.$controls,"display","none")}),5e3)},s=()=>{r&&(clearTimeout(r),r=null)}}})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,r={};function o(e,t){r[e]?r[e].push(t):r[e]=[t]}o(re,(()=>{e.fullscreen&&(e.fullscreen=!1)})),o(oe,(()=>{e.volume+=.05})),o(se,(()=>{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.player.debug.log("Control","init")}destroy(){if(this.$poster){if(!Le(this.$poster)){const e=this.player.$container.querySelector(".jessibuca-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loading){if(!Le(this.$loading)){const e=this.player.$container.querySelector(".jessibuca-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$controls){if(!Le(this.$controls)){const e=this.player.$container.querySelector(".jessibuca-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$recording){if(!Le(this.$recording)){const e=this.player.$container.querySelector(".jessibuca-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$playBig){if(!Le(this.$playBig)){const e=this.player.$container.querySelector(".jessibuca-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}}this.player.$container&&(this.player.$container.classList.remove("jessibuca-controls-show-auto-hide"),this.player.$container.classList.remove("jessibuca-controls-show")),this.player.debug.log("control","destroy")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,r=t/i,o=e.video.$videoElement.width/e.video.$videoElement.height;if(r>o){const r=(t-i*o)/2;e.$container.style.padding=`0 ${r}px`}else{const r=(i-t/o)/2;e.$container.style.padding=`${r}px 0`}}toggleBar(e){this.$controls&&(Ie(e)||(e="none"===Ee(this.$controls,"display",!1)),Se(this.$controls,"display",e?"flex":"none"))}getBarIsShow(){let e=!1;return this.$controls&&(e="none"!==Ee(this.$controls,"display",!1)),e}}ht(".jessibuca-container{position:relative;display:block;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class mt{static init(){mt.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:[]};for(let e in mt.types)mt.types.hasOwnProperty(e)&&(mt.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=mt.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),o=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 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 mt.box(mt.types.trak,mt.tkhd(e),mt.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,o=e.presentHeight;return mt.box(mt.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,o>>>8&255,255&o,0,0]))}static mdia(e){return mt.box(mt.types.mdia,mt.mdhd(e),mt.hdlr(e),mt.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return mt.box(mt.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?mt.constants.HDLR_AUDIO:mt.constants.HDLR_VIDEO,mt.box(mt.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?mt.box(mt.types.smhd,mt.constants.SMHD):mt.box(mt.types.vmhd,mt.constants.VMHD),mt.box(mt.types.minf,t,mt.dinf(),mt.stbl(e))}static dinf(){return mt.box(mt.types.dinf,mt.box(mt.types.dref,mt.constants.DREF))}static stbl(e){return mt.box(mt.types.stbl,mt.stsd(e),mt.box(mt.types.stts,mt.constants.STTS),mt.box(mt.types.stsc,mt.constants.STSC),mt.box(mt.types.stsz,mt.constants.STSZ),mt.box(mt.types.stco,mt.constants.STCO))}static stsd(e){return"audio"===e.type?mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.mp4a(e)):"avc"===e.videoType?mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.avc1(e)):mt.box(mt.types.stsd,mt.constants.STSD_PREFIX,mt.hvc1(e))}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 mt.box(mt.types.mp4a,r,mt.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 mt.box(mt.types.esds,r)}static avc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let o=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 mt.box(mt.types.avc1,o,mt.box(mt.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let o=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 mt.box(mt.types.hvc1,o,mt.box(mt.types.hvcC,t))}static mvex(e){return mt.box(mt.types.mvex,mt.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 mt.box(mt.types.trex,i)}static moof(e,t){return mt.box(mt.types.moof,mt.mfhd(e.sequenceNumber),mt.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 mt.box(mt.types.mfhd,t)}static traf(e,t){let i=e.id,r=mt.box(mt.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),o=mt.box(mt.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=mt.sdtp(e),a=mt.trun(e,s.byteLength+16+16+8+16+8+8);return mt.box(mt.types.traf,r,o,a,s)}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,mt.box(mt.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,o=e.size,s=e.flags,a=e.cts;return i.set([r>>>24&255,r>>>16&255,r>>>8&255,255&r,o>>>24&255,o>>>16&255,o>>>8&255,255&o,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),mt.box(mt.types.trun,i)}static mdat(e){return mt.box(mt.types.mdat,e)}}mt.init();class gt extends Oe{constructor(e){super(),this.player=e,this.isAvc=!0,this.mediaSource=new window.MediaSource,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.cacheTrack={},this.timeInit=!1,this.sequenceNumber=0,this.mediaSourceOpen=!1,this.dropping=!1,this.firstRenderTime=null,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.player.video.$videoElement.src=window.URL.createObjectURL(this.mediaSource);const{debug:t,events:{proxy:i}}=e;i(this.mediaSource,"sourceopen",(()=>{this.mediaSourceOpen=!0,this.player.emit(j.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(j.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAppendBufferFull=!1,this.isDecodeFirstIIframe=!1,this.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===ee}get isStateClosed(){return this.state===te}get isStateEnded(){return this.state===$}get duration(){return this.mediaSource&&this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i,r){const o=this.player;if(o)if(this.hasInit){if(i&&0===e[1]){let t=At(e.slice(5));const i=this.player.video.videoInfo;i&&i.width&&i.height&&t&&t.codecWidth&&t.codecHeight&&(t.codecWidth!==i.width||t.codecHeight!==i.height)&&(this.player.debug.warn("MediaSource",`width or height is update, width ${i.width}-> ${t.codecWidth}, height ${i.height}-> ${t.codecHeight}`),this.isInitInfo=!1,this.player.video.init=!1)}if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){null===this.firstRenderTime&&(this.firstRenderTime=t);const o=t-this.firstRenderTime;this._decodeVideo(e,o,i,r)}else this.player.debug.warn("MediaSource","decodeVideo isDecodeFirstIIframe false")}else if(i&&0===e[1]){const r=15&e[0];if(o.video.updateVideoInfo({encTypeCode:r}),r===J)return void this.emit(F.mediaSourceH265NotSupport);o._times.decodeStart||(o._times.decodeStart=ve()),this._decodeConfigurationRecord(e,t,i,r),this.hasInit=!0}}_decodeConfigurationRecord(e,t,i,r){let o=e.slice(5),s={};s=At(o);const a={id:1,type:"video",timescale:1e3,duration:0,avcc:o,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},n=mt.generateInitSegment(a);this.isAvc=!0,this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1}_decodeVideo(e,t,i,r){const o=this.player;let s=e.slice(5),a=s.byteLength;const n=o.video.$videoElement,A=o._opt.videoBufferDelay;if(n.buffered.length>1&&(this.removeBuffer(n.buffered.start(0),n.buffered.end(0)),this.timeInit=!1),this.dropping&&t-this.cacheTrack.dts>A)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&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(mt.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let r=mt.moof(this.cacheTrack,this.cacheTrack.dts),s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),this.appendBuffer(s.buffer),o.handleRender(),o.updateStats({fps:!0,ts:t,buf:o.demux&&o.demux.delay||0}),o._times.videoStart||(o._times.videoStart=ve(),o.handlePlayToRenderTimes())}else o.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=a,this.cacheTrack.dts=t,this.cacheTrack.cts=r,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=s,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==n.buffered.length||(o.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,n.currentTime=n.buffered.end(0)),!this.isInitInfo&&n.videoWidth>0&&n.videoHeight>0&&(o.debug.log("MediaSource",`updateVideoInfo: ${n.videoWidth},${n.videoHeight}`),o.video.updateVideoInfo({width:n.videoWidth,height:n.videoHeight}),o.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;if(null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(_),i(this.sourceBuffer,"error",(e=>{t.error("MediaSource","sourceBuffer error",e),this.player.emit(j.mseSourceBufferError,e)}))),this.mediaSourceAppendBufferError)t.error("MediaSource","this.mediaSourceAppendBufferError is true");else if(this.mediaSourceAppendBufferFull)t.error("MediaSource","this.mediaSourceAppendBufferFull is true");else if(!1===this.sourceBuffer.updating&&this.isStateOpen)try{this.sourceBuffer.appendBuffer(e)}catch(e){t.warn("MediaSource","this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.emit(F.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.emit(F.mediaSourceAppendBufferError)):(t.error("MediaSource","appendBuffer error",e),this.player.emit(j.mseSourceBufferError,e))}else this.isStateClosed?this.player.emitError(F.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emitError(F.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(j.mseSourceBufferBusy)}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(this.player.debug.warn("MediaSource","dropSourceBuffer",`$video.buffered.end(0) is ${t.buffered.end(0)} - $video.currentTime ${t.currentTime}`),t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn("MediaSource","removeBuffer() error",e)}else this.player.debug.warn("MediaSource","removeBuffer() this.isStateOpen is",this.isStateOpen,"this.sourceBuffer.updating",this.sourceBuffer.updating)}endOfStream(){const e=this.player.video&&this.player.video.$videoElement;if(this.isStateOpen&&e&&e.readyState>=1)try{this.mediaSource.endOfStream()}catch(e){this.player.debug.warn("MediaSource","endOfStream() error",e)}}abortSourceBuffer(){this.isStateOpen&&this.sourceBuffer&&(this.sourceBuffer.abort(),this.sourceBuffer=null)}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource&&this.sourceBuffer)try{this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.warn("MediaSource","removeSourceBuffer() error",e)}}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}}const ft=()=>"undefined"!=typeof navigator&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,bt=()=>"wakeLock"in navigator;class yt{constructor(e){if(this.player=e,this.enabled=!1,bt()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else ft()?this.noSleepTimer=null:(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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"),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,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"),this.noSleepVideo.addEventListener("loadedmetadata",(()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",(()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}))})))}_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(bt())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.error("wakeLock",`${t.name}, ${t.message}`),t}));if(ft())return this.disable(),this.noSleepTimer=window.setInterval((()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))}),15e3),this.enabled=!0,Promise.resolve();return this.noSleepVideo.play().then((e=>(this.enabled=!0,e))).catch((e=>{throw this.enabled=!1,e}))}disable(){const e=this.player.debug;bt()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):ft()?this.noSleepTimer&&(e.warn("wakeLock","NoSleep now disabled for older iOS devices."),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}class vt extends Oe{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},h,t),this.debug=new me(this),this.debug.log("Player","init"),this._opt.forceNoOffscreen=!0,(Re()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))&&(this.debug.log("Player","isMobile and set _opt.controlAutoHide false"),this._opt.controlAutoHide=!1),fe.isEnabled&&this._opt.useWebFullScreen&&(this.debug.log("Player","screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),Ve(fe.isEnabled)&&Ve(this._opt.useWebFullScreen)&&(this.debug.log("Player","screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported(_)),this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=window.MediaStreamTrackGenerator&&"function"==typeof window.MediaStreamTrackGenerator),this._opt.useMSE&&(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasAudio||(this._opt.operateBtns.audio=!1),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,i=this,Object.defineProperty(i,"rect",{get:()=>{const e=i.$container.getBoundingClientRect();return e.width=Math.max(e.width,i.$container.clientWidth),e.height=Math.max(e.height,i.$container.clientHeight),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new ge(this),this.video=new ze(this),this._opt.hasAudio&&(this.audio=new Xe(this)),this.recorder=new et(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new tt(this),this.stream=null,this.demux=null,this._lastVolume=null,this._opt.useWCS&&(this.webcodecsDecoder=new dt(this),this.loaded=!0),this._opt.useMSE&&(this.mseDecoder=new gt(this),this.loaded=!0),this.control=new pt(this),Re()&&(this.keepScreenOn=new yt(this)),(e=>{try{const t=t=>{je(t)===e.$container&&(e.emit(L.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};fe.on("change",t),e.events.destroys.push((()=>{fe.off("change",t)}))}catch(e){}if(e.on(j.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(j.play,(()=>{e.loading=!1})),e.on(j.fullscreen,(t=>{if(t)try{fe.request(e.$container).then((()=>{})).catch((t=>{Re()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){Re()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{fe.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),Re()&&e.on(j.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web"),e.emit(L.fullscreen,e.fullscreen)})),e.on(j.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[j.timeUpdate],i=[j.stats,j.playToRenderTimes,j.audioInfo,j.videoInfo];Object.keys(j).forEach((r=>{e.on(j[r],(o=>{t.includes(r)||(i.includes(r)&&(o=JSON.stringify(o)),e.debug.log("player events",j[r],o))}))})),Object.keys(F).forEach((t=>{e.on(F[t],(i=>{e.debug.log("player event error",F[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:r}}=e;t.supportDblclickFullscreen&&r(e.$container,"dblclick",(t=>{const i=je(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),r(document,"visibilitychange",(()=>{t.hiddenAutoPause&&(i.log("visibilitychange",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),r(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this.debug.log("Player","init and version is",u),this._opt.useWCS&&this.debug.log("Player","use WCS"),this._opt.useMSE&&this.debug.log("Player","use MSE"),this._opt.useOffscreen&&this.debug.log("Player","use offscreen");try{this.debug.log("Player options",JSON.stringify(this._opt))}catch(e){}}async destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._lastVolume=null,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(await this.stream.destroy(),this.stream=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.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}set fullscreen(e){Re()&&this._opt.useWebFullScreen?(this.emit(j.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(j.fullscreen,e)}get fullscreen(){return fe.isFullscreen||this.webFullscreen}set webFullscreen(e){this.emit(j.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("jessibuca-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(j.playing,e),this.emit(j.volumechange,this.volume),e?this.emit(j.play):this.emit(j.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio&&this.audio.setVolume(e),this._lastVolume=e)}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(j.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder&&this.recorder.startRecord():this.recorder&&this.recorder.stopRecordAndSave()}get recording(){return!!this.recorder&&this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio&&this.audio.emit(j.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}get isDebug(){return!0===this._opt.debug}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new Ke(this)),this.audio||this._opt.hasAudio&&(this.audio=new Xe(this)),this.demux||(this.demux=new st(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new dt(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new gt(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new tt(this),this.debug.log("Player","waiting decoderWorker init"),this.once(j.decoderWorkerInit,(()=>{this.debug.log("Player","decoderWorker init success"),e()})))}))}play(e,t){return new Promise(((i,r)=>{if(!e&&!this._opt.url)return r();this.loading=!0,this.playing=!1,this._times.playInitStart=ve(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=ve(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(F.webcodecsH265NotSupport,(()=>{this.emit(F.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(j.error,F.webcodecsH265NotSupport)})),this.mseDecoder&&(this.mseDecoder.once(F.mediaSourceH265NotSupport,(()=>{this.emit(F.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(j.error,F.mediaSourceH265NotSupport)})),this.mseDecoder.once(F.mediaSourceFull,(()=>{this.emitError(F.mediaSourceFull)})),this.mseDecoder.once(F.mediaSourceAppendBufferError,(()=>{this.emitError(F.mediaSourceAppendBufferError)})),this.mseDecoder.once(F.mediaSourceBufferListLarge,(()=>{this.emitError(F.mediaSourceBufferListLarge)})),this.mseDecoder.once(F.mediaSourceAppendBufferEndTimeout,(()=>{this.emitError(F.mediaSourceAppendBufferEndTimeout)}))),this.enableWakeLock(),this.stream.fetchStream(e,t),this.checkLoadingTimeout(),this.stream.once(F.fetchError,(e=>{this.emitError(F.fetchError,e)})),this.stream.once(F.websocketError,(e=>{this.emitError(F.websocketError,e)})),this.stream.once(j.streamEnd,(e=>{this.emitError(j.streamEnd,e)})),this.stream.once(j.streamSuccess,(()=>{i(),this._times.streamResponse=ve(),this.video.play(),this.checkStatsInterval()}))})).catch((e=>{r(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()}))}))}resumeAudioAfterPause(){this.lastVolume&&(this.volume=this.lastVolume)}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.audio&&(this.audio.destroy(),this.audio=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.playing=!1,this.loading=!1,this.recording=!1,this.video&&(this.video.resetInit(),this.video.pause(!0)),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:""},setTimeout((()=>{e()}),0)}))}pause(){return arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.close():this._close()}mute(e){if(this.audio){const t=this.audio.getLastVolume();this.audio.mute(e),this._lastVolume=e?0:t||.5}}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),e}_onlyMseOrWcsVideo(){return!1===this._opt.hasAudio&&(this._opt.useMSE||this._opt.useWCS&&!this._opt.useOffscreen)}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{if(this.playing){if(0!==this._stats.fps)return;this.pause().then((()=>{this.emit(j.timeout,j.delayTimeout),this.emit(j.delayTimeout)}))}}),1e3*this._opt.heartTimeout)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing||this.pause().then((()=>{this.emit(j.timeout,j.loadingTimeout),this.emit(j.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.loading&&(this.emit(j.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=ve()),xe(e.ts)&&(this._stats.ts=e.ts),xe(e.buf)&&(this._stats.buf=e.buf),e.fps&&(this._stats.fps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps);const t=ve();t-this._startBpsTime<1e3||(this.emit(j.stats,this._stats),this.emit(j.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}handlePlayToRenderTimes(){const e=this._times;e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart,e.demuxTimestamp=e.demuxStart-e.streamResponse,e.decodeTimestamp=e.decodeStart-e.demuxStart,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,this.emit(j.playToRenderTimes,e)}getOption(){return this._opt}emitError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(j.error,e,t),this.emit(e,t)}isControlBarShow(){const e=this._opt.hasControl,t=this._opt.controlAutoHide;let i=e&&!t;return i&&this.control&&(i=this.control.getBarIsShow()),i}getControlBarShow(){let e=!1;return this.control&&(e=this.control.getBarIsShow()),e}toggleControlBar(e){this.control&&(this.control.toggleBar(e),this.resize())}}class wt extends Oe{constructor(e){super();let t=e,i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("Jessibuca need container option");if("CANVAS"===i.nodeName||"VIDEO"===i.nodeName)throw new Error(`Jessibuca container type can not be ${i.nodeName} type`);if(t.videoBuffer>=t.heartTimeout)throw new Error(`Jessibuca videoBuffer ${t.videoBuffer}s must be less than heartTimeout ${t.heartTimeout}s`);if(this._checkHasCreated(i))throw new Error("Jessibuca container has been created and can not be created again",i);if(t.videoBuffer>10&&console.warn("Jessibuca",`videoBuffer ${t.videoBuffer}s is too long, will black screen for ${t.videoBuffer}s , it is recommended to set it to less than 10s`),!i.classList)throw new Error("Jessibuca container option must be DOM Element");var r,o,s;i.classList.add("jessibuca-container"),r=i,o=l,s="xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})),r&&(r.dataset?r.dataset[o]=s:r.setAttribute("data-"+o,s)),delete t.container,t.forceNoOffscreen=!0,Re()&&(t.controlAutoHide=!1),xe(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),xe(t.timeout)&&(Te(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),Te(t.heartTimeout)&&(t.heartTimeout=t.timeout)),this._opt=t,this.$container=i,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.initDecoderWorkerTimeout=null,this._destroyed=!1,this.events=new ge(this),this.debug=new me(this),this._initPlayer(i,t),console.log('Jessibuca version: "3.2.8"')}async destroy(){var e,t;this._destroyed=!0,this.off(),this._clearInitDecoderWorkerTimeout(),this.player&&(await this.player.destroy(),this.player=null),this.events&&(this.events.destroy(),this.events=null),this.$container&&(this.$container.classList.remove("jessibuca-container"),this.$container.classList.remove("jessibuca-fullscreen-web"),e=this.$container,t=l,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this._opt={},this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0}_initPlayer(e,t){this.player=new vt(e,t);try{this.debug.log("jessibuca","_initPlayer",JSON.stringify(this.player.getOption()))}catch(e){}this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.player.destroy(),this.player=null,this._opt=Object.assign(this._opt,e),this._opt.url="",this._initPlayer(this.$container,this._opt)}_bindEvents(){Object.keys(L).forEach((e=>{this.player.on(L[e],(t=>{this.emit(e,t)}))}))}isDestroyed(){return this._destroyed}setDebug(e){this.player.updateOption({debug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio&&this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case N:t.isFullResize=!1,t.isResize=!1;break;case H:t.isFullResize=!1,t.isResize=!0;break;case z:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return new Promise(((e,t)=>{this.player?this.player.pause().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}async close(){return await this.destroy(),!0}clearView(){this.player.video.clearView()}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,r)=>{if(!this.isDestroyed())return e||this._opt.url?void(e?this._opt.url?e===this._opt.url?this.player.playing?i():(this.clearView(),this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","pause -> play and play error",e),this.player.pause().then((()=>{r(e)}))}))):this.player.pause().then((()=>{this.clearView(),this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),r(e)}))})).catch((e=>{this.debug.warn("jessibuca","this._opt.url is null and pause error",e),r(e)})):this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("jessibuca","this._play error",e),r(e)})):this.player.play(this._opt.url,this._opt.playOptions).then((()=>{i(),this.player.resumeAudioAfterPause()})).catch((e=>{this.debug.warn("jessibuca","url is null and play error",e),this.player.pause().then((()=>{r(e)}))}))):(this.emit(j.error,F.playError),void r("play url is empty"));r("Jessibuca is destroyed")}))}_play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,r)=>{this._opt.url=e,this._opt.playOptions=t;const o=0===e.indexOf("http"),d=o?a:s,c=o||-1!==e.indexOf(".flv")||this._opt.isFlv?n:A;this.player.updateOption({protocol:d,demuxType:c}),this.player.once(F.webglAlignmentError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webglAlignmentError"),this._resetPlayer({openWebglAlignment:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webglAlignmentError and play success")})).catch((()=>{this.debug.log("Jessibuca","webglAlignmentError and play error")}))}))})),this.player.once(F.mediaSourceH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1,useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","media source h265 not support and paused")}))})),this.player.once(F.mediaSourceFull,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source full"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source full and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source full and reset player and play error")}))}))})),this.player.once(F.mediaSourceAppendBufferError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer error"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer error and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer error and reset player and play error")}))}))})),this.player.once(F.mediaSourceBufferListLarge,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source buffer list large"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source buffer list large and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source buffer list large and reset player and play error")}))}))})),this.player.once(F.mediaSourceAppendBufferEndTimeout,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout"),this._resetPlayer(),this.play(e,t).then((()=>{this.debug.log("Jessibuca","media source append buffer end timeout and reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","media source append buffer end timeout and reset player and play error")}))}))})),this.player.once(F.mseSourceBufferError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [mse-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","mse source buffer error and paused")}))})),this.player.once(F.webcodecsH265NotSupport,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1,useMSE:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")}))):this.debug.log("Jessibuca","webcodecs h265 not support and paused")}))})),this.player.once(F.webcodecsWidthOrHeightChange,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play"),this._resetPlayer({useWCS:!0}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Width Or Height Change reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Width Or Height Change reset player and play error")}))}))})),this.player.once(F.webcodecsDecodeError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs decode error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs decode error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs decode error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs decode error and paused")}))})),this.player.once(F.webcodecsConfigureError,(()=>{this.pause().then((()=>{this.player._opt.autoWasm?(this.debug.log("Jessibuca","webcodecs Configure error reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","webcodecs Configure error reset player and play success")})).catch((()=>{this.debug.warn("Jessibuca","webcodecs Configure error reset player and play error")}))):this.debug.log("Jessibuca","webcodecs Configure error and paused")}))})),this.player.once(F.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay?this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(e,t).then((()=>{this.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and reset player and play error")}))})):this.pause().then((()=>{this.debug.log("Jessibuca","wasm decode error and paused")})).catch((e=>{this.debug.warn("Jessibuca","wasm decode error and paused error",e)}))})),this.player.once(F.fetchError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","fetch error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","fetch error and pause play error",e)}))})),this.player.once(F.websocketError,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","websocket Error and pause play")})).catch((e=>{this.debug.warn("Jessibuca","websocket Error and pause play error",e)}))})),this.player.once(j.streamEnd,(()=>{this.pause().then((()=>{this.debug.log("Jessibuca","stream End and pause play")})).catch((e=>{this.debug.warn("Jessibuca","stream End and pause play error",e)}))})),this.player.on(j.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.on(j.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","hasLoaded and play error",e),this.player&&this.player.pause().then((()=>{r(e)}))})):(this.debug.log("Jessibuca","_play ant waiting decoderWorkerInit"),this._checkInitDecoderWorkerTimeout(),this.player.once(j.decoderWorkerInit,(()=>{this._clearInitDecoderWorkerTimeout(),this.isDestroyed()||(this.debug.log("Jessibuca","_play decoderWorkerInit success and play"),this.player.play(e,t).then((()=>{i()})).catch((e=>{this.debug.warn("Jessibuca","decoderWorkerInit and play error",e),this.player&&this.player.pause().then((()=>{r(e)}))})))})))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e}),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"videoBuffer",value:1e3*e})}setRotate(e){e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,r){return this.player.video?this.player.video.screenshot(e,t,i,r):""}startRecord(e,t){return new Promise(((i,r)=>{this.player.playing?(this.player.startRecord(e,t),i()):r()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return!!this.player&&this.player.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}_checkHasCreated(e){if(!e)return!1;const t=function(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}(e,l);return!!t}toggleControlBar(e){this.isDestroyed()||this.player&&this.player.toggleControlBar(e)}getControlBarShow(){if(this.isDestroyed())return!1;let e=!1;return this.player&&(e=this.player.getControlBarShow()),e}_clearInitDecoderWorkerTimeout(){this.initDecoderWorkerTimeout&&(clearTimeout(this.initDecoderWorkerTimeout),this.initDecoderWorkerTimeout=null)}_checkInitDecoderWorkerTimeout(){this._clearInitDecoderWorkerTimeout(),this.initDecoderWorkerTimeout=setTimeout((()=>{this._handleInitDecoderWorkerTimeout()}),1e3*this._opt.initDecoderWorkerTimeout)}_handleInitDecoderWorkerTimeout(){this.pause().then((()=>{this.debug.log("Jessibuca","init decoder worker timeout and pause play")})).catch((e=>{this.debug.warn("Jessibuca","init decoder worker timeout and pause play error",e)}))}}return o(wt,"ERROR",F),o(wt,"TIMEOUT",{loadingTimeout:j.loadingTimeout,delayTimeout:j.delayTimeout}),window.Jessibuca=wt,wt})); diff --git a/src/jessibuca.js b/src/jessibuca.js index cd8bfe9b..f2947d72 100644 --- a/src/jessibuca.js +++ b/src/jessibuca.js @@ -413,7 +413,7 @@ class Jessibuca extends Emitter { this.pause().then(() => { if (this.player._opt.autoWasm) { this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play') - this._resetPlayer({useMSE: false}) + this._resetPlayer({useMSE: false, useWCS: false}) this.play(url, options).then(() => { // resolve(); this.debug.log('Jessibuca', 'auto wasm [mse-> wasm] reset player and play success') @@ -506,7 +506,7 @@ class Jessibuca extends Emitter { this.pause().then(() => { if (this.player._opt.autoWasm) { this.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play') - this._resetPlayer({useWCS: false}) + this._resetPlayer({useWCS: false, useMSE: false}) this.play(url, options).then(() => { // resolve(); this.debug.log('Jessibuca', 'auto wasm [wcs-> wasm] reset player and play success')

    >>0?1:0),y=s.low=y+F,s.high=g+L+(y>>>0>>0?1:0),b=o.low=b+M,o.high=v+I+(b>>>0>>0?1:0),S=a.low=S+z,a.high=w+R+(S>>>0>>0?1:0),A=c.low=A+$,c.high=E+N+(A>>>0<$>>>0?1:0),U=u.low=U+G,u.high=x+O+(U>>>0>>0?1:0),B=h.low=B+W,h.high=k+H+(B>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Wt((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=$i).x64,n=i.Word,s=i.WordArray,o=r.algo,a=o.SHA512,d=o.SHA384=a.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=a._createHelper(d),r.HmacSHA384=a._createHmacHelper(d),l.SHA384)})),Wt((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.x64.Word,a=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var a=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),(B=r[n]).high^=o,B.low^=s}for(var a=0;a<24;a++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(B=r[h+5*m]).high,p^=B.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(B=r[h+5*m]).high^=f,B.low^=p}for(var w=1;w<25;w++){var S=(B=r[w]).high,E=B.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var x=u[l[w]];x.high=f,x.low=p}var U=u[0],k=r[0];for(U.high=k.high,U.low=k.low,h=0;h<5;h++)for(m=0;m<5;m++){var B=r[w=h+5*m],T=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];B.high=T.high^~C.high&D.high,B.low=T.low^~C.low&D.low}B=r[0];var P=c[a];B.high^=P.high,B.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var o=this._state,a=this.cfg.outputLength/8,d=a/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,a)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Wt((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=o.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,o,f,b,w,S,E,A,x,U,k,B=this._hash.words,T=u.words,C=h.words,D=a.words,P=d.words,L=l.words,F=c.words;for(S=s=B[0],E=o=B[1],A=f=B[2],x=b=B[3],U=w=B[4],r=0;r<80;r+=1)k=s+e[t+D[r]]|0,k+=r<16?p(o,f,b)+T[0]:r<32?m(o,f,b)+T[1]:r<48?_(o,f,b)+T[2]:r<64?g(o,f,b)+T[3]:y(o,f,b)+T[4],k=(k=v(k|=0,L[r]))+w|0,s=w,w=b,b=v(f,10),f=o,o=k,k=S+e[t+P[r]]|0,k+=r<16?y(E,A,x)+C[0]:r<32?g(E,A,x)+C[1]:r<48?_(E,A,x)+C[2]:r<64?m(E,A,x)+C[3]:p(E,A,x)+C[4],k=(k=v(k|=0,F[r]))+U|0,S=U,U=x,x=v(A,10),A=E,E=k;k=B[1]+f+x|0,B[1]=B[2]+b+U|0,B[2]=B[3]+w+S|0,B[3]=B[4]+s+E|0,B[4]=B[0]+o+A|0,B[0]=k},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,o=0;o<5;o++){var a=s[o];s[o]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Wt((function(e,t){var r,i,n;e.exports=(i=(r=$i).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),o=this._iKey=t.clone(),a=s.words,d=o.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),o=n.cfg;return m.create({ciphertext:s,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)o=l.create({keySize:t+r,hasher:n}).compute(e,i);else var o=l.create({keySize:t+r}).compute(e,i);var a=s.create(o.words.slice(t),4*r);return o.sigBytes=4*t,m.create({key:o,iv:a,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Wt((function(e,t){var r;e.exports=((r=$i).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var o=0;o>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,o=this._counter;s&&(o=this._counter=s.slice(0),this._iv=void 0),i(o);var a=o.slice(0);r.encryptBlock(a,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Wt((function(e,t){var r;e.exports=((r=$i).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Wt((function(e,t){var r;e.exports=((r=$i).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Wt((function(e,t){var r;e.exports=((r=$i).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Wt((function(e,t){var r;e.exports=((r=$i).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Wt((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],o=[],a=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;o[r]=y<<24|y>>>8,a[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],o=0;o6&&o%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[o/r|0]<<24),s[o]=s[o-r]^l);for(var a=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,o,a){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^o[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^o[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^o[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^o[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(a[l>>>24]<<24|a[c>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[f++],_=(a[c>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&l])^r[f++],g=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[l>>>8&255]<<8|a[255&c])^r[f++],y=(a[h>>>24]<<24|a[l>>>16&255]<<16|a[c>>>8&255]<<8|a[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=o[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(a[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(a[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,o=this._rBlock,a=0,d=0;d<8;d++)a|=l[d][((o^n[d])&c[d])>>>0];this._lBlock=o,this._rBlock=s^a}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var o=n%r,a=t[o>>>2]>>>24-o%4*8&255;s=(s+i[n]+a)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var o=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(o)}(),r.RC4)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=t._createHelper(a)}(),r.Rabbit)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=t._createHelper(a)}(),r.RabbitLegacy)})),Wt((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],o=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var a={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,o=e.sbox[0][r]+e.sbox[1][i];return o^=e.sbox[2][n],o+=e.sbox[3][s],o}function l(e,t,r){let i,s=t,o=r;for(let t=0;t1;--t)s^=e.pbox[t],o=d(e,s)^o,i=s,s=o,o=i;return i=s,s=o,o=i,o^=e.pbox[1],s^=e.pbox[0],{left:s,right:o}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=o[t][r]}let i=0;for(let o=0;o=r&&(i=0);let a=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=e.slice(s+4+2,s+4+o);let n=new Ni.ModeOfOperation.ctr(t,new Ni.Counter(r));const a=n.decrypt(i);n=null,e.set(a,s+4+2)}s=s+4+o}return e}function Hi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Ni.ModeOfOperation.ctr(t,new Ni.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Wt((function(e,t){e.exports=$i}));var Wi=Wt((function(e,t){var r,n,s,o=(r=new Date,n=4,s={setLogLevel:function(e){n=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>=n&&console.debug("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);o.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+="["+o.getDurationString(e.start(i))+","+o.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=o;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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),o=new Uint8Array(r,i,n);s.set(o)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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,o.debug("MultiBufferStream","Stream ready for parsing"),!0):(o.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(o.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){o.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},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}o.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)),o.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,s)}}t&&(o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,a=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?o.info:o.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(o.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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?(o.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):0!==l&&a+l>e.getEndPosition()?(e.seek(a),o.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:a}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(o.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(o.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=a,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(o.info("BoxParser","'"+u+"' 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?(o.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(o.error("BoxParser","Parsing of box '"+u+"' read "+n+" 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,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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)o.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 o.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else o.error("av1C reserved_1 parsing problem");else o.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.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),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=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())}})),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(),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(", ")+")"})),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,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})),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),o.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?o.property_index=(127&s)<<8|e.readUint8():o.property_index=127&s}}})),h.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:o.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()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),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&&(o.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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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)o.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){o.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){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){o.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),o.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}})),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;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var o=i.extract_bits(1);this.ptl_sublayer_present_mask|=o<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],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 n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}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,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},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>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),o.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)},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)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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]&&o.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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?(o.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(o.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(o.warn("ISOFile","Not ready to start parsing"),!1))},g.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&&(o.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),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(o.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),o.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)&&(o.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*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 s=r.samples[l].offset+r.samples[l].alreadyRead,o.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+o.getDurationString(e,a)+" and offset: "+s),{offset:s,time:e/a}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-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 u=new h.avcCBox;u.parse(new a(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new a(t.hevcDecoderConfigRecord)),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 h["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}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.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"),n=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-(n.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},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.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,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,o?(t>=w&&(S++,w<0&&(w=0),w+=o.sample_counts[S]),U.cts=e.samples[t].dts+o.sample_offsets[S]):U.cts=U.dts,a?(t==a.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[A].sample_delta+x==t+1&&(U.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta,A++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+x==t&&(U.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,o,a,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=o,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:a,p.offset=0===t&&0===r?b?w+_.data_offset:w:a,a=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return o.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+")"),d.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===s)return null;o.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&h.property_index-1-1))return null;var a=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=a))return o.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+a+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,a),n.alreadyRead+=a,r.alreadyRead+=a,t.usedBytes+=a,this.stream.logBufferLevel(),null;o.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},h.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Vi(e){return e.reduce(((e,t)=>256*e+t))}function ji(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]))}Wi.Log,Wi.MP4BoxStream,Wi.DataStream,Wi.MultiBufferStream,Wi.MPEG4DescriptorParser,Wi.BoxParser,Wi.XMLSubtitlein4Parser,Wi.Textin4Parser,Wi.ISOFile,Wi.createFile;class qi{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],ji(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}}function Yi(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Ki=16,Xi=[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],Zi=[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 Ji(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function en(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}function tn(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("")}function rn(e,t){const r=31&t;return e<>>32-r}function nn(e){return(255&Xi[e>>>24&255])<<24|(255&Xi[e>>>16&255])<<16|(255&Xi[e>>>8&255])<<8|255&Xi[255&e]}function sn(e){return e^rn(e,2)^rn(e,10)^rn(e,18)^rn(e,24)}function on(e){return e^rn(e,13)^rn(e,23)}function an(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]^=sn(nn(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=sn(nn(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=sn(nn(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=sn(nn(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 dn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Zi[r+0],t[r+0]=i[0]^=on(nn(e)),e=i[2]^i[3]^i[0]^Zi[r+1],t[r+1]=i[1]^=on(nn(e)),e=i[3]^i[0]^i[1]^Zi[r+2],t[r+2]=i[2]^=on(nn(e)),e=i[0]^i[1]^i[2]^Zi[r+3],t[r+3]=i[3]^=on(nn(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function ln(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:o="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=Ji(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Ji(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?en(e):Ji(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Ki-e.length%Ki;for(let r=0;r=Ki;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),o=5;for(;on){const t=new Uint8Array(s.length+e.length-o);t.set(s,0),t.set(e.slice(o),s.length),s=t;break}let l=e[o+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=ln(e.slice(o+4+u,o+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(o+4,o+4+u),0);const a=sr(Yi(n,new Uint8Array(r))),l=new Uint8Array(s.length+a.length);l.set(s,0),l.set(a,s.length),s=l}else{const t=e.slice(o+4,o+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(a,s.length),r.set(t,s.length+4),s=r}o=o+4+d}return s}const hn={init:0,findFirstStartCode:1,findSecondStartCode:2};class fn extends class{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(){i.off(e,n);for(var s=arguments.length,o=new Array(s),a=0;a1?r-1:0),n=1;n{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=hn.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==hn.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=hn.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==hn.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=hn.findFirstStartCode}}}}function pn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=pn(e.slice(s+4,s+4+o),t,r);e.set(i,s+4)}s=s+4+o}return e}function gn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class yn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{fr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class vn{static init(){vn.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 vn.types)vn.types.hasOwnProperty(e)&&(vn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=vn.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 vn.box(vn.types.trak,vn.tkhd(e),vn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return vn.box(vn.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 vn.box(vn.types.mdia,vn.mdhd(e),vn.hdlr(e),vn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return vn.box(vn.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?vn.constants.HDLR_AUDIO:vn.constants.HDLR_VIDEO,vn.box(vn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?vn.box(vn.types.smhd,vn.constants.SMHD):vn.box(vn.types.vmhd,vn.constants.VMHD),vn.box(vn.types.minf,t,vn.dinf(),vn.stbl(e))}static dinf(){return vn.box(vn.types.dinf,vn.box(vn.types.dref,vn.constants.DREF))}static stbl(e){return vn.box(vn.types.stbl,vn.stsd(e),vn.box(vn.types.stts,vn.constants.STTS),vn.box(vn.types.stsc,vn.constants.STSC),vn.box(vn.types.stsz,vn.constants.STSZ),vn.box(vn.types.stco,vn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?vn.box(vn.types.stsd,vn.constants.STSD_PREFIX,vn.mp3(e)):vn.box(vn.types.stsd,vn.constants.STSD_PREFIX,vn.mp4a(e)):"avc"===e.videoType?vn.box(vn.types.stsd,vn.constants.STSD_PREFIX,vn.avc1(e)):vn.box(vn.types.stsd,vn.constants.STSD_PREFIX,vn.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 vn.box(vn.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 vn.box(vn.types.mp4a,i,vn.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 vn.box(vn.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 vn.box(vn.types.avc1,n,vn.box(vn.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 vn.box(vn.types.hvc1,n,vn.box(vn.types.hvcC,t))}static mvex(e){return vn.box(vn.types.mvex,vn.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 vn.box(vn.types.trex,r)}static moof(e,t){return vn.box(vn.types.moof,vn.mfhd(e.sequenceNumber),vn.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 vn.box(vn.types.mfhd,t)}static traf(e,t){let r=e.id,i=vn.box(vn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=vn.box(vn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=vn.sdtp(e),o=vn.trun(e,s.byteLength+16+16+8+16+8+8);return vn.box(vn.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,vn.box(vn.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),vn.box(vn.types.trun,r)}static mdat(e){return vn.box(vn.types.mdat,e)}}vn.init();var bn,wn=Wt((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(bn=wn)&&bn.__esModule&&Object.prototype.hasOwnProperty.call(bn,"default")&&bn.default;const Sn=[44100,48e3,32e3,0],En=[22050,24e3,16e3,0],An=[11025,12e3,8e3,0],xn=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Un=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],kn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function Bn(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,o=(12&t[2])>>>2,a=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=An[o];break;case 2:d=En[o];break;case 3:d=Sn[o]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),o=n-3):(i=2,t=new Array(2),o=n):-1!==a.indexOf("android")?(i=2,t=new Array(2),o=n):(i=5,o=n,t=new Array(4),n>=6?o=n-3:1===s&&(i=2,t=new Array(2),o=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&o)>>>1,t[2]=(1&o)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Hn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class jn{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function qn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Yn=new Array(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),Kn=new Array(2746333894,1453994832,1736282519,2993693404),Xn=new Array(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 Zn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function Qn(e,t){return t+3>>19)^(i<<23|i>>>9)}function rs(e,t){var r=new Array(36);r[0]=Qn(t,0),r[1]=Qn(t,4),r[2]=Qn(t,8),r[3]=Qn(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^is(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function ns(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=es(e),n=Math.ceil(r.length/16),s=new Array(r.length),o=t.slice(),a=0;a3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let o=5;for(;os)break;let d=e[o+4],l=!1,c=2;if(i?(n&&(c=3),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=ns(t,r,e.slice(o+4+c,o+4+a));e.set(i,o+4+c)}o=o+4+a}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-2-2024" '+(Sr(false)?"and is Trial Version[试用版本]":""));const os=[];os.push(o({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented"))})(e)||console.warn("JbPro[❌❌❌][audio wasm]:",e)}}),s({printErr:function(e){(function(e){return!(!e||-1===e.indexOf("not compiled with thread support, using thread emulation"))})(e)||(console.warn("JbPro[❌❌❌][video wasm]:",e),Sr(function(e){let t=!0;return e&&-1!==e.indexOf("failed to asynchronously prepare wasm")&&(t=!1),t}(e))&&postMessage({cmd:oe}))}})),Promise.all(os).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=[],s=[],o=null,a=null,d=null,l=null,c=null,u=null,h=!1,f=null,S=null,E=!1,k=!1,oe=!!wr(r),Ee=0,Ae=0,Ye=!1,et=null,tt=null,it=null,st=[],ft=null,Ut=null,kt=0,Ct=0,Gt=null,Ht=null,Wt=0,Vt=0,jt=!1,qt=!1,Jt=!1,rr=null,lr=null,xr=!1,Ur=!0,kr=0,Br=0,Pr=()=>{const e=vr();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(o={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){o.decoder=new VideoDecoder({output:function(e){if(fr(e.createImageBitmap))e.createImageBitmap().then((t=>{o.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ci.delay,ts:0},[r]),_r(e)}));else{o.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ci.delay,ts:0},[t]),_r(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){o.reset(),o.decoder&&"closed"!==o.decoder.state&&(o.decoder.close(),o.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(o.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?_t:gt});o.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Re?(n=Lr(s),i={codec:n.codec,description:s}):t===ze&&(n=Kr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),o.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:T,w:n.codecWidth,h:n.codecHeight}),o.isEmitInfo=!0,o.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),o.offscreenCanvasCtx=o.offscreenCanvas.getContext("2d"));try{o.decoder.configure(i),o.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){o.hasInit=!1,o.isEmitInfo=!1,o.offscreenCanvas=null,o.offscreenCanvasCtx=null}});let Vr=function(){if(xr=!0,a)try{a.abort(),a=null,ci.debugLog("worker","abort success")}catch(e){a=null,ci.debugLog("worker","abort catch",e)}},jr={init(){jr.lastBuf=null,jr.vps=null,jr.sps=null,jr.pps=null,jr.streamType=null,jr.localDts=0,jr.pendingUnits={},jr.isSendSeqHeader=!1},destroy(){jr.lastBuf=null,jr.vps=null,jr.sps=null,jr.pps=null,jr.streamType=null,jr.localDts=0,jr.pendingUnits={},jr.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=jr.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");jr.handleVideoFrames(e)}else jr.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=jr.localDts;return jr.localDts=jr.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return jr.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{const t=zr(e);t===qe||t===je?jr.handleVideoH264Nalu(e):$r(t)&&i.push(e)})),1===i.length)jr.handleVideoH264Nalu(i[0]);else if(Gr(i)){const e=zr(i[0]),t=Or(e);jr.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{jr.handleVideoH264Nalu(e)}))}else if(jr.streamType===Oe)if(ci._opt.nakedFlowH265DemuxUseNew){const t=jr.handleAddNaluStartCode(e),r=jr.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=ei(e);t===ut||t===lt||t===at?jr.handleVideoH265Nalu(e):ri(t)&&i.push(e)})),1===i.length)jr.handleVideoH265Nalu(i[0]);else if(ni(i)){const e=ei(i[0]),t=ii(e);jr.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{jr.handleVideoH265Nalu(e)}))}else ei(e)===ut?jr.extractH265PPS(e):jr.handleVideoH265Nalu(e)},extractH264PPS(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{Nr(zr(e))?jr.extractH264SEI(e):jr.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{ti(ei(e))?jr.extractH265SEI(e):jr.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{jr.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{jr.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=zr(e);switch(t){case je:jr.sps=e;break;case qe:jr.pps=e}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps){const e=Fr({sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:de,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if($r(t)){const r=Or(t),i=jr.getNaluDts(),n=Mr(e,r);jr.doDecode(n,{type:de,ts:i,isIFrame:r,cts:0})}}else if(jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Fr({sps:jr.sps,pps:jr.pps});ci.decode(e,{type:de,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}},handleVideoH264NaluList(e,t,r){if(jr.isSendSeqHeader){const i=jr.getNaluDts(),n=Rr(e.reduce(((e,t)=>{const r=sr(e),i=sr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);jr.doDecode(n,{type:de,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=ei(e);switch(t){case at:jr.vps=e;break;case lt:jr.sps=e;break;case ut:jr.pps=e}if(jr.isSendSeqHeader){if(jr.vps&&jr.sps&&jr.pps){const e=Zr({vps:jr.vps,sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:de,ts:t,isIFrame:!0,cts:0}),jr.vps=null,jr.sps=null,jr.pps=null}if(ri(t)){const r=ii(t),i=jr.getNaluDts(),n=Jr(e,r);jr.doDecode(n,{type:de,ts:i,isIFrame:r,cts:0})}}else if(jr.vps&&jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Zr({vps:jr.vps,sps:jr.sps,pps:jr.pps});ci.decode(e,{type:de,ts:0,isIFrame:!0,cts:0}),jr.vps=null,jr.sps=null,jr.pps=null}},handleVideoH265NaluList(e,t,r){if(jr.isSendSeqHeader){const i=jr.getNaluDts(),n=Qr(e.reduce(((e,t)=>{const r=sr(e),i=sr(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);jr.doDecode(n,{type:de,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!jr.streamVideoType)for(let t of e)if(jr.streamVideoType=pr(t),jr.streamVideoType)break;jr.streamVideoType?jr.streamVideoType===$e?jr.handleVideoH264Frames(e):jr.streamVideoType===Oe&&jr.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;jr.pendingUnits.units&&(t=jr.pendingUnits.units,n=jr.pendingUnits.vcl,i=jr.pendingUnits.iFrame,jr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=zr(o);let a=!1,d=e===Xe;e!==Ke&&e!==Xe||(s=jr.parseVideo264Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(jr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case qe:jr.pps=e;break;case je:jr.sps=e;break;case Ze:n=e}if($r(t)){const t=sr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!jr.isSendSeqHeader&&jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Ir({sps:jr.sps,pps:jr.pps});ci.decode(e,{type:de,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps){const e=Ir({sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:de,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if(i){const e=jr.getNaluDts(),t=Rr(i,r);if(ci._opt.isEmitSEI&&n){const t=nr(n,!1);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}jr.doDecode(t,{type:de,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;jr.pendingUnits.units&&(t=jr.pendingUnits.units,n=jr.pendingUnits.vcl,i=jr.pendingUnits.iFrame,jr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=ei(o);let a=!1,d=ii(e);ri(e)&&(s=jr.parseVideo265Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(jr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case ut:jr.pps=e;break;case lt:jr.sps=e;break;case at:jr.vps=e;break;case mt:case pt:n=e}if(ri(t)){const t=sr(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!jr.isSendSeqHeader&&jr.sps&&jr.pps&&jr.vps){jr.isSendSeqHeader=!0;const e=Zr({sps:jr.sps,pps:jr.pps,vps:jr.vps});ci.decode(e,{type:de,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null,jr.vps=null}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps&&jr.vps){const e=Zr({sps:jr.sps,pps:jr.pps,vps:jr.vps}),t=jr.localDts;ci.decode(e,{type:de,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null,jr.vps=null}if(i){const e=jr.getNaluDts(),t=Qr(i,r);if(ci._opt.isEmitSEI&&n){const t=nr(n,!0);postMessage({cmd:Z,buffer:t.payload,ts:e},[t.payload.buffer])}jr.doDecode(t,{type:de,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{jr.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new jn(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new jn(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},Xr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Xr.mp4Box=Wi.createFile(),Xr.mp4Box.onReady=Xr.onReady,Xr.mp4Box.onError=Xr.onError,Xr.mp4Box.onSamples=Xr.onSamples},initTransportDescarmber(){Xr.transportDescarmber=new qi},_getSeqHeader(e){const t=Xr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Wi.DataStream(void 0,0,Wi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Xr.isHevc=!0,ci.isHevc=!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){ci.debugLog(Xr.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Xr.videoTrackId=t.id;const e=Xr._getSeqHeader(t);e&&(ci.debugLog(Xr.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),Xr.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){Xr.audioTrackId=r.id;const e=r.audio||{},t=Yt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Xr.mp4Box.setExtractionOptions(r.id);const n=Kt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(Xr.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(n,0)}Xr.mp4Box.start()},onError(e){ci.debugError(Xr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Xr.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&&ci.calcIframeIntervalTimestamp(i);let n=null;n=Xr.isHevc?Qr(t,r):Rr(t,r),ci.decode(n,{type:de,ts:i,isIFrame:r,cts:0})}Xr.mp4Box.removeUsedSamples(e)}else if(e===Xr.audioTrackId){if(ci._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),ci.decode(i,{type:ae,ts:r,isIFrame:!1,cts:0})}Xr.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(Xr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Xr.transportDescarmber&&(t=Xr.transportDescarmber.transport(t)),t.buffer.fileStart=Xr.offset,Xr.offset+=t.byteLength,Xr.mp4Box.appendBuffer(t.buffer)},destroy(){Xr.mp4Box&&(Xr.mp4Box.stop(),Xr.mp4Box.flush(),Xr.mp4Box.destroy(),Xr.mp4Box=null),Xr.transportDescarmber&&(Xr.transportDescarmber.destroy(),Xr.transportDescarmber=null),Xr.offset=0,Xr.videoTrackId=null,Xr.audioTrackId=null,Xr.isHevc=!1}},ai={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);ai.extractNALu(t)},destroy(){ai.lastBuffer=new Uint8Array(0),ai.parsedOffset=0,ai.firstStartCodeOffset=0,ai.secondStartCodeOffset=0,ai.state="init",ai.hasInitVideoCodec=!1,ai.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(ai.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(ai.lastBuffer.length+e.length);for(t.set(ai.lastBuffer,0),t.set(new Uint8Array(e),ai.lastBuffer.length),ai.lastBuffer=t;;){if("init"===ai.state){let e=!1;for(;ai.lastBuffer.length-ai.parsedOffset>=4;)if(0===ai.lastBuffer[ai.parsedOffset])if(0===ai.lastBuffer[ai.parsedOffset+1])if(1===ai.lastBuffer[ai.parsedOffset+2]){if(182===ai.lastBuffer[ai.parsedOffset+3]){ai.state="findFirstStartCode",ai.firstStartCodeOffset=ai.parsedOffset,ai.parsedOffset+=4,e=!0;break}ai.parsedOffset++}else ai.parsedOffset++;else ai.parsedOffset++;else ai.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===ai.state){let e=!1;for(;ai.lastBuffer.length-ai.parsedOffset>=4;)if(0===ai.lastBuffer[ai.parsedOffset])if(0===ai.lastBuffer[ai.parsedOffset+1])if(1===ai.lastBuffer[ai.parsedOffset+2]){if(182===ai.lastBuffer[ai.parsedOffset+3]){ai.state="findSecondStartCode",ai.secondStartCodeOffset=ai.parsedOffset,ai.parsedOffset+=4,e=!0;break}ai.parsedOffset++}else ai.parsedOffset++;else ai.parsedOffset++;else ai.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===ai.state){if(!(ai.lastBuffer.length-ai.parsedOffset>0))break;{let e,t,r=192&ai.lastBuffer[ai.parsedOffset];e=0==r?ai.secondStartCodeOffset-14:ai.secondStartCodeOffset;let i=0==(192&ai.lastBuffer[ai.firstStartCodeOffset+4]);if(i){if(ai.firstStartCodeOffset-14<0)return void ci.debugWarn(ai.LOG_NAME,"firstStartCodeOffset -14 is",ai.firstStartCodeOffset-14);ai.hasInitVideoCodec||(ai.hasInitVideoCodec=!0,ci.debugLog(ai.LOG_NAME,"setCodec"),hi.setCodec(Ne,"")),t=ai.lastBuffer.subarray(ai.firstStartCodeOffset-14,e)}else t=ai.lastBuffer.subarray(ai.firstStartCodeOffset,e);let n=ai.getNaluDts();ai.hasInitVideoCodec?(postMessage({cmd:O,type:Be,value:t.byteLength}),postMessage({cmd:O,type:Te,value:n}),Ee=n,hi.decode(t,i?1:0,n)):ci.debugWarn(ai.LOG_NAME,"has not init video codec"),ai.lastBuffer=ai.lastBuffer.subarray(e),ai.firstStartCodeOffset=0==r?14:0,ai.parsedOffset=ai.firstStartCodeOffset+4,ai.state="findFirstStartCode"}}}},getNaluDts(){let e=ai.localDts;return ai.localDts=ai.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Wn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=gn(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],o=(48&r[3])>>>4,a=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==s),l={},c=4;if(2==o||3==o){let e=r[4];if(e>0&&(d||3==o)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==o||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==o||3==o)if(0===s||s===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[s]===Rn){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[s]){let r=188-c,i=di.pmt_.pid_stream_type[s];s!==di.pmt_.common_pids.h264&&s!==di.pmt_.common_pids.h265&&s!==di.pmt_.common_pids.adts_aac&&s!==di.pmt_.common_pids.loas_aac&&s!==di.pmt_.common_pids.ac3&&s!==di.pmt_.common_pids.eac3&&s!==di.pmt_.common_pids.opus&&s!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[s]&&!0!==di.pmt_.timed_id3_pids[s]&&!0!==di.pmt_.synchronous_klv_pids[s]&&!0!==di.pmt_.asynchronous_klv_pids[s]||di.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let o=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,o));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):di.clearSlices(s,i)}for(let a=1+o;a=s.expected_length&&di.clearSlices(s,i),a+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):s.total_length>=s.expected_length&&di.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let o=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new $n,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let a=di.pes_slice_queues_[i.pid];a.slices.push(n),i.payload_unit_start_indicator&&(a.expected_length=0===o?0:o+6),a.total_length+=n.byteLength,a.expected_length>0&&a.expected_length===a.total_length?di.emitPESSlices(a,i):a.expected_length>0&&a.expected_length>>6,a=t[8];2!==o&&3!==o||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===o?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+a;if(0!==n){if(n<3+a)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-a}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Tn:case Cn:di.parseMP3Payload(c,r);break;case Dn:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):di.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Pn:di.parseADTSAACPayload(c,r);break;case Ln:di.parseLOASAACPayload(c,r);break;case Fn:case In:break;case Mn:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,s,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case zn:di.parseH264Payload(c,r,s,e.random_access_indicator);break;case Nn:di.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Dn){let r,s=6;r=0!==n?n:t.byteLength-s;let o=t.subarray(s,s+r);di.parsePESPrivateDataPayload(o,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let o=null;if(1===n&&0===s)o={version_number:0,network_pid:0,program_pmt_pid:{}},o.version_number=i;else if(o=di.pat_,null==o)return;let a=r-5-4,d=-1,l=-1;for(let t=8;t<8+a;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?o.network_pid=i:(o.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(o)}`),di.pat_=o,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,o=1&e[5],a=e[6];if(e[7],1===o&&0===a)r=di._initPmt(),r.program_number=n,r.version_number=s,di.program_pmt_map_[n]=r;else if(r=di.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Zr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Ir({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let n=di.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new er(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame());){r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new tr(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame(ur(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=o,r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ae};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,o=(6&e[1])>>1;e[2];let a=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[a];break;case 2:l=i[a];break;case 3:l=r[a]}switch(o){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(h)):di.detectAudioMetadataChange(h)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ae};di.audio_track_.samples.push(f),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new Vn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Kt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(n,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new Gn;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/di.timescale_);s.pts=e}else s.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===de?di._doDecodeVideo({...e,payload:t}):e.type===ae&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Qr(t,e.isIFrame):Rr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:de,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;wr(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ae,ts:e.dts,isIFrame:!1,cts:0})}},li=null;Er()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new yn,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!Sr(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===wt,isStateClosed:()=>li.getState()===St,isStateEnded:()=>li.getState()===bt,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,At,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,Et,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,xt,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(Sr(li.hasInit))if(r&&e[1]===Tt){const i=15&e[0];if(i===ze&&Sr(ci._opt.supportMSEDecodeHevc))return void li.emitError(Ie.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Re?r=Lr(e.slice(5)):t===ze&&(r=Yr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Ie.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(br(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Re?s=Lr(n):i===ze&&(s=Kr(n)),li.videoInfo.width=s.codecWidth,li.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),li.emitError(Ie.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const o={id:It,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},a=vn.generateInitSegment(o);li.isAvc=i===Re;let d=s.codec;return li.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:li.isAvc?yt:vt,postMessage({cmd:T,w:s.codecWidth,h:s.codecHeight}),li._initSourceBuffer(),li.appendBuffer(a.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===Ve,s=r===Ge;if(Sr(s||n))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Ie.mediaSourceAudioG711NotSupport),!1;const o={id:Mt,type:"audio",timescale:1e3};let a={};if(Xt(e)){if(a=Qt(e.slice(2)),!a)return!1;o.audioSampleRate=a.sampleRate,o.channelCount=a.channelCount,o.config=a.config,o.refSampleDuration=1024/o.audioSampleRate*o.timescale}else{if(!n)return!1;if(a=Bn(e),!a)return!1;o.audioSampleRate=a.samplingRate,o.channelCount=a.channelCount,o.refSampleDuration=1152/o.audioSampleRate*o.timescale}o.codec=a.codec,o.duration=0;let d="mp4",l=a.codec,c=null;n&&Sr(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=vn.generateInitSegment(o);let u=`${o.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),Sr(li.isAudioInitInfo)&&(lr=r===Ge?i?16:8:0===i?8:16,postMessage({cmd:L,code:r}),postMessage({cmd:P,sampleRate:o.audioSampleRate,channels:o.channelCount,depth:lr}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=s,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Ie.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Ie.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Ie.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Ie.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Ie.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),o=s.byteLength;if(0===o)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let a=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=a,d=!0);const l=a-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${a} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(vn.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=vn.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendBuffer(n.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=It,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=o,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=s,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(vn.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=vn.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendAudioBuffer(n.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=Mt,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=n,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),Sr(li.getSourceBufferUpdating())&&li.isStateOpen()&&Sr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),Sr(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&Sr(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Ie.mediaSourceAudioInitTimeout)}),1e3)));if(Sr(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Ie.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Ie.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(Sr(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Ie.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Ie.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Ie.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:n,end:t})}}else s=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:n,end:t})}}else sli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&Sr(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&Sr(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&Sr(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&Sr(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(Sr(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:se,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Pt,_opt:Pr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:Ye,wasmDecodeDelay:Ee-Ae});postMessage({cmd:O,type:De,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!oe)return-1;if(t===ae)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(Ye=!1,ci.delay=t-r):(Ye=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!oe)return-1;if(t===ae)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(Ye=!1,t=r-i):(Ye=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===de&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ae?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===de&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===de&&o.decode?o.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===n.length)return;const t=e.ts,i=n[0],s=e.type===de&&br(e.payload);if(Sr(r))s&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i));else{const r=i.ts-t,o=i.type===ae&&e.type===de;(r<=20||o||s)&&(ci.debugLog("worker",`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 ${o} and isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===v,t=ci._opt.playType===b;if(jr.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),o&&ci._opt.useWCS&&ci.useOffscreen()&&o.init(),Sr(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(n.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${n.length}`);if(ci.dropping){for(r=n.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${n.length}`);!r.isIFrame&&n.length;)r=n.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;n.length;)r=n.shift(),ci.doDecode(r);else if(r=n[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),n.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:H})):(n.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;n.length;){if(r=n[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${n.length}`);break}n.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();et||(et=e);const r=e-et;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),et=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(Sr(ci._opt.checkFirstIFrame)&&(oe=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:ie,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;n.length&&(e=n.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Vr(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(xr=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&Sr(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(hi)try{hi.clear&&hi.clear(),hi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,et=null,Ye=!1,Ee=0,Ae=0,o&&(o.destroy&&o.destroy(),o=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=Pr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),n=[],s=[],u&&(u.close(),u=null),f=null,S=null,E=!1,k=!1,oe=!1,jt=!1,qt=!1,Jt=!1,rr=null,st=[],kt=0,Ct=0,tt=null,it=null,Gt=null,Ht=null,lr=null,Wt=0,Vt=0,ft=null,Ut=null,ci.fetchStatus=Pt,Ur=!0,jr.destroy(),Xr.destroy(),ai.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:K})},pushBuffer:function(e,t){if(t.type===ae&&Xt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===de&&t.isIFrame&&br(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ee,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:te,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===w)if(t.type===de){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ae&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Zt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===de){if(Wt>0){const e=t.ts-Ht,r=Wt+Wt/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ht},\n diff is ${e} and preTsDuration is ${Wt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ht&&Ht>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ht} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Vt}`),Ht-t.ts>A&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ht}, options.ts is ${t.ts},\n diff is ${Ht-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ht=null,Wt=0),ci._opt.isDropSameTimestampGop&&Sr(t.isIFrame)&&oe)){const e=ci.hasIframeInBufferList(),t=Sr(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),wr(ci._opt.checkFirstIFrame)&&wr(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:re}))))}Ht>0&&(Wt=t.ts-Ht),Vt=e.byteLength,Ht=t.ts}if(oe){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${n.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;n.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${n.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:V,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return n.forEach((t=>{t.type===de&&(e+=1)})),e},hasIframeInBufferList:()=>n.some((e=>e.type===de&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return n.forEach((e=>{e.type===de&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return n.forEach((t=>{t.type===ae&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?jr.lastBuf&&(e=jr.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&Xr.mp4Box&&(e=Xr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=cr((e=>{postMessage({cmd:O,type:Ue,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(Xr.listenMp4Box(),ci._opt.isFmp4Private&&Xr.initTransportDescarmber()),t.protocol===_){t.isFlv&&(u=new Tr(ci.demuxFlv())),a=new AbortController;const r=Object.assign({signal:a.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(wr(xr))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Pt,void e.body.cancel();if(!yr(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Vr(),void postMessage({cmd:O,type:Ie.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:Ce}),mr())ci.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Ft)):wr(xr)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Ft,void Vr()):void("string"!=typeof e?(ci.fetchStatus=Lt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Ft,Vr(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:xe,value:g,msg:"fetch done"})):postMessage({cmd:O,type:Pe})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Ft);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Ie.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Ft,Vr(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:xe,value:g,msg:"fetch done"})):postMessage({cmd:O,type:Pe}))):a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Ft)):wr(xr)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Ft,void Vr()):void("string"!=typeof n?(ci.fetchStatus=Lt,l(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ci.demuxFmp4(n):t.isMpeg4?ci.demuxMpeg4(n):t.isTs?ci.demuxTs(n):t.isNakedFlow&&ci.demuxNakedFlow(n),i()):ci.debugWarn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Ft);u&&(u.close(),u=null),e.name!==Bt?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Ie.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Bt?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Vr(),postMessage({cmd:O,type:Ie.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===m&&(t.isFlv&&(u=new Tr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:Ce}),postMessage({cmd:O,type:Fe})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):h?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),wr(xr)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:O,type:xe,value:y,msg:e.code})):postMessage({cmd:O,type:Pe}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),h=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):wr(xr)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:O,type:Ie.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 le:if(o.byteLength>0){let e=o;wr(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(o)),ci.decode(e,{type:ae,ts:s})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${o.byteLength} and return`);break;case ce:if(o.byteLength>=6){const e=o[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(o,s);else{const e=15&o[0];let t=o[0]>>4===Dt;const i=e===ze;if(Sr(t)&&wr(Ar(o,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&br(o)&&null===ci.isHevc){const e=15&o[0];ci.isHevc=e===ze,rr=or(o,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${rr}`)}t&&ci.calcIframeIntervalTimestamp(s),ci.isPlayer&&ci.calcNetworkDelay(s),r[0]=o[4],r[1]=o[3],r[2]=o[2],r[3]=0;let n=r[0],a=ci.cryptoPayload(o,t);ci.decode(a,{type:de,ts:s,isIFrame:t,cts:n})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${o.byteLength} and return`);break;case ue:postMessage({cmd:J,buffer:o},[o.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ae?ci._opt.hasAudio&&(postMessage({cmd:O,type:ke,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===de&&ci._opt.hasVideo&&(postMessage({cmd:O,type:Be,value:e.byteLength}),postMessage({cmd:O,type:Te,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=Gi(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?ss(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):un(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=_n(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===Ge&&(t=Hi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,n=e[0]>>1&1;if(lr=r===Ge?n?16:8:0===n?8:16,ui&&ui.setCodec||!Sr(i))if(Xt(e)||r===He||r===We||r===Ve){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const n=r===Ge?e.slice(2):new Uint8Array(0);if(i){if(r===Ve)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,n);r===Ge&&postMessage({cmd:I,buffer:n},[n.buffer]),k=!0,r!==Ge&&(r===Ve?(ci.mp3Demuxer||(ci.mp3Demuxer=new fn(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(wr(r)&&wr(ci._opt.mseDecodeAudio))postMessage({cmd:$,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(k){if(Xt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===Ve?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===Ge?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(hi&&hi.setCodec||!Sr(i))if(br(e))if(r===Re||r===ze){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Re&&ci._opt.useSIMD){const e=Lr(t);if(e.codecWidth>x||e.codecHeight>x)return postMessage({cmd:Y,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const n=new Uint8Array(e);E=!0,i?hi.decode(e,0):hi.setCodec(r,t),postMessage({cmd:M,code:r}),postMessage({cmd:R,buffer:n,codecId:r},[n.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,n){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,n,s);else if(wr(r))postMessage({cmd:N,payload:e,isIFrame:n,ts:t,cts:s,delay:ci.delay},[e.buffer]);else if(E)if(!oe&&n&&(oe=!0),oe){if(n&&br(e)){const t=15&e[0];let r={};t===Re?r=Lr(e.slice(5)):t===ze&&(r=Yr(e)),r.codecWidth&&r.codecHeight&&f&&S&&(r.codecWidth!==f||r.codecHeight!==S)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${f}, old height is ${S},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),qt=!0,postMessage({cmd:j,value:`width: ${f}->${r.codecWidth}, height: ${S}->${r.codecHeight}`}))}if(qt)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(Jt)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(br(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${n.length}, need clear is ${e}`),e&&(n=[]),ci.isPlayer&&(ci.resetAllDelay(),wr(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:H}))),wr(ci._opt.checkFirstIFrame)&&Sr(r)&&(oe=!1)},dropBuffer$2:function(){if(n.length>0){let e=n.findIndex((e=>wr(e.isIFrame)&&e.type===de));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:H});const t=n.length;n=n.slice(e);const r=n.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${n.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===n.length&&(ci.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 ae:ci.decode(new Uint8Array(e,5),{type:ae,ts:r});break;case de:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ci._isEnhancedH265Header(n))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),br(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===ze}ci.isPlayer&&ci.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],o=ci.cryptoPayload(i,e);ci.decode(o,{type:de,ts:r,isIFrame:e,cts:n})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){jr.dispatch(e)},demuxFmp4:function(e){Xr.dispatch(e)},demuxMpeg4:function(e){ai.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=Sr(d),n===zt){if(i===Ot){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),rr=or(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${rr}`),ci.decode(i,{type:de,ts:t,isIFrame:!0,cts:0})}}}else if(n===Nt){let r=e,n=0;const s=i===Ot;s&&ci.calcIframeIntervalTimestamp(t),d||(a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0],r=Qr(e.slice(8),s),r=ci.cryptoPayload(r,s),ci.decode(r,{type:de,ts:t,isIFrame:s,cts:n}))}else if(n===$t){const r=i===Ot;r&&ci.calcIframeIntervalTimestamp(t);let n=Qr(e.slice(5),r);n=ci.cryptoPayload(n,r),ci.decode(n,{type:de,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Rt)===Rt},findSei:function(e,t){let r=4;hr(rr)&&(r=rr),ir(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===mt||r===pt),n=Sr(ci.isHevc)&&r===Ze;if(i||n){const r=nr(e,ci.isHevc);postMessage({cmd:Z,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(oe&&e>0))return;null===tt?(tt=e,it=ar()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===v&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${tt} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Le,value:i}))},calcIframeIntervalTimestamp:function(e){null===Gt?Gt=e:Gt=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&wr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){Sr(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),jt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),jt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:T,w:t,h:r}),f=t,S=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:lr}),Ct=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=f*S*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(ft=null,Ae=r,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,s);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:s,delay:ci.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(kt){if(!(n>=(r=d-kt)))return kt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==Ct&&(s[1]=Float32Array.of(...s[1],...o[1])));st[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==Ct&&(st[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer))),a=r,n-=r}for(kt=n;kt>=d;kt-=d)st[0]=o[0].slice(a,a+=d),2==Ct&&(st[1]=o[1].slice(a-d,a)),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer)));kt&&(s[0]=o[0].slice(a),2==Ct&&(s[1]=o[1].slice(a))),o=[]},errorInfo:function(e){null===ft&&(ft=ar());const t=ar(),r=dr(Ut>0?2*Ut:5e3,1e3,5e3),i=t-ft;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${Ut} and diff is ${i} and maxDiff is ${r}\n and replay`),Jt=!0,postMessage({cmd:q}))},sendWebsocketMessage:function(e){d?d.readyState===Me?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:W})},postStreamToMain(e,t){postMessage({cmd:X,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),wr(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,f=e,S=t,postMessage({cmd:T,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=p(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){Ct=e,postMessage({cmd:P,sampleRate:t,channels:e,depth:lr})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(kt){if(!(n>=(r=d-kt)))return kt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==Ct&&(s[1]=Float32Array.of(...s[1],...o[1])));st[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==Ct&&(st[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer))),a=r,n-=r}for(kt=n;kt>=d;kt-=d)st[0]=o[0].slice(a,a+=d),2==Ct&&(st[1]=o[1].slice(a-d,a)),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer)));kt&&(s[0]=o[0].slice(a),2==Ct&&(s[1]=o[1].slice(a))),o=[]},draw:function(t,r,i,n){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const s=e.HEAPU8.subarray(r,r+kr),o=e.HEAPU8.subarray(i,i+Br),a=e.HEAPU8.subarray(n,n+Br),d=new Uint8Array(kr+Br+Br);if(d.set(s),d.set(o,kr),d.set(a,kr+Br),ft=null,Ae=t,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(f,S,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:C,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let hi=null;e.VideoDecoder&&(hi=new e.VideoDecoder(ci)),postMessage({cmd:B}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case he:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case fe:ci.pushBuffer(t.buffer,t.options);break;case pe:ci.decodeAudio(t.buffer,t.ts);break;case me:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case ye:ci.clearBuffer(t.needClear);break;case ve:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case _e:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&Sr(t.options.isVideoInited)&&(Ur=t.options.isVideoInited),ci.close();break;case ge:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case be:ci.sendWebsocketMessage(t.message);break;case we:li.$video.currentTime=Number(t.message);break;case Se:ci.updatePlaybackIsPause(t.isPause)}}}(e[1],t)}))})); diff --git a/demo/public/pro/js/decoder-pro-old.js b/demo/public/pro/js/decoder-pro-old.js index 8be75cd5..51d16831 100644 --- a/demo/public/pro/js/decoder-pro-old.js +++ b/demo/public/pro/js/decoder-pro-old.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("path"),require("fs"),require("crypto")):"function"==typeof define&&define.amd?define(["path","fs","crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).path,e.fs,e.crypto$1)}(this,(function(e,t,r){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=n(e),o=n(t),a=n(r),d="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function l(e,t){return e(t={exports:{}},t.exports),t.exports}var c=l((function(e){var t=void 0!==t?t:{},r=(t={locateFile:function(e){return"decoder-pro-old.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_OLD_WASM_URL&&""!=JESSIBUCA_PRO_OLD_WASM_URL?JESSIBUCA_PRO_OLD_WASM_URL:e},printErr:function(e){(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented")&&-1===e.indexOf("not compiled with thread support, using thread emulation"))&&console.warn("JbPro[❌❌❌][worker]:",e)}},Object.assign({},t)),i="./this.program",n="object"==typeof window,d="function"==typeof importScripts,l="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,c=!n&&!l&&!d;if(t.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");var u,f,h,p,m,_,g="";if(l){if("object"!=typeof process)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");g=d?s.default.dirname(g)+"/":__dirname+"/",_=()=>{m||(p=o.default,m=s.default)},u=function(e,t){return _(),e=m.normalize(e),p.readFileSync(e,t?void 0:"utf8")},h=e=>{var t=u(e,!0);return t.buffer||(t=new Uint8Array(t)),k(t.buffer),t},f=(e,t,r)=>{_(),e=m.normalize(e),p.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(i=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),e.exports=t,process.on("uncaughtException",(function(e){if(!(e instanceof xr))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}}else if(c){if("object"==typeof process||"object"==typeof window||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");"undefined"!=typeof read&&(u=function(e){return read(e)}),h=function(e){let t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(t=read(e,"binary"),k("object"==typeof t),t)},f=function(e,t,r){setTimeout((()=>t(h(e))),0)},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)}else{if(!n&&!d)throw new Error("environment detection error");if(d?g=self.location.href:"undefined"!=typeof document&&document.currentScript&&(g=document.currentScript.src),g=0!==g.indexOf("blob:")?g.substr(0,g.replace(/[?#].*/,"").lastIndexOf("/")+1):"","object"!=typeof window&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");u=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},d&&(h=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),f=(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,v,b,w=t.print||console.log.bind(console),S=t.printErr||console.warn.bind(console);function E(e){E.shown||(E.shown={}),E.shown[e]||(E.shown[e]=1,S(e))}function A(e,r){Object.getOwnPropertyDescriptor(t,e)||Object.defineProperty(t,e,{configurable:!0,get:function(){_e("Module."+e+" has been replaced with plain "+r+" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}})}function x(e,t){var r="'"+e+"' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)";return t&&(r+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),r}function U(e,r){Object.getOwnPropertyDescriptor(t,e)||Object.defineProperty(t,e,{configurable:!0,get:function(){_e(x(e,r))}})}function B(e,r){Object.getOwnPropertyDescriptor(t,e)||(t[e]=()=>_e(x(e,r)))}Object.assign(t,r),r=null,y="fetchSettings",Object.getOwnPropertyDescriptor(t,y)&&_e("`Module."+y+"` was supplied but `"+y+"` not included in INCOMING_MODULE_JS_API"),t.arguments&&t.arguments,A("arguments","arguments_"),t.thisProgram&&(i=t.thisProgram),A("thisProgram","thisProgram"),t.quit&&t.quit,A("quit","quit_"),k(void 0===t.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),k(void 0===t.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),k(void 0===t.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),k(void 0===t.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),k(void 0===t.read,"Module.read option was removed (modify read_ in JS)"),k(void 0===t.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),k(void 0===t.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),k(void 0===t.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),k(void 0===t.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),A("read","read_"),A("readAsync","readAsync"),A("readBinary","readBinary"),A("setWindowTitle","setWindowTitle"),k(!c,"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."),t.wasmBinary&&(v=t.wasmBinary),A("wasmBinary","wasmBinary"),t.noExitRuntime,A("noExitRuntime","noExitRuntime"),"object"!=typeof WebAssembly&&_e("no native wasm support detected");var T=!1;function k(e,t){e||_e("Assertion failed"+(t?": "+t:""))}var C="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function D(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&C)return C.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?D(N,e,t):""}function I(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;a>1114111&&E("Invalid Unicode code point 0x"+a.toString(16)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),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 F(e,t,r){return k("number"==typeof r,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),I(e,N,t,r)}function P(e){for(var t=0,r=0;r=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++r)),i<=127?++t:t+=i<=2047?2:i<=65535?3:4}return t}var M,R,N,z,O,G,H,$,V,W="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function j(e,t){k(e%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&O[i];)++i;if((r=i<<1)-e>32&&W)return W.decode(N.subarray(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=z[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s}function Y(e,t,r){if(k(t%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),k("number"==typeof r,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),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 z[t>>1]=0,t-i}function q(e){return 2*e.length}function K(e,t){k(e%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var r=0,i="";!(r>=t/4);){var n=G[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 X(e,t,r){if(k(t%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),k("number"==typeof r,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),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(G[t>>2]=o,(t+=4)+4>n)break}return G[t>>2]=0,t-i}function Z(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}function J(e){var t=P(e)+1,r=_r(t);return r&&I(e,R,r,t),r}function Q(e){M=e,t.HEAP8=R=new Int8Array(e),t.HEAP16=z=new Int16Array(e),t.HEAP32=G=new Int32Array(e),t.HEAPU8=N=new Uint8Array(e),t.HEAPU16=O=new Uint16Array(e),t.HEAPU32=H=new Uint32Array(e),t.HEAPF32=$=new Float32Array(e),t.HEAPF64=V=new Float64Array(e)}var ee=5242880;t.TOTAL_STACK&&k(ee===t.TOTAL_STACK,"the stack size can no longer be determined at runtime");var te,re=t.INITIAL_MEMORY||67108864;function ie(){var e=Ar();k(0==(3&e)),G[e>>2]=34821223,G[e+4>>2]=2310721022,G[0]=1668509029}function ne(){if(!T){var e=Ar(),t=H[e>>2],r=H[e+4>>2];34821223==t&&2310721022==r||_e("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+r.toString(16)+" 0x"+t.toString(16)),1668509029!==G[0]&&_e("Runtime error: The application has corrupted its heap memory area (address zero)!")}}A("INITIAL_MEMORY","INITIAL_MEMORY"),k(re>=ee,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+re+"! (TOTAL_STACK="+"5242880)"),k("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),k(!t.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),k(67108864==re,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,115!==t[0]||99!==t[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var se=[],oe=[],ae=[],de=!1;k(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var le=0,ce=null,ue=null,fe={};function he(e){for(var t=e;;){if(!fe[e])return e;e=t+Math.random()}}function pe(e){le++,t.monitorRunDependencies&&t.monitorRunDependencies(le),e?(k(!fe[e]),fe[e]=1,null===ce&&"undefined"!=typeof setInterval&&(ce=setInterval((function(){if(T)return clearInterval(ce),void(ce=null);var e=!1;for(var t in fe)e||(e=!0,S("still waiting on run dependencies:")),S("dependency: "+t);e&&S("(end of list)")}),1e4))):S("warning: run dependency added without ID")}function me(e){if(le--,t.monitorRunDependencies&&t.monitorRunDependencies(le),e?(k(fe[e]),delete fe[e]):S("warning: run dependency removed without ID"),0==le&&(null!==ce&&(clearInterval(ce),ce=null),ue)){var r=ue;ue=null,r()}}function _e(e){throw t.onAbort&&t.onAbort(e),S(e="Aborted("+e+")"),T=!0,new WebAssembly.RuntimeError(e)}var ge,ye,ve;function be(e){return e.startsWith("data:application/octet-stream;base64,")}function we(e){return e.startsWith("file://")}function Se(e,r){return function(){var i=e,n=r;return r||(n=t.asm),k(de,"native function `"+i+"` called before runtime initialization"),n[e]||k(n[e],"exported native function `"+i+"` not found"),n[e].apply(null,arguments)}}function Ee(e){try{if(e==ge&&v)return new Uint8Array(v);if(h)return h(e);throw"both async and sync fetching of the wasm failed"}catch(e){_e(e)}}function Ae(e){for(;e.length>0;){var r=e.shift();if("function"!=typeof r){var i=r.func;"number"==typeof i?void 0===r.arg?Ue(i)():Ue(i)(r.arg):i(void 0===r.arg?null:r.arg)}else r(t)}}function xe(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var t,r=(t=e,E("warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling"),t);return e===r?e:r+" ["+e+"]"}))}function Ue(e){return te.get(e)}function Be(){var e=new Error;if(!e.stack){try{throw new Error}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}be(ge="decoder-pro-old.wasm")||(ge=function(e){return t.locateFile?t.locateFile(e,g):g+e}(ge));var Te={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=Te.isAbs(e),r="/"===e.substr(-1);return(e=Te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=Te.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=Te.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Te.normalize(e.join("/"))},join2:(e,t)=>Te.normalize(e+"/"+t)};var ke={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Pe.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=Te.isAbs(i)}return(t?"/":"")+(e=Te.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=ke.resolve(e).substr(1),t=ke.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.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=hr(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(w(D(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(w(D(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(S(D(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(S(D(e.output,0)),e.output=[])}}};function De(e){e=function(e,t){return k(t,"alignment argument is required"),Math.ceil(e/t)*t}(e,65536);var t=wr(65536,e);return t?(function(e,t){N.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(Pe.isBlkdev(r)||Pe.isFIFO(r))throw new Pe.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:Pe.chrdev_stream_ops}});var n=Pe.createNode(e,t,r,i);return Pe.isDir(n.mode)?(n.node_ops=Le.ops_table.dir.node,n.stream_ops=Le.ops_table.dir.stream,n.contents={}):Pe.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):Pe.isLink(n.mode)?(n.node_ops=Le.ops_table.link.node,n.stream_ops=Le.ops_table.link.stream):Pe.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=Pe.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,Pe.isDir(e.mode)?t.size=4096:Pe.isFile(e.mode)?t.size=e.usedBytes:Pe.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 Pe.genericErrors[44]},mknod:function(e,t,r,i){return Le.createNode(e,t,r,i)},rename:function(e,t,r){if(Pe.isDir(e.mode)){var i;try{i=Pe.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Pe.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=Pe.lookupNode(e,t);for(var i in r.contents)throw new Pe.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(!Pe.isLink(e.mode))throw new Pe.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(k(o>=0),o>8&&s.subarray)t.set(s.subarray(n,n+o),r);else for(var a=0;a0||i+r1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ke.resolve(Pe.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};if(t=Object.assign(r,t),t.recurse_count>8)throw new Pe.ErrnoError(32);for(var i=Te.normalizeArray(e.split("/").filter((e=>!!e)),!1),n=Pe.root,s="/",o=0;o40)throw new Pe.ErrnoError(32)}}return{path:s,node:n}},getPath:e=>{for(var t;;){if(Pe.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)%Pe.nameTable.length},hashAddNode:e=>{var t=Pe.hashName(e.parent.id,e.name);e.name_next=Pe.nameTable[t],Pe.nameTable[t]=e},hashRemoveNode:e=>{var t=Pe.hashName(e.parent.id,e.name);if(Pe.nameTable[t]===e)Pe.nameTable[t]=e.name_next;else for(var r=Pe.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=Pe.mayLookup(e);if(r)throw new Pe.ErrnoError(r,e);for(var i=Pe.hashName(e.id,t),n=Pe.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Pe.lookup(e,t)},createNode:(e,t,r,i)=>{k("object"==typeof e);var n=new Pe.FSNode(e,t,r,i);return Pe.hashAddNode(n),n},destroyNode:e=>{Pe.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==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=Pe.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)=>Pe.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=Pe.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{Pe.lookupNode(e,t);return 20}catch(e){}return Pe.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=Pe.lookupNode(e,t)}catch(e){return e.errno}var n=Pe.nodePermissions(e,"wx");if(n)return n;if(r){if(!Pe.isDir(i.mode))return 54;if(Pe.isRoot(i)||Pe.getPath(i)===Pe.cwd())return 10}else if(Pe.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Pe.isLink(e.mode)?32:Pe.isDir(e.mode)&&("r"!==Pe.flagsToPermissionString(t)||512&t)?31:Pe.nodePermissions(e,Pe.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Pe.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!Pe.streams[r])return r;throw new Pe.ErrnoError(33)},getStream:e=>Pe.streams[e],createStream:(e,t,r)=>{Pe.FSStream||(Pe.FSStream=function(){this.shared={}},Pe.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 0!=(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 Pe.FSStream,e);var i=Pe.nextfd(t,r);return e.fd=i,Pe.streams[i]=e,e},closeStream:e=>{Pe.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=Pe.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new Pe.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{Pe.devices[e]={stream_ops:t}},getDevice:e=>Pe.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),Pe.syncFSRequests++,Pe.syncFSRequests>1&&S("warning: "+Pe.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=Pe.getMounts(Pe.root.mount),i=0;function n(e){return k(Pe.syncFSRequests>0),Pe.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)=>{if("string"==typeof e)throw e;var i,n="/"===r,s=!r;if(n&&Pe.root)throw new Pe.ErrnoError(10);if(!n&&!s){var o=Pe.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Pe.isMountpoint(i))throw new Pe.ErrnoError(10);if(!Pe.isDir(i.mode))throw new Pe.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Pe.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount:e=>{var t=Pe.lookupPath(e,{follow_mount:!1});if(!Pe.isMountpoint(t.node))throw new Pe.ErrnoError(28);var r=t.node,i=r.mounted,n=Pe.getMounts(i);Object.keys(Pe.nameTable).forEach((e=>{for(var t=Pe.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Pe.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);k(-1!==s),r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=Pe.lookupPath(e,{parent:!0}).node,n=Te.basename(e);if(!n||"."===n||".."===n)throw new Pe.ErrnoError(28);var s=Pe.mayCreate(i,n);if(s)throw new Pe.ErrnoError(s);if(!i.node_ops.mknod)throw new Pe.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Pe.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Pe.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,Pe.mknod(e,t,r)),symlink:(e,t)=>{if(!ke.resolve(e))throw new Pe.ErrnoError(44);var r=Pe.lookupPath(t,{parent:!0}).node;if(!r)throw new Pe.ErrnoError(44);var i=Te.basename(t),n=Pe.mayCreate(r,i);if(n)throw new Pe.ErrnoError(n);if(!r.node_ops.symlink)throw new Pe.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=Te.dirname(e),s=Te.dirname(t),o=Te.basename(e),a=Te.basename(t);if(r=Pe.lookupPath(e,{parent:!0}).node,i=Pe.lookupPath(t,{parent:!0}).node,!r||!i)throw new Pe.ErrnoError(44);if(r.mount!==i.mount)throw new Pe.ErrnoError(75);var d,l=Pe.lookupNode(r,o),c=ke.relative(e,s);if("."!==c.charAt(0))throw new Pe.ErrnoError(28);if("."!==(c=ke.relative(t,n)).charAt(0))throw new Pe.ErrnoError(55);try{d=Pe.lookupNode(i,a)}catch(e){}if(l!==d){var u=Pe.isDir(l.mode),f=Pe.mayDelete(r,o,u);if(f)throw new Pe.ErrnoError(f);if(f=d?Pe.mayDelete(i,a,u):Pe.mayCreate(i,a))throw new Pe.ErrnoError(f);if(!r.node_ops.rename)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(l)||d&&Pe.isMountpoint(d))throw new Pe.ErrnoError(10);if(i!==r&&(f=Pe.nodePermissions(r,"w")))throw new Pe.ErrnoError(f);Pe.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Pe.hashAddNode(l)}}},rmdir:e=>{var t=Pe.lookupPath(e,{parent:!0}).node,r=Te.basename(e),i=Pe.lookupNode(t,r),n=Pe.mayDelete(t,r,!0);if(n)throw new Pe.ErrnoError(n);if(!t.node_ops.rmdir)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(i))throw new Pe.ErrnoError(10);t.node_ops.rmdir(t,r),Pe.destroyNode(i)},readdir:e=>{var t=Pe.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Pe.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=Pe.lookupPath(e,{parent:!0}).node;if(!t)throw new Pe.ErrnoError(44);var r=Te.basename(e),i=Pe.lookupNode(t,r),n=Pe.mayDelete(t,r,!1);if(n)throw new Pe.ErrnoError(n);if(!t.node_ops.unlink)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(i))throw new Pe.ErrnoError(10);t.node_ops.unlink(t,r),Pe.destroyNode(i)},readlink:e=>{var t=Pe.lookupPath(e).node;if(!t)throw new Pe.ErrnoError(44);if(!t.node_ops.readlink)throw new Pe.ErrnoError(28);return ke.resolve(Pe.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=Pe.lookupPath(e,{follow:!t}).node;if(!r)throw new Pe.ErrnoError(44);if(!r.node_ops.getattr)throw new Pe.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Pe.stat(e,!0),chmod:(e,t,r)=>{var i;"string"==typeof e?i=Pe.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new Pe.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{Pe.chmod(e,t,!0)},fchmod:(e,t)=>{var r=Pe.getStream(e);if(!r)throw new Pe.ErrnoError(8);Pe.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;"string"==typeof e?n=Pe.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new Pe.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{Pe.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=Pe.getStream(e);if(!i)throw new Pe.ErrnoError(8);Pe.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new Pe.ErrnoError(28);var r;"string"==typeof e?r=Pe.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new Pe.ErrnoError(63);if(Pe.isDir(r.mode))throw new Pe.ErrnoError(31);if(!Pe.isFile(r.mode))throw new Pe.ErrnoError(28);var i=Pe.nodePermissions(r,"w");if(i)throw new Pe.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=Pe.getStream(e);if(!r)throw new Pe.ErrnoError(8);if(0==(2097155&r.flags))throw new Pe.ErrnoError(28);Pe.truncate(r.node,t)},utime:(e,t,r)=>{var i=Pe.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i,n,s)=>{if(""===e)throw new Pe.ErrnoError(44);var o;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?Pe.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)o=e;else{e=Te.normalize(e);try{o=Pe.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var a=!1;if(64&r)if(o){if(128&r)throw new Pe.ErrnoError(20)}else o=Pe.mknod(e,i,0),a=!0;if(!o)throw new Pe.ErrnoError(44);if(Pe.isChrdev(o.mode)&&(r&=-513),65536&r&&!Pe.isDir(o.mode))throw new Pe.ErrnoError(54);if(!a){var d=Pe.mayOpen(o,r);if(d)throw new Pe.ErrnoError(d)}512&r&&Pe.truncate(o,0),r&=-131713;var l=Pe.createStream({node:o,path:Pe.getPath(o),flags:r,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1},n,s);return l.stream_ops.open&&l.stream_ops.open(l),!t.logReadFiles||1&r||(Pe.readFiles||(Pe.readFiles={}),e in Pe.readFiles||(Pe.readFiles[e]=1)),l},close:e=>{if(Pe.isClosed(e))throw new Pe.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Pe.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Pe.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Pe.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 Pe.ErrnoError(28);if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(1==(2097155&e.flags))throw new Pe.ErrnoError(8);if(Pe.isDir(e.node.mode))throw new Pe.ErrnoError(31);if(!e.stream_ops.read)throw new Pe.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Pe.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 Pe.ErrnoError(28);if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(0==(2097155&e.flags))throw new Pe.ErrnoError(8);if(Pe.isDir(e.node.mode))throw new Pe.ErrnoError(31);if(!e.stream_ops.write)throw new Pe.ErrnoError(28);e.seekable&&1024&e.flags&&Pe.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Pe.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(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(t<0||r<=0)throw new Pe.ErrnoError(28);if(0==(2097155&e.flags))throw new Pe.ErrnoError(8);if(!Pe.isFile(e.node.mode)&&!Pe.isDir(e.node.mode))throw new Pe.ErrnoError(43);if(!e.stream_ops.allocate)throw new Pe.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n,s)=>{if(0!=(2&n)&&0==(2&s)&&2!=(2097155&e.flags))throw new Pe.ErrnoError(2);if(1==(2097155&e.flags))throw new Pe.ErrnoError(2);if(!e.stream_ops.mmap)throw new Pe.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n,s)},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 Pe.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Pe.open(e,t.flags),n=Pe.stat(e),s=n.size,o=new Uint8Array(s);return Pe.read(i,o,0,s,0),"utf8"===t.encoding?r=D(o,0):"binary"===t.encoding&&(r=o),Pe.close(i),r},writeFile:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Pe.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(P(t)+1),s=I(t,n,0,n.length);Pe.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Pe.write(i,t,0,t.byteLength,void 0,r.canOwn)}Pe.close(i)},cwd:()=>Pe.currentPath,chdir:e=>{var t=Pe.lookupPath(e,{follow:!0});if(null===t.node)throw new Pe.ErrnoError(44);if(!Pe.isDir(t.node.mode))throw new Pe.ErrnoError(54);var r=Pe.nodePermissions(t.node,"x");if(r)throw new Pe.ErrnoError(r);Pe.currentPath=t.path},createDefaultDirectories:()=>{Pe.mkdir("/tmp"),Pe.mkdir("/home"),Pe.mkdir("/home/web_user")},createDefaultDevices:()=>{Pe.mkdir("/dev"),Pe.registerDevice(Pe.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Pe.mkdev("/dev/null",Pe.makedev(1,3)),Ce.register(Pe.makedev(5,0),Ce.default_tty_ops),Ce.register(Pe.makedev(6,0),Ce.default_tty1_ops),Pe.mkdev("/dev/tty",Pe.makedev(5,0)),Pe.mkdev("/dev/tty1",Pe.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(l)try{var t=a.default;return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){_e("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}}();Pe.createDevice("/dev","random",e),Pe.createDevice("/dev","urandom",e),Pe.mkdir("/dev/shm"),Pe.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{Pe.mkdir("/proc");var e=Pe.mkdir("/proc/self");Pe.mkdir("/proc/self/fd"),Pe.mount({mount:()=>{var t=Pe.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=Pe.getStream(r);if(!i)throw new Pe.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?Pe.createDevice("/dev","stdin",t.stdin):Pe.symlink("/dev/tty","/dev/stdin"),t.stdout?Pe.createDevice("/dev","stdout",null,t.stdout):Pe.symlink("/dev/tty","/dev/stdout"),t.stderr?Pe.createDevice("/dev","stderr",null,t.stderr):Pe.symlink("/dev/tty1","/dev/stderr");var e=Pe.open("/dev/stdin",0),r=Pe.open("/dev/stdout",1),i=Pe.open("/dev/stderr",1);k(0===e.fd,"invalid handle for stdin ("+e.fd+")"),k(1===r.fd,"invalid handle for stdout ("+r.fd+")"),k(2===i.fd,"invalid handle for stderr ("+i.fd+")")},ensureErrnoError:()=>{Pe.ErrnoError||(Pe.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){for(var t in this.errno=e,Fe)if(Fe[t]===e){this.code=t;break}},this.setErrno(e),this.message=Ie[e],this.stack&&(Object.defineProperty(this,"stack",{value:(new Error).stack,writable:!0}),this.stack=xe(this.stack))},Pe.ErrnoError.prototype=new Error,Pe.ErrnoError.prototype.constructor=Pe.ErrnoError,[44].forEach((e=>{Pe.genericErrors[e]=new Pe.ErrnoError(e),Pe.genericErrors[e].stack=""})))},staticInit:()=>{Pe.ensureErrnoError(),Pe.nameTable=new Array(4096),Pe.mount(Le,{},"/"),Pe.createDefaultDirectories(),Pe.createDefaultDevices(),Pe.createSpecialDirectories(),Pe.filesystems={MEMFS:Le}},init:(e,r,i)=>{k(!Pe.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),Pe.init.initialized=!0,Pe.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,Pe.createStandardStreams()},quit:()=>{Pe.init.initialized=!1,br();for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=Pe.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=Pe.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=Pe.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=Te.basename(e),i=Pe.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:Pe.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var o=Te.join2(e,s);try{Pe.mkdir(o)}catch(e){}e=o}}return o},createFile:(e,t,r,i,n)=>{var s=Te.join2("string"==typeof e?e:Pe.getPath(e),t),o=Pe.getMode(i,n);return Pe.create(s,o)},createDataFile:(e,t,r,i,n,s)=>{var o=t;e&&(e="string"==typeof e?e:Pe.getPath(e),o=t?Te.join2(e,t):e);var a=Pe.getMode(i,n),d=Pe.create(o,a);if(r){if("string"==typeof r){for(var l=new Array(r.length),c=0,u=r.length;c{var n=Te.join2("string"==typeof e?e:Pe.getPath(e),t),s=Pe.getMode(!!r,!!i);Pe.createDevice.major||(Pe.createDevice.major=64);var o=Pe.makedev(Pe.createDevice.major++,0);return Pe.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(!u)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=hr(u(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new Pe.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||[]):hr(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(!d)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=Pe.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 c={};return Object.keys(l.stream_ops).forEach((e=>{var t=l.stream_ops[e];c[e]=function(){return Pe.forceLoadFile(l),t.apply(null,arguments)}})),c.read=(e,t,r,i,n)=>{Pe.forceLoadFile(l);var s=e.node.contents;if(n>=s.length)return 0;var o=Math.min(s.length-n,i);if(k(o>=0),s.slice)for(var a=0;a{var c=t?ke.resolve(Te.join2(e,t)):e,u=he("cp "+c);function h(r){function f(r){l&&l(),a||Pe.createDataFile(e,t,r,i,n,d),s&&s(),me(u)}Browser.handledByPreloadPlugin(r,c,f,(()=>{o&&o(),me(u)}))||f(r)}pe(u),"string"==typeof r?function(e,t,r,i){var n=i?"":he("al "+e);f(e,(function(r){k(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&me(n)}),(function(t){if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&pe(n)}(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=Pe.indexedDB();try{var n=i.open(Pe.DB_NAME(),Pe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{w("creating db"),n.result.createObjectStore(Pe.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([Pe.DB_STORE_NAME],"readwrite"),s=i.objectStore(Pe.DB_STORE_NAME),o=0,a=0,d=e.length;function l(){0==a?t():r()}e.forEach((e=>{var t=s.put(Pe.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=Pe.indexedDB();try{var n=i.open(Pe.DB_NAME(),Pe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([Pe.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var o=s.objectStore(Pe.DB_STORE_NAME),a=0,d=0,l=e.length;function c(){0==d?t():r()}e.forEach((e=>{var t=o.get(e);t.onsuccess=()=>{Pe.analyzePath(e).exists&&Pe.unlink(e),Pe.createDataFile(Te.dirname(e),Te.basename(e),t.result,!0,!0,!0),++a+d==l&&c()},t.onerror=()=>{d++,a+d==l&&c()}})),s.onerror=r},n.onerror=r},absolutePath:()=>{_e("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder:()=>{_e("FS.createFolder has been removed; use FS.mkdir instead")},createLink:()=>{_e("FS.createLink has been removed; use FS.symlink instead")},joinPath:()=>{_e("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc:()=>{_e("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath:()=>{_e("FS.standardizePath has been removed; use PATH.normalize instead")}},Me={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(Te.isAbs(t))return t;var i;if(-100===e)i=Pe.cwd();else{var n=Pe.getStream(e);if(!n)throw new Pe.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new Pe.ErrnoError(44);return i}return Te.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&Te.normalize(t)!==Te.normalize(Pe.getPath(e.node)))return-54;throw e}return G[r>>2]=i.dev,G[r+4>>2]=0,G[r+8>>2]=i.ino,G[r+12>>2]=i.mode,G[r+16>>2]=i.nlink,G[r+20>>2]=i.uid,G[r+24>>2]=i.gid,G[r+28>>2]=i.rdev,G[r+32>>2]=0,ve=[i.size>>>0,(ye=i.size,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],G[r+40>>2]=ve[0],G[r+44>>2]=ve[1],G[r+48>>2]=4096,G[r+52>>2]=i.blocks,G[r+56>>2]=i.atime.getTime()/1e3|0,G[r+60>>2]=0,G[r+64>>2]=i.mtime.getTime()/1e3|0,G[r+68>>2]=0,G[r+72>>2]=i.ctime.getTime()/1e3|0,G[r+76>>2]=0,ve=[i.ino>>>0,(ye=i.ino,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],G[r+80>>2]=ve[0],G[r+84>>2]=ve[1],0},doMsync:function(e,t,r,i,n){var s=N.slice(e,e+r);Pe.msync(t,s,n,r,i)},doMknod:function(e,t,r){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Pe.mknod(e,t,r),0},doReadlink:function(e,t,r){if(r<=0)return-28;var i=Pe.readlink(e),n=Math.min(r,P(i)),s=R[t+n];return F(i,t,r+1),R[t+n]=s,n},doAccess:function(e,t){if(-8&t)return-28;var r=Pe.lookupPath(e,{follow:!0}).node;if(!r)return-44;var i="";return 4&t&&(i+="r"),2&t&&(i+="w"),1&t&&(i+="x"),i&&Pe.nodePermissions(r,i)?-2:0},doReadv:function(e,t,r,i){for(var n=0,s=0;s>2],a=G[t+4>>2];t+=8;var d=Pe.read(e,R,o,a,i);if(d<0)return-1;if(n+=d,d>2],a=G[t+4>>2];t+=8;var d=Pe.write(e,R,o,a,i);if(d<0)return-1;n+=d}return n},varargs:void 0,get:function(){return k(null!=Me.varargs),Me.varargs+=4,G[Me.varargs-4>>2]},getStr:function(e){return L(e)},getStreamFromFD:function(e){var t=Pe.getStream(e);if(!t)throw new Pe.ErrnoError(8);return t}};function Re(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 Ne=void 0;function ze(e){for(var t="",r=e;N[r];)t+=Ne[N[r++]];return t}var Oe={},Ge={},He={};function $e(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}function Ve(e,t){return e=$e(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{Ge.hasOwnProperty(e)?n[t]=Ge[e]:(s.push(e),Oe.hasOwnProperty(e)||(Oe[e]=[]),Oe[e].push((()=>{n[t]=Ge[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)}function Ze(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};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'),Ge.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ye("Cannot register type '"+i+"' twice")}if(Ge[e]=t,delete He[e],Oe.hasOwnProperty(e)){var n=Oe[e];delete Oe[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(ut).length}function ot(){var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e}var at=[];function dt(){for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}}var lt=void 0;function ct(e){lt=e,at.length&<&<(dt)}var ut={};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),ut[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=>{console.warn(e.leakWarning.stack.replace(/^Error: /,"")),rt(e.$$)})),mt=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t},i=t.ptrType.registeredClass;r.leakWarning=new Error("Embind found a leaked C++ instance "+i.name+" <0x"+t.ptr.toString(16)+">.\nWe'll free it automatically in this case, but this functionality is not reliable across various environments.\nMake sure to invoke .delete() manually once you're done with the instance instead.\nOriginally allocated"),"captureStackTrace"in Error&&Error.captureStackTrace(r.leakWarning,pt),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 gt(){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 yt(){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 St(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 Et(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 At(e,t){if(null===t)return this.isReference&&Ye("null is not a valid "+this.name),0;t.$$||Ye('Cannot pass "'+qt(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 Et(t.$$.ptr,r,this.registeredClass)}function xt(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 "'+qt(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=Et(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,Yt.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Ye("Unsupporting sharing policy")}return r}function Ut(e,t){if(null===t)return this.isReference&&Ye("null is not a valid "+this.name),0;t.$$||Ye('Cannot pass "'+qt(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 Et(t.$$.ptr,r,this.registeredClass)}function Bt(e){return this.fromWireType(H[e>>2])}function Tt(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function kt(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,c){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=c,n||void 0!==t.baseClass?this.toWireType=xt:i?(this.toWireType=At,this.destructorFunction=null):(this.toWireType=Ut,this.destructorFunction=null)}function Lt(e,r,i){return e.includes("j")?function(e,r,i){k("dynCall_"+e in t,"bad function pointer type - no table for sig '"+e+"'"),i&&i.length?k(i.length===e.substring(1).replace(/j/g,"--").length):k(1==e.length);var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):(k(Ue(r),"missing table entry in dynCall: "+r),Ue(r).apply(null,i))}function It(e,t){var r=(e=ze(e)).includes("j")?function(e,t){k(e.includes("j"),"getDynCaller should only be called with i64 sigs");var r=[];return function(){return r.length=0,Object.assign(r,arguments),Lt(e,t,r)}}(e,t):Ue(t);return"function"!=typeof r&&Ye("unknown function pointer with signature "+e+": "+t),r}var Ft=void 0;function Pt(e){var t=vr(e),r=ze(t);return mr(t),r}function Mt(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||Ge[t]||(He[t]?He[t].forEach(e):(r.push(t),i[t]=!0))})),new Ft(e+": "+r.map(Pt).join([", "]))}function Rt(e,t){for(var r=[],i=0;i>2)+i]);return r}function Nt(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function zt(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?", ":"")+u),f+=(l?"var rv = ":"")+"invoker(fn"+(u.length>0?", ":"")+u+");\n",a)f+="runDestructors(destructors);\n";else for(d=o?1:2;d4&&0==--$t[e].refcount&&($t[e]=void 0,Ht.push(e))}function Wt(){for(var e=0,t=5;t<$t.length;++t)void 0!==$t[t]&&++e;return e}function jt(){for(var e=5;e<$t.length;++e)if(void 0!==$t[e])return $t[e];return null}var Yt={toValue:e=>(e||Ye("Cannot use deleted val. handle = "+e),$t[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=Ht.length?Ht.pop():$t.length;return $t[t]={refcount:1,value:e},t}}};function qt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function Kt(e,t){switch(t){case 2:return function(e){return this.fromWireType($[e>>2])};case 3:return function(e){return this.fromWireType(V[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Xt(e,t,r){switch(t){case 0:return r?function(e){return R[e]}:function(e){return N[e]};case 1:return r?function(e){return z[e>>1]}:function(e){return O[e>>1]};case 2:return r?function(e){return G[e>>2]}:function(e){return H[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function Zt(e,t){var r=Ge[e];return void 0===r&&Ye(t+" has unknown type "+Pt(e)),r}var Jt={};var Qt=[];var er=[];function tr(e,t){return k(t===(0|t)),(e>>>0)+4294967296*t}function rr(e,t){if(e<=0)return e;var r=t<=32?Math.abs(1<=r&&(t<=32||e>r)&&(e=-2*r+e),e}function ir(e,t){return e>=0?e:t<=32?2*Math.abs(1<>3]),i+=8):"i64"==e?(t=[G[i>>2],G[i+4>>2]],i+=8):(k(0==(3&i)),e="i32",t=G[i>>2],i+=4),t}for(var s,o,a,d,l,c,u=[];;){var f=r;if(0===(s=R[r>>0]))break;if(o=R[r+1>>0],37==s){var h=!1,p=!1,m=!1,_=!1,g=!1;e:for(;;){switch(o){case 43:h=!0;break;case 45:p=!0;break;case 35:m=!0;break;case 48:if(_)break e;_=!0;break;case 32:g=!0;break;default:break e}r++,o=R[r+1>>0]}var y=0;if(42==o)y=n("i32"),r++,o=R[r+1>>0];else for(;o>=48&&o<=57;)y=10*y+(o-48),r++,o=R[r+1>>0];var v,b=!1,w=-1;if(46==o){if(w=0,b=!0,r++,42==(o=R[r+1>>0]))w=n("i32"),r++;else for(;;){var S=R[r+1>>0];if(S<48||S>57)break;w=10*w+(S-48),r++}o=R[r+1>>0]}switch(w<0&&(w=6,b=!1),String.fromCharCode(o)){case"h":104==R[r+2>>0]?(r++,v=1):v=2;break;case"l":108==R[r+2>>0]?(r++,v=8):v=4;break;case"L":case"q":case"j":v=8;break;case"z":case"t":case"I":v=4;break;default:v=null}switch(v&&r++,o=R[r+1>>0],String.fromCharCode(o)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var E=100==o||105==o;if(a=n("i"+8*(v=v||4)),8==v&&(a=117==o?(l=a[0],c=a[1],(l>>>0)+4294967296*(c>>>0)):tr(a[0],a[1])),v<=4)a=(E?rr:ir)(a&Math.pow(256,v)-1,8*v);var A=Math.abs(a),x="";if(100==o||105==o)T=rr(a,8*v).toString(10);else if(117==o)T=ir(a,8*v).toString(10),a=Math.abs(a);else if(111==o)T=(m?"0":"")+A.toString(8);else if(120==o||88==o){if(x=m&&0!=a?"0x":"",a<0){a=-a,T=(A-1).toString(16);for(var U=[],B=0;B=0&&(h?x="+"+x:g&&(x=" "+x)),"-"==T.charAt(0)&&(x="-"+x,T=T.substr(1));x.length+T.lengthL&&L>=-4?(o=(103==o?"f":"F").charCodeAt(0),w-=L+1):(o=(103==o?"e":"E").charCodeAt(0),w--),D=Math.min(w,20)}101==o||69==o?(T=a.toExponential(D),/[eE][-+]\d$/.test(T)&&(T=T.slice(0,-1)+"0"+T.slice(-1))):102!=o&&70!=o||(T=a.toFixed(D),0===a&&((d=a)<0||0===d&&1/d==-1/0)&&(T="-"+T));var I=T.split("e");if(C&&!m)for(;I[0].length>1&&I[0].includes(".")&&("0"==I[0].slice(-1)||"."==I[0].slice(-1));)I[0]=I[0].slice(0,-1);else for(m&&-1==T.indexOf(".")&&(I[0]+=".");w>D++;)I[0]+="0";T=I[0]+(I.length>1?"e"+I[1]:""),69==o&&(T=T.toUpperCase()),a>=0&&(h?T="+"+T:g&&(T=" "+T))}else T=(a<0?"-":"")+"inf",_=!1;for(;T.length>0]);else u=u.concat(hr("(null)".substr(0,P),!0));if(p)for(;P0;)u.push(32);p||u.push(n("i8"));break;case"n":var M=n("i32*");G[M>>2]=u.length;break;case"%":u.push(s);break;default:for(B=f;B>0])}r+=2}else u.push(s),r+=1}return u}function sr(e){if(!e||!e.callee||!e.callee.name)return[null,"",""];e.callee.toString();var t=e.callee.name,r="(",i=!0;for(var n in e){var s=e[n];i||(r+=", "),i=!1,r+="number"==typeof s||"string"==typeof s?s:"("+typeof s+")"}r+=")";var o=e.callee.caller;return i&&(r=""),[e=o?o.arguments:[],t,r]}function or(e,t){24&e&&(t=t.replace(/\s+$/,""),t+=(t.length>0?"\n":"")+function(e){var t=Be(),r=t.lastIndexOf("_emscripten_log"),i=t.lastIndexOf("_emscripten_get_callstack"),n=t.indexOf("\n",Math.max(r,i))+1;t=t.slice(n),32&e&&E("EM_LOG_DEMANGLE is deprecated; ignoring"),8&e&&"undefined"==typeof emscripten_source_map&&(E('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'),e^=8,e|=16);var s=null;if(128&e)for(s=sr(arguments);s[1].includes("_emscripten_");)s=sr(s[0]);var o=t.split("\n");t="";var a=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),d=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),l=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var c in o){var u=o[c],f="",h="",p=0,m=0,_=l.exec(u);if(_&&5==_.length)f=_[1],h=_[2],p=_[3],m=_[4];else{if((_=a.exec(u))||(_=d.exec(u)),!(_&&_.length>=4)){t+=u+"\n";continue}f=_[1],h=_[2],p=_[3],m=0|_[4]}var g=!1;if(8&e){var y=emscripten_source_map.originalPositionFor({line:p,column:m});(g=y&&y.source)&&(64&e&&(y.source=y.source.substring(y.source.replace(/\\/g,"/").lastIndexOf("/")+1)),t+=" at "+f+" ("+y.source+":"+y.line+":"+y.column+")\n")}(16&e||!g)&&(64&e&&(h=h.substring(h.replace(/\\/g,"/").lastIndexOf("/")+1)),t+=(g?" = "+f:" at "+f)+" ("+h+":"+p+":"+m+")\n"),128&e&&s[0]&&(s[1]==f&&s[2].length>0&&(t=t.replace(/\s+$/,""),t+=" with values: "+s[1]+s[2]+"\n"),s=sr(s[0]))}return t.replace(/\s+$/,"")}(e)),1&e?4&e?console.error(t):2&e?console.warn(t):512&e?console.info(t):256&e?console.debug(t):console.log(t):6&e?S(t):w(t)}function ar(e){try{return b.grow(e-M.byteLength+65535>>>16),Q(b.buffer),1}catch(t){S("emscripten_realloc_buffer: Attempted to grow heap from "+M.byteLength+" bytes to "+e+" bytes, but got error: "+t)}}var dr={};function lr(){if(!lr.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",_:i||"./this.program"};for(var t in dr)void 0===dr[t]?delete e[t]:e[t]=dr[t];var r=[];for(var t in e)r.push(t+"="+e[t]);lr.strings=r}return lr.strings}var cr=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Pe.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ur=365,fr=146;function hr(e,t,r){var i=r>0?r:P(e)+1,n=new Array(i),s=I(e,n,0,n.length);return t&&(n.length=s),n}Object.defineProperties(cr.prototype,{read:{get:function(){return(this.mode&ur)===ur},set:function(e){e?this.mode|=ur:this.mode&=-366}},write:{get:function(){return(this.mode&fr)===fr},set:function(e){e?this.mode|=fr:this.mode&=-147}},isFolder:{get:function(){return Pe.isDir(this.mode)}},isDevice:{get:function(){return Pe.isChrdev(this.mode)}}}),Pe.FSNode=cr,Pe.staticInit(),Fe={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ne=e}(),je=t.BindingError=We(Error,"BindingError"),qe=t.InternalError=We(Error,"InternalError"),bt.prototype.isAliasOf=Je,bt.prototype.clone=_t,bt.prototype.delete=gt,bt.prototype.isDeleted=yt,bt.prototype.deleteLater=vt,t.getInheritedInstanceCount=st,t.getLiveInheritedInstances=ot,t.flushPendingDeletes=dt,t.setDelayFunction=ct,Dt.prototype.getPointee=Tt,Dt.prototype.destructor=kt,Dt.prototype.argPackAdvance=8,Dt.prototype.readValueFromPointer=Bt,Dt.prototype.deleteObject=Ct,Dt.prototype.fromWireType=pt,Ft=t.UnboundTypeError=We(Error,"UnboundTypeError"),t.count_emval_handles=Wt,t.get_first_emval=jt;var pr={__syscall_fcntl64:function(e,t,r){Me.varargs=r;try{var i=Me.getStreamFromFD(e);switch(t){case 0:return(n=Me.get())<0?-28:Pe.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=Me.get();return i.flags|=n,0;case 5:n=Me.get();return z[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,G[yr()>>2]=s,-1}}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}var s},__syscall_openat:function(e,t,r,i){Me.varargs=i;try{t=Me.getStr(t),t=Me.calculateAt(e,t);var n=i?Me.get():0;return Pe.open(t,r,n).fd}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},_embind_register_bigint:function(e,t,r,i,n){},_embind_register_bool:function(e,t,r,i,n){var s=Re(r);Ze(e,{name:t=ze(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=R;else if(2===r)i=z;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=G}return this.fromWireType(i[e>>s])},destructorFunction:null})},_embind_register_class:function(e,r,i,n,s,o,a,d,l,c,u,f,h){u=ze(u),o=It(s,o),d&&(d=It(a,d)),c&&(c=It(l,c)),h=It(f,h);var p=$e(u);!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(){Mt("Cannot construct "+u+" 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 "+u);if(void 0===f.constructor_body)throw new je(u+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new je("Tried to invoke ctor of "+u+" 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 St(u,a,l,h,i,o,d,c),m=new Dt(u,f,!0,!1,!1),_=new Dt(u+"*",f,!1,!1,!1),g=new Dt(u+" const*",f,!1,!0,!1);return nt[e]={pointerType:_,constPointerType:g},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,_,g]}))},_embind_register_class_constructor:function(e,t,r,i,n,s){k(t>0);var o=Rt(t,r);n=It(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]=()=>{Mt("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),[]})),[]}))},_embind_register_class_function:function(e,t,r,i,n,s,o,a){var d=Rt(r,i);t=ze(t),s=It(n,s),Xe([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){Mt("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,c=l[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,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,[]})),[]}))},_embind_register_class_property:function(e,t,r,i,n,s,o,a,d,l){t=ze(t),n=It(i,n),Xe([],[e],(function(e){var i=(e=e[0]).name+"."+t,c={get:function(){Mt("Cannot access "+i+" due to unbound types",[r,o])},enumerable:!0,configurable:!0};return c.set=d?()=>{Mt("Cannot access "+i+" due to unbound types",[r,o])}:e=>{Ye(i+" is a read-only property")},Object.defineProperty(e.registeredClass.instancePrototype,t,c),Xe([],d?[r,o]:[r],(function(r){var o=r[0],c={get:function(){var t=Gt(this,e,i+" getter");return o.fromWireType(n(s,t))},enumerable:!0};if(d){d=It(a,d);var u=r[1];c.set=function(t){var r=Gt(this,e,i+" setter"),n=[];d(l,r,u.toWireType(n,t)),Nt(n)}}return Object.defineProperty(e.registeredClass.instancePrototype,t,c),[]})),[]}))},_embind_register_emval:function(e,t){Ze(e,{name:t=ze(t),fromWireType:function(e){var t=Yt.toValue(e);return Vt(e),t},toWireType:function(e,t){return Yt.toHandle(t)},argPackAdvance:8,readValueFromPointer:Bt,destructorFunction:null})},_embind_register_float:function(e,t,r){var i=Re(r);Ze(e,{name:t=ze(t),fromWireType:function(e){return e},toWireType:function(e,t){if("number"!=typeof t&&"boolean"!=typeof t)throw new TypeError('Cannot convert "'+qt(t)+'" to '+this.name);return t},argPackAdvance:8,readValueFromPointer:Kt(t,i),destructorFunction:null})},_embind_register_integer:function(e,t,r,i,n){t=ze(t),-1===n&&(n=4294967295);var s=Re(r),o=e=>e;if(0===i){var a=32-8*r;o=e=>e<>>a}var d=t.includes("unsigned"),l=(e,r)=>{if("number"!=typeof e&&"boolean"!=typeof e)throw new TypeError('Cannot convert "'+qt(e)+'" to '+r);if(en)throw new TypeError('Passing a number "'+qt(e)+'" from JS side to C/C++ side to an argument of type "'+t+'", which is outside the valid range ['+i+", "+n+"]!")};Ze(e,{name:t,fromWireType:o,toWireType:d?function(e,t){return l(t,this.name),t>>>0}:function(e,t){return l(t,this.name),t},argPackAdvance:8,readValueFromPointer:Xt(t,s,0!==i),destructorFunction:null})},_embind_register_memory_view:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=H,r=t[e>>=2],n=t[e+1];return new i(M,n,r)}Ze(e,{name:r=ze(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},_embind_register_std_string:function(e,t){var r="std::string"===(t=ze(t));Ze(e,{name:t,fromWireType:function(e){var t,i=H[e>>2];if(r)for(var n=e+4,s=0;s<=i;++s){var o=e+4+s;if(s==i||0==N[o]){var a=L(n,o-n);void 0===t?t=a:(t+=String.fromCharCode(0),t+=a),n=o+1}}else{var d=new Array(i);for(s=0;sP(t):()=>t.length)(),s=_r(4+n+1);if(H[s>>2]=n,r&&i)F(t,s+4,n+1);else if(i)for(var o=0;o255&&(mr(s),Ye("String has UTF-16 code units that do not fit in 8 bits")),N[s+4+o]=a}else for(o=0;oO,a=1):4===t&&(i=K,n=X,o=Z,s=()=>H,a=2),Ze(e,{name:r,fromWireType:function(e){for(var r,n=H[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return mr(e),r},toWireType:function(e,i){"string"!=typeof i&&Ye("Cannot pass non-string to C++ string type "+r);var s=o(i),d=_r(4+s+t);return H[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(mr,d),d},argPackAdvance:8,readValueFromPointer:Bt,destructorFunction:function(e){mr(e)}})},_embind_register_void:function(e,t){Ze(e,{isVoid:!0,name:t=ze(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},_emscripten_date_now:function(){return Date.now()},_emval_as:function(e,t,r){e=Yt.toValue(e),t=Zt(t,"emval::as");var i=[],n=Yt.toHandle(i);return G[r>>2]=n,t.toWireType(i,e)},_emval_call_void_method:function(e,t,r,i){var n,s;(e=Qt[e])(t=Yt.toValue(t),r=void 0===(s=Jt[n=r])?ze(n):s,null,i)},_emval_decref:Vt,_emval_get_method_caller:function(e,t){var r=function(e,t){for(var r=new Array(e),i=0;i>2)+i],"parameter "+i);return r}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=er[n];if(void 0!==s)return s;for(var o=["retType"],a=[i],d="",l=0;l4&&($t[e].refcount+=1)},_emval_run_destructors:function(e){Nt(Yt.toValue(e)),Vt(e)},_emval_take_value:function(e,t){var r=(e=Zt(e,"_emval_take_value")).readValueFromPointer(t);return Yt.toHandle(r)},_gmtime_js:function(e,t){var r=new Date(1e3*G[e>>2]);G[t>>2]=r.getUTCSeconds(),G[t+4>>2]=r.getUTCMinutes(),G[t+8>>2]=r.getUTCHours(),G[t+12>>2]=r.getUTCDate(),G[t+16>>2]=r.getUTCMonth(),G[t+20>>2]=r.getUTCFullYear()-1900,G[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/864e5|0;G[t+28>>2]=n},_localtime_js:function(e,t){var r=new Date(1e3*G[e>>2]);G[t>>2]=r.getSeconds(),G[t+4>>2]=r.getMinutes(),G[t+8>>2]=r.getHours(),G[t+12>>2]=r.getDate(),G[t+16>>2]=r.getMonth(),G[t+20>>2]=r.getFullYear()-1900,G[t+24>>2]=r.getDay();var i=new Date(r.getFullYear(),0,1),n=(r.getTime()-i.getTime())/864e5|0;G[t+28>>2]=n,G[t+36>>2]=-60*r.getTimezoneOffset();var s=new Date(r.getFullYear(),6,1).getTimezoneOffset(),o=i.getTimezoneOffset(),a=0|(s!=o&&r.getTimezoneOffset()==Math.min(o,s));G[t+32>>2]=a},_mktime_js:function(e){var t=new Date(G[e+20>>2]+1900,G[e+16>>2],G[e+12>>2],G[e+8>>2],G[e+4>>2],G[e>>2],0),r=G[e+32>>2],i=t.getTimezoneOffset(),n=new Date(t.getFullYear(),0,1),s=new Date(t.getFullYear(),6,1).getTimezoneOffset(),o=n.getTimezoneOffset(),a=Math.min(o,s);if(r<0)G[e+32>>2]=Number(s!=o&&a==i);else if(r>0!=(a==i)){var d=Math.max(o,s),l=r>0?a:d;t.setTime(t.getTime()+6e4*(l-i))}G[e+24>>2]=t.getDay();var c=(t.getTime()-n.getTime())/864e5|0;return G[e+28>>2]=c,G[e>>2]=t.getSeconds(),G[e+4>>2]=t.getMinutes(),G[e+8>>2]=t.getHours(),G[e+12>>2]=t.getDate(),G[e+16>>2]=t.getMonth(),t.getTime()/1e3|0},_tzset_js:function e(t,r,i){e.called||(e.called=!0,function(e,t,r){var i=(new Date).getFullYear(),n=new Date(i,0,1),s=new Date(i,6,1),o=n.getTimezoneOffset(),a=s.getTimezoneOffset(),d=Math.max(o,a);function l(e){var t=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return t?t[1]:"GMT"}G[e>>2]=60*d,G[t>>2]=Number(o!=a);var c=l(n),u=l(s),f=J(c),h=J(u);a>2]=f,G[r+4>>2]=h):(G[r>>2]=h,G[r+4>>2]=f)}(t,r,i))},abort:function(){_e("native code called abort()")},emscripten_log:function(e,t,r){or(e,D(nr(t,r),0))},emscripten_resize_heap:function(e){var t=N.length;k((e>>>=0)>t);var r,i,n=2147483648;if(e>n)return S("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+"2147483648 bytes!"),!1;for(var s=1;s<=4;s*=2){var o=t*(1+.2/s);o=Math.min(o,e+100663296);var a=Math.min(n,(r=Math.max(e,o))+((i=65536)-r%i)%i);if(ar(a))return!0}return S("Failed to grow the heap from "+t+" bytes to "+a+" bytes, not enough memory!"),!1},environ_get:function(e,t){var r=0;return lr().forEach((function(i,n){var s=t+r;G[e+4*n>>2]=s,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(R[t>>0]=0)}(i,s),r+=i.length+1})),0},environ_sizes_get:function(e,t){var r=lr();G[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),G[t>>2]=i,0},fd_close:function(e){try{var t=Me.getStreamFromFD(e);return Pe.close(t),0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},fd_fdstat_get:function(e,t){try{var r=Me.getStreamFromFD(e),i=r.tty?2:Pe.isDir(r.mode)?3:Pe.isLink(r.mode)?7:4;return R[t>>0]=i,0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},fd_read:function(e,t,r,i){try{var n=Me.getStreamFromFD(e),s=Me.doReadv(n,t,r);return G[i>>2]=s,0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},fd_seek:function(e,t,r,i,n){try{var s=Me.getStreamFromFD(e),o=4294967296*r+(t>>>0),a=9007199254740992;return o<=-a||o>=a?-61:(Pe.llseek(s,o,i),ve=[s.position>>>0,(ye=s.position,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],G[n>>2]=ve[0],G[n+4>>2]=ve[1],s.getdents&&0===o&&0===i&&(s.getdents=null),0)}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},fd_write:function(e,t,r,i){try{var n=Me.getStreamFromFD(e),s=Me.doWritev(n,t,r);return G[i>>2]=s,0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},setTempRet0:function(e){}};!function(){var e={env:pr,wasi_snapshot_preview1:pr};function r(e,r){var i,n=e.exports;t.asm=n,k(b=t.asm.memory,"memory not found in wasm exports"),Q(b.buffer),k(te=t.asm.__indirect_function_table,"table not found in wasm exports"),i=t.asm.__wasm_call_ctors,oe.unshift(i),me("wasm-instantiate")}pe("wasm-instantiate");var i=t;function s(e){k(t===i,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),i=null,r(e.instance)}function o(t){return function(){if(!v&&(n||d)){if("function"==typeof fetch&&!we(ge))return fetch(ge,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ge+"'";return e.arrayBuffer()})).catch((function(){return Ee(ge)}));if(f)return new Promise((function(e,t){f(ge,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Ee(ge)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){S("failed to asynchronously prepare wasm: "+e),we(ge)&&S("warning: Loading from a file URI ("+ge+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),_e(e)}))}if(t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return S("Module.instantiateWasm callback failed with error: "+e),!1}v||"function"!=typeof WebAssembly.instantiateStreaming||be(ge)||we(ge)||"function"!=typeof fetch?o(s):fetch(ge,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(s,(function(e){return S("wasm streaming compile failed: "+e),S("falling back to ArrayBuffer instantiation"),o(s)}))}))}(),t.___wasm_call_ctors=Se("__wasm_call_ctors");var mr=t._free=Se("free"),_r=t._malloc=Se("malloc"),gr=t._strlen=Se("strlen"),yr=t.___errno_location=Se("__errno_location"),vr=t.___getTypeName=Se("__getTypeName");t.___embind_register_native_and_builtin_types=Se("__embind_register_native_and_builtin_types");var br=t.___stdio_exit=Se("__stdio_exit"),wr=t._emscripten_builtin_memalign=Se("emscripten_builtin_memalign"),Sr=t._emscripten_stack_init=function(){return(Sr=t._emscripten_stack_init=t.asm.emscripten_stack_init).apply(null,arguments)};t._emscripten_stack_get_free=function(){return(t._emscripten_stack_get_free=t.asm.emscripten_stack_get_free).apply(null,arguments)},t._emscripten_stack_get_base=function(){return(t._emscripten_stack_get_base=t.asm.emscripten_stack_get_base).apply(null,arguments)};var Er,Ar=t._emscripten_stack_get_end=function(){return(Ar=t._emscripten_stack_get_end=t.asm.emscripten_stack_get_end).apply(null,arguments)};function xr(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Ur(e){function r(){Er||(Er=!0,t.calledRun=!0,T||(ne(),k(!de),de=!0,t.noFSInit||Pe.init.initialized||Pe.init(),Pe.ignorePermissions=!1,Ae(oe),t.onRuntimeInitialized&&t.onRuntimeInitialized(),k(!t._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(ne(),t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),ae.unshift(e);var e;Ae(ae)}()))}le>0||(Sr(),ie(),function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),se.unshift(e);var e;Ae(se)}(),le>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),r()}),1)):r(),ne()))}if(t.stackSave=Se("stackSave"),t.stackRestore=Se("stackRestore"),t.stackAlloc=Se("stackAlloc"),t.dynCall_ijiii=Se("dynCall_ijiii"),t.dynCall_viiijj=Se("dynCall_viiijj"),t.dynCall_jij=Se("dynCall_jij"),t.dynCall_jii=Se("dynCall_jii"),t.dynCall_jiji=Se("dynCall_jiji"),t._ff_h264_cabac_tables=112940,B("intArrayFromString",!1),B("intArrayToString",!1),B("ccall",!1),B("cwrap",!1),B("setValue",!1),B("getValue",!1),B("allocate",!1),B("UTF8ArrayToString",!1),B("UTF8ToString",!1),B("stringToUTF8Array",!1),B("stringToUTF8",!1),B("lengthBytesUTF8",!1),B("stackTrace",!1),B("addOnPreRun",!1),B("addOnInit",!1),B("addOnPreMain",!1),B("addOnExit",!1),B("addOnPostRun",!1),B("writeStringToMemory",!1),B("writeArrayToMemory",!1),B("writeAsciiToMemory",!1),B("addRunDependency",!0),B("removeRunDependency",!0),B("FS_createFolder",!1),B("FS_createPath",!0),B("FS_createDataFile",!0),B("FS_createPreloadedFile",!0),B("FS_createLazyFile",!0),B("FS_createLink",!1),B("FS_createDevice",!0),B("FS_unlink",!0),B("getLEB",!1),B("getFunctionTables",!1),B("alignFunctionTables",!1),B("registerFunctions",!1),B("addFunction",!1),B("removeFunction",!1),B("prettyPrint",!1),B("dynCall",!1),B("getCompilerSetting",!1),B("print",!1),B("printErr",!1),B("getTempRet0",!1),B("setTempRet0",!1),B("callMain",!1),B("abort",!1),B("keepRuntimeAlive",!1),B("ptrToString",!1),B("zeroMemory",!1),B("stringToNewUTF8",!1),B("emscripten_realloc_buffer",!1),B("ENV",!1),B("ERRNO_CODES",!1),B("ERRNO_MESSAGES",!1),B("setErrNo",!1),B("inetPton4",!1),B("inetNtop4",!1),B("inetPton6",!1),B("inetNtop6",!1),B("readSockaddr",!1),B("writeSockaddr",!1),B("DNS",!1),B("getHostByName",!1),B("Protocols",!1),B("Sockets",!1),B("getRandomDevice",!1),B("traverseStack",!1),B("UNWIND_CACHE",!1),B("convertPCtoSourceLocation",!1),B("readAsmConstArgsArray",!1),B("readAsmConstArgs",!1),B("mainThreadEM_ASM",!1),B("jstoi_q",!1),B("jstoi_s",!1),B("getExecutableName",!1),B("listenOnce",!1),B("autoResumeAudioContext",!1),B("dynCallLegacy",!1),B("getDynCaller",!1),B("dynCall",!1),B("setWasmTableEntry",!1),B("getWasmTableEntry",!1),B("handleException",!1),B("runtimeKeepalivePush",!1),B("runtimeKeepalivePop",!1),B("callUserCallback",!1),B("maybeExit",!1),B("safeSetTimeout",!1),B("asmjsMangle",!1),B("asyncLoad",!1),B("alignMemory",!1),B("mmapAlloc",!1),B("reallyNegative",!1),B("unSign",!1),B("reSign",!1),B("formatString",!1),B("PATH",!1),B("PATH_FS",!1),B("SYSCALLS",!1),B("getSocketFromFD",!1),B("getSocketAddress",!1),B("JSEvents",!1),B("registerKeyEventCallback",!1),B("specialHTMLTargets",!1),B("maybeCStringToJsString",!1),B("findEventTarget",!1),B("findCanvasEventTarget",!1),B("getBoundingClientRect",!1),B("fillMouseEventData",!1),B("registerMouseEventCallback",!1),B("registerWheelEventCallback",!1),B("registerUiEventCallback",!1),B("registerFocusEventCallback",!1),B("fillDeviceOrientationEventData",!1),B("registerDeviceOrientationEventCallback",!1),B("fillDeviceMotionEventData",!1),B("registerDeviceMotionEventCallback",!1),B("screenOrientation",!1),B("fillOrientationChangeEventData",!1),B("registerOrientationChangeEventCallback",!1),B("fillFullscreenChangeEventData",!1),B("registerFullscreenChangeEventCallback",!1),B("registerRestoreOldStyle",!1),B("hideEverythingExceptGivenElement",!1),B("restoreHiddenElements",!1),B("setLetterbox",!1),B("currentFullscreenStrategy",!1),B("restoreOldWindowedStyle",!1),B("softFullscreenResizeWebGLRenderTarget",!1),B("doRequestFullscreen",!1),B("fillPointerlockChangeEventData",!1),B("registerPointerlockChangeEventCallback",!1),B("registerPointerlockErrorEventCallback",!1),B("requestPointerLock",!1),B("fillVisibilityChangeEventData",!1),B("registerVisibilityChangeEventCallback",!1),B("registerTouchEventCallback",!1),B("fillGamepadEventData",!1),B("registerGamepadEventCallback",!1),B("registerBeforeUnloadEventCallback",!1),B("fillBatteryEventData",!1),B("battery",!1),B("registerBatteryEventCallback",!1),B("setCanvasElementSize",!1),B("getCanvasElementSize",!1),B("demangle",!1),B("demangleAll",!1),B("jsStackTrace",!1),B("stackTrace",!1),B("getEnvStrings",!1),B("checkWasiClock",!1),B("writeI53ToI64",!1),B("writeI53ToI64Clamped",!1),B("writeI53ToI64Signaling",!1),B("writeI53ToU64Clamped",!1),B("writeI53ToU64Signaling",!1),B("readI53FromI64",!1),B("readI53FromU64",!1),B("convertI32PairToI53",!1),B("convertU32PairToI53",!1),B("dlopenMissingError",!1),B("setImmediateWrapped",!1),B("clearImmediateWrapped",!1),B("polyfillSetImmediate",!1),B("uncaughtExceptionCount",!1),B("exceptionLast",!1),B("exceptionCaught",!1),B("ExceptionInfo",!1),B("exception_addRef",!1),B("exception_decRef",!1),B("Browser",!1),B("setMainLoop",!1),B("wget",!1),B("FS",!1),B("MEMFS",!1),B("TTY",!1),B("PIPEFS",!1),B("SOCKFS",!1),B("_setNetworkCallback",!1),B("tempFixedLengthArray",!1),B("miniTempWebGLFloatBuffers",!1),B("heapObjectForWebGLType",!1),B("heapAccessShiftForWebGLHeap",!1),B("GL",!1),B("emscriptenWebGLGet",!1),B("computeUnpackAlignedImageSize",!1),B("emscriptenWebGLGetTexPixelData",!1),B("emscriptenWebGLGetUniform",!1),B("webglGetUniformLocation",!1),B("webglPrepareUniformLocationsBeforeFirstUse",!1),B("webglGetLeftBracePos",!1),B("emscriptenWebGLGetVertexAttrib",!1),B("writeGLArray",!1),B("AL",!1),B("SDL_unicode",!1),B("SDL_ttfContext",!1),B("SDL_audio",!1),B("SDL",!1),B("SDL_gfx",!1),B("GLUT",!1),B("EGL",!1),B("GLFW_Window",!1),B("GLFW",!1),B("GLEW",!1),B("IDBStore",!1),B("runAndAbortIfError",!1),B("InternalError",!1),B("BindingError",!1),B("UnboundTypeError",!1),B("PureVirtualError",!1),B("init_embind",!1),B("throwInternalError",!1),B("throwBindingError",!1),B("throwUnboundTypeError",!1),B("ensureOverloadTable",!1),B("exposePublicSymbol",!1),B("replacePublicSymbol",!1),B("extendError",!1),B("createNamedFunction",!1),B("registeredInstances",!1),B("getBasestPointer",!1),B("registerInheritedInstance",!1),B("unregisterInheritedInstance",!1),B("getInheritedInstance",!1),B("getInheritedInstanceCount",!1),B("getLiveInheritedInstances",!1),B("registeredTypes",!1),B("awaitingDependencies",!1),B("typeDependencies",!1),B("registeredPointers",!1),B("registerType",!1),B("whenDependentTypesAreResolved",!1),B("embind_charCodes",!1),B("embind_init_charCodes",!1),B("readLatin1String",!1),B("getTypeName",!1),B("heap32VectorToArray",!1),B("requireRegisteredType",!1),B("getShiftFromSize",!1),B("integerReadValueFromPointer",!1),B("enumReadValueFromPointer",!1),B("floatReadValueFromPointer",!1),B("simpleReadValueFromPointer",!1),B("runDestructors",!1),B("new_",!1),B("craftInvokerFunction",!1),B("embind__requireFunction",!1),B("tupleRegistrations",!1),B("structRegistrations",!1),B("genericPointerToWireType",!1),B("constNoSmartPtrRawPointerToWireType",!1),B("nonConstNoSmartPtrRawPointerToWireType",!1),B("init_RegisteredPointer",!1),B("RegisteredPointer",!1),B("RegisteredPointer_getPointee",!1),B("RegisteredPointer_destructor",!1),B("RegisteredPointer_deleteObject",!1),B("RegisteredPointer_fromWireType",!1),B("runDestructor",!1),B("releaseClassHandle",!1),B("finalizationRegistry",!1),B("detachFinalizer_deps",!1),B("detachFinalizer",!1),B("attachFinalizer",!1),B("makeClassHandle",!1),B("init_ClassHandle",!1),B("ClassHandle",!1),B("ClassHandle_isAliasOf",!1),B("throwInstanceAlreadyDeleted",!1),B("ClassHandle_clone",!1),B("ClassHandle_delete",!1),B("deletionQueue",!1),B("ClassHandle_isDeleted",!1),B("ClassHandle_deleteLater",!1),B("flushPendingDeletes",!1),B("delayFunction",!1),B("setDelayFunction",!1),B("RegisteredClass",!1),B("shallowCopyInternalPointer",!1),B("downcastPointer",!1),B("upcastPointer",!1),B("validateThis",!1),B("char_0",!1),B("char_9",!1),B("makeLegalFunctionName",!1),B("emval_handle_array",!1),B("emval_free_list",!1),B("emval_symbols",!1),B("init_emval",!1),B("count_emval_handles",!1),B("get_first_emval",!1),B("getStringOrSymbol",!1),B("Emval",!1),B("emval_newers",!1),B("craftEmvalAllocator",!1),B("emval_get_global",!1),B("emval_methodCallers",!1),B("emval_registeredMethods",!1),B("warnOnce",!1),B("stackSave",!1),B("stackRestore",!1),B("stackAlloc",!1),B("AsciiToString",!1),B("stringToAscii",!1),B("UTF16ToString",!1),B("stringToUTF16",!1),B("lengthBytesUTF16",!1),B("UTF32ToString",!1),B("stringToUTF32",!1),B("lengthBytesUTF32",!1),B("allocateUTF8",!1),B("allocateUTF8OnStack",!1),t.writeStackCookie=ie,t.checkStackCookie=ne,U("ALLOC_NORMAL",!1),U("ALLOC_STACK",!1),ue=function e(){Er||Ur(),Er||(ue=e)},t.run=Ur,t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();Ur(),e.exports=t})),u=1e-6,f="undefined"!=typeof Float32Array?Float32Array:Array;function h(){var e=new f(16);return f!=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 p(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 m,_=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 g(e,t,r){var i=new f(3);return i[0]=e,i[1]=t,i[2]=r,i}m=new f(3),f!=Float32Array&&(m[0]=0,m[1]=0,m[2]=0);var y=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=c(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=c(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 i={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")}},n=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}}(),s=l(),o=l(),a=l(),d=l();function l(){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 c(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 f(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 s=h();_(s,-1,1,-1,1,.1,100);const l=h();p(l);const c=h();!function(e,t,r,i){var n,s,o,a,d,l,c,f,h,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Yt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],qt=Yt,Kt=Yt;function Xt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Zt(e){return Jt(e)&&e[1]===Lt}function Jt(e){return e[0]>>4===We}const Qt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function er(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,o=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Qt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let a=Qt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(o=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Wt.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),o=s-3):(i=2,r=new Array(2),o=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),o=s):(i=5,o=s,r=new Array(4),s>=6?o=s-3:1===d&&(i=2,r=new Array(2),o=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&o)>>>1,r[2]=(1&o)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:a,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class tr{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],o=(192&e[r+2])>>>6,a=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let f=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=f,0!==i&&1!==i||0!==n)continue;let h=e.subarray(r,r+u);t={},t.audio_object_type=o+1,t.sampling_freq_index=a,t.sampling_frequency=qt[a],t.channel_config=d,t.data=h}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class rr{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new jt(t.subarray(i+3,i+3+n)),o=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}o=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let a=s.readBits(3);if(0!==a){console.error(`frameLengthType = ${a}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),o={},o.audio_object_type=r,o.sampling_freq_index=i,o.sampling_frequency=qt[o.sampling_freq_index],o.channel_config=n,o.other_data_present=d}let a=0;for(;;){let e=s.readByte();if(a+=e,255!==e)break}let d=new Uint8Array(a);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function nr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 sr(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++;return{payload:e.subarray(i),type:n,size:s,uuid:o}}function or(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 ar(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 dr(){return(new Date).getTime()}function lr(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function cr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function ur(e){let t=0,r=cr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=cr(),o=s-r;o>=1e3&&(e(t/o*1e3),r=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){}})();function fr(e){return null==e}function hr(e){return!fr(e)}function pr(e){return"function"==typeof e}function mr(e){let t=null,r=31&e[0];return r!==Ke&&r!==Xe||(t=$e),t||(r=(126&e[0])>>1,r!==ct&&r!==ft&&r!==pt||(t=Ve)),t}function _r(){return"undefined"!=typeof WritableStream}function gr(e){e.close()}function yr(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 vr(e){return e.ok&&e.status>=200&&e.status<=299}function br(){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}(D)}function wr(e){return e[0]>>4===It&&e[1]===Lt}function Sr(e){return!0===e||"true"===e}function Er(e){return!0!==e&&"true"!==e}function Ar(){return!!(Wt.Worker&&Wt.MediaSource&&"canConstructInDedicatedWorker"in Wt.MediaSource&&!0===Wt.MediaSource.canConstructInDedicatedWorker)}function xr(e,t){const r=nr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===nt||r===ot||r===dt)||Er(t)&&r===Ze)&&(i=!0)})),i}var Ur=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 Br=Symbol(32),Tr=Symbol(16),kr=Symbol(8);class Cr{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 Ur(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(Br)}readU16(){return this.read(Tr)}readU8(){return this.read(kr)}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===Br){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Tr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===kr){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}}Cr.U32=Br,Cr.U16=Tr,Cr.U8=kr;class Dr{constructor(e){this.log=function(t){if(e._opt.debugLevel==U){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=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=Lr._ebsp2rbsp(e),r=new jt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Lr.getProfileString(i),o=Lr.getLevelString(n),a=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,x=2*e,S=A/x}}let U=1;1===b&&1===w||(U=b/w);let B=0,T=0;if(0===a)B=1,T=2-m;else{B=3===a?1:2,T=(1===a?2:1)*(2-m)}let k=16*(h+1),C=16*(p+1)*(2-m);k-=(_+g)*B,C-=(y+v)*T;let D=Math.ceil(k*U);return r.destroy(),r=null,{profile_string:s,level_string:o,bit_depth:c,ref_frames:f,chroma_format:d,chroma_format_string:Lr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:x,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,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=Lr._ebsp2rbsp(e),n=new jt(i);n.readByte();let s=n.readByte();n.readByte();let o=n.readByte();n.readUEG();let a=Lr.getProfileString(s),d=Lr.getLevelString(o),l=1,c=420,u=[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&&(c=u[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?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=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);U=n.readBool(),B=t,T=2*e,x=B/T}}let k=1;1===E&&1===A||(k=E/A);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 L=16*(_+1),I=16*(g+1)*(2-y);L-=(v+b)*C,I-=(w+S)*D;let F=Math.ceil(L*k);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:c,chroma_format_string:Lr.getChromaFormatString(c),frame_rate:{fixed:U,fps:x,fps_den:T,fps_num:B},sar_ratio:{width:E,height:A},codec_size:{width:L,height:I},present_size:{width:F,height:I}}}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 Pr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Mr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Lr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let o=new Uint8Array(i);o[0]=1,o[1]=t[1],o[2]=t[2],o[3]=t[3],o[4]=255,o[5]=225;let a=t.byteLength;o[6]=a>>>8,o[7]=255&a;let d=8;o.set(t,8),d+=a,o[d]=1;let l=r.byteLength;o[d+1]=l>>>8,o[d+2]=255&l,o.set(r,d+3),d+=3+l,n&&(o[d]=252|s.chroma_format_idc,o[d+1]=248|s.bit_depth_luma-8,o[d+2]=248|s.bit_depth_chroma-8,o[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+o.byteLength);return u.set(c,0),u.set(o,c.length),u}function Rr(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}function Nr(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 zr(e){return 31&e[0]}function Or(e){return e===et}function Gr(e){return!function(e){return e===Ke||e===Xe}(e)&&!Or(e)}function Hr(e){return e===Ze}function $r(e){if(0===e.length)return!1;const t=zr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=it||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Wr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const jr=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)},Yr=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"}};class qr{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 parseVPS(e){let t=qr._ebsp2rbsp(e),r=new jt(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()}}static parseSPS(e){let t=qr._ebsp2rbsp(e),r=new jt(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(),c=r.readBits(5),u=r.readByte(),f=r.readByte(),h=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(F=t[e-1],P=i[e-1]):255===e&&(F=r.readBits(16),P=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(),L=r.readBool(),L&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),N=r.readBits(32),r.readBool()&&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();M=n;let s=!0,o=1;n||(s=r.readBool());let a=!1;if(s?r.readUEG():a=r.readBool(),a||(o=r.readUEG()+1),e){for(let e=0;e>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)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{let t=jr(e),r=new jt(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()}})(t),o=(e=>{let t=jr(e),r=new jt(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(),c=r.readBits(5),u=r.readByte(),f=r.readByte(),h=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(F=t[e-1],P=i[e-1]):255===e&&(F=r.readBits(16),P=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),L=r.readBool(),L&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),o+=r.readUEG()),r.readBool()&&(R=r.readBits(32),N=r.readBits(32),r.readBool()&&(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();M=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=jr(e),r=new jt(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}})(r);n=Object.assign(n,s,o,a);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|ct,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|ft,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|pt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Qr(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}function ei(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 ti(e){return(126&e[0])>>1}function ri(e){return e===_t}function ii(e){return!function(e){return e>=32&&e<=40}(e)}function ni(e){return e>=16&&e<=21}function si(e){if(0===e.length)return!1;const t=ti(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class ai{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function di(e){return parseInt(e)===e}function li(e){if(!di(e.length))return!1;for(var t=0;t255)return!1;return!0}function ci(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(!li(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(di(e.length)&&li(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function ui(e){return new Uint8Array(e)}function fi(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 hi,pi={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("")}},mi=(hi="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+hi[15&i])}return t.join("")}}),_i={16:10,24:12,32:14},gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ei=[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],Ai=[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],xi=[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],Ui=[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],Bi=[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],Ti=[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],ki=[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],Ci=[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],Di=[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 Li(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^yi[o>>8&255]<<16^yi[255&o]<<8^yi[o>>24&255]^gi[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^yi[o>>16&255]<<16^yi[o>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^ki[o>>16&255]^Ci[o>>8&255]^Di[255&o]},Ii.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=Li(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^wi[i[(n+1)%4]>>16&255]^Si[i[(n+2)%4]>>8&255]^Ei[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var o,a=ui(16);for(n=0;n<4;n++)o=this._Ke[t][n],a[4*n]=255&(yi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(yi[i[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(yi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(yi[255&i[(n+3)%4]]^o);return a},Ii.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=Li(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^xi[i[(n+3)%4]>>16&255]^Ui[i[(n+2)%4]>>8&255]^Bi[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var o,a=ui(16);for(n=0;n<4;n++)o=this._Kd[t][n],a[4*n]=255&(vi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(vi[i[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(vi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(vi[255&i[(n+1)%4]]^o);return a};var Fi=function(e){if(!(this instanceof Fi))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ii(e)};Fi.prototype.encrypt=function(e){if((e=ci(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=ui(e.length),r=ui(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)},Ni.prototype.setBytes=function(e){if(16!=(e=ci(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ni.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var zi=function(e,t){if(!(this instanceof zi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ni||(t=new Ni(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ii(e)};zi.prototype.encrypt=function(e){for(var t=ci(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=o<<24-(i+s)%4*8}else for(var a=0;a>>2]=r[a>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=l.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new c.init(r,t/2)}},h=u.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new c.init(r,t)}},p=u.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},m=o.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,o=this.blockSize,a=s/(4*o),d=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,l=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,o=0;o>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,a=0;a<4&&s+.75*a>>6*(3-a)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,d=0;d<4&&o+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var o=0;o>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,o=e[t+0],d=e[t+1],h=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],x=e[t+14],U=e[t+15],B=s[0],T=s[1],k=s[2],C=s[3];B=l(B,T,k,C,o,7,a[0]),C=l(C,B,T,k,d,12,a[1]),k=l(k,C,B,T,h,17,a[2]),T=l(T,k,C,B,p,22,a[3]),B=l(B,T,k,C,m,7,a[4]),C=l(C,B,T,k,_,12,a[5]),k=l(k,C,B,T,g,17,a[6]),T=l(T,k,C,B,y,22,a[7]),B=l(B,T,k,C,v,7,a[8]),C=l(C,B,T,k,b,12,a[9]),k=l(k,C,B,T,w,17,a[10]),T=l(T,k,C,B,S,22,a[11]),B=l(B,T,k,C,E,7,a[12]),C=l(C,B,T,k,A,12,a[13]),k=l(k,C,B,T,x,17,a[14]),B=c(B,T=l(T,k,C,B,U,22,a[15]),k,C,d,5,a[16]),C=c(C,B,T,k,g,9,a[17]),k=c(k,C,B,T,S,14,a[18]),T=c(T,k,C,B,o,20,a[19]),B=c(B,T,k,C,_,5,a[20]),C=c(C,B,T,k,w,9,a[21]),k=c(k,C,B,T,U,14,a[22]),T=c(T,k,C,B,m,20,a[23]),B=c(B,T,k,C,b,5,a[24]),C=c(C,B,T,k,x,9,a[25]),k=c(k,C,B,T,p,14,a[26]),T=c(T,k,C,B,v,20,a[27]),B=c(B,T,k,C,A,5,a[28]),C=c(C,B,T,k,h,9,a[29]),k=c(k,C,B,T,y,14,a[30]),B=u(B,T=c(T,k,C,B,E,20,a[31]),k,C,_,4,a[32]),C=u(C,B,T,k,v,11,a[33]),k=u(k,C,B,T,S,16,a[34]),T=u(T,k,C,B,x,23,a[35]),B=u(B,T,k,C,d,4,a[36]),C=u(C,B,T,k,m,11,a[37]),k=u(k,C,B,T,y,16,a[38]),T=u(T,k,C,B,w,23,a[39]),B=u(B,T,k,C,A,4,a[40]),C=u(C,B,T,k,o,11,a[41]),k=u(k,C,B,T,p,16,a[42]),T=u(T,k,C,B,g,23,a[43]),B=u(B,T,k,C,b,4,a[44]),C=u(C,B,T,k,E,11,a[45]),k=u(k,C,B,T,U,16,a[46]),B=f(B,T=u(T,k,C,B,h,23,a[47]),k,C,o,6,a[48]),C=f(C,B,T,k,y,10,a[49]),k=f(k,C,B,T,x,15,a[50]),T=f(T,k,C,B,_,21,a[51]),B=f(B,T,k,C,E,6,a[52]),C=f(C,B,T,k,p,10,a[53]),k=f(k,C,B,T,w,15,a[54]),T=f(T,k,C,B,d,21,a[55]),B=f(B,T,k,C,v,6,a[56]),C=f(C,B,T,k,U,10,a[57]),k=f(k,C,B,T,g,15,a[58]),T=f(T,k,C,B,A,21,a[59]),B=f(B,T,k,C,m,6,a[60]),C=f(C,B,T,k,S,10,a[61]),k=f(k,C,B,T,h,15,a[62]),T=f(T,k,C,B,b,21,a[63]),s[0]=s[0]+B|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),o=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,d=a.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return a},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,o){var a=e+(t&r|~t&i)+n+o;return(a<>>32-s)+t}function c(e,t,r,i,n,s,o){var a=e+(t&i|r&~i)+n+o;return(a<>>32-s)+t}function u(e,t,r,i,n,s,o){var a=e+(t^r^i)+n+o;return(a<>>32-s)+t}function f(e,t,r,i,n,s,o){var a=e+(r^(t|~i))+n+o;return(a<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),l((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Gi).lib,n=i.WordArray,s=i.Hasher,o=r.algo,a=[],d=o.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],d=r[4],l=0;l<80;l++){if(l<16)a[l]=0|e[t+l];else{var c=a[l-3]^a[l-8]^a[l-14]^a[l-16];a[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+a[l];u+=l<20?1518500249+(n&s|~n&o):l<40?1859775393+(n^s^o):l<60?(n&s|n&o|s&o)-1894007588:(n^s^o)-899497514,d=o,o=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),l((function(e,t){var r;e.exports=(r=Gi,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(a[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=o.SHA256=s.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],f=r[7],h=0;h<64;h++){if(h<16)l[h]=0|e[t+h];else{var p=l[h-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[h-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[h]=m+l[h-7]+g+l[h-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&c^~a&u)+d[h]+l[h];f=u,u=c,c=a,a=o+b|0,o=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+a|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+f|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),l((function(e,t){var r,i,n,s,o,a;e.exports=(i=(r=a=Gi).lib.WordArray,n=r.algo,s=n.SHA256,o=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(o),r.HmacSHA224=s._createHmacHelper(o),a.SHA224)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,o=e.algo;function a(){return n.create.apply(n,arguments)}var d=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=a()}();var c=o.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],f=r[7],h=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=o.high,b=o.low,w=a.high,S=a.low,E=c.high,A=c.low,x=u.high,U=u.low,B=f.high,T=f.low,k=h,C=p,D=m,L=_,I=g,F=y,P=v,M=b,R=w,N=S,z=E,O=A,G=x,H=U,$=B,V=T,W=0;W<80;W++){var j,Y,q=l[W];if(W<16)Y=q.high=0|e[t+2*W],j=q.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[W-7],oe=se.high,ae=se.low,de=l[W-16],le=de.high,ce=de.low;Y=(Y=(Y=J+oe+((j=Q+ae)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),q.high=Y,q.low=j}var ue,fe=R&z^~R&G,he=N&O^~N&H,pe=k&D^k&I^D&I,me=C&L^C&F^L&F,_e=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(R>>>14|N<<18)^(R>>>18|N<<14)^(R<<23|N>>>9),ve=(N>>>14|R<<18)^(N>>>18|R<<14)^(N<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=$+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;$=G,V=H,G=z,H=O,z=R,O=N,R=P+(Ee=(Ee=(Ee=Ee+fe+((ue+=he)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+Y+((ue+=j)>>>0>>0?1:0))+((N=M+ue|0)>>>0>>0?1:0)|0,P=I,M=F,I=D,F=L,D=k,L=C,k=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=h+k+(p>>>0>>0?1:0),_=n.low=_+L,n.high=m+D+(_>>>0>>0?1:0),y=s.low=y+F,s.high=g+I+(y>>>0>>0?1:0),b=o.low=b+M,o.high=v+P+(b>>>0>>0?1:0),S=a.low=S+N,a.high=w+R+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+z+(A>>>0>>0?1:0),U=u.low=U+H,u.high=x+G+(U>>>0>>0?1:0),T=f.low=T+V,f.high=B+$+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),l((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Gi).x64,n=i.Word,s=i.WordArray,o=r.algo,a=o.SHA512,d=o.SHA384=a.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=a._createHelper(d),r.HmacSHA384=a._createHmacHelper(d),l.SHA384)})),l((function(e,t){var r;e.exports=(r=Gi,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.x64.Word,a=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var a=0,u=0,f=0;f<7;f++){if(1&n){var h=(1<>>24)|4278255360&(s<<24|s>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),(T=r[n]).high^=o,T.low^=s}for(var a=0;a<24;a++){for(var f=0;f<5;f++){for(var h=0,p=0,m=0;m<5;m++)h^=(T=r[f+5*m]).high,p^=T.low;var _=u[f];_.high=h,_.low=p}for(f=0;f<5;f++){var g=u[(f+4)%5],y=u[(f+1)%5],v=y.high,b=y.low;for(h=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(T=r[f+5*m]).high^=h,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(h=S<>>32-A,p=E<>>32-A):(h=E<>>64-A,p=S<>>64-A);var x=u[l[w]];x.high=h,x.low=p}var U=u[0],B=r[0];for(U.high=B.high,U.low=B.low,f=0;f<5;f++)for(m=0;m<5;m++){var T=r[w=f+5*m],k=u[w],C=u[(f+1)%5+5*m],D=u[(f+2)%5+5*m];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var L=c[a];T.high^=L.high,T.low^=L.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var o=this._state,a=this.cfg.outputLength/8,d=a/8,l=[],c=0;c>>24)|4278255360&(f<<24|f>>>8),h=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8),l.push(h),l.push(f)}return new n.init(l,a)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(f),t.HmacSHA3=s._createHmacHelper(f)}(Math),r.SHA3)})),l((function(e,t){var r;e.exports=(r=Gi,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),f=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=o.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,o,h,b,w,S,E,A,x,U,B,T=this._hash.words,k=u.words,C=f.words,D=a.words,L=d.words,I=l.words,F=c.words;for(S=s=T[0],E=o=T[1],A=h=T[2],x=b=T[3],U=w=T[4],r=0;r<80;r+=1)B=s+e[t+D[r]]|0,B+=r<16?p(o,h,b)+k[0]:r<32?m(o,h,b)+k[1]:r<48?_(o,h,b)+k[2]:r<64?g(o,h,b)+k[3]:y(o,h,b)+k[4],B=(B=v(B|=0,I[r]))+w|0,s=w,w=b,b=v(h,10),h=o,o=B,B=S+e[t+L[r]]|0,B+=r<16?y(E,A,x)+C[0]:r<32?g(E,A,x)+C[1]:r<48?_(E,A,x)+C[2]:r<64?m(E,A,x)+C[3]:p(E,A,x)+C[4],B=(B=v(B|=0,F[r]))+U|0,S=U,U=x,x=v(A,10),A=E,E=B;B=T[1]+h+x|0,T[1]=T[2]+b+U|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+o+A|0,T[0]=B},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,o=0;o<5;o++){var a=s[o];s[o]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(h),t.HmacRIPEMD160=s._createHmacHelper(h)}(),r.RIPEMD160)})),l((function(e,t){var r,i,n;e.exports=(i=(r=Gi).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),o=this._iKey=t.clone(),a=s.words,d=o.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:h,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),o=n.cfg;return m.create({ciphertext:s,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)o=l.create({keySize:t+r,hasher:n}).compute(e,i);else var o=l.create({keySize:t+r}).compute(e,i);var a=s.create(o.words.slice(t),4*r);return o.sigBytes=4*t,m.create({key:o,iv:a,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),l((function(e,t){var r;e.exports=((r=Gi).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var o=0;o>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,o=this._counter;s&&(o=this._counter=s.slice(0),this._iv=void 0),i(o);var a=o.slice(0);r.encryptBlock(a,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),l((function(e,t){var r;e.exports=((r=Gi).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),l((function(e,t){var r;e.exports=((r=Gi).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),l((function(e,t){var r;e.exports=((r=Gi).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),l((function(e,t){var r;e.exports=((r=Gi).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),l((function(e,t){var r;e.exports=(r=Gi,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],o=[],a=[],d=[],l=[],c=[],u=[],f=[],h=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;o[r]=y<<24|y>>>8,a[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,f[p]=y<<8|y>>>24,h[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],o=0;o6&&o%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[o/r|0]<<24),s[o]=s[o-r]^l);for(var a=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^f[n[l>>>8&255]]^h[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,f,h,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,o,a){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],f=e[t+3]^r[3],h=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^o[255&f]^r[h++],_=i[c>>>24]^n[u>>>16&255]^s[f>>>8&255]^o[255&l]^r[h++],g=i[u>>>24]^n[f>>>16&255]^s[l>>>8&255]^o[255&c]^r[h++],y=i[f>>>24]^n[l>>>16&255]^s[c>>>8&255]^o[255&u]^r[h++];l=m,c=_,u=g,f=y}m=(a[l>>>24]<<24|a[c>>>16&255]<<16|a[u>>>8&255]<<8|a[255&f])^r[h++],_=(a[c>>>24]<<24|a[u>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^r[h++],g=(a[u>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&c])^r[h++],y=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[c>>>8&255]<<8|a[255&u])^r[h++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=o[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(a[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(a[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],f.call(this,4,252645135),f.call(this,16,65535),h.call(this,2,858993459),h.call(this,8,16711935),f.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,o=this._rBlock,a=0,d=0;d<8;d++)a|=l[d][((o^n[d])&c[d])>>>0];this._lBlock=o,this._rBlock=s^a}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,f.call(this,1,1431655765),h.call(this,8,16711935),h.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function f(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var o=n%r,a=t[o>>>2]>>>24-o%4*8&255;s=(s+i[n]+a)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var o=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(o)}(),r.RC4)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,f=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=f,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=f,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=t._createHelper(a)}(),r.Rabbit)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,f=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=f,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=f,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=t._createHelper(a)}(),r.RabbitLegacy)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],o=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var a={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,o=e.sbox[0][r]+e.sbox[1][i];return o^=e.sbox[2][n],o+=e.sbox[3][s],o}function l(e,t,r){let i,s=t,o=r;for(let t=0;t1;--t)s^=e.pbox[t],o=d(e,s)^o,i=s,s=o,o=i;return i=s,s=o,o=i,o^=e.pbox[1],s^=e.pbox[0],{left:s,right:o}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=o[t][r]}let i=0;for(let o=0;o=r&&(i=0);let a=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=e.slice(s+4+2,s+4+o);let n=new Oi.ModeOfOperation.ctr(t,new Oi.Counter(r));const a=n.decrypt(i);n=null,e.set(a,s+4+2)}s=s+4+o}return e}function Vi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Oi.ModeOfOperation.ctr(t,new Oi.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}l((function(e,t){e.exports=Gi}));var Wi=l((function(e,t){var r,n,s,o=(r=new Date,n=4,s={setLogLevel:function(e){n=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>=n&&console.debug("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);o.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+="["+o.getDurationString(e.start(i))+","+o.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=o;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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),o=new Uint8Array(r,i,n);s.set(o)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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,o.debug("MultiBufferStream","Stream ready for parsing"),!0):(o.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(o.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){o.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},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}o.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)),o.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,s)}}t&&(o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,a=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?o.info:o.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(o.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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 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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){f.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){f.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){f.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},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,r=0;rr?(o.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:f.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):0!==l&&a+l>e.getEndPosition()?(e.seek(a),o.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:f.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):t?{code:f.OK,type:c,size:l,hdr_size:d,start:a}:(f[c+"Box"]?i=new f[c+"Box"](l):"uuid"!==c?(o.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new f.Box(c,l)).has_unparsed_data=!0):f.UUIDBoxes[s]?i=new f.UUIDBoxes[s](l):(o.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new f.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=a,i.write===f.Box.prototype.write&&"mdat"!==i.type&&(o.info("BoxParser","'"+u+"' 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?(o.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(o.error("BoxParser","Parsing of box '"+u+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:f.OK,box:i,size:i.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,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)},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,"dav1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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 r=0;r<3;r++)this.layer_size[r]=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)o.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 o.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else o.error("av1C reserved_1 parsing problem");else o.error("av1C version "+this.version+" not supported")})),f.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))})),f.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),f.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),f.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),f.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))})),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,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})),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 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())}})),f.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(", ")+")"})),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[r]=e.readString(4),t-=4,r++})),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,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})),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),o.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,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}}})),f.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:o.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()})),h.prototype.toString=function(){return"("+this.x+","+this.y+")"},f.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new h(e.readUint16(),e.readUint16()),this.display_primaries[1]=new h(e.readUint16(),e.readUint16()),this.display_primaries[2]=new h(e.readUint16(),e.readUint16()),this.white_point=new h(e.readUint16(),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&&(o.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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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 r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),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 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})),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)o.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){o.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){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("tscl",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("vipr",(function(e){o.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(),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})),f.createFullBoxCtor("senc"),f.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),o.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}})),f.SingleItemTypeReferenceBox=function(e,t,r,i){f.Box.call(this,e,t),this.hdr_size=r,this.start=i},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 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=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 r=e.readUint32(),i=0;i>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,r,i){f.Box.call(this,e,t),this.hdr_size=r,this.start=i},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,r;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 r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),f.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),f.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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,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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var o=i.extract_bits(1);this.ptl_sublayer_present_mask|=o<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=f.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="."+f.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}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 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},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(),r=this.esds.esd.getAudioConfig();return e+"."+f.decimalToHex(t)+(r?"."+r:"")}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 r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},f.av01SampleEntry.prototype.getCodec=function(){var e,t=f.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},f.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),o.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)},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[r]instanceof f.Box||t[r]instanceof f.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||f.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},f.boxEqual=function(e,t){if(!f.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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 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]&&o.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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?(o.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(o.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(o.warn("ISOFile","Not ready to start parsing"),!1))},g.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&&(o.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),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(o.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),o.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)&&(o.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*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 s=r.samples[l].offset+r.samples[l].alreadyRead,o.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+o.getDurationString(e,a)+" and offset: "+s),{offset:s,time:e/a}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-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 u=new f.avcCBox;u.parse(new a(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var h=new f.hvcCBox;h.parse(new a(t.hevcDecoderConfigRecord)),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 f["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}},f.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new f.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",f.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.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]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.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,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,o?(t>=w&&(S++,w<0&&(w=0),w+=o.sample_counts[S]),U.cts=e.samples[t].dts+o.sample_offsets[S]):U.cts=U.dts,a?(t==a.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[A].sample_delta+x==t+1&&(U.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta,A++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=f?f.priority[t]:0,l&&l.entries[A].sample_delta+x==t&&(U.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,o,a,d,l,c,u,h,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&f.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=o,_.flags&f.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&f.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&f.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&f.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&f.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:a,p.offset=0===t&&0===r?b?w+_.data_offset:w:a,a=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return o.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+")"),d.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===s)return null;o.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&f.property_index-1-1))return null;var a=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=a))return o.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+a+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,a),n.alreadyRead+=a,r.alreadyRead+=a,t.usedBytes+=a,this.stream.logBufferLevel(),null;o.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},f.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function ji(e){return e.reduce(((e,t)=>256*e+t))}function Yi(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]))}Wi.Log,Wi.MP4BoxStream,Wi.DataStream,Wi.MultiBufferStream,Wi.MPEG4DescriptorParser,Wi.BoxParser,Wi.XMLSubtitlein4Parser,Wi.Textin4Parser,Wi.ISOFile,Wi.createFile;class qi{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],Yi(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}}function Ki(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Xi=16,Zi=[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],Ji=[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 Qi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function tn(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}function rn(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("")}function nn(e,t){const r=31&t;return e<>>32-r}function sn(e){return(255&Zi[e>>>24&255])<<24|(255&Zi[e>>>16&255])<<16|(255&Zi[e>>>8&255])<<8|255&Zi[255&e]}function on(e){return e^nn(e,2)^nn(e,10)^nn(e,18)^nn(e,24)}function an(e){return e^nn(e,13)^nn(e,23)}function dn(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]^=on(sn(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=on(sn(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=on(sn(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=on(sn(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 ln(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Ji[r+0],t[r+0]=i[0]^=an(sn(e)),e=i[2]^i[3]^i[0]^Ji[r+1],t[r+1]=i[1]^=an(sn(e)),e=i[3]^i[0]^i[1]^Ji[r+2],t[r+2]=i[2]^=an(sn(e)),e=i[0]^i[1]^i[2]^Ji[r+3],t[r+3]=i[3]^=an(sn(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function cn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:o="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=Qi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Qi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?tn(e):Qi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Xi-e.length%Xi;for(let r=0;r=Xi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),o=5;for(;on){const t=new Uint8Array(s.length+e.length-o);t.set(s,0),t.set(e.slice(o),s.length),s=t;break}let l=e[o+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=cn(e.slice(o+4+u,o+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(o+4,o+4+u),0);const a=or(Ki(n,new Uint8Array(r))),l=new Uint8Array(s.length+a.length);l.set(s,0),l.set(a,s.length),s=l}else{const t=e.slice(o+4,o+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(a,s.length),r.set(t,s.length+4),s=r}o=o+4+d}return s}const hn={init:0,findFirstStartCode:1,findSecondStartCode:2};class pn extends class{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(){i.off(e,n);for(var s=arguments.length,o=new Array(s),a=0;a1?r-1:0),n=1;n{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=hn.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==hn.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=hn.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==hn.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=hn.findFirstStartCode}}}}function mn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=mn(e.slice(s+4,s+4+o),t,r);e.set(i,s+4)}s=s+4+o}return e}function yn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class vn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{pr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class bn{static init(){bn.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 bn.types)bn.types.hasOwnProperty(e)&&(bn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=bn.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 bn.box(bn.types.trak,bn.tkhd(e),bn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return bn.box(bn.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 bn.box(bn.types.mdia,bn.mdhd(e),bn.hdlr(e),bn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return bn.box(bn.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?bn.constants.HDLR_AUDIO:bn.constants.HDLR_VIDEO,bn.box(bn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?bn.box(bn.types.smhd,bn.constants.SMHD):bn.box(bn.types.vmhd,bn.constants.VMHD),bn.box(bn.types.minf,t,bn.dinf(),bn.stbl(e))}static dinf(){return bn.box(bn.types.dinf,bn.box(bn.types.dref,bn.constants.DREF))}static stbl(e){return bn.box(bn.types.stbl,bn.stsd(e),bn.box(bn.types.stts,bn.constants.STTS),bn.box(bn.types.stsc,bn.constants.STSC),bn.box(bn.types.stsz,bn.constants.STSZ),bn.box(bn.types.stco,bn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?bn.box(bn.types.stsd,bn.constants.STSD_PREFIX,bn.mp3(e)):bn.box(bn.types.stsd,bn.constants.STSD_PREFIX,bn.mp4a(e)):"avc"===e.videoType?bn.box(bn.types.stsd,bn.constants.STSD_PREFIX,bn.avc1(e)):bn.box(bn.types.stsd,bn.constants.STSD_PREFIX,bn.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 bn.box(bn.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 bn.box(bn.types.mp4a,i,bn.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 bn.box(bn.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 bn.box(bn.types.avc1,n,bn.box(bn.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 bn.box(bn.types.hvc1,n,bn.box(bn.types.hvcC,t))}static mvex(e){return bn.box(bn.types.mvex,bn.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 bn.box(bn.types.trex,r)}static moof(e,t){return bn.box(bn.types.moof,bn.mfhd(e.sequenceNumber),bn.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 bn.box(bn.types.mfhd,t)}static traf(e,t){let r=e.id,i=bn.box(bn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=bn.box(bn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=bn.sdtp(e),o=bn.trun(e,s.byteLength+16+16+8+16+8+8);return bn.box(bn.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,bn.box(bn.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),bn.box(bn.types.trun,r)}static mdat(e){return bn.box(bn.types.mdat,e)}}bn.init();var wn,Sn=l((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(wn=Sn)&&wn.__esModule&&Object.prototype.hasOwnProperty.call(wn,"default")&&wn.default;const En=[44100,48e3,32e3,0],An=[22050,24e3,16e3,0],xn=[11025,12e3,8e3,0],Un=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Bn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Tn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function kn(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,o=(12&t[2])>>>2,a=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=xn[o];break;case 2:d=An[o];break;case 3:d=En[o]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),o=n-3):(i=2,t=new Array(2),o=n):-1!==a.indexOf("android")?(i=2,t=new Array(2),o=n):(i=5,o=n,t=new Array(4),n>=6?o=n-3:1===s&&(i=2,t=new Array(2),o=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&o)>>>1,t[2]=(1&o)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Vn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Yn{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function qn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Kn=new Array(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),Xn=new Array(2746333894,1453994832,1736282519,2993693404),Zn=new Array(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 Jn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function es(e,t){return t+3>>19)^(i<<23|i>>>9)}function is(e,t){var r=new Array(36);r[0]=es(t,0),r[1]=es(t,4),r[2]=es(t,8),r[3]=es(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^ns(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function ss(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=ts(e),n=Math.ceil(r.length/16),s=new Array(r.length),o=t.slice(),a=0;a3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let o=5;for(;os)break;let d=e[o+4],l=!1,c=2;if(i?(n&&(c=3),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=ss(t,r,e.slice(o+4+c,o+4+a));e.set(i,o+4+c)}o=o+4+a}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-1-2024" '+(Er(false)?"and is Trial Version[试用版本]":"")),c.postRun=function(){!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=[],s=[],o=null,a=null,d=null,l=null,c=null,u=null,f=!1,h=null,p=null,m=!1,_=!1,g=!!Sr(r),U=0,B=0,D=!1,Ue=null,Be=null,Ze=null,it=[],nt=null,ot=null,dt=0,_t=0,kt=null,Ct=null,It=0,Wt=0,jt=!1,Yt=!1,qt=!1,Qt=null,ir=null,cr=!1,Ur=!0,Br=0,Tr=0,kr=()=>{const e=br();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(o={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){o.decoder=new VideoDecoder({output:function(e){if(pr(e.createImageBitmap))e.createImageBitmap().then((t=>{o.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:F,buffer:r,delay:ci.delay,ts:0},[r]),gr(e)}));else{o.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:F,buffer:t,delay:ci.delay,ts:0},[t]),gr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){o.reset(),o.decoder&&"closed"!==o.decoder.state&&(o.decoder.close(),o.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(o.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?vt:bt});o.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:O,code:t});const r=new Uint8Array(e);postMessage({cmd:G,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Oe?(n=Fr(s),i={codec:n.codec,description:s}):t===Ge&&(n=Xr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),o.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:I,w:n.codecWidth,h:n.codecHeight}),o.isEmitInfo=!0,o.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),o.offscreenCanvasCtx=o.offscreenCanvas.getContext("2d"));try{o.decoder.configure(i),o.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){o.hasInit=!1,o.isEmitInfo=!1,o.offscreenCanvas=null,o.offscreenCanvasCtx=null}});let Ir=function(){if(cr=!0,a)try{a.abort(),a=null,ci.debugLog("worker","abort success")}catch(e){a=null,ci.debugLog("worker","abort catch",e)}},jr={init(){jr.lastBuf=null,jr.vps=null,jr.sps=null,jr.pps=null,jr.streamType=null,jr.localDts=0,jr.pendingUnits={},jr.isSendSeqHeader=!1},destroy(){jr.lastBuf=null,jr.vps=null,jr.sps=null,jr.pps=null,jr.streamType=null,jr.localDts=0,jr.pendingUnits={},jr.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=jr.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");jr.handleVideoFrames(e)}else jr.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=jr.localDts;return jr.localDts=jr.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return jr.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{const t=zr(e);t===Xe||t===Ke?jr.handleVideoH264Nalu(e):Gr(t)&&i.push(e)})),1===i.length)jr.handleVideoH264Nalu(i[0]);else if($r(i)){const e=zr(i[0]),t=Hr(e);jr.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{jr.handleVideoH264Nalu(e)}))}else if(jr.streamType===Ve)if(ci._opt.nakedFlowH265DemuxUseNew){const t=jr.handleAddNaluStartCode(e),r=jr.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=ti(e);t===pt||t===ft||t===ct?jr.handleVideoH265Nalu(e):ii(t)&&i.push(e)})),1===i.length)jr.handleVideoH265Nalu(i[0]);else if(si(i)){const e=ti(i[0]),t=ni(e);jr.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{jr.handleVideoH265Nalu(e)}))}else ti(e)===pt?jr.extractH265PPS(e):jr.handleVideoH265Nalu(e)},extractH264PPS(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{Or(zr(e))?jr.extractH264SEI(e):jr.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{ri(ti(e))?jr.extractH265SEI(e):jr.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{jr.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{jr.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=zr(e);switch(t){case Ke:jr.sps=e;break;case Xe:jr.pps=e}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps){const e=Pr({sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:ue,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if(Gr(t)){const r=Hr(t),i=jr.getNaluDts(),n=Rr(e,r);jr.doDecode(n,{type:ue,ts:i,isIFrame:r,cts:0})}}else if(jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Pr({sps:jr.sps,pps:jr.pps});ci.decode(e,{type:ue,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}},handleVideoH264NaluList(e,t,r){if(jr.isSendSeqHeader){const i=jr.getNaluDts(),n=Nr(e.reduce(((e,t)=>{const r=or(e),i=or(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);jr.doDecode(n,{type:ue,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=ti(e);switch(t){case ct:jr.vps=e;break;case ft:jr.sps=e;break;case pt:jr.pps=e}if(jr.isSendSeqHeader){if(jr.vps&&jr.sps&&jr.pps){const e=Jr({vps:jr.vps,sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:ue,ts:t,isIFrame:!0,cts:0}),jr.vps=null,jr.sps=null,jr.pps=null}if(ii(t)){const r=ni(t),i=jr.getNaluDts(),n=Qr(e,r);jr.doDecode(n,{type:ue,ts:i,isIFrame:r,cts:0})}}else if(jr.vps&&jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Jr({vps:jr.vps,sps:jr.sps,pps:jr.pps});ci.decode(e,{type:ue,ts:0,isIFrame:!0,cts:0}),jr.vps=null,jr.sps=null,jr.pps=null}},handleVideoH265NaluList(e,t,r){if(jr.isSendSeqHeader){const i=jr.getNaluDts(),n=ei(e.reduce(((e,t)=>{const r=or(e),i=or(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);jr.doDecode(n,{type:ue,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!jr.streamVideoType)for(let t of e)if(jr.streamVideoType=mr(t),jr.streamVideoType)break;jr.streamVideoType?jr.streamVideoType===$e?jr.handleVideoH264Frames(e):jr.streamVideoType===Ve&&jr.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;jr.pendingUnits.units&&(t=jr.pendingUnits.units,n=jr.pendingUnits.vcl,i=jr.pendingUnits.iFrame,jr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=zr(o);let a=!1,d=e===Qe;e!==Je&&e!==Qe||(s=jr.parseVideo264Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(jr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Xe:jr.pps=e;break;case Ke:jr.sps=e;break;case et:n=e}if(Gr(t)){const t=or(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!jr.isSendSeqHeader&&jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Mr({sps:jr.sps,pps:jr.pps});ci.decode(e,{type:ue,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps){const e=Mr({sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:ue,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if(i){const e=jr.getNaluDts(),t=Nr(i,r);if(ci._opt.isEmitSEI&&n){const t=sr(n,!1);postMessage({cmd:te,buffer:t.payload,ts:e},[t.payload.buffer])}jr.doDecode(t,{type:ue,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;jr.pendingUnits.units&&(t=jr.pendingUnits.units,n=jr.pendingUnits.vcl,i=jr.pendingUnits.iFrame,jr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=ti(o);let a=!1,d=ni(e);ii(e)&&(s=jr.parseVideo265Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(jr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case pt:jr.pps=e;break;case ft:jr.sps=e;break;case ct:jr.vps=e;break;case yt:case gt:n=e}if(ii(t)){const t=or(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!jr.isSendSeqHeader&&jr.sps&&jr.pps&&jr.vps){jr.isSendSeqHeader=!0;const e=Jr({sps:jr.sps,pps:jr.pps,vps:jr.vps});ci.decode(e,{type:ue,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null,jr.vps=null}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps&&jr.vps){const e=Jr({sps:jr.sps,pps:jr.pps,vps:jr.vps}),t=jr.localDts;ci.decode(e,{type:ue,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null,jr.vps=null}if(i){const e=jr.getNaluDts(),t=ei(i,r);if(ci._opt.isEmitSEI&&n){const t=sr(n,!0);postMessage({cmd:te,buffer:t.payload,ts:e},[t.payload.buffer])}jr.doDecode(t,{type:ue,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{jr.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Yn(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Yn(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},Yr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Yr.mp4Box=Wi.createFile(),Yr.mp4Box.onReady=Yr.onReady,Yr.mp4Box.onError=Yr.onError,Yr.mp4Box.onSamples=Yr.onSamples},initTransportDescarmber(){Yr.transportDescarmber=new qi},_getSeqHeader(e){const t=Yr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Wi.DataStream(void 0,0,Wi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Yr.isHevc=!0,ci.isHevc=!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){ci.debugLog(Yr.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Yr.videoTrackId=t.id;const e=Yr._getSeqHeader(t);e&&(ci.debugLog(Yr.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),Yr.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){Yr.audioTrackId=r.id;const e=r.audio||{},t=Kt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Yr.mp4Box.setExtractionOptions(r.id);const n=Xt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(Yr.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(n,0)}Yr.mp4Box.start()},onError(e){ci.debugError(Yr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Yr.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&&ci.calcIframeIntervalTimestamp(i);let n=null;n=Yr.isHevc?ei(t,r):Nr(t,r),ci.decode(n,{type:ue,ts:i,isIFrame:r,cts:0})}Yr.mp4Box.removeUsedSamples(e)}else if(e===Yr.audioTrackId){if(ci._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),ci.decode(i,{type:ce,ts:r,isIFrame:!1,cts:0})}Yr.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(Yr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Yr.transportDescarmber&&(t=Yr.transportDescarmber.transport(t)),t.buffer.fileStart=Yr.offset,Yr.offset+=t.byteLength,Yr.mp4Box.appendBuffer(t.buffer)},destroy(){Yr.mp4Box&&(Yr.mp4Box.stop(),Yr.mp4Box.flush(),Yr.mp4Box.destroy(),Yr.mp4Box=null),Yr.transportDescarmber&&(Yr.transportDescarmber.destroy(),Yr.transportDescarmber=null),Yr.offset=0,Yr.videoTrackId=null,Yr.audioTrackId=null,Yr.isHevc=!1}},Zr={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);Zr.extractNALu(t)},destroy(){Zr.lastBuffer=new Uint8Array(0),Zr.parsedOffset=0,Zr.firstStartCodeOffset=0,Zr.secondStartCodeOffset=0,Zr.state="init",Zr.hasInitVideoCodec=!1,Zr.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(Zr.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Zr.lastBuffer.length+e.length);for(t.set(Zr.lastBuffer,0),t.set(new Uint8Array(e),Zr.lastBuffer.length),Zr.lastBuffer=t;;){if("init"===Zr.state){let e=!1;for(;Zr.lastBuffer.length-Zr.parsedOffset>=4;)if(0===Zr.lastBuffer[Zr.parsedOffset])if(0===Zr.lastBuffer[Zr.parsedOffset+1])if(1===Zr.lastBuffer[Zr.parsedOffset+2]){if(182===Zr.lastBuffer[Zr.parsedOffset+3]){Zr.state="findFirstStartCode",Zr.firstStartCodeOffset=Zr.parsedOffset,Zr.parsedOffset+=4,e=!0;break}Zr.parsedOffset++}else Zr.parsedOffset++;else Zr.parsedOffset++;else Zr.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Zr.state){let e=!1;for(;Zr.lastBuffer.length-Zr.parsedOffset>=4;)if(0===Zr.lastBuffer[Zr.parsedOffset])if(0===Zr.lastBuffer[Zr.parsedOffset+1])if(1===Zr.lastBuffer[Zr.parsedOffset+2]){if(182===Zr.lastBuffer[Zr.parsedOffset+3]){Zr.state="findSecondStartCode",Zr.secondStartCodeOffset=Zr.parsedOffset,Zr.parsedOffset+=4,e=!0;break}Zr.parsedOffset++}else Zr.parsedOffset++;else Zr.parsedOffset++;else Zr.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Zr.state){if(!(Zr.lastBuffer.length-Zr.parsedOffset>0))break;{let e,t,r=192&Zr.lastBuffer[Zr.parsedOffset];e=0==r?Zr.secondStartCodeOffset-14:Zr.secondStartCodeOffset;let i=0==(192&Zr.lastBuffer[Zr.firstStartCodeOffset+4]);if(i){if(Zr.firstStartCodeOffset-14<0)return void ci.debugWarn(Zr.LOG_NAME,"firstStartCodeOffset -14 is",Zr.firstStartCodeOffset-14);Zr.hasInitVideoCodec||(Zr.hasInitVideoCodec=!0,ci.debugLog(Zr.LOG_NAME,"setCodec"),fi.setCodec(He,"")),t=Zr.lastBuffer.subarray(Zr.firstStartCodeOffset-14,e)}else t=Zr.lastBuffer.subarray(Zr.firstStartCodeOffset,e);let n=Zr.getNaluDts();Zr.hasInitVideoCodec?(postMessage({cmd:W,type:De,value:t.byteLength}),postMessage({cmd:W,type:Le,value:n}),U=n,fi.decode(t,i?1:0,n)):ci.debugWarn(Zr.LOG_NAME,"has not init video codec"),Zr.lastBuffer=Zr.lastBuffer.subarray(e),Zr.firstStartCodeOffset=0==r?14:0,Zr.parsedOffset=Zr.firstStartCodeOffset+4,Zr.state="findFirstStartCode"}}}},getNaluDts(){let e=Zr.localDts;return Zr.localDts=Zr.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Wn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=yn(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],o=(48&r[3])>>>4,a=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==s),l={},c=4;if(2==o||3==o){let e=r[4];if(e>0&&(d||3==o)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==o||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==o||3==o)if(0===s||s===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[s]===Nn){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[s]){let r=188-c,i=di.pmt_.pid_stream_type[s];s!==di.pmt_.common_pids.h264&&s!==di.pmt_.common_pids.h265&&s!==di.pmt_.common_pids.adts_aac&&s!==di.pmt_.common_pids.loas_aac&&s!==di.pmt_.common_pids.ac3&&s!==di.pmt_.common_pids.eac3&&s!==di.pmt_.common_pids.opus&&s!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[s]&&!0!==di.pmt_.timed_id3_pids[s]&&!0!==di.pmt_.synchronous_klv_pids[s]&&!0!==di.pmt_.asynchronous_klv_pids[s]||di.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let o=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,o));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):di.clearSlices(s,i)}for(let a=1+o;a=s.expected_length&&di.clearSlices(s,i),a+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):s.total_length>=s.expected_length&&di.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let o=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new Gn,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let a=di.pes_slice_queues_[i.pid];a.slices.push(n),i.payload_unit_start_indicator&&(a.expected_length=0===o?0:o+6),a.total_length+=n.byteLength,a.expected_length>0&&a.expected_length===a.total_length?di.emitPESSlices(a,i):a.expected_length>0&&a.expected_length>>6,a=t[8];2!==o&&3!==o||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===o?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+a;if(0!==n){if(n<3+a)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-a}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Cn:case Dn:di.parseMP3Payload(c,r);break;case Ln:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):di.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case In:di.parseADTSAACPayload(c,r);break;case Fn:di.parseLOASAACPayload(c,r);break;case Pn:case Mn:break;case Rn:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,s,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case zn:di.parseH264Payload(c,r,s,e.random_access_indicator);break;case On:di.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Ln){let r,s=6;r=0!==n?n:t.byteLength-s;let o=t.subarray(s,s+r);di.parsePESPrivateDataPayload(o,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let o=null;if(1===n&&0===s)o={version_number:0,network_pid:0,program_pmt_pid:{}},o.version_number=i;else if(o=di.pat_,null==o)return;let a=r-5-4,d=-1,l=-1;for(let t=8;t<8+a;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?o.network_pid=i:(o.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(o)}`),di.pat_=o,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,o=1&e[5],a=e[6];if(e[7],1===o&&0===a)r=di._initPmt(),r.program_number=n,r.version_number=s,di.program_pmt_map_[n]=r;else if(r=di.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Jr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Mr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let n=di.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new tr(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame());){r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ce};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new rr(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame(fr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=o,r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ce};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,o=(6&e[1])>>1;e[2];let a=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[a];break;case 2:l=i[a];break;case 3:l=r[a]}switch(o){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const f={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(f)):di.detectAudioMetadataChange(f)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(f));let h={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ce};di.audio_track_.samples.push(h),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new jn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Xt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(n,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new $n;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/di.timescale_);s.pts=e}else s.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ue?di._doDecodeVideo({...e,payload:t}):e.type===ce&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?ei(t,e.isIFrame):Nr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:ue,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;Sr(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ce,ts:e.dts,isIFrame:!1,cts:0})}},li=null;Ar()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new vn,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!Er(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===At,isStateClosed:()=>li.getState()===xt,isStateEnded:()=>li.getState()===Et,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,Bt,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,Ut,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,Tt,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(Er(li.hasInit))if(r&&e[1]===Lt){const i=15&e[0];if(i===Ge&&Er(ci._opt.supportMSEDecodeHevc))return void li.emitError(Ne.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:O,code:i});const n=new Uint8Array(e);postMessage({cmd:G,buffer:n,codecId:i},[n.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Oe?r=Fr(e.slice(5)):t===Ge&&(r=Kr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Ne.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(wr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eT,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Oe?s=Fr(n):i===Ge&&(s=Xr(n)),li.videoInfo.width=s.codecWidth,li.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),li.emitError(Ne.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const o={id:Nt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},a=bn.generateInitSegment(o);li.isAvc=i===Oe;let d=s.codec;return li.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:li.isAvc?wt:St,postMessage({cmd:I,w:s.codecWidth,h:s.codecHeight}),li._initSourceBuffer(),li.appendBuffer(a.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===qe,s=r===We;if(Er(s||n))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Ne.mediaSourceAudioG711NotSupport),!1;const o={id:zt,type:"audio",timescale:1e3};let a={};if(Zt(e)){if(a=er(e.slice(2)),!a)return!1;o.audioSampleRate=a.sampleRate,o.channelCount=a.channelCount,o.config=a.config,o.refSampleDuration=1024/o.audioSampleRate*o.timescale}else{if(!n)return!1;if(a=kn(e),!a)return!1;o.audioSampleRate=a.samplingRate,o.channelCount=a.channelCount,o.refSampleDuration=1152/o.audioSampleRate*o.timescale}o.codec=a.codec,o.duration=0;let d="mp4",l=a.codec,c=null;n&&Er(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=bn.generateInitSegment(o);let u=`${o.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),Er(li.isAudioInitInfo)&&(ir=r===We?i?16:8:0===i?8:16,postMessage({cmd:R,code:r}),postMessage({cmd:M,sampleRate:o.audioSampleRate,channels:o.channelCount,depth:ir}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=s,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Ne.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Ne.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Ne.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Ne.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Ne.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),o=s.byteLength;if(0===o)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let a=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=a,d=!0);const l=a-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${a} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(bn.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=bn.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendBuffer(n.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Nt,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=o,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=s,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(bn.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=bn.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendAudioBuffer(n.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=zt,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=n,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),Er(li.getSourceBufferUpdating())&&li.isStateOpen()&&Er(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),Er(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&Er(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Ne.mediaSourceAudioInitTimeout)}),1e3)));if(Er(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Ne.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Ne.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(Er(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Ne.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Ne.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:n,end:t})}}else s=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:n,end:t})}}else sli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&Er(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&Er(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&Er(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&Er(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(Er(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:le,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Pt,_opt:kr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:D,wasmDecodeDelay:U-B});postMessage({cmd:W,type:Fe,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!g)return-1;if(t===ce)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(D=!1,ci.delay=t-r):(D=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!g)return-1;if(t===ce)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(D=!1,t=r-i):(D=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===ue&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ce?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ue&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===ue&&o.decode?o.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===n.length)return;const t=e.ts,i=n[0],s=e.type===ue&&wr(e.payload);if(Er(r))s&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i));else{const r=i.ts-t,o=i.type===ce&&e.type===ue;(r<=20||o||s)&&(ci.debugLog("worker",`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 ${o} and isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===E,t=ci._opt.playType===A;if(jr.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),o&&ci._opt.useWCS&&ci.useOffscreen()&&o.init(),Er(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(n.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${n.length}`);if(ci.dropping){for(r=n.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${n.length}`);!r.isIFrame&&n.length;)r=n.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;n.length;)r=n.shift(),ci.doDecode(r);else if(r=n[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),n.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:Y})):(n.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;n.length;){if(r=n[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${n.length}`);break}n.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();Ue||(Ue=e);const r=e-Ue;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),Ue=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(Er(ci._opt.checkFirstIFrame)&&(g=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:ae,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;n.length&&(e=n.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Ir(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(cr=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&Er(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(fi)try{fi.clear&&fi.clear(),fi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,Ue=null,D=!1,U=0,B=0,o&&(o.destroy&&o.destroy(),o=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=kr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),n=[],s=[],u&&(u.close(),u=null),h=null,p=null,m=!1,_=!1,g=!1,jt=!1,Yt=!1,qt=!1,Qt=null,it=[],dt=0,_t=0,Be=null,Ze=null,kt=null,Ct=null,ir=null,It=0,Wt=0,nt=null,ot=null,ci.fetchStatus=Pt,Ur=!0,jr.destroy(),Yr.destroy(),Zr.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:Q})},pushBuffer:function(e,t){if(t.type===ce&&Zt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ie,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===ue&&t.isIFrame&&wr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ne,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:se,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===x)if(t.type===ue){const r=new Uint8Array(e).slice(5);postMessage({cmd:H,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ce&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Jt(r)?r.slice(2):r.slice(1);postMessage({cmd:N,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===ue){if(It>0){const e=t.ts-Ct,r=It+It/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ct},\n diff is ${e} and preTsDuration is ${It} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ct&&Ct>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ct} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Wt}`),Ct-t.ts>T&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ct}, options.ts is ${t.ts},\n diff is ${Ct-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ct=null,It=0),ci._opt.isDropSameTimestampGop&&Er(t.isIFrame)&&g)){const e=ci.hasIframeInBufferList(),t=Er(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),Sr(ci._opt.checkFirstIFrame)&&Sr(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:oe}))))}Ct>0&&(It=t.ts-Ct),Wt=e.byteLength,Ct=t.ts}if(g){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${n.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;n.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${n.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:K,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return n.forEach((t=>{t.type===ue&&(e+=1)})),e},hasIframeInBufferList:()=>n.some((e=>e.type===ue&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return n.forEach((e=>{e.type===ue&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return n.forEach((t=>{t.type===ce&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?jr.lastBuf&&(e=jr.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&Yr.mp4Box&&(e=Yr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=ur((e=>{postMessage({cmd:W,type:ke,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(Yr.listenMp4Box(),ci._opt.isFmp4Private&&Yr.initTransportDescarmber()),t.protocol===b){t.isFlv&&(u=new Cr(ci.demuxFlv())),a=new AbortController;const r=Object.assign({signal:a.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(Sr(cr))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Pt,void e.body.cancel();if(!vr(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Ir(),void postMessage({cmd:W,type:Ne.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:W,type:Ie}),_r())ci.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Rt)):Sr(cr)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Rt,void Ir()):void("string"!=typeof e?(ci.fetchStatus=Mt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Rt,Ir(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:W,type:Te,value:w,msg:"fetch done"})):postMessage({cmd:W,type:Pe})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Rt);u&&(u.close(),u=null),e.name!==Dt?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Ir(),postMessage({cmd:W,type:Ne.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Rt,Ir(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:W,type:Te,value:w,msg:"fetch done"})):postMessage({cmd:W,type:Pe}))):a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Rt)):Sr(cr)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Rt,void Ir()):void("string"!=typeof n?(ci.fetchStatus=Mt,l(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ci.demuxFmp4(n):t.isMpeg4?ci.demuxMpeg4(n):t.isTs?ci.demuxTs(n):t.isNakedFlow&&ci.demuxNakedFlow(n),i()):ci.debugWarn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Rt);u&&(u.close(),u=null),e.name!==Dt?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Ir(),postMessage({cmd:W,type:Ne.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Dt?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Ir(),postMessage({cmd:W,type:Ne.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===v&&(t.isFlv&&(u=new Cr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:W,type:Ie}),postMessage({cmd:W,type:Re})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):f?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),Sr(cr)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:W,type:Te,value:S,msg:e.code})):postMessage({cmd:W,type:Pe}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),f=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):Sr(cr)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:W,type:Ne.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 fe:if(o.byteLength>0){let e=o;Sr(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(o)),ci.decode(e,{type:ce,ts:s})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${o.byteLength} and return`);break;case he:if(o.byteLength>=6){const e=o[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(o,s);else{const e=15&o[0];let t=o[0]>>4===Ft;const i=e===Ge;if(Er(t)&&Sr(xr(o,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&wr(o)&&null===ci.isHevc){const e=15&o[0];ci.isHevc=e===Ge,Qt=ar(o,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Qt}`)}t&&ci.calcIframeIntervalTimestamp(s),ci.isPlayer&&ci.calcNetworkDelay(s),r[0]=o[4],r[1]=o[3],r[2]=o[2],r[3]=0;let n=r[0],a=ci.cryptoPayload(o,t);ci.decode(a,{type:ue,ts:s,isIFrame:t,cts:n})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${o.byteLength} and return`);break;case pe:postMessage({cmd:re,buffer:o},[o.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ce?ci._opt.hasAudio&&(postMessage({cmd:W,type:Ce,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ue&&ci._opt.hasVideo&&(postMessage({cmd:W,type:De,value:e.byteLength}),postMessage({cmd:W,type:Le,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=$i(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?os(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):fn(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=gn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===We&&(t=Vi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,n=e[0]>>1&1;if(ir=r===We?n?16:8:0===n?8:16,ui&&ui.setCodec||!Er(i))if(Zt(e)||r===je||r===Ye||r===qe){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const n=r===We?e.slice(2):new Uint8Array(0);if(i){if(r===qe)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,n);r===We&&postMessage({cmd:z,buffer:n},[n.buffer]),_=!0,r!==We&&(r===qe?(ci.mp3Demuxer||(ci.mp3Demuxer=new pn(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:q})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(Sr(r)&&Sr(ci._opt.mseDecodeAudio))postMessage({cmd:V,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(_){if(Zt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===qe?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===We?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(fi&&fi.setCodec||!Er(i))if(wr(e))if(r===Oe||r===Ge){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Oe&&ci._opt.useSIMD){const e=Fr(t);if(e.codecWidth>k||e.codecHeight>k)return postMessage({cmd:J,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const n=new Uint8Array(e);m=!0,i?fi.decode(e,0):fi.setCodec(r,t),postMessage({cmd:O,code:r}),postMessage({cmd:G,buffer:n,codecId:r},[n.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,n){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,n,s);else if(Sr(r))postMessage({cmd:$,payload:e,isIFrame:n,ts:t,cts:s,delay:ci.delay},[e.buffer]);else if(m)if(!g&&n&&(g=!0),g){if(n&&wr(e)){const t=15&e[0];let r={};t===Oe?r=Fr(e.slice(5)):t===Ge&&(r=Kr(e)),r.codecWidth&&r.codecHeight&&h&&p&&(r.codecWidth!==h||r.codecHeight!==p)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${p},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Yt=!0,postMessage({cmd:X,value:`width: ${h}->${r.codecWidth}, height: ${p}->${r.codecHeight}`}))}if(Yt)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(qt)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(wr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${n.length}, need clear is ${e}`),e&&(n=[]),ci.isPlayer&&(ci.resetAllDelay(),Sr(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:Y}))),Sr(ci._opt.checkFirstIFrame)&&Er(r)&&(g=!1)},dropBuffer$2:function(){if(n.length>0){let e=n.findIndex((e=>Sr(e.isIFrame)&&e.type===ue));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:Y});const t=n.length;n=n.slice(e);const r=n.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${n.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===n.length&&(ci.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 ce:ci.decode(new Uint8Array(e,5),{type:ce,ts:r});break;case ue:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ci._isEnhancedH265Header(n))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),wr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Ge}ci.isPlayer&&ci.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],o=ci.cryptoPayload(i,e);ci.decode(o,{type:ue,ts:r,isIFrame:e,cts:n})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){jr.dispatch(e)},demuxFmp4:function(e){Yr.dispatch(e)},demuxMpeg4:function(e){Zr.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=Er(d),n===Gt){if(i===Vt){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),Qt=ar(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Qt}`),ci.decode(i,{type:ue,ts:t,isIFrame:!0,cts:0})}}}else if(n===Ht){let r=e,n=0;const s=i===Vt;s&&ci.calcIframeIntervalTimestamp(t),d||(a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0],r=ei(e.slice(8),s),r=ci.cryptoPayload(r,s),ci.decode(r,{type:ue,ts:t,isIFrame:s,cts:n}))}else if(n===$t){const r=i===Vt;r&&ci.calcIframeIntervalTimestamp(t);let n=ei(e.slice(5),r);n=ci.cryptoPayload(n,r),ci.decode(n,{type:ue,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Ot)===Ot},findSei:function(e,t){let r=4;hr(Qt)&&(r=Qt),nr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===yt||r===gt),n=Er(ci.isHevc)&&r===et;if(i||n){const r=sr(e,ci.isHevc);postMessage({cmd:te,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(g&&e>0))return;null===Be?(Be=e,Ze=dr()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===E&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Be} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:W,type:Me,value:i}))},calcIframeIntervalTimestamp:function(e){null===kt?kt=e:kt=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&Sr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){Er(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),jt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=y(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),jt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:O,code:e}),postMessage({cmd:I,w:t,h:r}),h=t,p=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=y(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:R,code:e}),postMessage({cmd:M,sampleRate:t,channels:r,depth:ir}),_t=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=h*p*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(nt=null,B=r,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(h,p,s);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:F,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:F,output:s,delay:ci.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(dt){if(!(n>=(r=d-dt)))return dt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==_t&&(s[1]=Float32Array.of(...s[1],...o[1])));it[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==_t&&(it[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:P,buffer:it,ts:i},it.map((e=>e.buffer))),a=r,n-=r}for(dt=n;dt>=d;dt-=d)it[0]=o[0].slice(a,a+=d),2==_t&&(it[1]=o[1].slice(a-d,a)),postMessage({cmd:P,buffer:it,ts:i},it.map((e=>e.buffer)));dt&&(s[0]=o[0].slice(a),2==_t&&(s[1]=o[1].slice(a))),o=[]},errorInfo:function(e){null===nt&&(nt=dr());const t=dr(),r=lr(ot>0?2*ot:5e3,1e3,5e3),i=t-nt;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${ot} and diff is ${i} and maxDiff is ${r}\n and replay`),qt=!0,postMessage({cmd:Z}))},sendWebsocketMessage:function(e){d?d.readyState===ze?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:q})},postStreamToMain(e,t){postMessage({cmd:ee,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),Sr(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,h=e,p=t,postMessage({cmd:I,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=y(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){_t=e,postMessage({cmd:M,sampleRate:t,channels:e,depth:ir})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(dt){if(!(n>=(r=d-dt)))return dt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==_t&&(s[1]=Float32Array.of(...s[1],...o[1])));it[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==_t&&(it[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:P,buffer:it,ts:i},it.map((e=>e.buffer))),a=r,n-=r}for(dt=n;dt>=d;dt-=d)it[0]=o[0].slice(a,a+=d),2==_t&&(it[1]=o[1].slice(a-d,a)),postMessage({cmd:P,buffer:it,ts:i},it.map((e=>e.buffer)));dt&&(s[0]=o[0].slice(a),2==_t&&(s[1]=o[1].slice(a))),o=[]},draw:function(t,r,i,n){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const s=e.HEAPU8.subarray(r,r+Br),o=e.HEAPU8.subarray(i,i+Tr),a=e.HEAPU8.subarray(n,n+Tr),d=new Uint8Array(Br+Tr+Tr);if(d.set(s),d.set(o,Br),d.set(a,Br+Tr),nt=null,B=t,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(h,p,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:F,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:F,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let fi=null;e.VideoDecoder&&(fi=new e.VideoDecoder(ci)),postMessage({cmd:L}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case me:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case _e:ci.pushBuffer(t.buffer,t.options);break;case ge:ci.decodeAudio(t.buffer,t.ts);break;case ye:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case we:ci.clearBuffer(t.needClear);break;case Se:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case ve:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&Er(t.options.isVideoInited)&&(Ur=t.options.isVideoInited),ci.close();break;case be:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case Ee:ci.sendWebsocketMessage(t.message);break;case Ae:li.$video.currentTime=Number(t.message);break;case xe:ci.updatePlaybackIsPause(t.isPause)}}}(c,c,!1,!0)}})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("path"),require("fs"),require("crypto")):"function"==typeof define&&define.amd?define(["path","fs","crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).path,e.fs,e.crypto$1)}(this,(function(e,t,r){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=n(e),o=n(t),a=n(r),d="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function l(e,t){return e(t={exports:{}},t.exports),t.exports}var c=l((function(e){var t=void 0!==t?t:{},r=(t={locateFile:function(e){return"decoder-pro-old.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_OLD_WASM_URL&&""!=JESSIBUCA_PRO_OLD_WASM_URL?JESSIBUCA_PRO_OLD_WASM_URL:e},printErr:function(e){(!e||-1===e.indexOf("not compiled with thread support")&&-1===e.indexOf("illegal icc")&&-1===e.indexOf("If you want to help, upload a sample of this file to")&&-1===e.indexOf("Reserved SBR extensions is not implemented")&&-1===e.indexOf("not compiled with thread support, using thread emulation"))&&console.warn("JbPro[❌❌❌][old wasm]:",e)}},Object.assign({},t)),i="./this.program",n="object"==typeof window,d="function"==typeof importScripts,l="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,c=!n&&!l&&!d;if(t.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");var u,f,h,p,m,_,g="";if(l){if("object"!=typeof process)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");g=d?s.default.dirname(g)+"/":__dirname+"/",_=()=>{m||(p=o.default,m=s.default)},u=function(e,t){return _(),e=m.normalize(e),p.readFileSync(e,t?void 0:"utf8")},h=e=>{var t=u(e,!0);return t.buffer||(t=new Uint8Array(t)),k(t.buffer),t},f=(e,t,r)=>{_(),e=m.normalize(e),p.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(i=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),e.exports=t,process.on("uncaughtException",(function(e){if(!(e instanceof xr))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}}else if(c){if("object"==typeof process||"object"==typeof window||"function"==typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");"undefined"!=typeof read&&(u=function(e){return read(e)}),h=function(e){let t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(t=read(e,"binary"),k("object"==typeof t),t)},f=function(e,t,r){setTimeout((()=>t(h(e))),0)},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)}else{if(!n&&!d)throw new Error("environment detection error");if(d?g=self.location.href:"undefined"!=typeof document&&document.currentScript&&(g=document.currentScript.src),g=0!==g.indexOf("blob:")?g.substr(0,g.replace(/[?#].*/,"").lastIndexOf("/")+1):"","object"!=typeof window&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");u=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},d&&(h=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),f=(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,v,b,w=t.print||console.log.bind(console),S=t.printErr||console.warn.bind(console);function E(e){E.shown||(E.shown={}),E.shown[e]||(E.shown[e]=1,S(e))}function A(e,r){Object.getOwnPropertyDescriptor(t,e)||Object.defineProperty(t,e,{configurable:!0,get:function(){_e("Module."+e+" has been replaced with plain "+r+" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}})}function x(e,t){var r="'"+e+"' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)";return t&&(r+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),r}function U(e,r){Object.getOwnPropertyDescriptor(t,e)||Object.defineProperty(t,e,{configurable:!0,get:function(){_e(x(e,r))}})}function B(e,r){Object.getOwnPropertyDescriptor(t,e)||(t[e]=()=>_e(x(e,r)))}Object.assign(t,r),r=null,y="fetchSettings",Object.getOwnPropertyDescriptor(t,y)&&_e("`Module."+y+"` was supplied but `"+y+"` not included in INCOMING_MODULE_JS_API"),t.arguments&&t.arguments,A("arguments","arguments_"),t.thisProgram&&(i=t.thisProgram),A("thisProgram","thisProgram"),t.quit&&t.quit,A("quit","quit_"),k(void 0===t.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),k(void 0===t.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),k(void 0===t.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),k(void 0===t.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),k(void 0===t.read,"Module.read option was removed (modify read_ in JS)"),k(void 0===t.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),k(void 0===t.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),k(void 0===t.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),k(void 0===t.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),A("read","read_"),A("readAsync","readAsync"),A("readBinary","readBinary"),A("setWindowTitle","setWindowTitle"),k(!c,"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."),t.wasmBinary&&(v=t.wasmBinary),A("wasmBinary","wasmBinary"),t.noExitRuntime,A("noExitRuntime","noExitRuntime"),"object"!=typeof WebAssembly&&_e("no native wasm support detected");var T=!1;function k(e,t){e||_e("Assertion failed"+(t?": "+t:""))}var C="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function D(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&C)return C.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?D(N,e,t):""}function I(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;a>1114111&&E("Invalid Unicode code point 0x"+a.toString(16)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),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 F(e,t,r){return k("number"==typeof r,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),I(e,N,t,r)}function P(e){for(var t=0,r=0;r=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++r)),i<=127?++t:t+=i<=2047?2:i<=65535?3:4}return t}var M,R,N,z,O,G,H,$,V,W="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function j(e,t){k(e%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&O[i];)++i;if((r=i<<1)-e>32&&W)return W.decode(N.subarray(e,r));for(var s="",o=0;!(o>=t/2);++o){var a=z[e+2*o>>1];if(0==a)break;s+=String.fromCharCode(a)}return s}function Y(e,t,r){if(k(t%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),k("number"==typeof r,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),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 z[t>>1]=0,t-i}function q(e){return 2*e.length}function K(e,t){k(e%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var r=0,i="";!(r>=t/4);){var n=G[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 X(e,t,r){if(k(t%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),k("number"==typeof r,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),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(G[t>>2]=o,(t+=4)+4>n)break}return G[t>>2]=0,t-i}function Z(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}function J(e){var t=P(e)+1,r=_r(t);return r&&I(e,R,r,t),r}function Q(e){M=e,t.HEAP8=R=new Int8Array(e),t.HEAP16=z=new Int16Array(e),t.HEAP32=G=new Int32Array(e),t.HEAPU8=N=new Uint8Array(e),t.HEAPU16=O=new Uint16Array(e),t.HEAPU32=H=new Uint32Array(e),t.HEAPF32=$=new Float32Array(e),t.HEAPF64=V=new Float64Array(e)}var ee=5242880;t.TOTAL_STACK&&k(ee===t.TOTAL_STACK,"the stack size can no longer be determined at runtime");var te,re=t.INITIAL_MEMORY||67108864;function ie(){var e=Ar();k(0==(3&e)),G[e>>2]=34821223,G[e+4>>2]=2310721022,G[0]=1668509029}function ne(){if(!T){var e=Ar(),t=H[e>>2],r=H[e+4>>2];34821223==t&&2310721022==r||_e("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+r.toString(16)+" 0x"+t.toString(16)),1668509029!==G[0]&&_e("Runtime error: The application has corrupted its heap memory area (address zero)!")}}A("INITIAL_MEMORY","INITIAL_MEMORY"),k(re>=ee,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+re+"! (TOTAL_STACK="+"5242880)"),k("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,"JS engine does not provide full typed array support"),k(!t.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),k(67108864==re,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),function(){var e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,115!==t[0]||99!==t[1])throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"}();var se=[],oe=[],ae=[],de=!1;k(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var le=0,ce=null,ue=null,fe={};function he(e){for(var t=e;;){if(!fe[e])return e;e=t+Math.random()}}function pe(e){le++,t.monitorRunDependencies&&t.monitorRunDependencies(le),e?(k(!fe[e]),fe[e]=1,null===ce&&"undefined"!=typeof setInterval&&(ce=setInterval((function(){if(T)return clearInterval(ce),void(ce=null);var e=!1;for(var t in fe)e||(e=!0,S("still waiting on run dependencies:")),S("dependency: "+t);e&&S("(end of list)")}),1e4))):S("warning: run dependency added without ID")}function me(e){if(le--,t.monitorRunDependencies&&t.monitorRunDependencies(le),e?(k(fe[e]),delete fe[e]):S("warning: run dependency removed without ID"),0==le&&(null!==ce&&(clearInterval(ce),ce=null),ue)){var r=ue;ue=null,r()}}function _e(e){throw t.onAbort&&t.onAbort(e),S(e="Aborted("+e+")"),T=!0,new WebAssembly.RuntimeError(e)}var ge,ye,ve;function be(e){return e.startsWith("data:application/octet-stream;base64,")}function we(e){return e.startsWith("file://")}function Se(e,r){return function(){var i=e,n=r;return r||(n=t.asm),k(de,"native function `"+i+"` called before runtime initialization"),n[e]||k(n[e],"exported native function `"+i+"` not found"),n[e].apply(null,arguments)}}function Ee(e){try{if(e==ge&&v)return new Uint8Array(v);if(h)return h(e);throw"both async and sync fetching of the wasm failed"}catch(e){_e(e)}}function Ae(e){for(;e.length>0;){var r=e.shift();if("function"!=typeof r){var i=r.func;"number"==typeof i?void 0===r.arg?Ue(i)():Ue(i)(r.arg):i(void 0===r.arg?null:r.arg)}else r(t)}}function xe(e){return e.replace(/\b_Z[\w\d_]+/g,(function(e){var t,r=(t=e,E("warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling"),t);return e===r?e:r+" ["+e+"]"}))}function Ue(e){return te.get(e)}function Be(){var e=new Error;if(!e.stack){try{throw new Error}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}be(ge="decoder-pro-old.wasm")||(ge=function(e){return t.locateFile?t.locateFile(e,g):g+e}(ge));var Te={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=Te.isAbs(e),r="/"===e.substr(-1);return(e=Te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=Te.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=Te.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return Te.normalize(e.join("/"))},join2:(e,t)=>Te.normalize(e+"/"+t)};var ke={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:Pe.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=Te.isAbs(i)}return(t?"/":"")+(e=Te.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=ke.resolve(e).substr(1),t=ke.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.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=hr(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(w(D(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(w(D(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(S(D(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(S(D(e.output,0)),e.output=[])}}};function De(e){e=function(e,t){return k(t,"alignment argument is required"),Math.ceil(e/t)*t}(e,65536);var t=wr(65536,e);return t?(function(e,t){N.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(Pe.isBlkdev(r)||Pe.isFIFO(r))throw new Pe.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:Pe.chrdev_stream_ops}});var n=Pe.createNode(e,t,r,i);return Pe.isDir(n.mode)?(n.node_ops=Le.ops_table.dir.node,n.stream_ops=Le.ops_table.dir.stream,n.contents={}):Pe.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):Pe.isLink(n.mode)?(n.node_ops=Le.ops_table.link.node,n.stream_ops=Le.ops_table.link.stream):Pe.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=Pe.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,Pe.isDir(e.mode)?t.size=4096:Pe.isFile(e.mode)?t.size=e.usedBytes:Pe.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 Pe.genericErrors[44]},mknod:function(e,t,r,i){return Le.createNode(e,t,r,i)},rename:function(e,t,r){if(Pe.isDir(e.mode)){var i;try{i=Pe.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new Pe.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=Pe.lookupNode(e,t);for(var i in r.contents)throw new Pe.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(!Pe.isLink(e.mode))throw new Pe.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(k(o>=0),o>8&&s.subarray)t.set(s.subarray(n,n+o),r);else for(var a=0;a0||i+r1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ke.resolve(Pe.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};if(t=Object.assign(r,t),t.recurse_count>8)throw new Pe.ErrnoError(32);for(var i=Te.normalizeArray(e.split("/").filter((e=>!!e)),!1),n=Pe.root,s="/",o=0;o40)throw new Pe.ErrnoError(32)}}return{path:s,node:n}},getPath:e=>{for(var t;;){if(Pe.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)%Pe.nameTable.length},hashAddNode:e=>{var t=Pe.hashName(e.parent.id,e.name);e.name_next=Pe.nameTable[t],Pe.nameTable[t]=e},hashRemoveNode:e=>{var t=Pe.hashName(e.parent.id,e.name);if(Pe.nameTable[t]===e)Pe.nameTable[t]=e.name_next;else for(var r=Pe.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=Pe.mayLookup(e);if(r)throw new Pe.ErrnoError(r,e);for(var i=Pe.hashName(e.id,t),n=Pe.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Pe.lookup(e,t)},createNode:(e,t,r,i)=>{k("object"==typeof e);var n=new Pe.FSNode(e,t,r,i);return Pe.hashAddNode(n),n},destroyNode:e=>{Pe.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==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=Pe.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)=>Pe.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=Pe.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{Pe.lookupNode(e,t);return 20}catch(e){}return Pe.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=Pe.lookupNode(e,t)}catch(e){return e.errno}var n=Pe.nodePermissions(e,"wx");if(n)return n;if(r){if(!Pe.isDir(i.mode))return 54;if(Pe.isRoot(i)||Pe.getPath(i)===Pe.cwd())return 10}else if(Pe.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?Pe.isLink(e.mode)?32:Pe.isDir(e.mode)&&("r"!==Pe.flagsToPermissionString(t)||512&t)?31:Pe.nodePermissions(e,Pe.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Pe.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!Pe.streams[r])return r;throw new Pe.ErrnoError(33)},getStream:e=>Pe.streams[e],createStream:(e,t,r)=>{Pe.FSStream||(Pe.FSStream=function(){this.shared={}},Pe.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 0!=(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 Pe.FSStream,e);var i=Pe.nextfd(t,r);return e.fd=i,Pe.streams[i]=e,e},closeStream:e=>{Pe.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=Pe.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new Pe.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{Pe.devices[e]={stream_ops:t}},getDevice:e=>Pe.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),Pe.syncFSRequests++,Pe.syncFSRequests>1&&S("warning: "+Pe.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=Pe.getMounts(Pe.root.mount),i=0;function n(e){return k(Pe.syncFSRequests>0),Pe.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)=>{if("string"==typeof e)throw e;var i,n="/"===r,s=!r;if(n&&Pe.root)throw new Pe.ErrnoError(10);if(!n&&!s){var o=Pe.lookupPath(r,{follow_mount:!1});if(r=o.path,i=o.node,Pe.isMountpoint(i))throw new Pe.ErrnoError(10);if(!Pe.isDir(i.mode))throw new Pe.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?Pe.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount:e=>{var t=Pe.lookupPath(e,{follow_mount:!1});if(!Pe.isMountpoint(t.node))throw new Pe.ErrnoError(28);var r=t.node,i=r.mounted,n=Pe.getMounts(i);Object.keys(Pe.nameTable).forEach((e=>{for(var t=Pe.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&Pe.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);k(-1!==s),r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=Pe.lookupPath(e,{parent:!0}).node,n=Te.basename(e);if(!n||"."===n||".."===n)throw new Pe.ErrnoError(28);var s=Pe.mayCreate(i,n);if(s)throw new Pe.ErrnoError(s);if(!i.node_ops.mknod)throw new Pe.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,Pe.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,Pe.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,Pe.mknod(e,t,r)),symlink:(e,t)=>{if(!ke.resolve(e))throw new Pe.ErrnoError(44);var r=Pe.lookupPath(t,{parent:!0}).node;if(!r)throw new Pe.ErrnoError(44);var i=Te.basename(t),n=Pe.mayCreate(r,i);if(n)throw new Pe.ErrnoError(n);if(!r.node_ops.symlink)throw new Pe.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=Te.dirname(e),s=Te.dirname(t),o=Te.basename(e),a=Te.basename(t);if(r=Pe.lookupPath(e,{parent:!0}).node,i=Pe.lookupPath(t,{parent:!0}).node,!r||!i)throw new Pe.ErrnoError(44);if(r.mount!==i.mount)throw new Pe.ErrnoError(75);var d,l=Pe.lookupNode(r,o),c=ke.relative(e,s);if("."!==c.charAt(0))throw new Pe.ErrnoError(28);if("."!==(c=ke.relative(t,n)).charAt(0))throw new Pe.ErrnoError(55);try{d=Pe.lookupNode(i,a)}catch(e){}if(l!==d){var u=Pe.isDir(l.mode),f=Pe.mayDelete(r,o,u);if(f)throw new Pe.ErrnoError(f);if(f=d?Pe.mayDelete(i,a,u):Pe.mayCreate(i,a))throw new Pe.ErrnoError(f);if(!r.node_ops.rename)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(l)||d&&Pe.isMountpoint(d))throw new Pe.ErrnoError(10);if(i!==r&&(f=Pe.nodePermissions(r,"w")))throw new Pe.ErrnoError(f);Pe.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{Pe.hashAddNode(l)}}},rmdir:e=>{var t=Pe.lookupPath(e,{parent:!0}).node,r=Te.basename(e),i=Pe.lookupNode(t,r),n=Pe.mayDelete(t,r,!0);if(n)throw new Pe.ErrnoError(n);if(!t.node_ops.rmdir)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(i))throw new Pe.ErrnoError(10);t.node_ops.rmdir(t,r),Pe.destroyNode(i)},readdir:e=>{var t=Pe.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new Pe.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=Pe.lookupPath(e,{parent:!0}).node;if(!t)throw new Pe.ErrnoError(44);var r=Te.basename(e),i=Pe.lookupNode(t,r),n=Pe.mayDelete(t,r,!1);if(n)throw new Pe.ErrnoError(n);if(!t.node_ops.unlink)throw new Pe.ErrnoError(63);if(Pe.isMountpoint(i))throw new Pe.ErrnoError(10);t.node_ops.unlink(t,r),Pe.destroyNode(i)},readlink:e=>{var t=Pe.lookupPath(e).node;if(!t)throw new Pe.ErrnoError(44);if(!t.node_ops.readlink)throw new Pe.ErrnoError(28);return ke.resolve(Pe.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=Pe.lookupPath(e,{follow:!t}).node;if(!r)throw new Pe.ErrnoError(44);if(!r.node_ops.getattr)throw new Pe.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>Pe.stat(e,!0),chmod:(e,t,r)=>{var i;"string"==typeof e?i=Pe.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new Pe.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{Pe.chmod(e,t,!0)},fchmod:(e,t)=>{var r=Pe.getStream(e);if(!r)throw new Pe.ErrnoError(8);Pe.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;"string"==typeof e?n=Pe.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new Pe.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{Pe.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=Pe.getStream(e);if(!i)throw new Pe.ErrnoError(8);Pe.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new Pe.ErrnoError(28);var r;"string"==typeof e?r=Pe.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new Pe.ErrnoError(63);if(Pe.isDir(r.mode))throw new Pe.ErrnoError(31);if(!Pe.isFile(r.mode))throw new Pe.ErrnoError(28);var i=Pe.nodePermissions(r,"w");if(i)throw new Pe.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=Pe.getStream(e);if(!r)throw new Pe.ErrnoError(8);if(0==(2097155&r.flags))throw new Pe.ErrnoError(28);Pe.truncate(r.node,t)},utime:(e,t,r)=>{var i=Pe.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i,n,s)=>{if(""===e)throw new Pe.ErrnoError(44);var o;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?Pe.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)o=e;else{e=Te.normalize(e);try{o=Pe.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var a=!1;if(64&r)if(o){if(128&r)throw new Pe.ErrnoError(20)}else o=Pe.mknod(e,i,0),a=!0;if(!o)throw new Pe.ErrnoError(44);if(Pe.isChrdev(o.mode)&&(r&=-513),65536&r&&!Pe.isDir(o.mode))throw new Pe.ErrnoError(54);if(!a){var d=Pe.mayOpen(o,r);if(d)throw new Pe.ErrnoError(d)}512&r&&Pe.truncate(o,0),r&=-131713;var l=Pe.createStream({node:o,path:Pe.getPath(o),flags:r,seekable:!0,position:0,stream_ops:o.stream_ops,ungotten:[],error:!1},n,s);return l.stream_ops.open&&l.stream_ops.open(l),!t.logReadFiles||1&r||(Pe.readFiles||(Pe.readFiles={}),e in Pe.readFiles||(Pe.readFiles[e]=1)),l},close:e=>{if(Pe.isClosed(e))throw new Pe.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{Pe.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new Pe.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new Pe.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 Pe.ErrnoError(28);if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(1==(2097155&e.flags))throw new Pe.ErrnoError(8);if(Pe.isDir(e.node.mode))throw new Pe.ErrnoError(31);if(!e.stream_ops.read)throw new Pe.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Pe.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 Pe.ErrnoError(28);if(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(0==(2097155&e.flags))throw new Pe.ErrnoError(8);if(Pe.isDir(e.node.mode))throw new Pe.ErrnoError(31);if(!e.stream_ops.write)throw new Pe.ErrnoError(28);e.seekable&&1024&e.flags&&Pe.llseek(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Pe.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(Pe.isClosed(e))throw new Pe.ErrnoError(8);if(t<0||r<=0)throw new Pe.ErrnoError(28);if(0==(2097155&e.flags))throw new Pe.ErrnoError(8);if(!Pe.isFile(e.node.mode)&&!Pe.isDir(e.node.mode))throw new Pe.ErrnoError(43);if(!e.stream_ops.allocate)throw new Pe.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n,s)=>{if(0!=(2&n)&&0==(2&s)&&2!=(2097155&e.flags))throw new Pe.ErrnoError(2);if(1==(2097155&e.flags))throw new Pe.ErrnoError(2);if(!e.stream_ops.mmap)throw new Pe.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n,s)},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 Pe.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=Pe.open(e,t.flags),n=Pe.stat(e),s=n.size,o=new Uint8Array(s);return Pe.read(i,o,0,s,0),"utf8"===t.encoding?r=D(o,0):"binary"===t.encoding&&(r=o),Pe.close(i),r},writeFile:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=Pe.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(P(t)+1),s=I(t,n,0,n.length);Pe.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Pe.write(i,t,0,t.byteLength,void 0,r.canOwn)}Pe.close(i)},cwd:()=>Pe.currentPath,chdir:e=>{var t=Pe.lookupPath(e,{follow:!0});if(null===t.node)throw new Pe.ErrnoError(44);if(!Pe.isDir(t.node.mode))throw new Pe.ErrnoError(54);var r=Pe.nodePermissions(t.node,"x");if(r)throw new Pe.ErrnoError(r);Pe.currentPath=t.path},createDefaultDirectories:()=>{Pe.mkdir("/tmp"),Pe.mkdir("/home"),Pe.mkdir("/home/web_user")},createDefaultDevices:()=>{Pe.mkdir("/dev"),Pe.registerDevice(Pe.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),Pe.mkdev("/dev/null",Pe.makedev(1,3)),Ce.register(Pe.makedev(5,0),Ce.default_tty_ops),Ce.register(Pe.makedev(6,0),Ce.default_tty1_ops),Pe.mkdev("/dev/tty",Pe.makedev(5,0)),Pe.mkdev("/dev/tty1",Pe.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(l)try{var t=a.default;return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){_e("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}}();Pe.createDevice("/dev","random",e),Pe.createDevice("/dev","urandom",e),Pe.mkdir("/dev/shm"),Pe.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{Pe.mkdir("/proc");var e=Pe.mkdir("/proc/self");Pe.mkdir("/proc/self/fd"),Pe.mount({mount:()=>{var t=Pe.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=Pe.getStream(r);if(!i)throw new Pe.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?Pe.createDevice("/dev","stdin",t.stdin):Pe.symlink("/dev/tty","/dev/stdin"),t.stdout?Pe.createDevice("/dev","stdout",null,t.stdout):Pe.symlink("/dev/tty","/dev/stdout"),t.stderr?Pe.createDevice("/dev","stderr",null,t.stderr):Pe.symlink("/dev/tty1","/dev/stderr");var e=Pe.open("/dev/stdin",0),r=Pe.open("/dev/stdout",1),i=Pe.open("/dev/stderr",1);k(0===e.fd,"invalid handle for stdin ("+e.fd+")"),k(1===r.fd,"invalid handle for stdout ("+r.fd+")"),k(2===i.fd,"invalid handle for stderr ("+i.fd+")")},ensureErrnoError:()=>{Pe.ErrnoError||(Pe.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){for(var t in this.errno=e,Fe)if(Fe[t]===e){this.code=t;break}},this.setErrno(e),this.message=Ie[e],this.stack&&(Object.defineProperty(this,"stack",{value:(new Error).stack,writable:!0}),this.stack=xe(this.stack))},Pe.ErrnoError.prototype=new Error,Pe.ErrnoError.prototype.constructor=Pe.ErrnoError,[44].forEach((e=>{Pe.genericErrors[e]=new Pe.ErrnoError(e),Pe.genericErrors[e].stack=""})))},staticInit:()=>{Pe.ensureErrnoError(),Pe.nameTable=new Array(4096),Pe.mount(Le,{},"/"),Pe.createDefaultDirectories(),Pe.createDefaultDevices(),Pe.createSpecialDirectories(),Pe.filesystems={MEMFS:Le}},init:(e,r,i)=>{k(!Pe.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),Pe.init.initialized=!0,Pe.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,Pe.createStandardStreams()},quit:()=>{Pe.init.initialized=!1,br();for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=Pe.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=Pe.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=Pe.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=Te.basename(e),i=Pe.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:Pe.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var o=Te.join2(e,s);try{Pe.mkdir(o)}catch(e){}e=o}}return o},createFile:(e,t,r,i,n)=>{var s=Te.join2("string"==typeof e?e:Pe.getPath(e),t),o=Pe.getMode(i,n);return Pe.create(s,o)},createDataFile:(e,t,r,i,n,s)=>{var o=t;e&&(e="string"==typeof e?e:Pe.getPath(e),o=t?Te.join2(e,t):e);var a=Pe.getMode(i,n),d=Pe.create(o,a);if(r){if("string"==typeof r){for(var l=new Array(r.length),c=0,u=r.length;c{var n=Te.join2("string"==typeof e?e:Pe.getPath(e),t),s=Pe.getMode(!!r,!!i);Pe.createDevice.major||(Pe.createDevice.major=64);var o=Pe.makedev(Pe.createDevice.major++,0);return Pe.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(!u)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=hr(u(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new Pe.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||[]):hr(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(!d)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=Pe.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 c={};return Object.keys(l.stream_ops).forEach((e=>{var t=l.stream_ops[e];c[e]=function(){return Pe.forceLoadFile(l),t.apply(null,arguments)}})),c.read=(e,t,r,i,n)=>{Pe.forceLoadFile(l);var s=e.node.contents;if(n>=s.length)return 0;var o=Math.min(s.length-n,i);if(k(o>=0),s.slice)for(var a=0;a{var c=t?ke.resolve(Te.join2(e,t)):e,u=he("cp "+c);function h(r){function f(r){l&&l(),a||Pe.createDataFile(e,t,r,i,n,d),s&&s(),me(u)}Browser.handledByPreloadPlugin(r,c,f,(()=>{o&&o(),me(u)}))||f(r)}pe(u),"string"==typeof r?function(e,t,r,i){var n=i?"":he("al "+e);f(e,(function(r){k(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&me(n)}),(function(t){if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&pe(n)}(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=Pe.indexedDB();try{var n=i.open(Pe.DB_NAME(),Pe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{w("creating db"),n.result.createObjectStore(Pe.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([Pe.DB_STORE_NAME],"readwrite"),s=i.objectStore(Pe.DB_STORE_NAME),o=0,a=0,d=e.length;function l(){0==a?t():r()}e.forEach((e=>{var t=s.put(Pe.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=Pe.indexedDB();try{var n=i.open(Pe.DB_NAME(),Pe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([Pe.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var o=s.objectStore(Pe.DB_STORE_NAME),a=0,d=0,l=e.length;function c(){0==d?t():r()}e.forEach((e=>{var t=o.get(e);t.onsuccess=()=>{Pe.analyzePath(e).exists&&Pe.unlink(e),Pe.createDataFile(Te.dirname(e),Te.basename(e),t.result,!0,!0,!0),++a+d==l&&c()},t.onerror=()=>{d++,a+d==l&&c()}})),s.onerror=r},n.onerror=r},absolutePath:()=>{_e("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder:()=>{_e("FS.createFolder has been removed; use FS.mkdir instead")},createLink:()=>{_e("FS.createLink has been removed; use FS.symlink instead")},joinPath:()=>{_e("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc:()=>{_e("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath:()=>{_e("FS.standardizePath has been removed; use PATH.normalize instead")}},Me={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(Te.isAbs(t))return t;var i;if(-100===e)i=Pe.cwd();else{var n=Pe.getStream(e);if(!n)throw new Pe.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new Pe.ErrnoError(44);return i}return Te.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&Te.normalize(t)!==Te.normalize(Pe.getPath(e.node)))return-54;throw e}return G[r>>2]=i.dev,G[r+4>>2]=0,G[r+8>>2]=i.ino,G[r+12>>2]=i.mode,G[r+16>>2]=i.nlink,G[r+20>>2]=i.uid,G[r+24>>2]=i.gid,G[r+28>>2]=i.rdev,G[r+32>>2]=0,ve=[i.size>>>0,(ye=i.size,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],G[r+40>>2]=ve[0],G[r+44>>2]=ve[1],G[r+48>>2]=4096,G[r+52>>2]=i.blocks,G[r+56>>2]=i.atime.getTime()/1e3|0,G[r+60>>2]=0,G[r+64>>2]=i.mtime.getTime()/1e3|0,G[r+68>>2]=0,G[r+72>>2]=i.ctime.getTime()/1e3|0,G[r+76>>2]=0,ve=[i.ino>>>0,(ye=i.ino,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],G[r+80>>2]=ve[0],G[r+84>>2]=ve[1],0},doMsync:function(e,t,r,i,n){var s=N.slice(e,e+r);Pe.msync(t,s,n,r,i)},doMknod:function(e,t,r){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Pe.mknod(e,t,r),0},doReadlink:function(e,t,r){if(r<=0)return-28;var i=Pe.readlink(e),n=Math.min(r,P(i)),s=R[t+n];return F(i,t,r+1),R[t+n]=s,n},doAccess:function(e,t){if(-8&t)return-28;var r=Pe.lookupPath(e,{follow:!0}).node;if(!r)return-44;var i="";return 4&t&&(i+="r"),2&t&&(i+="w"),1&t&&(i+="x"),i&&Pe.nodePermissions(r,i)?-2:0},doReadv:function(e,t,r,i){for(var n=0,s=0;s>2],a=G[t+4>>2];t+=8;var d=Pe.read(e,R,o,a,i);if(d<0)return-1;if(n+=d,d>2],a=G[t+4>>2];t+=8;var d=Pe.write(e,R,o,a,i);if(d<0)return-1;n+=d}return n},varargs:void 0,get:function(){return k(null!=Me.varargs),Me.varargs+=4,G[Me.varargs-4>>2]},getStr:function(e){return L(e)},getStreamFromFD:function(e){var t=Pe.getStream(e);if(!t)throw new Pe.ErrnoError(8);return t}};function Re(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 Ne=void 0;function ze(e){for(var t="",r=e;N[r];)t+=Ne[N[r++]];return t}var Oe={},Ge={},He={};function $e(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}function Ve(e,t){return e=$e(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{Ge.hasOwnProperty(e)?n[t]=Ge[e]:(s.push(e),Oe.hasOwnProperty(e)||(Oe[e]=[]),Oe[e].push((()=>{n[t]=Ge[e],++o===s.length&&i(n)})))})),0===s.length&&i(n)}function Ze(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};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'),Ge.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ye("Cannot register type '"+i+"' twice")}if(Ge[e]=t,delete He[e],Oe.hasOwnProperty(e)){var n=Oe[e];delete Oe[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(ut).length}function ot(){var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e}var at=[];function dt(){for(;at.length;){var e=at.pop();e.$$.deleteScheduled=!1,e.delete()}}var lt=void 0;function ct(e){lt=e,at.length&<&<(dt)}var ut={};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),ut[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=>{console.warn(e.leakWarning.stack.replace(/^Error: /,"")),rt(e.$$)})),mt=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t},i=t.ptrType.registeredClass;r.leakWarning=new Error("Embind found a leaked C++ instance "+i.name+" <0x"+t.ptr.toString(16)+">.\nWe'll free it automatically in this case, but this functionality is not reliable across various environments.\nMake sure to invoke .delete() manually once you're done with the instance instead.\nOriginally allocated"),"captureStackTrace"in Error&&Error.captureStackTrace(r.leakWarning,pt),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 gt(){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 yt(){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 St(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 Et(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 At(e,t){if(null===t)return this.isReference&&Ye("null is not a valid "+this.name),0;t.$$||Ye('Cannot pass "'+qt(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 Et(t.$$.ptr,r,this.registeredClass)}function xt(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 "'+qt(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=Et(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,Yt.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Ye("Unsupporting sharing policy")}return r}function Ut(e,t){if(null===t)return this.isReference&&Ye("null is not a valid "+this.name),0;t.$$||Ye('Cannot pass "'+qt(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 Et(t.$$.ptr,r,this.registeredClass)}function Bt(e){return this.fromWireType(H[e>>2])}function Tt(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function kt(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,c){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=c,n||void 0!==t.baseClass?this.toWireType=xt:i?(this.toWireType=At,this.destructorFunction=null):(this.toWireType=Ut,this.destructorFunction=null)}function Lt(e,r,i){return e.includes("j")?function(e,r,i){k("dynCall_"+e in t,"bad function pointer type - no table for sig '"+e+"'"),i&&i.length?k(i.length===e.substring(1).replace(/j/g,"--").length):k(1==e.length);var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):(k(Ue(r),"missing table entry in dynCall: "+r),Ue(r).apply(null,i))}function It(e,t){var r=(e=ze(e)).includes("j")?function(e,t){k(e.includes("j"),"getDynCaller should only be called with i64 sigs");var r=[];return function(){return r.length=0,Object.assign(r,arguments),Lt(e,t,r)}}(e,t):Ue(t);return"function"!=typeof r&&Ye("unknown function pointer with signature "+e+": "+t),r}var Ft=void 0;function Pt(e){var t=vr(e),r=ze(t);return mr(t),r}function Mt(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||Ge[t]||(He[t]?He[t].forEach(e):(r.push(t),i[t]=!0))})),new Ft(e+": "+r.map(Pt).join([", "]))}function Rt(e,t){for(var r=[],i=0;i>2)+i]);return r}function Nt(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function zt(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?", ":"")+u),f+=(l?"var rv = ":"")+"invoker(fn"+(u.length>0?", ":"")+u+");\n",a)f+="runDestructors(destructors);\n";else for(d=o?1:2;d4&&0==--$t[e].refcount&&($t[e]=void 0,Ht.push(e))}function Wt(){for(var e=0,t=5;t<$t.length;++t)void 0!==$t[t]&&++e;return e}function jt(){for(var e=5;e<$t.length;++e)if(void 0!==$t[e])return $t[e];return null}var Yt={toValue:e=>(e||Ye("Cannot use deleted val. handle = "+e),$t[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=Ht.length?Ht.pop():$t.length;return $t[t]={refcount:1,value:e},t}}};function qt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function Kt(e,t){switch(t){case 2:return function(e){return this.fromWireType($[e>>2])};case 3:return function(e){return this.fromWireType(V[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Xt(e,t,r){switch(t){case 0:return r?function(e){return R[e]}:function(e){return N[e]};case 1:return r?function(e){return z[e>>1]}:function(e){return O[e>>1]};case 2:return r?function(e){return G[e>>2]}:function(e){return H[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function Zt(e,t){var r=Ge[e];return void 0===r&&Ye(t+" has unknown type "+Pt(e)),r}var Jt={};var Qt=[];var er=[];function tr(e,t){return k(t===(0|t)),(e>>>0)+4294967296*t}function rr(e,t){if(e<=0)return e;var r=t<=32?Math.abs(1<=r&&(t<=32||e>r)&&(e=-2*r+e),e}function ir(e,t){return e>=0?e:t<=32?2*Math.abs(1<>3]),i+=8):"i64"==e?(t=[G[i>>2],G[i+4>>2]],i+=8):(k(0==(3&i)),e="i32",t=G[i>>2],i+=4),t}for(var s,o,a,d,l,c,u=[];;){var f=r;if(0===(s=R[r>>0]))break;if(o=R[r+1>>0],37==s){var h=!1,p=!1,m=!1,_=!1,g=!1;e:for(;;){switch(o){case 43:h=!0;break;case 45:p=!0;break;case 35:m=!0;break;case 48:if(_)break e;_=!0;break;case 32:g=!0;break;default:break e}r++,o=R[r+1>>0]}var y=0;if(42==o)y=n("i32"),r++,o=R[r+1>>0];else for(;o>=48&&o<=57;)y=10*y+(o-48),r++,o=R[r+1>>0];var v,b=!1,w=-1;if(46==o){if(w=0,b=!0,r++,42==(o=R[r+1>>0]))w=n("i32"),r++;else for(;;){var S=R[r+1>>0];if(S<48||S>57)break;w=10*w+(S-48),r++}o=R[r+1>>0]}switch(w<0&&(w=6,b=!1),String.fromCharCode(o)){case"h":104==R[r+2>>0]?(r++,v=1):v=2;break;case"l":108==R[r+2>>0]?(r++,v=8):v=4;break;case"L":case"q":case"j":v=8;break;case"z":case"t":case"I":v=4;break;default:v=null}switch(v&&r++,o=R[r+1>>0],String.fromCharCode(o)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var E=100==o||105==o;if(a=n("i"+8*(v=v||4)),8==v&&(a=117==o?(l=a[0],c=a[1],(l>>>0)+4294967296*(c>>>0)):tr(a[0],a[1])),v<=4)a=(E?rr:ir)(a&Math.pow(256,v)-1,8*v);var A=Math.abs(a),x="";if(100==o||105==o)T=rr(a,8*v).toString(10);else if(117==o)T=ir(a,8*v).toString(10),a=Math.abs(a);else if(111==o)T=(m?"0":"")+A.toString(8);else if(120==o||88==o){if(x=m&&0!=a?"0x":"",a<0){a=-a,T=(A-1).toString(16);for(var U=[],B=0;B=0&&(h?x="+"+x:g&&(x=" "+x)),"-"==T.charAt(0)&&(x="-"+x,T=T.substr(1));x.length+T.lengthL&&L>=-4?(o=(103==o?"f":"F").charCodeAt(0),w-=L+1):(o=(103==o?"e":"E").charCodeAt(0),w--),D=Math.min(w,20)}101==o||69==o?(T=a.toExponential(D),/[eE][-+]\d$/.test(T)&&(T=T.slice(0,-1)+"0"+T.slice(-1))):102!=o&&70!=o||(T=a.toFixed(D),0===a&&((d=a)<0||0===d&&1/d==-1/0)&&(T="-"+T));var I=T.split("e");if(C&&!m)for(;I[0].length>1&&I[0].includes(".")&&("0"==I[0].slice(-1)||"."==I[0].slice(-1));)I[0]=I[0].slice(0,-1);else for(m&&-1==T.indexOf(".")&&(I[0]+=".");w>D++;)I[0]+="0";T=I[0]+(I.length>1?"e"+I[1]:""),69==o&&(T=T.toUpperCase()),a>=0&&(h?T="+"+T:g&&(T=" "+T))}else T=(a<0?"-":"")+"inf",_=!1;for(;T.length>0]);else u=u.concat(hr("(null)".substr(0,P),!0));if(p)for(;P0;)u.push(32);p||u.push(n("i8"));break;case"n":var M=n("i32*");G[M>>2]=u.length;break;case"%":u.push(s);break;default:for(B=f;B>0])}r+=2}else u.push(s),r+=1}return u}function sr(e){if(!e||!e.callee||!e.callee.name)return[null,"",""];e.callee.toString();var t=e.callee.name,r="(",i=!0;for(var n in e){var s=e[n];i||(r+=", "),i=!1,r+="number"==typeof s||"string"==typeof s?s:"("+typeof s+")"}r+=")";var o=e.callee.caller;return i&&(r=""),[e=o?o.arguments:[],t,r]}function or(e,t){24&e&&(t=t.replace(/\s+$/,""),t+=(t.length>0?"\n":"")+function(e){var t=Be(),r=t.lastIndexOf("_emscripten_log"),i=t.lastIndexOf("_emscripten_get_callstack"),n=t.indexOf("\n",Math.max(r,i))+1;t=t.slice(n),32&e&&E("EM_LOG_DEMANGLE is deprecated; ignoring"),8&e&&"undefined"==typeof emscripten_source_map&&(E('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'),e^=8,e|=16);var s=null;if(128&e)for(s=sr(arguments);s[1].includes("_emscripten_");)s=sr(s[0]);var o=t.split("\n");t="";var a=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),d=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),l=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var c in o){var u=o[c],f="",h="",p=0,m=0,_=l.exec(u);if(_&&5==_.length)f=_[1],h=_[2],p=_[3],m=_[4];else{if((_=a.exec(u))||(_=d.exec(u)),!(_&&_.length>=4)){t+=u+"\n";continue}f=_[1],h=_[2],p=_[3],m=0|_[4]}var g=!1;if(8&e){var y=emscripten_source_map.originalPositionFor({line:p,column:m});(g=y&&y.source)&&(64&e&&(y.source=y.source.substring(y.source.replace(/\\/g,"/").lastIndexOf("/")+1)),t+=" at "+f+" ("+y.source+":"+y.line+":"+y.column+")\n")}(16&e||!g)&&(64&e&&(h=h.substring(h.replace(/\\/g,"/").lastIndexOf("/")+1)),t+=(g?" = "+f:" at "+f)+" ("+h+":"+p+":"+m+")\n"),128&e&&s[0]&&(s[1]==f&&s[2].length>0&&(t=t.replace(/\s+$/,""),t+=" with values: "+s[1]+s[2]+"\n"),s=sr(s[0]))}return t.replace(/\s+$/,"")}(e)),1&e?4&e?console.error(t):2&e?console.warn(t):512&e?console.info(t):256&e?console.debug(t):console.log(t):6&e?S(t):w(t)}function ar(e){try{return b.grow(e-M.byteLength+65535>>>16),Q(b.buffer),1}catch(t){S("emscripten_realloc_buffer: Attempted to grow heap from "+M.byteLength+" bytes to "+e+" bytes, but got error: "+t)}}var dr={};function lr(){if(!lr.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",_:i||"./this.program"};for(var t in dr)void 0===dr[t]?delete e[t]:e[t]=dr[t];var r=[];for(var t in e)r.push(t+"="+e[t]);lr.strings=r}return lr.strings}var cr=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Pe.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ur=365,fr=146;function hr(e,t,r){var i=r>0?r:P(e)+1,n=new Array(i),s=I(e,n,0,n.length);return t&&(n.length=s),n}Object.defineProperties(cr.prototype,{read:{get:function(){return(this.mode&ur)===ur},set:function(e){e?this.mode|=ur:this.mode&=-366}},write:{get:function(){return(this.mode&fr)===fr},set:function(e){e?this.mode|=fr:this.mode&=-147}},isFolder:{get:function(){return Pe.isDir(this.mode)}},isDevice:{get:function(){return Pe.isChrdev(this.mode)}}}),Pe.FSNode=cr,Pe.staticInit(),Fe={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ne=e}(),je=t.BindingError=We(Error,"BindingError"),qe=t.InternalError=We(Error,"InternalError"),bt.prototype.isAliasOf=Je,bt.prototype.clone=_t,bt.prototype.delete=gt,bt.prototype.isDeleted=yt,bt.prototype.deleteLater=vt,t.getInheritedInstanceCount=st,t.getLiveInheritedInstances=ot,t.flushPendingDeletes=dt,t.setDelayFunction=ct,Dt.prototype.getPointee=Tt,Dt.prototype.destructor=kt,Dt.prototype.argPackAdvance=8,Dt.prototype.readValueFromPointer=Bt,Dt.prototype.deleteObject=Ct,Dt.prototype.fromWireType=pt,Ft=t.UnboundTypeError=We(Error,"UnboundTypeError"),t.count_emval_handles=Wt,t.get_first_emval=jt;var pr={__syscall_fcntl64:function(e,t,r){Me.varargs=r;try{var i=Me.getStreamFromFD(e);switch(t){case 0:return(n=Me.get())<0?-28:Pe.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=Me.get();return i.flags|=n,0;case 5:n=Me.get();return z[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,G[yr()>>2]=s,-1}}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}var s},__syscall_openat:function(e,t,r,i){Me.varargs=i;try{t=Me.getStr(t),t=Me.calculateAt(e,t);var n=i?Me.get():0;return Pe.open(t,r,n).fd}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return-e.errno}},_embind_register_bigint:function(e,t,r,i,n){},_embind_register_bool:function(e,t,r,i,n){var s=Re(r);Ze(e,{name:t=ze(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=R;else if(2===r)i=z;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=G}return this.fromWireType(i[e>>s])},destructorFunction:null})},_embind_register_class:function(e,r,i,n,s,o,a,d,l,c,u,f,h){u=ze(u),o=It(s,o),d&&(d=It(a,d)),c&&(c=It(l,c)),h=It(f,h);var p=$e(u);!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(){Mt("Cannot construct "+u+" 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 "+u);if(void 0===f.constructor_body)throw new je(u+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new je("Tried to invoke ctor of "+u+" 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 St(u,a,l,h,i,o,d,c),m=new Dt(u,f,!0,!1,!1),_=new Dt(u+"*",f,!1,!1,!1),g=new Dt(u+" const*",f,!1,!0,!1);return nt[e]={pointerType:_,constPointerType:g},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,_,g]}))},_embind_register_class_constructor:function(e,t,r,i,n,s){k(t>0);var o=Rt(t,r);n=It(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]=()=>{Mt("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),[]})),[]}))},_embind_register_class_function:function(e,t,r,i,n,s,o,a){var d=Rt(r,i);t=ze(t),s=It(n,s),Xe([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){Mt("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,c=l[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,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,[]})),[]}))},_embind_register_class_property:function(e,t,r,i,n,s,o,a,d,l){t=ze(t),n=It(i,n),Xe([],[e],(function(e){var i=(e=e[0]).name+"."+t,c={get:function(){Mt("Cannot access "+i+" due to unbound types",[r,o])},enumerable:!0,configurable:!0};return c.set=d?()=>{Mt("Cannot access "+i+" due to unbound types",[r,o])}:e=>{Ye(i+" is a read-only property")},Object.defineProperty(e.registeredClass.instancePrototype,t,c),Xe([],d?[r,o]:[r],(function(r){var o=r[0],c={get:function(){var t=Gt(this,e,i+" getter");return o.fromWireType(n(s,t))},enumerable:!0};if(d){d=It(a,d);var u=r[1];c.set=function(t){var r=Gt(this,e,i+" setter"),n=[];d(l,r,u.toWireType(n,t)),Nt(n)}}return Object.defineProperty(e.registeredClass.instancePrototype,t,c),[]})),[]}))},_embind_register_emval:function(e,t){Ze(e,{name:t=ze(t),fromWireType:function(e){var t=Yt.toValue(e);return Vt(e),t},toWireType:function(e,t){return Yt.toHandle(t)},argPackAdvance:8,readValueFromPointer:Bt,destructorFunction:null})},_embind_register_float:function(e,t,r){var i=Re(r);Ze(e,{name:t=ze(t),fromWireType:function(e){return e},toWireType:function(e,t){if("number"!=typeof t&&"boolean"!=typeof t)throw new TypeError('Cannot convert "'+qt(t)+'" to '+this.name);return t},argPackAdvance:8,readValueFromPointer:Kt(t,i),destructorFunction:null})},_embind_register_integer:function(e,t,r,i,n){t=ze(t),-1===n&&(n=4294967295);var s=Re(r),o=e=>e;if(0===i){var a=32-8*r;o=e=>e<>>a}var d=t.includes("unsigned"),l=(e,r)=>{if("number"!=typeof e&&"boolean"!=typeof e)throw new TypeError('Cannot convert "'+qt(e)+'" to '+r);if(en)throw new TypeError('Passing a number "'+qt(e)+'" from JS side to C/C++ side to an argument of type "'+t+'", which is outside the valid range ['+i+", "+n+"]!")};Ze(e,{name:t,fromWireType:o,toWireType:d?function(e,t){return l(t,this.name),t>>>0}:function(e,t){return l(t,this.name),t},argPackAdvance:8,readValueFromPointer:Xt(t,s,0!==i),destructorFunction:null})},_embind_register_memory_view:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=H,r=t[e>>=2],n=t[e+1];return new i(M,n,r)}Ze(e,{name:r=ze(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},_embind_register_std_string:function(e,t){var r="std::string"===(t=ze(t));Ze(e,{name:t,fromWireType:function(e){var t,i=H[e>>2];if(r)for(var n=e+4,s=0;s<=i;++s){var o=e+4+s;if(s==i||0==N[o]){var a=L(n,o-n);void 0===t?t=a:(t+=String.fromCharCode(0),t+=a),n=o+1}}else{var d=new Array(i);for(s=0;sP(t):()=>t.length)(),s=_r(4+n+1);if(H[s>>2]=n,r&&i)F(t,s+4,n+1);else if(i)for(var o=0;o255&&(mr(s),Ye("String has UTF-16 code units that do not fit in 8 bits")),N[s+4+o]=a}else for(o=0;oO,a=1):4===t&&(i=K,n=X,o=Z,s=()=>H,a=2),Ze(e,{name:r,fromWireType:function(e){for(var r,n=H[e>>2],o=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==o[c>>a]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return mr(e),r},toWireType:function(e,i){"string"!=typeof i&&Ye("Cannot pass non-string to C++ string type "+r);var s=o(i),d=_r(4+s+t);return H[d>>2]=s>>a,n(i,d+4,s+t),null!==e&&e.push(mr,d),d},argPackAdvance:8,readValueFromPointer:Bt,destructorFunction:function(e){mr(e)}})},_embind_register_void:function(e,t){Ze(e,{isVoid:!0,name:t=ze(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},_emscripten_date_now:function(){return Date.now()},_emval_as:function(e,t,r){e=Yt.toValue(e),t=Zt(t,"emval::as");var i=[],n=Yt.toHandle(i);return G[r>>2]=n,t.toWireType(i,e)},_emval_call_void_method:function(e,t,r,i){var n,s;(e=Qt[e])(t=Yt.toValue(t),r=void 0===(s=Jt[n=r])?ze(n):s,null,i)},_emval_decref:Vt,_emval_get_method_caller:function(e,t){var r=function(e,t){for(var r=new Array(e),i=0;i>2)+i],"parameter "+i);return r}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=er[n];if(void 0!==s)return s;for(var o=["retType"],a=[i],d="",l=0;l4&&($t[e].refcount+=1)},_emval_run_destructors:function(e){Nt(Yt.toValue(e)),Vt(e)},_emval_take_value:function(e,t){var r=(e=Zt(e,"_emval_take_value")).readValueFromPointer(t);return Yt.toHandle(r)},_gmtime_js:function(e,t){var r=new Date(1e3*G[e>>2]);G[t>>2]=r.getUTCSeconds(),G[t+4>>2]=r.getUTCMinutes(),G[t+8>>2]=r.getUTCHours(),G[t+12>>2]=r.getUTCDate(),G[t+16>>2]=r.getUTCMonth(),G[t+20>>2]=r.getUTCFullYear()-1900,G[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/864e5|0;G[t+28>>2]=n},_localtime_js:function(e,t){var r=new Date(1e3*G[e>>2]);G[t>>2]=r.getSeconds(),G[t+4>>2]=r.getMinutes(),G[t+8>>2]=r.getHours(),G[t+12>>2]=r.getDate(),G[t+16>>2]=r.getMonth(),G[t+20>>2]=r.getFullYear()-1900,G[t+24>>2]=r.getDay();var i=new Date(r.getFullYear(),0,1),n=(r.getTime()-i.getTime())/864e5|0;G[t+28>>2]=n,G[t+36>>2]=-60*r.getTimezoneOffset();var s=new Date(r.getFullYear(),6,1).getTimezoneOffset(),o=i.getTimezoneOffset(),a=0|(s!=o&&r.getTimezoneOffset()==Math.min(o,s));G[t+32>>2]=a},_mktime_js:function(e){var t=new Date(G[e+20>>2]+1900,G[e+16>>2],G[e+12>>2],G[e+8>>2],G[e+4>>2],G[e>>2],0),r=G[e+32>>2],i=t.getTimezoneOffset(),n=new Date(t.getFullYear(),0,1),s=new Date(t.getFullYear(),6,1).getTimezoneOffset(),o=n.getTimezoneOffset(),a=Math.min(o,s);if(r<0)G[e+32>>2]=Number(s!=o&&a==i);else if(r>0!=(a==i)){var d=Math.max(o,s),l=r>0?a:d;t.setTime(t.getTime()+6e4*(l-i))}G[e+24>>2]=t.getDay();var c=(t.getTime()-n.getTime())/864e5|0;return G[e+28>>2]=c,G[e>>2]=t.getSeconds(),G[e+4>>2]=t.getMinutes(),G[e+8>>2]=t.getHours(),G[e+12>>2]=t.getDate(),G[e+16>>2]=t.getMonth(),t.getTime()/1e3|0},_tzset_js:function e(t,r,i){e.called||(e.called=!0,function(e,t,r){var i=(new Date).getFullYear(),n=new Date(i,0,1),s=new Date(i,6,1),o=n.getTimezoneOffset(),a=s.getTimezoneOffset(),d=Math.max(o,a);function l(e){var t=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return t?t[1]:"GMT"}G[e>>2]=60*d,G[t>>2]=Number(o!=a);var c=l(n),u=l(s),f=J(c),h=J(u);a>2]=f,G[r+4>>2]=h):(G[r>>2]=h,G[r+4>>2]=f)}(t,r,i))},abort:function(){_e("native code called abort()")},emscripten_log:function(e,t,r){or(e,D(nr(t,r),0))},emscripten_resize_heap:function(e){var t=N.length;k((e>>>=0)>t);var r,i,n=2147483648;if(e>n)return S("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+"2147483648 bytes!"),!1;for(var s=1;s<=4;s*=2){var o=t*(1+.2/s);o=Math.min(o,e+100663296);var a=Math.min(n,(r=Math.max(e,o))+((i=65536)-r%i)%i);if(ar(a))return!0}return S("Failed to grow the heap from "+t+" bytes to "+a+" bytes, not enough memory!"),!1},environ_get:function(e,t){var r=0;return lr().forEach((function(i,n){var s=t+r;G[e+4*n>>2]=s,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(R[t>>0]=0)}(i,s),r+=i.length+1})),0},environ_sizes_get:function(e,t){var r=lr();G[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),G[t>>2]=i,0},fd_close:function(e){try{var t=Me.getStreamFromFD(e);return Pe.close(t),0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},fd_fdstat_get:function(e,t){try{var r=Me.getStreamFromFD(e),i=r.tty?2:Pe.isDir(r.mode)?3:Pe.isLink(r.mode)?7:4;return R[t>>0]=i,0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},fd_read:function(e,t,r,i){try{var n=Me.getStreamFromFD(e),s=Me.doReadv(n,t,r);return G[i>>2]=s,0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},fd_seek:function(e,t,r,i,n){try{var s=Me.getStreamFromFD(e),o=4294967296*r+(t>>>0),a=9007199254740992;return o<=-a||o>=a?-61:(Pe.llseek(s,o,i),ve=[s.position>>>0,(ye=s.position,+Math.abs(ye)>=1?ye>0?(0|Math.min(+Math.floor(ye/4294967296),4294967295))>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],G[n>>2]=ve[0],G[n+4>>2]=ve[1],s.getdents&&0===o&&0===i&&(s.getdents=null),0)}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},fd_write:function(e,t,r,i){try{var n=Me.getStreamFromFD(e),s=Me.doWritev(n,t,r);return G[i>>2]=s,0}catch(e){if(void 0===Pe||!(e instanceof Pe.ErrnoError))throw e;return e.errno}},setTempRet0:function(e){}};!function(){var e={env:pr,wasi_snapshot_preview1:pr};function r(e,r){var i,n=e.exports;t.asm=n,k(b=t.asm.memory,"memory not found in wasm exports"),Q(b.buffer),k(te=t.asm.__indirect_function_table,"table not found in wasm exports"),i=t.asm.__wasm_call_ctors,oe.unshift(i),me("wasm-instantiate")}pe("wasm-instantiate");var i=t;function s(e){k(t===i,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),i=null,r(e.instance)}function o(t){return function(){if(!v&&(n||d)){if("function"==typeof fetch&&!we(ge))return fetch(ge,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ge+"'";return e.arrayBuffer()})).catch((function(){return Ee(ge)}));if(f)return new Promise((function(e,t){f(ge,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Ee(ge)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){S("failed to asynchronously prepare wasm: "+e),we(ge)&&S("warning: Loading from a file URI ("+ge+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),_e(e)}))}if(t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return S("Module.instantiateWasm callback failed with error: "+e),!1}v||"function"!=typeof WebAssembly.instantiateStreaming||be(ge)||we(ge)||"function"!=typeof fetch?o(s):fetch(ge,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(s,(function(e){return S("wasm streaming compile failed: "+e),S("falling back to ArrayBuffer instantiation"),o(s)}))}))}(),t.___wasm_call_ctors=Se("__wasm_call_ctors");var mr=t._free=Se("free"),_r=t._malloc=Se("malloc"),gr=t._strlen=Se("strlen"),yr=t.___errno_location=Se("__errno_location"),vr=t.___getTypeName=Se("__getTypeName");t.___embind_register_native_and_builtin_types=Se("__embind_register_native_and_builtin_types");var br=t.___stdio_exit=Se("__stdio_exit"),wr=t._emscripten_builtin_memalign=Se("emscripten_builtin_memalign"),Sr=t._emscripten_stack_init=function(){return(Sr=t._emscripten_stack_init=t.asm.emscripten_stack_init).apply(null,arguments)};t._emscripten_stack_get_free=function(){return(t._emscripten_stack_get_free=t.asm.emscripten_stack_get_free).apply(null,arguments)},t._emscripten_stack_get_base=function(){return(t._emscripten_stack_get_base=t.asm.emscripten_stack_get_base).apply(null,arguments)};var Er,Ar=t._emscripten_stack_get_end=function(){return(Ar=t._emscripten_stack_get_end=t.asm.emscripten_stack_get_end).apply(null,arguments)};function xr(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Ur(e){function r(){Er||(Er=!0,t.calledRun=!0,T||(ne(),k(!de),de=!0,t.noFSInit||Pe.init.initialized||Pe.init(),Pe.ignorePermissions=!1,Ae(oe),t.onRuntimeInitialized&&t.onRuntimeInitialized(),k(!t._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(ne(),t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),ae.unshift(e);var e;Ae(ae)}()))}le>0||(Sr(),ie(),function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),se.unshift(e);var e;Ae(se)}(),le>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),r()}),1)):r(),ne()))}if(t.stackSave=Se("stackSave"),t.stackRestore=Se("stackRestore"),t.stackAlloc=Se("stackAlloc"),t.dynCall_ijiii=Se("dynCall_ijiii"),t.dynCall_viiijj=Se("dynCall_viiijj"),t.dynCall_jij=Se("dynCall_jij"),t.dynCall_jii=Se("dynCall_jii"),t.dynCall_jiji=Se("dynCall_jiji"),t._ff_h264_cabac_tables=112940,B("intArrayFromString",!1),B("intArrayToString",!1),B("ccall",!1),B("cwrap",!1),B("setValue",!1),B("getValue",!1),B("allocate",!1),B("UTF8ArrayToString",!1),B("UTF8ToString",!1),B("stringToUTF8Array",!1),B("stringToUTF8",!1),B("lengthBytesUTF8",!1),B("stackTrace",!1),B("addOnPreRun",!1),B("addOnInit",!1),B("addOnPreMain",!1),B("addOnExit",!1),B("addOnPostRun",!1),B("writeStringToMemory",!1),B("writeArrayToMemory",!1),B("writeAsciiToMemory",!1),B("addRunDependency",!0),B("removeRunDependency",!0),B("FS_createFolder",!1),B("FS_createPath",!0),B("FS_createDataFile",!0),B("FS_createPreloadedFile",!0),B("FS_createLazyFile",!0),B("FS_createLink",!1),B("FS_createDevice",!0),B("FS_unlink",!0),B("getLEB",!1),B("getFunctionTables",!1),B("alignFunctionTables",!1),B("registerFunctions",!1),B("addFunction",!1),B("removeFunction",!1),B("prettyPrint",!1),B("dynCall",!1),B("getCompilerSetting",!1),B("print",!1),B("printErr",!1),B("getTempRet0",!1),B("setTempRet0",!1),B("callMain",!1),B("abort",!1),B("keepRuntimeAlive",!1),B("ptrToString",!1),B("zeroMemory",!1),B("stringToNewUTF8",!1),B("emscripten_realloc_buffer",!1),B("ENV",!1),B("ERRNO_CODES",!1),B("ERRNO_MESSAGES",!1),B("setErrNo",!1),B("inetPton4",!1),B("inetNtop4",!1),B("inetPton6",!1),B("inetNtop6",!1),B("readSockaddr",!1),B("writeSockaddr",!1),B("DNS",!1),B("getHostByName",!1),B("Protocols",!1),B("Sockets",!1),B("getRandomDevice",!1),B("traverseStack",!1),B("UNWIND_CACHE",!1),B("convertPCtoSourceLocation",!1),B("readAsmConstArgsArray",!1),B("readAsmConstArgs",!1),B("mainThreadEM_ASM",!1),B("jstoi_q",!1),B("jstoi_s",!1),B("getExecutableName",!1),B("listenOnce",!1),B("autoResumeAudioContext",!1),B("dynCallLegacy",!1),B("getDynCaller",!1),B("dynCall",!1),B("setWasmTableEntry",!1),B("getWasmTableEntry",!1),B("handleException",!1),B("runtimeKeepalivePush",!1),B("runtimeKeepalivePop",!1),B("callUserCallback",!1),B("maybeExit",!1),B("safeSetTimeout",!1),B("asmjsMangle",!1),B("asyncLoad",!1),B("alignMemory",!1),B("mmapAlloc",!1),B("reallyNegative",!1),B("unSign",!1),B("reSign",!1),B("formatString",!1),B("PATH",!1),B("PATH_FS",!1),B("SYSCALLS",!1),B("getSocketFromFD",!1),B("getSocketAddress",!1),B("JSEvents",!1),B("registerKeyEventCallback",!1),B("specialHTMLTargets",!1),B("maybeCStringToJsString",!1),B("findEventTarget",!1),B("findCanvasEventTarget",!1),B("getBoundingClientRect",!1),B("fillMouseEventData",!1),B("registerMouseEventCallback",!1),B("registerWheelEventCallback",!1),B("registerUiEventCallback",!1),B("registerFocusEventCallback",!1),B("fillDeviceOrientationEventData",!1),B("registerDeviceOrientationEventCallback",!1),B("fillDeviceMotionEventData",!1),B("registerDeviceMotionEventCallback",!1),B("screenOrientation",!1),B("fillOrientationChangeEventData",!1),B("registerOrientationChangeEventCallback",!1),B("fillFullscreenChangeEventData",!1),B("registerFullscreenChangeEventCallback",!1),B("registerRestoreOldStyle",!1),B("hideEverythingExceptGivenElement",!1),B("restoreHiddenElements",!1),B("setLetterbox",!1),B("currentFullscreenStrategy",!1),B("restoreOldWindowedStyle",!1),B("softFullscreenResizeWebGLRenderTarget",!1),B("doRequestFullscreen",!1),B("fillPointerlockChangeEventData",!1),B("registerPointerlockChangeEventCallback",!1),B("registerPointerlockErrorEventCallback",!1),B("requestPointerLock",!1),B("fillVisibilityChangeEventData",!1),B("registerVisibilityChangeEventCallback",!1),B("registerTouchEventCallback",!1),B("fillGamepadEventData",!1),B("registerGamepadEventCallback",!1),B("registerBeforeUnloadEventCallback",!1),B("fillBatteryEventData",!1),B("battery",!1),B("registerBatteryEventCallback",!1),B("setCanvasElementSize",!1),B("getCanvasElementSize",!1),B("demangle",!1),B("demangleAll",!1),B("jsStackTrace",!1),B("stackTrace",!1),B("getEnvStrings",!1),B("checkWasiClock",!1),B("writeI53ToI64",!1),B("writeI53ToI64Clamped",!1),B("writeI53ToI64Signaling",!1),B("writeI53ToU64Clamped",!1),B("writeI53ToU64Signaling",!1),B("readI53FromI64",!1),B("readI53FromU64",!1),B("convertI32PairToI53",!1),B("convertU32PairToI53",!1),B("dlopenMissingError",!1),B("setImmediateWrapped",!1),B("clearImmediateWrapped",!1),B("polyfillSetImmediate",!1),B("uncaughtExceptionCount",!1),B("exceptionLast",!1),B("exceptionCaught",!1),B("ExceptionInfo",!1),B("exception_addRef",!1),B("exception_decRef",!1),B("Browser",!1),B("setMainLoop",!1),B("wget",!1),B("FS",!1),B("MEMFS",!1),B("TTY",!1),B("PIPEFS",!1),B("SOCKFS",!1),B("_setNetworkCallback",!1),B("tempFixedLengthArray",!1),B("miniTempWebGLFloatBuffers",!1),B("heapObjectForWebGLType",!1),B("heapAccessShiftForWebGLHeap",!1),B("GL",!1),B("emscriptenWebGLGet",!1),B("computeUnpackAlignedImageSize",!1),B("emscriptenWebGLGetTexPixelData",!1),B("emscriptenWebGLGetUniform",!1),B("webglGetUniformLocation",!1),B("webglPrepareUniformLocationsBeforeFirstUse",!1),B("webglGetLeftBracePos",!1),B("emscriptenWebGLGetVertexAttrib",!1),B("writeGLArray",!1),B("AL",!1),B("SDL_unicode",!1),B("SDL_ttfContext",!1),B("SDL_audio",!1),B("SDL",!1),B("SDL_gfx",!1),B("GLUT",!1),B("EGL",!1),B("GLFW_Window",!1),B("GLFW",!1),B("GLEW",!1),B("IDBStore",!1),B("runAndAbortIfError",!1),B("InternalError",!1),B("BindingError",!1),B("UnboundTypeError",!1),B("PureVirtualError",!1),B("init_embind",!1),B("throwInternalError",!1),B("throwBindingError",!1),B("throwUnboundTypeError",!1),B("ensureOverloadTable",!1),B("exposePublicSymbol",!1),B("replacePublicSymbol",!1),B("extendError",!1),B("createNamedFunction",!1),B("registeredInstances",!1),B("getBasestPointer",!1),B("registerInheritedInstance",!1),B("unregisterInheritedInstance",!1),B("getInheritedInstance",!1),B("getInheritedInstanceCount",!1),B("getLiveInheritedInstances",!1),B("registeredTypes",!1),B("awaitingDependencies",!1),B("typeDependencies",!1),B("registeredPointers",!1),B("registerType",!1),B("whenDependentTypesAreResolved",!1),B("embind_charCodes",!1),B("embind_init_charCodes",!1),B("readLatin1String",!1),B("getTypeName",!1),B("heap32VectorToArray",!1),B("requireRegisteredType",!1),B("getShiftFromSize",!1),B("integerReadValueFromPointer",!1),B("enumReadValueFromPointer",!1),B("floatReadValueFromPointer",!1),B("simpleReadValueFromPointer",!1),B("runDestructors",!1),B("new_",!1),B("craftInvokerFunction",!1),B("embind__requireFunction",!1),B("tupleRegistrations",!1),B("structRegistrations",!1),B("genericPointerToWireType",!1),B("constNoSmartPtrRawPointerToWireType",!1),B("nonConstNoSmartPtrRawPointerToWireType",!1),B("init_RegisteredPointer",!1),B("RegisteredPointer",!1),B("RegisteredPointer_getPointee",!1),B("RegisteredPointer_destructor",!1),B("RegisteredPointer_deleteObject",!1),B("RegisteredPointer_fromWireType",!1),B("runDestructor",!1),B("releaseClassHandle",!1),B("finalizationRegistry",!1),B("detachFinalizer_deps",!1),B("detachFinalizer",!1),B("attachFinalizer",!1),B("makeClassHandle",!1),B("init_ClassHandle",!1),B("ClassHandle",!1),B("ClassHandle_isAliasOf",!1),B("throwInstanceAlreadyDeleted",!1),B("ClassHandle_clone",!1),B("ClassHandle_delete",!1),B("deletionQueue",!1),B("ClassHandle_isDeleted",!1),B("ClassHandle_deleteLater",!1),B("flushPendingDeletes",!1),B("delayFunction",!1),B("setDelayFunction",!1),B("RegisteredClass",!1),B("shallowCopyInternalPointer",!1),B("downcastPointer",!1),B("upcastPointer",!1),B("validateThis",!1),B("char_0",!1),B("char_9",!1),B("makeLegalFunctionName",!1),B("emval_handle_array",!1),B("emval_free_list",!1),B("emval_symbols",!1),B("init_emval",!1),B("count_emval_handles",!1),B("get_first_emval",!1),B("getStringOrSymbol",!1),B("Emval",!1),B("emval_newers",!1),B("craftEmvalAllocator",!1),B("emval_get_global",!1),B("emval_methodCallers",!1),B("emval_registeredMethods",!1),B("warnOnce",!1),B("stackSave",!1),B("stackRestore",!1),B("stackAlloc",!1),B("AsciiToString",!1),B("stringToAscii",!1),B("UTF16ToString",!1),B("stringToUTF16",!1),B("lengthBytesUTF16",!1),B("UTF32ToString",!1),B("stringToUTF32",!1),B("lengthBytesUTF32",!1),B("allocateUTF8",!1),B("allocateUTF8OnStack",!1),t.writeStackCookie=ie,t.checkStackCookie=ne,U("ALLOC_NORMAL",!1),U("ALLOC_STACK",!1),ue=function e(){Er||Ur(),Er||(ue=e)},t.run=Ur,t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();Ur(),e.exports=t})),u=1e-6,f="undefined"!=typeof Float32Array?Float32Array:Array;function h(){var e=new f(16);return f!=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 p(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 m,_=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 g(e,t,r){var i=new f(3);return i[0]=e,i[1]=t,i[2]=r,i}m=new f(3),f!=Float32Array&&(m[0]=0,m[1]=0,m[2]=0);var y=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=c(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=c(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 i={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")}},n=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}}(),s=l(),o=l(),a=l(),d=l();function l(){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 c(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 f(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 s=h();_(s,-1,1,-1,1,.1,100);const l=h();p(l);const c=h();!function(e,t,r,i){var n,s,o,a,d,l,c,f,h,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Yt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],qt=Yt,Kt=Yt;function Xt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Zt(e){return Jt(e)&&e[1]===Lt}function Jt(e){return e[0]>>4===We}const Qt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function er(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,o=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Qt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let a=Qt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(o=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Wt.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),o=s-3):(i=2,r=new Array(2),o=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),o=s):(i=5,o=s,r=new Array(4),s>=6?o=s-3:1===d&&(i=2,r=new Array(2),o=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&o)>>>1,r[2]=(1&o)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:a,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class tr{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],o=(192&e[r+2])>>>6,a=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let f=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=f,0!==i&&1!==i||0!==n)continue;let h=e.subarray(r,r+u);t={},t.audio_object_type=o+1,t.sampling_freq_index=a,t.sampling_frequency=qt[a],t.channel_config=d,t.data=h}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class rr{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new jt(t.subarray(i+3,i+3+n)),o=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}o=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let a=s.readBits(3);if(0!==a){console.error(`frameLengthType = ${a}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),o={},o.audio_object_type=r,o.sampling_freq_index=i,o.sampling_frequency=qt[o.sampling_freq_index],o.channel_config=n,o.other_data_present=d}let a=0;for(;;){let e=s.readByte();if(a+=e,255!==e)break}let d=new Uint8Array(a);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function nr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 sr(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++;return{payload:e.subarray(i),type:n,size:s,uuid:o}}function or(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 ar(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 dr(){return(new Date).getTime()}function lr(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function cr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function ur(e){let t=0,r=cr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=cr(),o=s-r;o>=1e3&&(e(t/o*1e3),r=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){}})();function fr(e){return null==e}function hr(e){return!fr(e)}function pr(e){return"function"==typeof e}function mr(e){let t=null,r=31&e[0];return r!==Ke&&r!==Xe||(t=$e),t||(r=(126&e[0])>>1,r!==ct&&r!==ft&&r!==pt||(t=Ve)),t}function _r(){return"undefined"!=typeof WritableStream}function gr(e){e.close()}function yr(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 vr(e){return e.ok&&e.status>=200&&e.status<=299}function br(){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}(D)}function wr(e){return e[0]>>4===It&&e[1]===Lt}function Sr(e){return!0===e||"true"===e}function Er(e){return!0!==e&&"true"!==e}function Ar(){return!!(Wt.Worker&&Wt.MediaSource&&"canConstructInDedicatedWorker"in Wt.MediaSource&&!0===Wt.MediaSource.canConstructInDedicatedWorker)}function xr(e,t){const r=nr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===nt||r===ot||r===dt)||Er(t)&&r===Ze)&&(i=!0)})),i}var Ur=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 Br=Symbol(32),Tr=Symbol(16),kr=Symbol(8);class Cr{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 Ur(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(Br)}readU16(){return this.read(Tr)}readU8(){return this.read(kr)}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===Br){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Tr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===kr){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}}Cr.U32=Br,Cr.U16=Tr,Cr.U8=kr;class Dr{constructor(e){this.log=function(t){if(e._opt.debugLevel==U){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=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=Lr._ebsp2rbsp(e),r=new jt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Lr.getProfileString(i),o=Lr.getLevelString(n),a=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,x=2*e,S=A/x}}let U=1;1===b&&1===w||(U=b/w);let B=0,T=0;if(0===a)B=1,T=2-m;else{B=3===a?1:2,T=(1===a?2:1)*(2-m)}let k=16*(h+1),C=16*(p+1)*(2-m);k-=(_+g)*B,C-=(y+v)*T;let D=Math.ceil(k*U);return r.destroy(),r=null,{profile_string:s,level_string:o,bit_depth:c,ref_frames:f,chroma_format:d,chroma_format_string:Lr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:x,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,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=Lr._ebsp2rbsp(e),n=new jt(i);n.readByte();let s=n.readByte();n.readByte();let o=n.readByte();n.readUEG();let a=Lr.getProfileString(s),d=Lr.getLevelString(o),l=1,c=420,u=[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&&(c=u[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?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=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);U=n.readBool(),B=t,T=2*e,x=B/T}}let k=1;1===E&&1===A||(k=E/A);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 L=16*(_+1),I=16*(g+1)*(2-y);L-=(v+b)*C,I-=(w+S)*D;let F=Math.ceil(L*k);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:c,chroma_format_string:Lr.getChromaFormatString(c),frame_rate:{fixed:U,fps:x,fps_den:T,fps_num:B},sar_ratio:{width:E,height:A},codec_size:{width:L,height:I},present_size:{width:F,height:I}}}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 Pr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Mr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Lr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let o=new Uint8Array(i);o[0]=1,o[1]=t[1],o[2]=t[2],o[3]=t[3],o[4]=255,o[5]=225;let a=t.byteLength;o[6]=a>>>8,o[7]=255&a;let d=8;o.set(t,8),d+=a,o[d]=1;let l=r.byteLength;o[d+1]=l>>>8,o[d+2]=255&l,o.set(r,d+3),d+=3+l,n&&(o[d]=252|s.chroma_format_idc,o[d+1]=248|s.bit_depth_luma-8,o[d+2]=248|s.bit_depth_chroma-8,o[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+o.byteLength);return u.set(c,0),u.set(o,c.length),u}function Rr(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}function Nr(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 zr(e){return 31&e[0]}function Or(e){return e===et}function Gr(e){return!function(e){return e===Ke||e===Xe}(e)&&!Or(e)}function Hr(e){return e===Ze}function $r(e){if(0===e.length)return!1;const t=zr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=it||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Wr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const jr=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)},Yr=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"}};class qr{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 parseVPS(e){let t=qr._ebsp2rbsp(e),r=new jt(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()}}static parseSPS(e){let t=qr._ebsp2rbsp(e),r=new jt(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(),c=r.readBits(5),u=r.readByte(),f=r.readByte(),h=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(F=t[e-1],P=i[e-1]):255===e&&(F=r.readBits(16),P=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(),L=r.readBool(),L&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),N=r.readBits(32),r.readBool()&&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();M=n;let s=!0,o=1;n||(s=r.readBool());let a=!1;if(s?r.readUEG():a=r.readBool(),a||(o=r.readUEG()+1),e){for(let e=0;e>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)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{let t=jr(e),r=new jt(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()}})(t),o=(e=>{let t=jr(e),r=new jt(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(),c=r.readBits(5),u=r.readByte(),f=r.readByte(),h=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];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?(F=t[e-1],P=i[e-1]):255===e&&(F=r.readBits(16),P=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),L=r.readBool(),L&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),o+=r.readUEG()),r.readBool()&&(R=r.readBits(32),N=r.readBits(32),r.readBool()&&(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();M=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=jr(e),r=new jt(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}})(r);n=Object.assign(n,s,o,a);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|ct,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|ft,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|pt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Qr(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}function ei(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 ti(e){return(126&e[0])>>1}function ri(e){return e===_t}function ii(e){return!function(e){return e>=32&&e<=40}(e)}function ni(e){return e>=16&&e<=21}function si(e){if(0===e.length)return!1;const t=ti(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class ai{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function di(e){return parseInt(e)===e}function li(e){if(!di(e.length))return!1;for(var t=0;t255)return!1;return!0}function ci(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(!li(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(di(e.length)&&li(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function ui(e){return new Uint8Array(e)}function fi(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 hi,pi={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("")}},mi=(hi="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+hi[15&i])}return t.join("")}}),_i={16:10,24:12,32:14},gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ei=[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],Ai=[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],xi=[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],Ui=[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],Bi=[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],Ti=[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],ki=[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],Ci=[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],Di=[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 Li(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^yi[o>>8&255]<<16^yi[255&o]<<8^yi[o>>24&255]^gi[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^yi[o>>16&255]<<16^yi[o>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^ki[o>>16&255]^Ci[o>>8&255]^Di[255&o]},Ii.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=Li(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^wi[i[(n+1)%4]>>16&255]^Si[i[(n+2)%4]>>8&255]^Ei[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var o,a=ui(16);for(n=0;n<4;n++)o=this._Ke[t][n],a[4*n]=255&(yi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(yi[i[(n+1)%4]>>16&255]^o>>16),a[4*n+2]=255&(yi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(yi[255&i[(n+3)%4]]^o);return a},Ii.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=Li(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^xi[i[(n+3)%4]>>16&255]^Ui[i[(n+2)%4]>>8&255]^Bi[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var o,a=ui(16);for(n=0;n<4;n++)o=this._Kd[t][n],a[4*n]=255&(vi[i[n]>>24&255]^o>>24),a[4*n+1]=255&(vi[i[(n+3)%4]>>16&255]^o>>16),a[4*n+2]=255&(vi[i[(n+2)%4]>>8&255]^o>>8),a[4*n+3]=255&(vi[255&i[(n+1)%4]]^o);return a};var Fi=function(e){if(!(this instanceof Fi))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ii(e)};Fi.prototype.encrypt=function(e){if((e=ci(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=ui(e.length),r=ui(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)},Ni.prototype.setBytes=function(e){if(16!=(e=ci(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ni.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var zi=function(e,t){if(!(this instanceof zi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ni||(t=new Ni(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ii(e)};zi.prototype.encrypt=function(e){for(var t=ci(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=o<<24-(i+s)%4*8}else for(var a=0;a>>2]=r[a>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=l.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new c.init(r,t/2)}},h=u.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new c.init(r,t)}},p=u.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},m=o.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,o=this.blockSize,a=s/(4*o),d=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,l=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,o=0;o>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,a=0;a<4&&s+.75*a>>6*(3-a)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-o%4*2;n[s>>>2]|=a<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(r[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|r[o+2>>>2]>>>24-(o+2)%4*8&255,d=0;d<4&&o+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var o=0;o>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,o=e[t+0],d=e[t+1],h=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],x=e[t+14],U=e[t+15],B=s[0],T=s[1],k=s[2],C=s[3];B=l(B,T,k,C,o,7,a[0]),C=l(C,B,T,k,d,12,a[1]),k=l(k,C,B,T,h,17,a[2]),T=l(T,k,C,B,p,22,a[3]),B=l(B,T,k,C,m,7,a[4]),C=l(C,B,T,k,_,12,a[5]),k=l(k,C,B,T,g,17,a[6]),T=l(T,k,C,B,y,22,a[7]),B=l(B,T,k,C,v,7,a[8]),C=l(C,B,T,k,b,12,a[9]),k=l(k,C,B,T,w,17,a[10]),T=l(T,k,C,B,S,22,a[11]),B=l(B,T,k,C,E,7,a[12]),C=l(C,B,T,k,A,12,a[13]),k=l(k,C,B,T,x,17,a[14]),B=c(B,T=l(T,k,C,B,U,22,a[15]),k,C,d,5,a[16]),C=c(C,B,T,k,g,9,a[17]),k=c(k,C,B,T,S,14,a[18]),T=c(T,k,C,B,o,20,a[19]),B=c(B,T,k,C,_,5,a[20]),C=c(C,B,T,k,w,9,a[21]),k=c(k,C,B,T,U,14,a[22]),T=c(T,k,C,B,m,20,a[23]),B=c(B,T,k,C,b,5,a[24]),C=c(C,B,T,k,x,9,a[25]),k=c(k,C,B,T,p,14,a[26]),T=c(T,k,C,B,v,20,a[27]),B=c(B,T,k,C,A,5,a[28]),C=c(C,B,T,k,h,9,a[29]),k=c(k,C,B,T,y,14,a[30]),B=u(B,T=c(T,k,C,B,E,20,a[31]),k,C,_,4,a[32]),C=u(C,B,T,k,v,11,a[33]),k=u(k,C,B,T,S,16,a[34]),T=u(T,k,C,B,x,23,a[35]),B=u(B,T,k,C,d,4,a[36]),C=u(C,B,T,k,m,11,a[37]),k=u(k,C,B,T,y,16,a[38]),T=u(T,k,C,B,w,23,a[39]),B=u(B,T,k,C,A,4,a[40]),C=u(C,B,T,k,o,11,a[41]),k=u(k,C,B,T,p,16,a[42]),T=u(T,k,C,B,g,23,a[43]),B=u(B,T,k,C,b,4,a[44]),C=u(C,B,T,k,E,11,a[45]),k=u(k,C,B,T,U,16,a[46]),B=f(B,T=u(T,k,C,B,h,23,a[47]),k,C,o,6,a[48]),C=f(C,B,T,k,y,10,a[49]),k=f(k,C,B,T,x,15,a[50]),T=f(T,k,C,B,_,21,a[51]),B=f(B,T,k,C,E,6,a[52]),C=f(C,B,T,k,p,10,a[53]),k=f(k,C,B,T,w,15,a[54]),T=f(T,k,C,B,d,21,a[55]),B=f(B,T,k,C,v,6,a[56]),C=f(C,B,T,k,U,10,a[57]),k=f(k,C,B,T,g,15,a[58]),T=f(T,k,C,B,A,21,a[59]),B=f(B,T,k,C,m,6,a[60]),C=f(C,B,T,k,S,10,a[61]),k=f(k,C,B,T,h,15,a[62]),T=f(T,k,C,B,b,21,a[63]),s[0]=s[0]+B|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),o=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,d=a.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return a},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,o){var a=e+(t&r|~t&i)+n+o;return(a<>>32-s)+t}function c(e,t,r,i,n,s,o){var a=e+(t&i|r&~i)+n+o;return(a<>>32-s)+t}function u(e,t,r,i,n,s,o){var a=e+(t^r^i)+n+o;return(a<>>32-s)+t}function f(e,t,r,i,n,s,o){var a=e+(r^(t|~i))+n+o;return(a<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),l((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Gi).lib,n=i.WordArray,s=i.Hasher,o=r.algo,a=[],d=o.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],d=r[4],l=0;l<80;l++){if(l<16)a[l]=0|e[t+l];else{var c=a[l-3]^a[l-8]^a[l-14]^a[l-16];a[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+a[l];u+=l<20?1518500249+(n&s|~n&o):l<40?1859775393+(n^s^o):l<60?(n&s|n&o|s&o)-1894007588:(n^s^o)-899497514,d=o,o=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),l((function(e,t){var r;e.exports=(r=Gi,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(a[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=o.SHA256=s.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],f=r[7],h=0;h<64;h++){if(h<16)l[h]=0|e[t+h];else{var p=l[h-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[h-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[h]=m+l[h-7]+g+l[h-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&c^~a&u)+d[h]+l[h];f=u,u=c,c=a,a=o+b|0,o=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+o|0,r[4]=r[4]+a|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+f|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),l((function(e,t){var r,i,n,s,o,a;e.exports=(i=(r=a=Gi).lib.WordArray,n=r.algo,s=n.SHA256,o=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(o),r.HmacSHA224=s._createHmacHelper(o),a.SHA224)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,o=e.algo;function a(){return n.create.apply(n,arguments)}var d=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=a()}();var c=o.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],o=r[3],a=r[4],c=r[5],u=r[6],f=r[7],h=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=o.high,b=o.low,w=a.high,S=a.low,E=c.high,A=c.low,x=u.high,U=u.low,B=f.high,T=f.low,k=h,C=p,D=m,L=_,I=g,F=y,P=v,M=b,R=w,N=S,z=E,O=A,G=x,H=U,$=B,V=T,W=0;W<80;W++){var j,Y,q=l[W];if(W<16)Y=q.high=0|e[t+2*W],j=q.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[W-7],oe=se.high,ae=se.low,de=l[W-16],le=de.high,ce=de.low;Y=(Y=(Y=J+oe+((j=Q+ae)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),q.high=Y,q.low=j}var ue,fe=R&z^~R&G,he=N&O^~N&H,pe=k&D^k&I^D&I,me=C&L^C&F^L&F,_e=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(R>>>14|N<<18)^(R>>>18|N<<14)^(R<<23|N>>>9),ve=(N>>>14|R<<18)^(N>>>18|R<<14)^(N<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=$+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;$=G,V=H,G=z,H=O,z=R,O=N,R=P+(Ee=(Ee=(Ee=Ee+fe+((ue+=he)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+Y+((ue+=j)>>>0>>0?1:0))+((N=M+ue|0)>>>0>>0?1:0)|0,P=I,M=F,I=D,F=L,D=k,L=C,k=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=h+k+(p>>>0>>0?1:0),_=n.low=_+L,n.high=m+D+(_>>>0>>0?1:0),y=s.low=y+F,s.high=g+I+(y>>>0>>0?1:0),b=o.low=b+M,o.high=v+P+(b>>>0>>0?1:0),S=a.low=S+N,a.high=w+R+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+z+(A>>>0>>0?1:0),U=u.low=U+H,u.high=x+G+(U>>>0>>0?1:0),T=f.low=T+V,f.high=B+$+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),l((function(e,t){var r,i,n,s,o,a,d,l;e.exports=(i=(r=l=Gi).x64,n=i.Word,s=i.WordArray,o=r.algo,a=o.SHA512,d=o.SHA384=a.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=a._createHelper(d),r.HmacSHA384=a._createHmacHelper(d),l.SHA384)})),l((function(e,t){var r;e.exports=(r=Gi,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.x64.Word,a=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var a=0,u=0,f=0;f<7;f++){if(1&n){var h=(1<>>24)|4278255360&(s<<24|s>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),(T=r[n]).high^=o,T.low^=s}for(var a=0;a<24;a++){for(var f=0;f<5;f++){for(var h=0,p=0,m=0;m<5;m++)h^=(T=r[f+5*m]).high,p^=T.low;var _=u[f];_.high=h,_.low=p}for(f=0;f<5;f++){var g=u[(f+4)%5],y=u[(f+1)%5],v=y.high,b=y.low;for(h=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(T=r[f+5*m]).high^=h,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(h=S<>>32-A,p=E<>>32-A):(h=E<>>64-A,p=S<>>64-A);var x=u[l[w]];x.high=h,x.low=p}var U=u[0],B=r[0];for(U.high=B.high,U.low=B.low,f=0;f<5;f++)for(m=0;m<5;m++){var T=r[w=f+5*m],k=u[w],C=u[(f+1)%5+5*m],D=u[(f+2)%5+5*m];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var L=c[a];T.high^=L.high,T.low^=L.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var o=this._state,a=this.cfg.outputLength/8,d=a/8,l=[],c=0;c>>24)|4278255360&(f<<24|f>>>8),h=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8),l.push(h),l.push(f)}return new n.init(l,a)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(f),t.HmacSHA3=s._createHmacHelper(f)}(Math),r.SHA3)})),l((function(e,t){var r;e.exports=(r=Gi,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,o=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),f=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=o.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,o,h,b,w,S,E,A,x,U,B,T=this._hash.words,k=u.words,C=f.words,D=a.words,L=d.words,I=l.words,F=c.words;for(S=s=T[0],E=o=T[1],A=h=T[2],x=b=T[3],U=w=T[4],r=0;r<80;r+=1)B=s+e[t+D[r]]|0,B+=r<16?p(o,h,b)+k[0]:r<32?m(o,h,b)+k[1]:r<48?_(o,h,b)+k[2]:r<64?g(o,h,b)+k[3]:y(o,h,b)+k[4],B=(B=v(B|=0,I[r]))+w|0,s=w,w=b,b=v(h,10),h=o,o=B,B=S+e[t+L[r]]|0,B+=r<16?y(E,A,x)+C[0]:r<32?g(E,A,x)+C[1]:r<48?_(E,A,x)+C[2]:r<64?m(E,A,x)+C[3]:p(E,A,x)+C[4],B=(B=v(B|=0,F[r]))+U|0,S=U,U=x,x=v(A,10),A=E,E=B;B=T[1]+h+x|0,T[1]=T[2]+b+U|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+o+A|0,T[0]=B},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,o=0;o<5;o++){var a=s[o];s[o]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(h),t.HmacRIPEMD160=s._createHmacHelper(h)}(),r.RIPEMD160)})),l((function(e,t){var r,i,n;e.exports=(i=(r=Gi).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),o=this._iKey=t.clone(),a=s.words,d=o.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:h,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),o=n.cfg;return m.create({ciphertext:s,key:r,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)o=l.create({keySize:t+r,hasher:n}).compute(e,i);else var o=l.create({keySize:t+r}).compute(e,i);var a=s.create(o.words.slice(t),4*r);return o.sigBytes=4*t,m.create({key:o,iv:a,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),l((function(e,t){var r;e.exports=((r=Gi).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var o=0;o>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,o=this._counter;s&&(o=this._counter=s.slice(0),this._iv=void 0),i(o);var a=o.slice(0);r.encryptBlock(a,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),l((function(e,t){var r;e.exports=((r=Gi).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),l((function(e,t){var r;e.exports=((r=Gi).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),l((function(e,t){var r;e.exports=((r=Gi).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),l((function(e,t){var r;e.exports=((r=Gi).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),l((function(e,t){var r;e.exports=(r=Gi,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],o=[],a=[],d=[],l=[],c=[],u=[],f=[],h=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;o[r]=y<<24|y>>>8,a[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,f[p]=y<<8|y>>>24,h[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],o=0;o6&&o%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[o/r|0]<<24),s[o]=s[o-r]^l);for(var a=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^f[n[l>>>8&255]]^h[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,a,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,f,h,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,o,a){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],f=e[t+3]^r[3],h=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^o[255&f]^r[h++],_=i[c>>>24]^n[u>>>16&255]^s[f>>>8&255]^o[255&l]^r[h++],g=i[u>>>24]^n[f>>>16&255]^s[l>>>8&255]^o[255&c]^r[h++],y=i[f>>>24]^n[l>>>16&255]^s[c>>>8&255]^o[255&u]^r[h++];l=m,c=_,u=g,f=y}m=(a[l>>>24]<<24|a[c>>>16&255]<<16|a[u>>>8&255]<<8|a[255&f])^r[h++],_=(a[c>>>24]<<24|a[u>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^r[h++],g=(a[u>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&c])^r[h++],y=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[c>>>8&255]<<8|a[255&u])^r[h++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=o[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(a[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(a[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],f.call(this,4,252645135),f.call(this,16,65535),h.call(this,2,858993459),h.call(this,8,16711935),f.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,o=this._rBlock,a=0,d=0;d<8;d++)a|=l[d][((o^n[d])&c[d])>>>0];this._lBlock=o,this._rBlock=s^a}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,f.call(this,1,1431655765),h.call(this,8,16711935),h.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function f(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var o=n%r,a=t[o>>>2]>>>24-o%4*8&255;s=(s+i[n]+a)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var o=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(o)}(),r.RC4)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,f=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=f,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=f,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=t._createHelper(a)}(),r.Rabbit)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],o=[],a=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,o=s[0],a=s[1],l=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),u=l>>>16|4294901760&c,f=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=f,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=f,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);o[r]=d^l}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=t._createHelper(a)}(),r.RabbitLegacy)})),l((function(e,t){var r;e.exports=(r=Gi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],o=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var a={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,o=e.sbox[0][r]+e.sbox[1][i];return o^=e.sbox[2][n],o+=e.sbox[3][s],o}function l(e,t,r){let i,s=t,o=r;for(let t=0;t1;--t)s^=e.pbox[t],o=d(e,s)^o,i=s,s=o,o=i;return i=s,s=o,o=i,o^=e.pbox[1],s^=e.pbox[0],{left:s,right:o}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=o[t][r]}let i=0;for(let o=0;o=r&&(i=0);let a=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=e.slice(s+4+2,s+4+o);let n=new Oi.ModeOfOperation.ctr(t,new Oi.Counter(r));const a=n.decrypt(i);n=null,e.set(a,s+4+2)}s=s+4+o}return e}function Vi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Oi.ModeOfOperation.ctr(t,new Oi.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}l((function(e,t){e.exports=Gi}));var Wi=l((function(e,t){var r,n,s,o=(r=new Date,n=4,s={setLogLevel:function(e){n=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>=n&&console.debug("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+o.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);o.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+="["+o.getDurationString(e.start(i))+","+o.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=o;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}}},d.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}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.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(d.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(d.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}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.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},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),o=new Uint8Array(r,i,n);s.set(o)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.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},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.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},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.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,o.debug("MultiBufferStream","Stream ready for parsing"),!0):(o.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(o.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){o.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},c.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},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}o.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)),o.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,s)}}t&&(o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,a=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?o.info:o.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)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(o.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.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.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,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 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"],["grpl"],["j2kH"],["etyp",["tyco"]]],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,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){f.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){f.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){f.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},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,r=0;rr?(o.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:f.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):0!==l&&a+l>e.getEndPosition()?(e.seek(a),o.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:f.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:a}):t?{code:f.OK,type:c,size:l,hdr_size:d,start:a}:(f[c+"Box"]?i=new f[c+"Box"](l):"uuid"!==c?(o.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new f.Box(c,l)).has_unparsed_data=!0):f.UUIDBoxes[s]?i=new f.UUIDBoxes[s](l):(o.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new f.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=a,i.write===f.Box.prototype.write&&"mdat"!==i.type&&(o.info("BoxParser","'"+u+"' 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?(o.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(o.error("BoxParser","Parsing of box '"+u+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:f.OK,box:i,size:i.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,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)},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,"dav1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),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_VISUAL,"avs3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),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 r=0;r<3;r++)this.layer_size[r]=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)o.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 o.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else o.error("av1C reserved_1 parsing problem");else o.error("av1C version "+this.version+" not supported")})),f.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))})),f.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),f.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),f.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),f.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))})),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,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})),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 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())}})),f.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(", ")+")"})),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[r]=e.readString(4),t-=4,r++})),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,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})),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),o.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,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}}})),f.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:o.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()})),h.prototype.toString=function(){return"("+this.x+","+this.y+")"},f.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new h(e.readUint16(),e.readUint16()),this.display_primaries[1]=new h(e.readUint16(),e.readUint16()),this.display_primaries[2]=new h(e.readUint16(),e.readUint16()),this.white_point=new h(e.readUint16(),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&&(o.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("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),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 r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),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 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})),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)o.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){o.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){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("tscl",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("vipr",(function(e){o.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(),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})),f.createFullBoxCtor("senc"),f.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),o.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}})),f.SingleItemTypeReferenceBox=function(e,t,r,i){f.Box.call(this,e,t),this.hdr_size=r,this.start=i},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 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=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 r=e.readUint32(),i=0;i>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,r,i){f.Box.call(this,e,t),this.hdr_size=r,this.start=i},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,r;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 r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),f.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),f.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(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,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<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var o=i.extract_bits(1);this.ptl_sublayer_present_mask|=o<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=f.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="."+f.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}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 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},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(),r=this.esds.esd.getAudioConfig();return e+"."+f.decimalToHex(t)+(r?"."+r:"")}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 r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},f.av01SampleEntry.prototype.getCodec=function(){var e,t=f.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},f.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),o.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)},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[r]instanceof f.Box||t[r]instanceof f.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||f.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},f.boxEqual=function(e,t){if(!f.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.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)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.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 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]&&o.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.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?(o.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(o.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(o.warn("ISOFile","Not ready to start parsing"),!1))},g.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&&(o.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),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.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)&&(o.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),o.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)&&(o.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t,r){var i=0,n=this.getTrackById(e);n.lastValidSample||(n.lastValidSample=0);for(var s=n.lastValidSample;se*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 s=r.samples[l].offset+r.samples[l].alreadyRead,o.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+o.getDurationString(e,a)+" and offset: "+s),{offset:s,time:e/a}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-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 u=new f.avcCBox;u.parse(new a(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var h=new f.hvcCBox;h.parse(new a(t.hevcDecoderConfigRecord)),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 f["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}},f.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.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,void 0===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}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new f.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",f.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.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]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.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))},g.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])}},g.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))},g.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,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,o?(t>=w&&(S++,w<0&&(w=0),w+=o.sample_counts[S]),U.cts=e.samples[t].dts+o.sample_offsets[S]):U.cts=U.dts,a?(t==a.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[A].sample_delta+x==t+1&&(U.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta,A++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=f?f.priority[t]:0,l&&l.entries[A].sample_delta+x==t&&(U.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,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)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,o,a,d,l,c,u,h,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&f.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=o,_.flags&f.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&f.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&f.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&f.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&f.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:a,p.offset=0===t&&0===r?b?w+_.data_offset:w:a,a=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return o.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+")"),d.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===s)return null;o.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.description=null,delete r.degradation_priority,delete r.depends_on,delete r.description_index,delete r.has_redundancy,delete r.is_depended_on,delete r.is_leading,delete r.is_sync,delete r.moof_number,delete r.number_in_traf,delete r.timescale,delete r.cts,delete r.dts,delete r.offset,delete r.size,delete r.track_id,delete r.duration,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.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},g.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.grpl)for(e=0;e0&&f.property_index-1-1))return null;var a=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=a))return o.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+a+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,a),n.alreadyRead+=a,r.alreadyRead+=a,t.usedBytes+=a,this.stream.logBufferLevel(),null;o.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+")"),d.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},g.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},g.prototype.getPerformanceInfo=function(){var e={};return e.moov=this.moov,this.moov&&this.moov.traks&&this.moov.traks.length>1&&(e.moovAudioNum=this.moov.traks[0].samples.length,e.moovVideoNum=this.moov.traks[1].samples.length),e},f.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)},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 y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function ji(e){return e.reduce(((e,t)=>256*e+t))}function Yi(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]))}Wi.Log,Wi.MP4BoxStream,Wi.DataStream,Wi.MultiBufferStream,Wi.MPEG4DescriptorParser,Wi.BoxParser,Wi.XMLSubtitlein4Parser,Wi.Textin4Parser,Wi.ISOFile,Wi.createFile;class qi{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],Yi(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}}function Ki(){for(var e=arguments.length,t=new Array(e),r=0;r{const r=new i((0|e.byteLength)+(0|t.byteLength));return r.set(e,0),r.set(t,0|e.byteLength),r}),new i)}const Xi=16,Zi=[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],Ji=[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 Qi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function tn(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}function rn(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("")}function nn(e,t){const r=31&t;return e<>>32-r}function sn(e){return(255&Zi[e>>>24&255])<<24|(255&Zi[e>>>16&255])<<16|(255&Zi[e>>>8&255])<<8|255&Zi[255&e]}function on(e){return e^nn(e,2)^nn(e,10)^nn(e,18)^nn(e,24)}function an(e){return e^nn(e,13)^nn(e,23)}function dn(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]^=on(sn(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=on(sn(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=on(sn(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=on(sn(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 ln(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Ji[r+0],t[r+0]=i[0]^=an(sn(e)),e=i[2]^i[3]^i[0]^Ji[r+1],t[r+1]=i[1]^=an(sn(e)),e=i[3]^i[0]^i[1]^Ji[r+2],t[r+2]=i[2]^=an(sn(e)),e=i[0]^i[1]^i[2]^Ji[r+3],t[r+3]=i[3]^=an(sn(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function cn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:o="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=Qi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=Qi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?tn(e):Qi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Xi-e.length%Xi;for(let r=0;r=Xi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=new Uint8Array(e.slice(0,5)),o=5;for(;on){const t=new Uint8Array(s.length+e.length-o);t.set(s,0),t.set(e.slice(o),s.length),s=t;break}let l=e[o+4],c=!1,u=2;if(r?(i&&(u=3),l=l>>>1&63,c=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(l)):(l&=31,c=1===l||5===l),c){const r=cn(e.slice(o+4+u,o+4+d),t,0,{padding:"none",output:"array"});let i=r[r.length-1];if(i>0&&i<16){let e=!0;for(let t=1;t<=i;t++)if(r[r.length-t]!==i){e=!1;break}e&&r.splice(r.length-i,i)}const n=new Uint8Array(u);n.set(e.slice(o+4,o+4+u),0);const a=or(Ki(n,new Uint8Array(r))),l=new Uint8Array(s.length+a.length);l.set(s,0),l.set(a,s.length),s=l}else{const t=e.slice(o+4,o+4+d),r=new Uint8Array(s.length+4+t.length);r.set(s,0),r.set(a,s.length),r.set(t,s.length+4),s=r}o=o+4+d}return s}const hn={init:0,findFirstStartCode:1,findSecondStartCode:2};class pn extends class{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(){i.off(e,n);for(var s=arguments.length,o=new Array(s),a=0;a1?r-1:0),n=1;n{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=hn.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==hn.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=hn.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==hn.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=hn.findFirstStartCode}}}}function mn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let a=e[s+4],d=!1;if(i?(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 i=mn(e.slice(s+4,s+4+o),t,r);e.set(i,s+4)}s=s+4+o}return e}function yn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class vn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{pr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debugLog("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class bn{static init(){bn.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 bn.types)bn.types.hasOwnProperty(e)&&(bn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=bn.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 bn.box(bn.types.trak,bn.tkhd(e),bn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return bn.box(bn.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 bn.box(bn.types.mdia,bn.mdhd(e),bn.hdlr(e),bn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return bn.box(bn.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?bn.constants.HDLR_AUDIO:bn.constants.HDLR_VIDEO,bn.box(bn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?bn.box(bn.types.smhd,bn.constants.SMHD):bn.box(bn.types.vmhd,bn.constants.VMHD),bn.box(bn.types.minf,t,bn.dinf(),bn.stbl(e))}static dinf(){return bn.box(bn.types.dinf,bn.box(bn.types.dref,bn.constants.DREF))}static stbl(e){return bn.box(bn.types.stbl,bn.stsd(e),bn.box(bn.types.stts,bn.constants.STTS),bn.box(bn.types.stsc,bn.constants.STSC),bn.box(bn.types.stsz,bn.constants.STSZ),bn.box(bn.types.stco,bn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?bn.box(bn.types.stsd,bn.constants.STSD_PREFIX,bn.mp3(e)):bn.box(bn.types.stsd,bn.constants.STSD_PREFIX,bn.mp4a(e)):"avc"===e.videoType?bn.box(bn.types.stsd,bn.constants.STSD_PREFIX,bn.avc1(e)):bn.box(bn.types.stsd,bn.constants.STSD_PREFIX,bn.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 bn.box(bn.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 bn.box(bn.types.mp4a,i,bn.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 bn.box(bn.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 bn.box(bn.types.avc1,n,bn.box(bn.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 bn.box(bn.types.hvc1,n,bn.box(bn.types.hvcC,t))}static mvex(e){return bn.box(bn.types.mvex,bn.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 bn.box(bn.types.trex,r)}static moof(e,t){return bn.box(bn.types.moof,bn.mfhd(e.sequenceNumber),bn.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 bn.box(bn.types.mfhd,t)}static traf(e,t){let r=e.id,i=bn.box(bn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=bn.box(bn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=bn.sdtp(e),o=bn.trun(e,s.byteLength+16+16+8+16+8+8);return bn.box(bn.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,bn.box(bn.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),bn.box(bn.types.trun,r)}static mdat(e){return bn.box(bn.types.mdat,e)}}bn.init();var wn,Sn=l((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(wn=Sn)&&wn.__esModule&&Object.prototype.hasOwnProperty.call(wn,"default")&&wn.default;const En=[44100,48e3,32e3,0],An=[22050,24e3,16e3,0],xn=[11025,12e3,8e3,0],Un=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Bn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Tn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function kn(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,o=(12&t[2])>>>2,a=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=xn[o];break;case 2:d=An[o];break;case 3:d=En[o]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),o=n-3):(i=2,t=new Array(2),o=n):-1!==a.indexOf("android")?(i=2,t=new Array(2),o=n):(i=5,o=n,t=new Array(4),n>=6?o=n-3:1===s&&(i=2,t=new Array(2),o=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&o)>>>1,t[2]=(1&o)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Vn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}class Yn{constructor(e){this.data=e,this.index=0,this.bitLength=8*e.byteLength}get bitsAvailable(){return this.bitLength-this.index}skipBits(e){if(this.bitsAvailable1&&void 0!==arguments[1])||arguments[1];return this.getBits(e,this.index,t)}getBits(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(this.bitsAvailable>>i,s=8-i;if(s>=e)return r&&(this.index+=e),n>>s-e;{r&&(this.index+=s);const i=e-s;return n<>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.readBits(8*e)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}function qn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}const Kn=new Array(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),Xn=new Array(2746333894,1453994832,1736282519,2993693404),Zn=new Array(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 Jn(e,t,r,i,n){var s=n;s=t+n>e.length&&i+n<=r.length?e.length-t:i+n>r.length&&t+n<=e.length?r.length-i:t+n<=e.length&&i+n<=r.length?n:r.length>24&255,e>>16&255,e>>8&255,255&e)}function es(e,t){return t+3>>19)^(i<<23|i>>>9)}function is(e,t){var r=new Array(36);r[0]=es(t,0),r[1]=es(t,4),r[2]=es(t,8),r[3]=es(t,12);for(var i=0;i<32;i++)r[i+4]=r[i]^ns(r[i+1]^r[i+2]^r[i+3]^e[i]);var n=new Array(4);for(i=35;i>=32;i--)n[35-i]=r[i];var s=function(e){for(var t=new Array(4*e.length),r=0;r>>30)^(i<<10|i>>>22)^(i<<18|i>>>14)^(i<<24|i>>>8)}function ss(e,t,r){if(null==e||null==e||e.length%16!=0)return console.log("sm4 key is error!"),null;if(null==r||null==r||r.length<=0)return console.log("cipher is error!"),null;if(null==t||null==t||t.length%16!=0)return console.log("iv is error!"),null;for(var i=ts(e),n=Math.ceil(r.length/16),s=new Array(r.length),o=t.slice(),a=0;a3&&void 0!==arguments[3]&&arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4];t=new Uint8Array(t),r=new Uint8Array(r);const s=e.byteLength;let o=5;for(;os)break;let d=e[o+4],l=!1,c=2;if(i?(n&&(c=3),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=ss(t,r,e.slice(o+4+c,o+4+a));e.set(i,o+4+c)}o=o+4+a}return e}Date.now||(Date.now=function(){return(new Date).getTime()}),console.log('JbPro Worker Version is "9-2-2024" '+(Er(false)?"and is Trial Version[试用版本]":"")),c.postRun=function(){!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],n=[],s=[],o=null,a=null,d=null,l=null,c=null,u=null,f=!1,h=null,p=null,m=!1,_=!1,g=!!Sr(r),U=0,B=0,D=!1,Ue=null,Be=null,Ze=null,it=[],nt=null,ot=null,dt=0,_t=0,kt=null,Ct=null,It=0,Wt=0,jt=!1,Yt=!1,qt=!1,Qt=null,ir=null,cr=!1,Ur=!0,Br=0,Tr=0,kr=()=>{const e=br();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,isSm4CryptoH265V2:e.isSm4CryptoH265V2,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,isFirefox:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,wcsDecodeAudio:e.wcsDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration,nakedFlowDemuxUseNew:e.nakedFlowDemuxUseNew,nakedFlowFps:e.nakedFlowFps,supportMSEDecodeHevc:!1,checkStreamEnd:e.checkStreamEnd}};"VideoEncoder"in self&&(o={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:null,init(){o.decoder=new VideoDecoder({output:function(e){if(pr(e.createImageBitmap))e.createImageBitmap().then((t=>{o.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:F,buffer:r,delay:ci.delay,ts:0},[r]),gr(e)}));else{o.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:F,buffer:t,delay:ci.delay,ts:0},[t]),gr(e)}},error:function(e){ci.debugError("worker","VideoDecoder error: ",e,e.toString())}})},destroy(){o.reset(),o.decoder&&"closed"!==o.decoder.state&&(o.decoder.close(),o.decoder=null)},decode:function(e,t,r){const i=e[0]>>4==1;if(o.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?vt:bt});o.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:O,code:t});const r=new Uint8Array(e);postMessage({cmd:G,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Oe?(n=Fr(s),i={codec:n.codec,description:s}):t===Ge&&(n=Xr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth),o.isEmitInfo||(ci.debugLog("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:I,w:n.codecWidth,h:n.codecHeight}),o.isEmitInfo=!0,o.offscreenCanvas=new OffscreenCanvas(n.codecWidth,n.codecHeight),o.offscreenCanvasCtx=o.offscreenCanvas.getContext("2d"));try{o.decoder.configure(i),o.hasInit=!0}catch(e){ci.debugError("worker","VideoDecoder configure error",e.code,e,e.toString()),e.toString()}}else ci.debugWarn("worker",`VideoDecoder configure has not init , isIframe is ${i} , payload is ${e[1]} so drop this frame`)},reset(){o.hasInit=!1,o.isEmitInfo=!1,o.offscreenCanvas=null,o.offscreenCanvasCtx=null}});let Ir=function(){if(cr=!0,a)try{a.abort(),a=null,ci.debugLog("worker","abort success")}catch(e){a=null,ci.debugLog("worker","abort catch",e)}},jr={init(){jr.lastBuf=null,jr.vps=null,jr.sps=null,jr.pps=null,jr.streamType=null,jr.localDts=0,jr.pendingUnits={},jr.isSendSeqHeader=!1},destroy(){jr.lastBuf=null,jr.vps=null,jr.sps=null,jr.pps=null,jr.streamType=null,jr.localDts=0,jr.pendingUnits={},jr.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);if(ci._opt.nakedFlowDemuxUseNew){const e=jr.extractNALu$3(t);if(0===e.length)return void ci.debugLog("worker","dispatch naluArray length is 0");jr.handleVideoFrames(e)}else jr.extractNALu$2(t)},getNaluDts(){const e=ci._opt.nakedFlowFps;let t=jr.localDts;return jr.localDts=jr.localDts+parseInt(1e3/e,10),t},getNaluAudioDts(){const e=ci._opt.sampleRate,t=ci._opt.audioBufferSize;return jr.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{const t=zr(e);t===Xe||t===Ke?jr.handleVideoH264Nalu(e):Gr(t)&&i.push(e)})),1===i.length)jr.handleVideoH264Nalu(i[0]);else if($r(i)){const e=zr(i[0]),t=Hr(e);jr.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{jr.handleVideoH264Nalu(e)}))}else if(jr.streamType===Ve)if(ci._opt.nakedFlowH265DemuxUseNew){const t=jr.handleAddNaluStartCode(e),r=jr.extractNALu(t);if(0===r.length)return void ci.debugWarn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=ti(e);t===pt||t===ft||t===ct?jr.handleVideoH265Nalu(e):ii(t)&&i.push(e)})),1===i.length)jr.handleVideoH265Nalu(i[0]);else if(si(i)){const e=ti(i[0]),t=ni(e);jr.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{jr.handleVideoH265Nalu(e)}))}else ti(e)===pt?jr.extractH265PPS(e):jr.handleVideoH265Nalu(e)},extractH264PPS(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{Or(zr(e))?jr.extractH264SEI(e):jr.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{ri(ti(e))?jr.extractH265SEI(e):jr.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{jr.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=jr.handleAddNaluStartCode(e);jr.extractNALu(t).forEach((e=>{jr.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=zr(e);switch(t){case Ke:jr.sps=e;break;case Xe:jr.pps=e}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps){const e=Pr({sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:ue,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if(Gr(t)){const r=Hr(t),i=jr.getNaluDts(),n=Rr(e,r);jr.doDecode(n,{type:ue,ts:i,isIFrame:r,cts:0})}}else if(jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Pr({sps:jr.sps,pps:jr.pps});ci.decode(e,{type:ue,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}},handleVideoH264NaluList(e,t,r){if(jr.isSendSeqHeader){const i=jr.getNaluDts(),n=Nr(e.reduce(((e,t)=>{const r=or(e),i=or(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);jr.doDecode(n,{type:ue,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},handleVideoH265Nalu(e){const t=ti(e);switch(t){case ct:jr.vps=e;break;case ft:jr.sps=e;break;case pt:jr.pps=e}if(jr.isSendSeqHeader){if(jr.vps&&jr.sps&&jr.pps){const e=Jr({vps:jr.vps,sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:ue,ts:t,isIFrame:!0,cts:0}),jr.vps=null,jr.sps=null,jr.pps=null}if(ii(t)){const r=ni(t),i=jr.getNaluDts(),n=Qr(e,r);jr.doDecode(n,{type:ue,ts:i,isIFrame:r,cts:0})}}else if(jr.vps&&jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Jr({vps:jr.vps,sps:jr.sps,pps:jr.pps});ci.decode(e,{type:ue,ts:0,isIFrame:!0,cts:0}),jr.vps=null,jr.sps=null,jr.pps=null}},handleVideoH265NaluList(e,t,r){if(jr.isSendSeqHeader){const i=jr.getNaluDts(),n=ei(e.reduce(((e,t)=>{const r=or(e),i=or(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);jr.doDecode(n,{type:ue,ts:i,isIFrame:t,cts:0}),ci.debugLog("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}},doDecode(e,t){ci.calcNetworkDelay(t.ts),t.isIFrame&&ci.calcIframeIntervalTimestamp(t.ts),ci.decode(e,t)},handleVideoFrames(e){if(!jr.streamVideoType)for(let t of e)if(jr.streamVideoType=mr(t),jr.streamVideoType)break;jr.streamVideoType?jr.streamVideoType===$e?jr.handleVideoH264Frames(e):jr.streamVideoType===Ve&&jr.handleVideoH265Frames(e):ci.debugWarn("worker","handleVideoFrames","streamVideoType is null")},handleVideoH264Frames(e){let t=[],r=[],i=!1,n=!1;jr.pendingUnits.units&&(t=jr.pendingUnits.units,n=jr.pendingUnits.vcl,i=jr.pendingUnits.iFrame,jr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=zr(o);let a=!1,d=e===Qe;e!==Je&&e!==Qe||(s=jr.parseVideo264Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(jr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=31&e[0];switch(t){case Xe:jr.pps=e;break;case Ke:jr.sps=e;break;case et:n=e}if(Gr(t)){const t=or(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!jr.isSendSeqHeader&&jr.sps&&jr.pps){jr.isSendSeqHeader=!0;const e=Mr({sps:jr.sps,pps:jr.pps});ci.decode(e,{type:ue,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps){const e=Mr({sps:jr.sps,pps:jr.pps}),t=jr.localDts;ci.decode(e,{type:ue,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null}if(i){const e=jr.getNaluDts(),t=Nr(i,r);if(ci._opt.isEmitSEI&&n){const t=sr(n,!1);postMessage({cmd:te,buffer:t.payload,ts:e},[t.payload.buffer])}jr.doDecode(t,{type:ue,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames(e){let t=[],r=[],i=!1,n=!1;jr.pendingUnits.units&&(t=jr.pendingUnits.units,n=jr.pendingUnits.vcl,i=jr.pendingUnits.iFrame,jr.pendingUnits={});let s={};for(let o of e){if(o.byteLength<4)continue;const e=ti(o);let a=!1,d=ni(e);ii(e)&&(s=jr.parseVideo265Header(o),a=!0),t.length&&n&&(s.isfms||!a)&&(r.push({units:t,isIFrame:i}),t=[],i=!1,n=!1),t.push(o),i=i||d,n=n||a}t.length&&(jr.pendingUnits={units:t,vcl:n,iFrame:i}),r.forEach((e=>{const t=e.units,r=e.isIFrame;let i=null,n=null;if(t.forEach((e=>{const t=e[0]>>>1&63;switch(t){case pt:jr.pps=e;break;case ft:jr.sps=e;break;case ct:jr.vps=e;break;case yt:case gt:n=e}if(ii(t)){const t=or(e);if(i){const e=new Uint8Array(i.byteLength+t.byteLength);e.set(i,0),e.set(t,i.byteLength),i=e}else i=t}})),!jr.isSendSeqHeader&&jr.sps&&jr.pps&&jr.vps){jr.isSendSeqHeader=!0;const e=Jr({sps:jr.sps,pps:jr.pps,vps:jr.vps});ci.decode(e,{type:ue,ts:0,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null,jr.vps=null}if(jr.isSendSeqHeader){if(jr.sps&&jr.pps&&jr.vps){const e=Jr({sps:jr.sps,pps:jr.pps,vps:jr.vps}),t=jr.localDts;ci.decode(e,{type:ue,ts:t,isIFrame:!0,cts:0}),jr.sps=null,jr.pps=null,jr.vps=null}if(i){const e=jr.getNaluDts(),t=ei(i,r);if(ci._opt.isEmitSEI&&n){const t=sr(n,!0);postMessage({cmd:te,buffer:t.payload,ts:e},[t.payload.buffer])}jr.doDecode(t,{type:ue,ts:e,isIFrame:r,cts:0})}}}))},handleVideoH265Frames_1(e){e.forEach((e=>{jr.handleVideoNalu(e)}))},parseVideo264Header(e){const t=new Yn(e);return t.readUByte(),{isfms:0===t.readUEG(),sType:t.readUEG()}},parseVideo265Header(e){const t=new Yn(e);return t.readUByte(),{nalType:t.readBits(6),isfms:0===t.readBits(1),sType:t.readBits(3)}}},Yr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Yr.mp4Box=Wi.createFile(),Yr.mp4Box.onReady=Yr.onReady,Yr.mp4Box.onError=Yr.onError,Yr.mp4Box.onSamples=Yr.onSamples},initTransportDescarmber(){Yr.transportDescarmber=new qi},_getSeqHeader(e){const t=Yr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Wi.DataStream(void 0,0,Wi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Yr.isHevc=!0,ci.isHevc=!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){ci.debugLog(Yr.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Yr.videoTrackId=t.id;const e=Yr._getSeqHeader(t);e&&(ci.debugLog(Yr.LOG_NAME,"seqHeader"),ci.decodeVideo(e,0,!0,0)),Yr.mp4Box.setExtractionOptions(t.id)}if(r&&ci._opt.hasAudio){Yr.audioTrackId=r.id;const e=r.audio||{},t=Kt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Yr.mp4Box.setExtractionOptions(r.id);const n=Xt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ci.debugLog(Yr.LOG_NAME,"aacADTSHeader"),ci.decodeAudio(n,0)}Yr.mp4Box.start()},onError(e){ci.debugError(Yr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Yr.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&&ci.calcIframeIntervalTimestamp(i);let n=null;n=Yr.isHevc?ei(t,r):Nr(t,r),ci.decode(n,{type:ue,ts:i,isIFrame:r,cts:0})}Yr.mp4Box.removeUsedSamples(e)}else if(e===Yr.audioTrackId){if(ci._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),ci.decode(i,{type:ce,ts:r,isIFrame:!1,cts:0})}Yr.mp4Box.removeUsedSamples(e)}}else ci.debugWarn(Yr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Yr.transportDescarmber&&(t=Yr.transportDescarmber.transport(t)),t.buffer.fileStart=Yr.offset,Yr.offset+=t.byteLength,Yr.mp4Box.appendBuffer(t.buffer)},destroy(){Yr.mp4Box&&(Yr.mp4Box.stop(),Yr.mp4Box.flush(),Yr.mp4Box.destroy(),Yr.mp4Box=null),Yr.transportDescarmber&&(Yr.transportDescarmber.destroy(),Yr.transportDescarmber=null),Yr.offset=0,Yr.videoTrackId=null,Yr.audioTrackId=null,Yr.isHevc=!1}},Zr={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);Zr.extractNALu(t)},destroy(){Zr.lastBuffer=new Uint8Array(0),Zr.parsedOffset=0,Zr.firstStartCodeOffset=0,Zr.secondStartCodeOffset=0,Zr.state="init",Zr.hasInitVideoCodec=!1,Zr.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ci.debugWarn(Zr.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Zr.lastBuffer.length+e.length);for(t.set(Zr.lastBuffer,0),t.set(new Uint8Array(e),Zr.lastBuffer.length),Zr.lastBuffer=t;;){if("init"===Zr.state){let e=!1;for(;Zr.lastBuffer.length-Zr.parsedOffset>=4;)if(0===Zr.lastBuffer[Zr.parsedOffset])if(0===Zr.lastBuffer[Zr.parsedOffset+1])if(1===Zr.lastBuffer[Zr.parsedOffset+2]){if(182===Zr.lastBuffer[Zr.parsedOffset+3]){Zr.state="findFirstStartCode",Zr.firstStartCodeOffset=Zr.parsedOffset,Zr.parsedOffset+=4,e=!0;break}Zr.parsedOffset++}else Zr.parsedOffset++;else Zr.parsedOffset++;else Zr.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Zr.state){let e=!1;for(;Zr.lastBuffer.length-Zr.parsedOffset>=4;)if(0===Zr.lastBuffer[Zr.parsedOffset])if(0===Zr.lastBuffer[Zr.parsedOffset+1])if(1===Zr.lastBuffer[Zr.parsedOffset+2]){if(182===Zr.lastBuffer[Zr.parsedOffset+3]){Zr.state="findSecondStartCode",Zr.secondStartCodeOffset=Zr.parsedOffset,Zr.parsedOffset+=4,e=!0;break}Zr.parsedOffset++}else Zr.parsedOffset++;else Zr.parsedOffset++;else Zr.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Zr.state){if(!(Zr.lastBuffer.length-Zr.parsedOffset>0))break;{let e,t,r=192&Zr.lastBuffer[Zr.parsedOffset];e=0==r?Zr.secondStartCodeOffset-14:Zr.secondStartCodeOffset;let i=0==(192&Zr.lastBuffer[Zr.firstStartCodeOffset+4]);if(i){if(Zr.firstStartCodeOffset-14<0)return void ci.debugWarn(Zr.LOG_NAME,"firstStartCodeOffset -14 is",Zr.firstStartCodeOffset-14);Zr.hasInitVideoCodec||(Zr.hasInitVideoCodec=!0,ci.debugLog(Zr.LOG_NAME,"setCodec"),fi.setCodec(He,"")),t=Zr.lastBuffer.subarray(Zr.firstStartCodeOffset-14,e)}else t=Zr.lastBuffer.subarray(Zr.firstStartCodeOffset,e);let n=Zr.getNaluDts();Zr.hasInitVideoCodec?(postMessage({cmd:W,type:De,value:t.byteLength}),postMessage({cmd:W,type:Le,value:n}),U=n,fi.decode(t,i?1:0,n)):ci.debugWarn(Zr.LOG_NAME,"has not init video codec"),Zr.lastBuffer=Zr.lastBuffer.subarray(e),Zr.firstStartCodeOffset=0==r?14:0,Zr.parsedOffset=Zr.firstStartCodeOffset+4,Zr.state="findFirstStartCode"}}}},getNaluDts(){let e=Zr.localDts;return Zr.localDts=Zr.localDts+40,e}},di={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Wn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){di.media_info_=null,di.pes_slice_queues_=null,di.section_slice_queues_=null,di.video_metadata_=null,di.audio_metadata_=null,di.aac_last_incomplete_data_=null,di.video_track_=null,di.audio_track_=null,di._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){di._remainingPacketData&&(e=yn(di._remainingPacketData,e),di._remainingPacketData=null);let t=e.buffer;const r=di.parseChunks(t);r?di._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],o=(48&r[3])>>>4,a=15&r[3],d=!(!di.pmt_||di.pmt_.pcr_pid!==s),l={},c=4;if(2==o||3==o){let e=r[4];if(e>0&&(d||3==o)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);di.last_pcr_=e}if(2==o||5+e===188){t+=188,204===di.tsPacketSize&&(t+=16);continue}c=5+e}if(1==o||3==o)if(0===s||s===di.current_pmt_pid_||null!=di.pmt_&&di.pmt_.pid_stream_type[s]===Nn){let r=188-c;di.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}else if(null!=di.pmt_&&null!=di.pmt_.pid_stream_type[s]){let r=188-c,i=di.pmt_.pid_stream_type[s];s!==di.pmt_.common_pids.h264&&s!==di.pmt_.common_pids.h265&&s!==di.pmt_.common_pids.adts_aac&&s!==di.pmt_.common_pids.loas_aac&&s!==di.pmt_.common_pids.ac3&&s!==di.pmt_.common_pids.eac3&&s!==di.pmt_.common_pids.opus&&s!==di.pmt_.common_pids.mp3&&!0!==di.pmt_.pes_private_data_pids[s]&&!0!==di.pmt_.timed_id3_pids[s]&&!0!==di.pmt_.synchronous_klv_pids[s]&&!0!==di.pmt_.asynchronous_klv_pids[s]||di.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}t+=188,204===di.tsPacketSize&&(t+=16)}return di.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=di.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let o=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,o));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):di.clearSlices(s,i)}for(let a=1+o;a=s.expected_length&&di.clearSlices(s,i),a+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?di.emitSectionSlices(s,i):s.total_length>=s.expected_length&&di.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let o=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ci.debugWarn(di.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=di.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?di.emitPESSlices(e,i):di.clearSlices(e,i)),di.pes_slice_queues_[i.pid]=new Gn,di.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==di.pes_slice_queues_[i.pid])return;let a=di.pes_slice_queues_[i.pid];a.slices.push(n),i.payload_unit_start_indicator&&(a.expected_length=0===o?0:o+6),a.total_length+=n.byteLength,a.expected_length>0&&a.expected_length===a.total_length?di.emitPESSlices(a,i):a.expected_length>0&&a.expected_length>>6,a=t[8];2!==o&&3!==o||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===o?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+a;if(0!==n){if(n<3+a)return void ci.debugWarn(di.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-a}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Cn:case Dn:di.parseMP3Payload(c,r);break;case Ln:di.pmt_.common_pids.opus===e.pid||di.pmt_.common_pids.ac3===e.pid||di.pmt_.common_pids.eac3===e.pid||(di.pmt_.asynchronous_klv_pids[e.pid]?di.parseAsynchronousKLVMetadataPayload(c,e.pid,i):di.pmt_.smpte2038_pids[e.pid]?di.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):di.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case In:di.parseADTSAACPayload(c,r);break;case Fn:di.parseLOASAACPayload(c,r);break;case Pn:case Mn:break;case Rn:di.pmt_.timed_id3_pids[e.pid]?di.parseTimedID3MetadataPayload(c,r,s,e.pid,i):di.pmt_.synchronous_klv_pids[e.pid]&&di.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case zn:di.parseH264Payload(c,r,s,e.random_access_indicator);break;case On:di.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Ln){let r,s=6;r=0!==n?n:t.byteLength-s;let o=t.subarray(s,s+r);di.parsePESPrivateDataPayload(o,void 0,void 0,e.pid,i)}}else ci.debugError(di.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(di.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let o=null;if(1===n&&0===s)o={version_number:0,network_pid:0,program_pmt_pid:{}},o.version_number=i;else if(o=di.pat_,null==o)return;let a=r-5-4,d=-1,l=-1;for(let t=8;t<8+a;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?o.network_pid=i:(o.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==di.pat_&&ci.debugLog(di.TAG_NAME,`Parsed first PAT: ${JSON.stringify(o)}`),di.pat_=o,di.current_program_=d,di.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ci.debugError(di.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,o=1&e[5],a=e[6];if(e[7],1===o&&0===a)r=di._initPmt(),r.program_number=n,r.version_number=s,di.program_pmt_map_[n]=r;else if(r=di.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;idi.has_video_&&di.has_audio_?di.video_init_segment_dispatched_&&di.audio_init_segment_dispatched_:di.has_video_&&!di.has_audio_?di.video_init_segment_dispatched_:!(di.has_video_||!di.has_audio_)&&di.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=di.video_metadata_.details,t={type:"video"};t.id=di.video_track_.id,t.timescale=1e3,t.duration=di.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,di.video_metadata_.vps){ci.isHevc=!0;let e=di.video_metadata_.vps.data.subarray(4),r=di.video_metadata_.sps.data.subarray(4),i=di.video_metadata_.pps.data.subarray(4);t.hvcc=Jr({vps:e,sps:r,pps:i}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ci.decodeVideo(t.hvcc,0,!0,0)}else{let e=di.video_metadata_.sps.data.subarray(4),r=di.video_metadata_.pps.data.subarray(4);t.avcc=Mr({sps:e,pps:r}),0==di.video_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ci.decodeVideo(t.avcc,0,!0,0)}di.video_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let n=di.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){di.isInitSegmentDispatched()&&di.video_track_.length&&di._preDoDecode()},dispatchAudioMediaSegment(){di.isInitSegmentDispatched()&&di.audio_track_.length&&di._preDoDecode()},dispatchAudioVideoMediaSegment(){di.isInitSegmentDispatched()&&(di.audio_track_.length||di.video_track_.length)&&di._preDoDecode()},parseADTSAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new tr(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame());){r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ce};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;if(di.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+di.aac_last_incomplete_data_.byteLength);t.set(di.aac_last_incomplete_data_,0),t.set(e,di.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/di.timescale_),"aac"===di.audio_metadata_.codec){if(null==t&&null!=di.audio_last_sample_pts_)r=1024/di.audio_metadata_.sampling_frequency*1e3,i=di.audio_last_sample_pts_+r;else if(null==t)return void ci.debugWarn(di.TAG_NAME,"AAC: Unknown pts");if(di.aac_last_incomplete_data_&&di.audio_last_sample_pts_){r=1024/di.audio_metadata_.sampling_frequency*1e3;let e=di.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ci.debugWarn(di.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new rr(e),o=null,a=i;for(;null!=(o=s.readNextAACFrame(fr(di.loas_previous_frame)?void 0:di.loas_previous_frame));){di.loas_previous_frame=o,r=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},di.dispatchAudioInitSegment(e)):di.detectAudioMetadataChange(e)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(o.data.length+2);i.set([175,1],0),i.set(o.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ce};di.audio_track_.samples.push(s),di.audio_track_.length+=i.byteLength,a+=r}s.hasIncompleteData()&&(di.aac_last_incomplete_data_=s.getIncompleteData()),n&&(di.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(di.has_video_&&!di.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,o=(6&e[1])>>1;e[2];let a=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[a];break;case 2:l=i[a];break;case 3:l=r[a]}switch(o){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const f={codec:"mp3",data:u};0==di.audio_init_segment_dispatched_?(di.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},di.dispatchAudioInitSegment(f)):di.detectAudioMetadataChange(f)&&(di.dispatchAudioMediaSegment(),di.dispatchAudioInitSegment(f));let h={payload:e,length:e.byteLength,pts:t/di.timescale_,dts:t/di.timescale_,type:ce};di.audio_track_.samples.push(h),di.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==di.audio_metadata_.codec)return ci.debugLog(di.TAG_NAME,`Audio: Audio Codecs changed from ${di.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===di.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==di.audio_metadata_.audio_object_type)return ci.debugLog(di.TAG_NAME,`AAC: AudioObjectType changed from ${di.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==di.audio_metadata_.sampling_freq_index)return ci.debugLog(di.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${di.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==di.audio_metadata_.channel_config)return ci.debugLog(di.TAG_NAME,`AAC: Channel configuration changed from ${di.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===di.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==di.audio_metadata_.sampling_frequency)return ci.debugLog(di.TAG_NAME,`AC3: Sampling Frequency changed from ${di.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==di.audio_metadata_.bit_stream_identification)return ci.debugLog(di.TAG_NAME,`AC3: Bit Stream Identification changed from ${di.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==di.audio_metadata_.bit_stream_mode)return ci.debugLog(di.TAG_NAME,`AC3: BitStream Mode changed from ${di.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==di.audio_metadata_.channel_mode)return ci.debugLog(di.TAG_NAME,`AC3: Channel Mode changed from ${di.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==di.audio_metadata_.low_frequency_effects_channel_on)return ci.debugLog(di.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${di.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===di.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`Opus: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===di.audio_metadata_.codec){const t=e.data;if(t.object_type!==di.audio_metadata_.object_type)return ci.debugLog(di.TAG_NAME,`MP3: AudioObjectType changed from ${di.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==di.audio_metadata_.sample_rate)return ci.debugLog(di.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${di.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==di.audio_metadata_.channel_count)return ci.debugLog(di.TAG_NAME,`MP3: Channel count changed from ${di.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=di.audio_track_.id,t.timescale=1e3,t.duration=di.duration_,"aac"===di.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new jn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Xt({profile:ci._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ci.decodeAudio(n,0)}else"ac-3"===di.audio_metadata_.codec||"ec-3"===di.audio_metadata_.codec||"opus"===di.audio_metadata_.codec||"mp3"===di.audio_metadata_.codec&&(t.audioSampleRate=di.audio_metadata_.sample_rate,t.channelCount=di.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==di.audio_init_segment_dispatched_&&ci.debugLog(di.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),di.audio_init_segment_dispatched_=!0,di.video_metadata_changed_=!1;let r=di.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new $n;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/di.timescale_);s.pts=e}else s.nearest_pts=di.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/di.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ci.debugLog(di.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ci.debugLog(di.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=di.audio_last_sample_pts_?Math.floor(di.audio_last_sample_pts_):null!=di.last_pcr_?Math.floor(di.last_pcr_/300/di.timescale_):void 0,_preDoDecode(){const e=di.video_track_,t=di.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ue?di._doDecodeVideo({...e,payload:t}):e.type===ce&&di._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?ei(t,e.isIFrame):Nr(t,e.isIFrame),e.isIFrame&&ci.calcIframeIntervalTimestamp(e.dts);let i=ci.cryptoPayload(r,e.isIFrame);ci.decode(i,{type:ue,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;Sr(ci._opt.m7sCryptoAudio)&&(r=ci.cryptoPayloadAudio(t)),ci.decode(r,{type:ce,ts:e.dts,isIFrame:!1,cts:0})}},li=null;Ar()&&(li={TAG_NAME:"worker MediaSource",_resetInIt(){li.isAvc=null,li.isAAC=null,li.videoInfo={},li.videoMeta={},li.audioMeta={},li.sourceBuffer=null,li.audioSourceBuffer=null,li.hasInit=!1,li.hasAudioInit=!1,li.isAudioInitInfo=!1,li.videoMimeType="",li.audioMimeType="",li.cacheTrack={},li.cacheAudioTrack={},li.timeInit=!1,li.sequenceNumber=0,li.audioSequenceNumber=0,li.firstRenderTime=null,li.firstAudioTime=null,li.mediaSourceAppendBufferFull=!1,li.mediaSourceAppendBufferError=!1,li.mediaSourceAddSourceBufferError=!1,li.mediaSourceBufferError=!1,li.mediaSourceError=!1,li.prevTimestamp=null,li.decodeDiffTimestamp=null,li.prevDts=null,li.prevAudioDts=null,li.prevPayloadBufferSize=0,li.isWidthOrHeightChanged=!1,li.prevTs=null,li.prevAudioTs=null,li.eventListenList=[],li.pendingRemoveRanges=[],li.pendingSegments=[],li.pendingAudioRemoveRanges=[],li.pendingAudioSegments=[],li.supportVideoFrameCallbackHandle=null,li.audioSourceBufferCheckTimeout=null,li.audioSourceNoDataCheckTimeout=null,li.hasPendingEos=!1,li.$video={currentTime:0,readyState:0}},init(){li.events=new vn,li._resetInIt(),li.mediaSource=new self.MediaSource,li.isDecodeFirstIIframe=!!Er(ci._opt.checkFirstIFrame),li._bindMediaSourceEvents()},destroy(){li.stop(),li._clearAudioSourceBufferCheckTimeout(),li.eventListenList&&li.eventListenList.length&&(li.eventListenList.forEach((e=>e())),li.eventListenList=[]),li._resetInIt(),li.mediaSource=null},getState:()=>li.mediaSource&&li.mediaSource.readyState,isStateOpen:()=>li.getState()===At,isStateClosed:()=>li.getState()===xt,isStateEnded:()=>li.getState()===Et,_bindMediaSourceEvents(){const{proxy:e}=li.events,t=e(li.mediaSource,Bt,(()=>{ci.debugLog(li.TAG_NAME,"sourceOpen"),li._onMediaSourceSourceOpen()})),r=e(li.mediaSource,Ut,(()=>{ci.debugLog(li.TAG_NAME,"sourceClose")})),i=e(li.mediaSource,Tt,(()=>{ci.debugLog(li.TAG_NAME,"sourceended")}));li.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){li.sourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),li._initSourceBuffer()),li.audioSourceBuffer||(ci.debugLog(li.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),li._initAudioSourceBuffer()),li._hasPendingSegments()&&li._doAppendSegments()},decodeVideo(e,t,r,i){if(ci.isDestroyed)ci.debugWarn(li.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(Er(li.hasInit))if(r&&e[1]===Lt){const i=15&e[0];if(i===Ge&&Er(ci._opt.supportMSEDecodeHevc))return void li.emitError(Ne.mediaSourceH265NotSupport);li.videoInfo.codec=i,postMessage({cmd:O,code:i});const n=new Uint8Array(e);postMessage({cmd:G,buffer:n,codecId:i},[n.buffer]),li.hasInit=li._decodeConfigurationRecord(e,t,r,i)}else ci.debugWarn(li.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]} so drop this frame`);else if(!li.isDecodeFirstIIframe&&r&&(li.isDecodeFirstIIframe=!0),li.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Oe?r=Fr(e.slice(5)):t===Ge&&(r=Kr(e));const i=li.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ci.debugWarn(li.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecHeight},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),li.isWidthOrHeightChanged=!0,li.emitError(Ne.mseWidthOrHeightChange,`width: ${i.codecWidth}->${r.codecWidth}, height: ${i.codecWidth}->${r.codecHeight}`))}if(li.isWidthOrHeightChanged)return void ci.debugWarn(li.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(wr(e))return void ci.debugLog(li.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLengthli.prevTs>0&&eT,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Oe?s=Fr(n):i===Ge&&(s=Xr(n)),li.videoInfo.width=s.codecWidth,li.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ci.debugWarn(li.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),li.emitError(Ne.mediaSourceDecoderConfigurationError,`width is ${0===s.codecWidth} and height is ${s.codecHeight}`),!1;const o={id:Nt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},a=bn.generateInitSegment(o);li.isAvc=i===Oe;let d=s.codec;return li.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:li.isAvc?wt:St,postMessage({cmd:I,w:s.codecWidth,h:s.codecHeight}),li._initSourceBuffer(),li.appendBuffer(a.buffer),li.sequenceNumber=0,li.cacheTrack={},li.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===qe,s=r===We;if(Er(s||n))return ci.debugWarn(li.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),li.emitError(Ne.mediaSourceAudioG711NotSupport),!1;const o={id:zt,type:"audio",timescale:1e3};let a={};if(Zt(e)){if(a=er(e.slice(2)),!a)return!1;o.audioSampleRate=a.sampleRate,o.channelCount=a.channelCount,o.config=a.config,o.refSampleDuration=1024/o.audioSampleRate*o.timescale}else{if(!n)return!1;if(a=kn(e),!a)return!1;o.audioSampleRate=a.samplingRate,o.channelCount=a.channelCount,o.refSampleDuration=1152/o.audioSampleRate*o.timescale}o.codec=a.codec,o.duration=0;let d="mp4",l=a.codec,c=null;n&&Er(ci._opt.isFirefox)?(d="mpeg",l="",c=new Uint8Array):c=bn.generateInitSegment(o);let u=`${o.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),Er(li.isAudioInitInfo)&&(ir=r===We?i?16:8:0===i?8:16,postMessage({cmd:R,code:r}),postMessage({cmd:M,sampleRate:o.audioSampleRate,channels:o.channelCount,depth:ir}),li.isAudioInitInfo=!0),li.audioMimeType=u,li.isAAC=s,li._initAudioSourceBuffer(),li.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=li.events;if(null===li.sourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.videoMimeType){try{ci.debugLog(li.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.videoMimeType),li.sourceBuffer=li.mediaSource.addSourceBuffer(li.videoMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initSourceBuffer() appendBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Ne.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.sourceBuffer){const t=e(li.sourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e,e.toString()),li.emitError(Ne.mseSourceBufferError,e.code)})),r=e(li.sourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r)}}else ci.debugLog(li.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.isAvc === null is ${null===li.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=li.events;if(null===li.audioSourceBuffer&&null!==li.mediaSource&&li.isStateOpen()&&li.audioMimeType){try{ci.debugLog(li.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",li.audioMimeType),li._clearAudioSourceBufferCheckTimeout(),li.audioSourceBuffer=li.mediaSource.addSourceBuffer(li.audioMimeType)}catch(e){return ci.debugError(li.TAG_NAME,"_initAudioSourceBuffer() addSourceBuffer mseDecoder.mediaSource.addSourceBuffer()",e.code,e.toString(),e),li.emitError(Ne.mseWorkerAddSourceBufferError,e.code),void(li.mediaSourceAddSourceBufferError=!0)}if(li.audioSourceBuffer){const t=e(li.audioSourceBuffer,"error",(e=>{li.mediaSourceBufferError=!0,ci.debugError(li.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e.code,e.toString(),e),li.emitError(Ne.mseSourceBufferError,e.code)})),r=e(li.audioSourceBuffer,"updateend",(()=>{li._hasPendingRemoveRanges()?li._doRemoveRanges():li._hasPendingSegments()?li._doAppendSegments():li.hasPendingEos&&(ci.debugLog(li.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),li.endOfStream())}));li.eventListenList.push(t,r),null===li.audioSourceNoDataCheckTimeout&&(li.audioSourceNoDataCheckTimeout=setTimeout((()=>{li._clearAudioNoDataCheckTimeout(),li.emitError(Ne.mediaSourceAudioNoDataTimeout)}),1e3))}}else ci.debugLog(li.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${li.isStateOpen()} and mseDecoder.audioMimeType is ${li.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),o=s.byteLength;if(0===o)return void ci.debugWarn(li.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let a=(new Date).getTime(),d=!1;li.prevTimestamp||(li.prevTimestamp=a,d=!0);const l=a-li.prevTimestamp;if(li.decodeDiffTimestamp=l,l>1e3&&!d&&ci.isPlayer&&ci.debugLog(li.TAG_NAME,`_decodeVideo now time is ${a} and prev time is ${li.prevTimestamp}, diff time is ${l} ms`),li.cacheTrack.id&&t>=li.cacheTrack.dts){let e=8+li.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(bn.types.mdat,4),r.set(li.cacheTrack.data,8),li.cacheTrack.duration=t-li.cacheTrack.dts;let i=bn.moof(li.cacheTrack,li.cacheTrack.dts);li.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendBuffer(n.buffer)}else ci.debugLog(li.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${li.cacheTrack&&li.cacheTrack.dts}`),li.timeInit=!1,li.cacheTrack={};li.cacheTrack||(li.cacheTrack={}),li.cacheTrack.id=Nt,li.cacheTrack.sequenceNumber=++li.sequenceNumber,li.cacheTrack.size=o,li.cacheTrack.dts=t,li.cacheTrack.cts=i,li.cacheTrack.isKeyframe=r,li.cacheTrack.data=s,li.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},li.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=li.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(li.cacheAudioTrack.id&&t>=li.cacheAudioTrack.dts){let e=8+li.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(bn.types.mdat,4),r.set(li.cacheAudioTrack.data,8),li.cacheAudioTrack.duration=t-li.cacheAudioTrack.dts;let i=bn.moof(li.cacheAudioTrack,li.cacheAudioTrack.dts);li.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),li.appendAudioBuffer(n.buffer)}else li.cacheAudioTrack={};li.cacheAudioTrack||(li.cacheAudioTrack={}),li.cacheAudioTrack.id=zt,li.cacheAudioTrack.sequenceNumber=++li.audioSequenceNumber,li.cacheAudioTrack.size=n,li.cacheAudioTrack.dts=t,li.cacheAudioTrack.cts=0,li.cacheAudioTrack.data=i,li.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingSegments.push(e),li.sourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),Er(li.getSourceBufferUpdating())&&li.isStateOpen()&&Er(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,"mediaSource is end")))},appendAudioBuffer(e){ci.isDestroyed?ci.debugWarn(li.TAG_NAME,"appendAudioBuffer() player is destroyed"):li.mediaSourceAddSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):li.mediaSourceAppendBufferFull?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):li.mediaSourceAppendBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):li.mediaSourceBufferError?ci.debugWarn(li.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(li.pendingAudioSegments.push(e),li.audioSourceBuffer&&(ci._opt.mseAutoCleanupSourceBuffer&&li._needCleanupSourceBuffer()&&li._doCleanUpSourceBuffer(),Er(li.getAudioSourceBufferUpdating())&&li.isStateOpen()&&Er(li._hasPendingRemoveRanges()))?li._doAppendSegments():li.isStateClosed()?(li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):li.isStateEnded()&&(li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,"mediaSource is end")))},getSourceBufferUpdating:()=>li.sourceBuffer&&li.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>li.audioSourceBuffer&&li.audioSourceBuffer.updating,stop(){li.abortSourceBuffer(),li.removeSourceBuffer(),li.endOfStream()},clearUpAllSourceBuffer(){if(li.sourceBuffer){const e=li.sourceBuffer.buffered;for(let t=0;tli.pendingSegments.length>0||li.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>li.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(li.isStateClosed()||li.isStateEnded())ci.debugLog(li.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==li.sourceBuffer){if(li.needInitAudio()&&null===li.audioSourceBuffer)return ci.debugLog(li.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===li.audioSourceBufferCheckTimeout&&(li.audioSourceBufferCheckTimeout=setTimeout((()=>{li._clearAudioSourceBufferCheckTimeout(),li.emitError(Ne.mediaSourceAudioInitTimeout)}),1e3)));if(Er(li.getSourceBufferUpdating())&&li.pendingSegments.length>0){const e=li.pendingSegments.shift();try{li.sourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Ne.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Ne.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,`code is ${e.code} , message is ${e.message}`))}}if(Er(li.getAudioSourceBufferUpdating())&&li.pendingAudioSegments.length>0){const e=li.pendingAudioSegments.shift();try{li.audioSourceBuffer.appendBuffer(e)}catch(e){ci.debugError(li.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(li.stop(),li.mediaSourceAppendBufferFull=!0,li.emitError(Ne.mediaSourceFull,`code is ${e.code} , message is ${e.message}`)):11===e.code?(li.stop(),li.mediaSourceAppendBufferError=!0,li.emitError(Ne.mediaSourceAppendBufferError,`code is ${e.code} , message is ${e.message}`)):(li.stop(),li.mediaSourceBufferError=!0,li.emitError(Ne.mseSourceBufferError,e.code,`code is ${e.code} , message is ${e.message}`))}}}else ci.debugLog(li.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=li.$video.currentTime;if(li.sourceBuffer){const t=li.sourceBuffer.buffered;let r=!1;for(let i=0;i=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingRemoveRanges.push({start:n,end:t})}}else s=ci._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ci._opt.mseAutoCleanupMinBackwardDuration;li.pendingAudioRemoveRanges.push({start:n,end:t})}}else sli.pendingRemoveRanges.length>0||li.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ci._opt.hasAudio&&ci._opt.mseDecodeAudio,_doRemoveRanges(){if(li.sourceBuffer&&Er(li.getSourceBufferUpdating())){let e=li.pendingRemoveRanges;for(;e.length&&Er(li.getSourceBufferUpdating());){let t=e.shift();try{li.sourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e,e.toString())}}}if(li.audioSourceBuffer&&Er(li.getAudioSourceBufferUpdating())){let e=li.pendingAudioRemoveRanges;for(;e.length&&Er(li.getAudioSourceBufferUpdating());){let t=e.shift();try{li.audioSourceBuffer.remove(t.start,t.end)}catch(e){ci.debugWarn(li.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e,e.toString())}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(Er(ci._opt.mseAutoCleanupSourceBuffer))return!1;const e=li.$video.currentTime;if(li.sourceBuffer){let t=li.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(li.audioSourceBuffer){let t=li.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ci._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){li.audioSourceBufferCheckTimeout&&(clearTimeout(li.audioSourceBufferCheckTimeout),li.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){li.audioSourceNoDataCheckTimeout&&(clearTimeout(li.audioSourceNoDataCheckTimeout),li.audioSourceNoDataCheckTimeout=null)},getHandle:()=>li.mediaSource.handle,emitError(e){postMessage({cmd:le,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ci={isPlayer:!0,isHevc:null,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Pt,_opt:kr(),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(){ci.stopStreamRateAndStatsInterval(),c=setInterval((()=>{l&&l(0);const e=JSON.stringify({demuxBufferDelay:ci.getVideoBufferLength(),audioDemuxBufferDelay:ci.getAudioBufferLength(),streamBufferByteLength:ci.getStreamBufferLength(),netBuf:ci.networkDelay||0,pushLatestDelay:ci.pushLatestDelay||0,latestDelay:ci.delay,isStreamTsMoreThanLocal:D,wasmDecodeDelay:U-B});postMessage({cmd:W,type:Fe,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){c&&(clearInterval(c),c=null)},useOffscreen:function(){return ci._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ci._opt.hasVideo&&!g)return-1;if(t===ce)return ci.delay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp>e)return ci.preDelayTimestamp-e>1e3&&ci.debugWarn("worker",`getDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return ${ci.delay}`),ci.preDelayTimestamp=e,ci.delay;if(ci.firstTimestamp){if(e){const t=Date.now()-ci.startTimestamp,r=e-ci.firstTimestamp;t>=r?(D=!1,ci.delay=t-r):(D=!0,ci.delay=r-t)}}else ci.firstTimestamp=e,ci.startTimestamp=Date.now(),ci.delay=-1;return ci.preDelayTimestamp=e,ci.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ci._opt.hasVideo&&!g)return-1;if(t===ce)return ci.pushLatestDelay;if(ci.preDelayTimestamp&&ci.preDelayTimestamp-e>1e3)return ci.debugWarn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ci.preDelayTimestamp} > timestamp is ${e} more than ${ci.preDelayTimestamp-e}ms and return -1`),-1;if(ci.firstTimestamp){let t=-1;if(e){const r=Date.now()-ci.startTimestamp,i=e-ci.firstTimestamp;r>=i?(D=!1,t=r-i):(D=!0,t=i-r)}return t}return-1},resetDelay:function(){ci.firstTimestamp=null,ci.startTimestamp=null,ci.delay=-1,ci.dropping=!1},resetAllDelay:function(){ci.resetDelay(),ci.preDelayTimestamp=null},doDecode:function(e){ci._opt.isEmitSEI&&e.type===ue&&ci.isWorkerFetch&&ci.findSei(e.payload,e.ts),ci.isPlayUseMSEAndDecoderInWorker()?e.type===ce?ci._opt.mseDecodeAudio?li.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ue&&li.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ci._opt.useWCS&&ci.useOffscreen()&&e.type===ue&&o.decode?o.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===n.length)return;const t=e.ts,i=n[0],s=e.type===ue&&wr(e.payload);if(Er(r))s&&(ci.debugLog("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i));else{const r=i.ts-t,o=i.type===ce&&e.type===ue;(r<=20||o||s)&&(ci.debugLog("worker",`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 ${o} and isVideoSqeHeader is ${s}`),n.shift(),ci.doDecode(i))}},init:function(){ci.debugLog("worker",`init and forHardDecode is ${r} and forOldVersion is ${i} and opt is`,JSON.stringify(ci._opt));const e=ci._opt.playType===E,t=ci._opt.playType===A;if(jr.init(),ci.isPlayer=e,ci.isPlayback=t,ci.isPlayUseMSEAndDecoderInWorker()&&li&&li.init(),o&&ci._opt.useWCS&&ci.useOffscreen()&&o.init(),Er(ci.isPlaybackCacheBeforeDecodeForFpsRender())){ci.debugLog("worker","setInterval()");const t=()=>{const t=ci._opt.videoBuffer+ci._opt.videoBufferDelay;let r=null;if(n.length){if(ci.isPushDropping)return void ci.debugWarn("worker",`loop() isPushDropping is true and bufferList length is ${n.length}`);if(ci.dropping){for(r=n.shift(),ci.debugWarn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ci.delay} and bufferlist is ${n.length}`);!r.isIFrame&&n.length;)r=n.shift();const e=ci.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ci.getNotDroppingDelayTs()&&(ci.debugLog("worker","loop() is dropping = false, is iFrame"),ci.dropping=!1,ci.doDecode(r),ci.decodeNext(r))}else if(ci.isPlayback||ci.isPlayUseMSE()||0===ci._opt.videoBuffer)for(;n.length;)r=n.shift(),ci.doDecode(r);else if(r=n[0],-1===ci.getDelay(r.ts,r.type))ci.debugLog("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),n.shift(),ci.doDecode(r),ci.decodeNext(r);else if(ci.delay>t&&e)ci.hasIframeInBufferList()?(ci.debugLog("worker",`delay is ${ci.delay} > maxDelay ${t}, set dropping is true`),ci.resetAllDelay(),ci.dropping=!0,postMessage({cmd:Y})):(n.shift(),ci.doDecode(r),ci.decodeNext(r));else for(;n.length;){if(r=n[0],!(ci.getDelay(r.ts,r.type)>ci._opt.videoBuffer)){ci.delay<0&&ci.debugWarn("worker",`loop() do not decode and delay is ${ci.delay}, bufferList is ${n.length}`);break}n.shift(),ci.doDecode(r)}}else-1!==ci.delay&&ci.debugLog("worker","loop() bufferList is empty and reset delay"),ci.resetAllDelay()};ci.stopId=setInterval((()=>{let e=(new Date).getTime();Ue||(Ue=e);const r=e-Ue;r>100&&ci.debugWarn("worker",`loop demux diff time is ${r}`),t(),Ue=(new Date).getTime()}),20)}else ci.debugLog("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");if(Er(ci._opt.checkFirstIFrame)&&(g=!0),ci.isPlayUseMSEAndDecoderInWorker()&&li){const e=li.getHandle();e&&postMessage({cmd:ae,mseHandle:e},[e])}},playbackCacheLoop:function(){ci.clearPlaybackCacheLoop();const e=()=>{let e=null;n.length&&(e=n.shift(),ci.doDecode(e))};e();const t=Math.ceil(1e3/(ci.streamFps*ci._opt.playbackRate));ci.debugLog("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ci.streamFps}, streamAudioFps is ${ci.streamAudioFps} ,streamVideoFps is ${ci.streamVideoFps} playbackRate is ${ci._opt.playbackRate}`),ci.stopId=setInterval(e,t)},clearPlaybackCacheLoop:function(){ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null)},startPlaybackCacheLoop:function(){ci.playbackCacheLoop()},close:function(){if(ci.debugLog("worker","close"),ci.isDestroyed=!0,Ir(),!d||1!==d.readyState&&2!==d.readyState?d&&ci.debugLog("worker",`close() and socket.readyState is ${d.readyState}`):(cr=!0,d.close(1e3,"Client disconnecting")),d&&(d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null),d=null,ci.stopStreamRateAndStatsInterval(),ci.stopId&&(clearInterval(ci.stopId),ci.stopId=null),ci.mp3Demuxer&&(ci.mp3Demuxer.destroy(),ci.mp3Demuxer=null),ci.writableStream&&Er(ci.writableStream.locked)&&ci.writableStream.close().catch((e=>{ci.debugLog("worker","close() and writableStream.close() error",e.toString(),e)})),ci.writableStream=null,ui)try{ui.clear&&ui.clear(),ui=null}catch(e){ci.debugLog("worker","close() and audioDecoder.clear error",e.toString(),e)}if(fi)try{fi.clear&&fi.clear(),fi=null}catch(e){ci.debugLog("worker","close() and videoDecoder.clear error",e.toString())}l=null,Ue=null,D=!1,U=0,B=0,o&&(o.destroy&&o.destroy(),o=null),li&&(li.destroy(),li=null),ci.firstTimestamp=null,ci.startTimestamp=null,ci.networkDelay=0,ci.streamFps=null,ci.streamAudioFps=null,ci.streamVideoFps=null,ci.delay=-1,ci.pushLatestDelay=-1,ci.preDelayTimestamp=null,ci.dropping=!1,ci.isPushDropping=!1,ci.isPlayer=!0,ci.isPlayback=!1,ci.isWorkerFetch=!1,ci.isHevc=null,ci._opt=kr(),ci.webglObj&&(ci.webglObj.destroy(),ci.offscreenCanvas.removeEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost),ci.offscreenCanvas.removeEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored),ci.offscreenCanvas=null,ci.offscreenCanvasGL=null,ci.offscreenCanvasCtx=null),n=[],s=[],u&&(u.close(),u=null),h=null,p=null,m=!1,_=!1,g=!1,jt=!1,Yt=!1,qt=!1,Qt=null,it=[],dt=0,_t=0,Be=null,Ze=null,kt=null,Ct=null,ir=null,It=0,Wt=0,nt=null,ot=null,ci.fetchStatus=Pt,Ur=!0,jr.destroy(),Yr.destroy(),Zr.destroy(),di.destroy(),ci.debug=null,ci._opt={},postMessage({cmd:Q})},pushBuffer:function(e,t){if(t.type===ce&&Zt(e)){if(ci.debugLog("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ie,buffer:t},[t.buffer])}ci.decodeAudio(e,t.ts)}else if(t.type===ue&&t.isIFrame&&wr(e)){if(ci.debugLog("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ci._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:ne,buffer:t},[t.buffer])}ci.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ci._opt.isRecording)if(ci._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:se,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ci._opt.recordType===x)if(t.type===ue){const r=new Uint8Array(e).slice(5);postMessage({cmd:H,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ce&&ci._opt.isWasmMp4){const r=new Uint8Array(e),i=Jt(r)?r.slice(2):r.slice(1);postMessage({cmd:N,buffer:i,ts:t.ts},[i.buffer])}if(ci.isPlayer){if(t.type===ue){if(It>0){const e=t.ts-Ct,r=It+It/2;e>r&&ci.debugLog("worker",`pushBuffer video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts}, preTs is ${Ct},\n diff is ${e} and preTsDuration is ${It} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(null!==Ct&&Ct>=t.ts&&(ci.debugWarn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTs is ${Ct} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Wt}`),Ct-t.ts>T&&(ci.debugWarn("worker",`pushBuffer,\n preTimestamp is ${Ct}, options.ts is ${t.ts},\n diff is ${Ct-t.ts} more than 3600000,\n and resetAllDelay`),ci.resetAllDelay(),Ct=null,It=0),ci._opt.isDropSameTimestampGop&&Er(t.isIFrame)&&g)){const e=ci.hasIframeInBufferList(),t=Er(ci.isPushDropping);return ci.debugLog("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ci.dropBuffer$2():(ci.clearBuffer(!0),Sr(ci._opt.checkFirstIFrame)&&Sr(r)&&(ci.isPlayUseMSEAndDecoderInWorker()?li.isDecodeFirstIIframe=!1:postMessage({cmd:oe}))))}Ct>0&&(It=t.ts-Ct),Wt=e.byteLength,Ct=t.ts}if(g){const e=ci._opt.videoBuffer+ci._opt.videoBufferDelay,r=ci.getDelayNotUpdateDelay(t.ts,t.type);ci.pushLatestDelay=r,ci.delay>0&&r>e&&ci.delay({type:e.type,ts:e.ts})));ci.debugLog("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${n.length}, and ts list is ${JSON.stringify(r)}`)}const r=ci.getAudioBufferLength()>0,i=r?60:40;n.length>=i&&(ci.debugWarn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${n.length} more than ${i}, and hasAudio is ${r} an set streamFps is 25`),ci.streamVideoFps=25,postMessage({cmd:K,value:ci.streamVideoFps}),r?(ci.streamAudioFps=25,ci.streamFps=ci.streamVideoFps+ci.streamAudioFps):ci.streamFps=ci.streamVideoFps,ci.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return n.forEach((t=>{t.type===ue&&(e+=1)})),e},hasIframeInBufferList:()=>n.some((e=>e.type===ue&&e.isIFrame)),isAllIframeInBufferList(){const e=ci.getVideoBufferLength();let t=0;return n.forEach((e=>{e.type===ue&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ci._opt.videoBuffer+ci._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return n.forEach((t=>{t.type===ce&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ci._opt.isNakedFlow?jr.lastBuf&&(e=jr.lastBuf.byteLength):ci._opt.isTs?di._remainingPacketData&&(e=di._remainingPacketData.byteLength):ci._opt.isFmp4&&Yr.mp4Box&&(e=Yr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(ci.debugLog("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ci.isWorkerFetch=!0,t.isFlv?ci._opt.isFlv=!0:t.isFmp4?ci._opt.isFmp4=!0:t.isMpeg4?ci._opt.isMpeg4=!0:t.isNakedFlow?ci._opt.isNakedFlow=!0:t.isTs&&(ci._opt.isTs=!0),l=ur((e=>{postMessage({cmd:W,type:ke,value:e})})),ci.startStreamRateAndStatsInterval(),t.isFmp4&&(Yr.listenMp4Box(),ci._opt.isFmp4Private&&Yr.initTransportDescarmber()),t.protocol===b){t.isFlv&&(u=new Cr(ci.demuxFlv())),a=new AbortController;const r=Object.assign({signal:a.signal},{headers:t.options&&t.options.headers||{}});fetch(e,r).then((e=>{if(Sr(cr))return ci.debugLog("worker","request abort and run res.body.cancel()"),ci.fetchStatus=Pt,void e.body.cancel();if(!vr(e))return ci.debugWarn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Ir(),void postMessage({cmd:W,type:Ne.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:W,type:Ie}),_r())ci.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Rt)):Sr(cr)?(ci.debugLog("worker","writableStream write() and requestAbort is true so return"),ci.fetchStatus=Rt,void Ir()):void("string"!=typeof e?(ci.fetchStatus=Mt,l(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ci.demuxFmp4(e):t.isMpeg4?ci.demuxMpeg4(e):t.isTs?ci.demuxTs(e):t.isNakedFlow&&ci.demuxNakedFlow(e)):ci.debugWarn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ci.debugLog("worker","writableStream close()"),ci.fetchStatus=Rt,Ir(),ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:W,type:Te,value:w,msg:"fetch done"})):postMessage({cmd:W,type:Pe})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Rt);u&&(u.close(),u=null),e.name!==Dt?(ci.debugLog("worker",`writableStream abort() and e is ${e.toString()}`),Ir(),postMessage({cmd:W,type:Ne.fetchError,value:e.toString()})):ci.debugLog("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ci.writableStream).catch((e=>{"AbortError"!==e.name&&ci.debugLog("worker","writableStream pipeTo() and e is",e.name,e.toString())}));else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ci.debugLog("worker","fetchNext().then() and done is true"),ci.fetchStatus=Rt,Ir(),void(ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:W,type:Te,value:w,msg:"fetch done"})):postMessage({cmd:W,type:Pe}))):a&&a.signal&&a.signal.aborted?(ci.debugLog("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Rt)):Sr(cr)?(ci.debugLog("worker","fetchNext().then() and requestAbort is true so return"),ci.fetchStatus=Rt,void Ir()):void("string"!=typeof n?(ci.fetchStatus=Mt,l(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ci.demuxFmp4(n):t.isMpeg4?ci.demuxMpeg4(n):t.isTs?ci.demuxTs(n):t.isNakedFlow&&ci.demuxNakedFlow(n),i()):ci.debugWarn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ci.debugLog("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ci.fetchStatus=Rt);u&&(u.close(),u=null),e.name!==Dt?(ci.debugLog("worker",`fetchNext().catch() and e is ${e.toString()}`),Ir(),postMessage({cmd:W,type:Ne.fetchError,value:e.toString()})):ci.debugLog("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ci.debugLog("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Dt?(ci.debugLog("worker",`fetch().catch() and e is ${e.toString()}`),Ir(),postMessage({cmd:W,type:Ne.fetchError,value:e.toString()}),u&&(u.close(),u=null)):ci.debugLog("worker","fetch().catch() and e.name is AbortError so return")}))}else t.protocol===v&&(t.isFlv&&(u=new Cr(ci.demuxFlv())),d=new WebSocket(e,r),d.binaryType="arraybuffer",d.onopen=()=>{ci.debugLog("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:W,type:Ie}),postMessage({cmd:W,type:Re})},d.onclose=e=>{ci.isDestroyed?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} and isDestroyed is true, so return`):f?ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code} but isSocketError is true , so return`):(ci.debugLog("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ci.debugError("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),Sr(cr)?ci.debugLog("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):ci._opt.checkStreamEnd?(u&&(u.close(),u=null),postMessage({cmd:W,type:Te,value:S,msg:e.code})):postMessage({cmd:W,type:Pe}))},d.onerror=e=>{ci.debugError("worker","fetchStream, WebsocketStream socket error",e,e.toString()),f=!0,u&&(u.close(),u=null),ci.isDestroyed?ci.debugLog("worker","fetchStream, WebsocketStream on error and isDestroyed is true, so return"):Sr(cr)?ci.debugLog("worker","fetchStream, WebsocketStream on error and requestAbort is true so return"):postMessage({cmd:W,type:Ne.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},d.onmessage=e=>{"string"!=typeof e.data?(l(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ci.demuxFmp4(e.data):t.isMpeg4?ci.demuxMpeg4(e.data):ci._opt.isNakedFlow?ci.demuxNakedFlow(e.data):ci.demuxM7s(e.data)):ci.debugWarn("worker",`socket on message is string "${e.data}" and return`)})},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 fe:if(o.byteLength>0){let e=o;Sr(ci._opt.m7sCryptoAudio)&&(e=ci.cryptoPayloadAudio(o)),ci.decode(e,{type:ce,ts:s})}else ci.debugWarn("worker",`demuxFlv() type is audio and payload.byteLength is ${o.byteLength} and return`);break;case he:if(o.byteLength>=6){const e=o[0];if(ci._isEnhancedH265Header(e))ci._decodeEnhancedH265Video(o,s);else{const e=15&o[0];let t=o[0]>>4===Ft;const i=e===Ge;if(Er(t)&&Sr(xr(o,i))&&(ci.debugLog("worker","demux() isIFrame is false and unit type is IDR and update to true"),t=!0),t&&wr(o)&&null===ci.isHevc){const e=15&o[0];ci.isHevc=e===Ge,Qt=ar(o,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Qt}`)}t&&ci.calcIframeIntervalTimestamp(s),ci.isPlayer&&ci.calcNetworkDelay(s),r[0]=o[4],r[1]=o[3],r[2]=o[2],r[3]=0;let n=r[0],a=ci.cryptoPayload(o,t);ci.decode(a,{type:ue,ts:s,isIFrame:t,cts:n})}}else ci.debugWarn("worker",`demuxFlv() type is video and payload.byteLength is ${o.byteLength} and return`);break;case pe:postMessage({cmd:re,buffer:o},[o.buffer]);break;default:ci.debugLog("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ce?ci._opt.hasAudio&&(postMessage({cmd:W,type:Ce,value:e.byteLength}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()||(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ue&&ci._opt.hasVideo&&(postMessage({cmd:W,type:De,value:e.byteLength}),postMessage({cmd:W,type:Le,value:t.ts}),ci.isPlayer?ci.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ci.isPlayback&&(ci.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ci.isPlaybackCacheBeforeDecodeForFpsRender(),ci.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ci._opt.isM7sCrypto?ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=$i(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`):ci._opt.isSm4Crypto?ci._opt.sm4CryptoKey?r=ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?os(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc,ci._opt.isSm4CryptoH265V2):fn(e,ci._opt.sm4CryptoKey,ci.isHevc,ci._opt.isSm4CryptoH265V2):ci._opt.sm4CryptoKey||ci.debugError("worker","isSm4Crypto opt.sm4CryptoKey is null"):ci._opt.isXorCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?r=gn(e,ci._opt.cryptoKey,ci._opt.cryptoIV,ci.isHevc):ci.debugError("worker",`isXorCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ci._opt.isM7sCrypto&&(ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength>0&&ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength>0?e[0]>>4===We&&(t=Vi(e,ci._opt.cryptoKey,ci._opt.cryptoIV)):ci.debugError("worker",`isM7sCrypto cryptoKey.length is ${ci._opt.cryptoKey&&ci._opt.cryptoKey.byteLength} or cryptoIV.length is ${ci._opt.cryptoIV&&ci._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,n=e[0]>>1&1;if(ir=r===We?n?16:8:0===n?8:16,ui&&ui.setCodec||!Er(i))if(Zt(e)||r===je||r===Ye||r===qe){ci.debugLog("worker",`setCodecAudio: init audio codec, codeId is ${r} _opt.sampleRate is ${ci._opt.sampleRate}`);const n=r===We?e.slice(2):new Uint8Array(0);if(i){if(r===qe)return void ci.debugError("worker","setCodecAudio: mp3 is not support for old version");ui.sample_rate=ci._opt.sampleRate,ui.decode(e,t)}else ui.setCodec(r,ci._opt.sampleRate,n);r===We&&postMessage({cmd:z,buffer:n},[n.buffer]),_=!0,r!==We&&(r===qe?(ci.mp3Demuxer||(ci.mp3Demuxer=new pn(ci),ci.mp3Demuxer.on("data",((e,t)=>{ui.decode(e,t)}))),ci.mp3Demuxer.dispatch(e.slice(1),t)):ui.decode(e.slice(1),t));{const e=Number("1")||1;setTimeout((()=>{ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:q})}),60*e*60*1e3)}}else ci.debugWarn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ci.debugError("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ci.isDestroyed)ci.debugLog("worker","decodeAudio, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())li.decodeAudio(e,t);else if(Sr(r)&&Sr(ci._opt.mseDecodeAudio))postMessage({cmd:V,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(_){if(Zt(e))return void ci.debugLog("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i?ui.decode(e,t):r===qe?ci.mp3Demuxer.dispatch(e.slice(1),t):ui.decode(r===We?e.slice(2):e.slice(1),t)}else ci.setCodecAudio(e,t)}},setCodecVideo:function(e,t){const r=15&e[0];if(fi&&fi.setCodec||!Er(i))if(wr(e))if(r===Oe||r===Ge){ci.debugLog("worker",`setCodecVideo: init video codec , codecId is ${r}`);const t=e.slice(5);if(r===Oe&&ci._opt.useSIMD){const e=Fr(t);if(e.codecWidth>k||e.codecHeight>k)return postMessage({cmd:J,value:`width: ${e.codecWidth} > 4080, height: ${e.codecHeight} > 4080`}),void ci.debugWarn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const n=new Uint8Array(e);m=!0,i?fi.decode(e,0):fi.setCodec(r,t),postMessage({cmd:O,code:r}),postMessage({cmd:G,buffer:n,codecId:r},[n.buffer])}else ci.debugWarn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${r} is not H264 or H265`);else ci.debugWarn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${r} and isIFrame is ${t} and packetType is ${e[1]}`);else ci.debugError("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,n){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ci.isDestroyed)ci.debugLog("worker","decodeVideo, decoder is destroyed and return");else if(ci.isPlayUseMSEAndDecoderInWorker())li.decodeVideo(e,t,n,s);else if(Sr(r))postMessage({cmd:$,payload:e,isIFrame:n,ts:t,cts:s,delay:ci.delay},[e.buffer]);else if(m)if(!g&&n&&(g=!0),g){if(n&&wr(e)){const t=15&e[0];let r={};t===Oe?r=Fr(e.slice(5)):t===Ge&&(r=Kr(e)),r.codecWidth&&r.codecHeight&&h&&p&&(r.codecWidth!==h||r.codecHeight!==p)&&(ci.debugWarn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${p},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Yt=!0,postMessage({cmd:X,value:`width: ${h}->${r.codecWidth}, height: ${p}->${r.codecHeight}`}))}if(Yt)return void ci.debugWarn("worker","decodeVideo: video width or height is changed, and return");if(qt)return void ci.debugWarn("worker","decodeVideo: simd decode error, and return");if(wr(e))return void ci.debugLog("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ci.debugLog("worker",`clearBuffer,bufferList length is ${n.length}, need clear is ${e}`),e&&(n=[]),ci.isPlayer&&(ci.resetAllDelay(),Sr(ci._opt.checkFirstIFrame)&&(ci.dropping=!0,postMessage({cmd:Y}))),Sr(ci._opt.checkFirstIFrame)&&Er(r)&&(g=!1)},dropBuffer$2:function(){if(n.length>0){let e=n.findIndex((e=>Sr(e.isIFrame)&&e.type===ue));if(ci.isAllIframeInBufferList())for(let t=0;t=ci.getNotDroppingDelayTs()){ci.debugLog("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${i} and notDroppingDelayTs is ${ci.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ci.isPushDropping=!0,postMessage({cmd:Y});const t=n.length;n=n.slice(e);const r=n.shift();ci.resetAllDelay(),ci.getDelay(r.ts,r.type),ci.doDecode(r),ci.isPushDropping=!1,ci.debugLog("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${n.length} and new delay is ${ci.delay} `)}else ci.isPushDropping=!1}0===n.length&&(ci.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 ce:ci.decode(new Uint8Array(e,5),{type:ce,ts:r});break;case ue:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ci._isEnhancedH265Header(n))ci._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ci.calcIframeIntervalTimestamp(r),wr(i)&&null===ci.isHevc)){const e=15&i[0];ci.isHevc=e===Ge}ci.isPlayer&&ci.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],o=ci.cryptoPayload(i,e);ci.decode(o,{type:ue,ts:r,isIFrame:e,cts:n})}}else ci.debugWarn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){jr.dispatch(e)},demuxFmp4:function(e){Yr.dispatch(e)},demuxMpeg4:function(e){Zr.dispatch(e)},demuxTs:function(e){di.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(ci.isHevc=Er(d),n===Gt){if(i===Vt){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),Qt=ar(e,ci.isHevc),ci.debugLog("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ci.isHevc} and nalUnitSize is ${Qt}`),ci.decode(i,{type:ue,ts:t,isIFrame:!0,cts:0})}}}else if(n===Ht){let r=e,n=0;const s=i===Vt;s&&ci.calcIframeIntervalTimestamp(t),d||(a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0],r=ei(e.slice(8),s),r=ci.cryptoPayload(r,s),ci.decode(r,{type:ue,ts:t,isIFrame:s,cts:n}))}else if(n===$t){const r=i===Vt;r&&ci.calcIframeIntervalTimestamp(t);let n=ei(e.slice(5),r);n=ci.cryptoPayload(n,r),ci.decode(n,{type:ue,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Ot)===Ot},findSei:function(e,t){let r=4;hr(Qt)&&(r=Qt),nr(e.slice(5),r).forEach((e=>{const r=ci.isHevc?e[0]>>>1&63:31&e[0],i=ci.isHevc&&(r===yt||r===gt),n=Er(ci.isHevc)&&r===et;if(i||n){const r=sr(e,ci.isHevc);postMessage({cmd:te,buffer:r.payload,ts:t},[r.payload.buffer])}}))},calcNetworkDelay:function(e){if(!(g&&e>0))return;null===Be?(Be=e,Ze=dr()):et?r-t:0;ci.networkDelay=i,i>ci._opt.networkDelay&&ci._opt.playType===E&&(ci.debugWarn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Be} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:W,type:Me,value:i}))},calcIframeIntervalTimestamp:function(e){null===kt?kt=e:kt=ci._opt.playbackForwardMaxRateDecodeIFrame&&!(ci._opt.useMSE&&ci._opt.mseDecodeAudio)},isPlayUseMSE:function(){return ci.isPlayer&&ci._opt.useMSE&&Sr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ci.isPlayUseMSE()&&ci._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ci.isPlayUseMSEAndDecoderInWorker()&&ci._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){Er(ci.isPlaybackCacheBeforeDecodeForFpsRender())&&ci.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ci.debugError("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),jt=!0,ci.webglObj.destroy(),ci.webglObj=null,ci.offscreenCanvasGL=null,setTimeout((()=>{ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.offscreenCanvasGL&&ci.offscreenCanvasGL.getContextAttributes().stencil?(ci.webglObj=y(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),jt=!1):ci.debugError("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ci.debugLog("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:O,code:e}),postMessage({cmd:I,w:t,h:r}),h=t,p=r,ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(t,r),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=y(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:R,code:e}),postMessage({cmd:M,sampleRate:t,channels:r,depth:ir}),_t=r},yuvData:function(t,r){if(ci.isDestroyed)return void ci.debugLog("worker","yuvData, decoder is destroyed and return");const i=h*p*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(nt=null,B=r,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(h,p,s);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:F,buffer:e,delay:ci.delay,ts:r},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:F,output:s,delay:ci.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(dt){if(!(n>=(r=d-dt)))return dt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==_t&&(s[1]=Float32Array.of(...s[1],...o[1])));it[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==_t&&(it[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:P,buffer:it,ts:i},it.map((e=>e.buffer))),a=r,n-=r}for(dt=n;dt>=d;dt-=d)it[0]=o[0].slice(a,a+=d),2==_t&&(it[1]=o[1].slice(a-d,a)),postMessage({cmd:P,buffer:it,ts:i},it.map((e=>e.buffer)));dt&&(s[0]=o[0].slice(a),2==_t&&(s[1]=o[1].slice(a))),o=[]},errorInfo:function(e){null===nt&&(nt=dr());const t=dr(),r=lr(ot>0?2*ot:5e3,1e3,5e3),i=t-nt;i>r&&(ci.debugWarn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${ot} and diff is ${i} and maxDiff is ${r}\n and replay`),qt=!0,postMessage({cmd:Z}))},sendWebsocketMessage:function(e){d?d.readyState===ze?d.send(e):ci.debugError("worker","socket is not open"):ci.debugError("worker","socket is null")},timeEnd:function(){ci.debugError("worker","Jb pro 体验结束,请刷新页面再次体验(wasm内部会暂停解码),如需要购买商业授权,可以联系微信:bosswancheng"),ci.close(),postMessage({cmd:q})},postStreamToMain(e,t){postMessage({cmd:ee,type:t,buffer:e},[e.buffer])},updatePlaybackIsPause(e){ci.debugLog("worker",`updatePlaybackIsPause, isPause is ${e}`),Sr(e)?ci.clearPlaybackCacheLoop():ci.startPlaybackCacheLoop()},debugLog(e){if(ci._opt.debug&&ci.debug){for(var t=arguments.length,r=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i1?t-1:0),i=1;i>2,h=e,p=t,postMessage({cmd:I,w:e,h:t}),ci.useOffscreen()&&(ci.offscreenCanvas=new OffscreenCanvas(e,t),ci.offscreenCanvasGL=ci.offscreenCanvas.getContext("webgl"),ci.webglObj=y(ci.offscreenCanvasGL,ci._opt.openWebglAlignment),ci.offscreenCanvas.addEventListener("webglcontextlost",ci.onOffscreenCanvasWebglContextLost,!1),ci.offscreenCanvas.addEventListener("webglcontextrestored",ci.onOffscreenCanvasWebglContextRestored,!1))},initAudioPlanar:function(e,t){_t=e,postMessage({cmd:M,sampleRate:t,channels:e,depth:ir})},playAudioPlanar:function(e,r,i){if(ci.isDestroyed)return void ci.debugLog("worker","pcmData, decoder is destroyed and return");let n=r,o=[],a=0,d=ci._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;o[r]=t.HEAPF32.subarray(i,i+n)}if(dt){if(!(n>=(r=d-dt)))return dt+=n,s[0]=Float32Array.of(...s[0],...o[0]),void(2==_t&&(s[1]=Float32Array.of(...s[1],...o[1])));it[0]=Float32Array.of(...s[0],...o[0].subarray(0,r)),2==_t&&(it[1]=Float32Array.of(...s[1],...o[1].subarray(0,r))),postMessage({cmd:P,buffer:it,ts:i},it.map((e=>e.buffer))),a=r,n-=r}for(dt=n;dt>=d;dt-=d)it[0]=o[0].slice(a,a+=d),2==_t&&(it[1]=o[1].slice(a-d,a)),postMessage({cmd:P,buffer:it,ts:i},it.map((e=>e.buffer)));dt&&(s[0]=o[0].slice(a),2==_t&&(s[1]=o[1].slice(a))),o=[]},draw:function(t,r,i,n){if(ci.isDestroyed)return void ci.debugLog("worker","draw, decoder is destroyed and return");const s=e.HEAPU8.subarray(r,r+Br),o=e.HEAPU8.subarray(i,i+Tr),a=e.HEAPU8.subarray(n,n+Tr),d=new Uint8Array(Br+Tr+Tr);if(d.set(s),d.set(o,Br),d.set(a,Br+Tr),nt=null,B=t,ci.useOffscreen())try{if(jt)return;ci.webglObj.renderYUV(h,p,d);let e=ci.offscreenCanvas.transferToImageBitmap();postMessage({cmd:F,buffer:e,delay:ci.delay,ts:t},[e])}catch(e){ci.debugError("worker","yuvData, transferToImageBitmap error is",e,e.toString())}else postMessage({cmd:F,output:d,delay:ci.delay,ts:t},[d.buffer])}}));let ui=null;t.AudioDecoder&&(ui=new t.AudioDecoder(ci));let fi=null;e.VideoDecoder&&(fi=new e.VideoDecoder(ci)),postMessage({cmd:L}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case me:try{ci._opt=Object.assign(ci._opt,JSON.parse(t.opt))}catch(e){}ci.init();break;case _e:ci.pushBuffer(t.buffer,t.options);break;case ge:ci.decodeAudio(t.buffer,t.ts);break;case ye:ci.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case we:ci.clearBuffer(t.needClear);break;case Se:ci.fetchStream(t.url,JSON.parse(t.opt),t.protocols);break;case ve:ci.debugLog("worker","close",JSON.stringify(t.options)),t.options&&Er(t.options.isVideoInited)&&(Ur=t.options.isVideoInited),ci.close();break;case be:ci.debugLog("worker","updateConfig",t.key,t.value),ci._opt[t.key]=t.value,"playbackRate"===t.key&&(ci.playbackUpdatePlaybackRate(),ci.isPlaybackCacheBeforeDecodeForFpsRender()&&ci.playbackCacheLoop());break;case Ee:ci.sendWebsocketMessage(t.message);break;case Ae:li.$video.currentTime=Number(t.message);break;case xe:ci.updatePlaybackIsPause(t.isPause)}}}(c,c,!1,!0)}})); diff --git a/demo/public/pro/js/decoder-pro-simd-mt.js b/demo/public/pro/js/decoder-pro-simd-mt.js index 2479250b..6c65a107 100644 --- a/demo/public/pro/js/decoder-pro-simd-mt.js +++ b/demo/public/pro/js/decoder-pro-simd-mt.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="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(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-simd-mt-worker.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL&&""!=JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL?JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL:e};var s,a,o,d=Object.assign({},n),l=(e,t)=>{throw t},c="object"==typeof window,u="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),g=_("fs"),y=_("path");let t;p=u?y.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=te(e)?new URL(e):y.normalize(e),g.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=te(e)?new URL(e):y.normalize(e),g.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(c||u)&&(u?p=self.location.href:"undefined"!=typeof document&&document.currentScript&&(p=document.currentScript.src),r&&(p=r),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},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)}));h&&"undefined"==typeof performance&&(global.performance=_("perf_hooks").performance);var v=console.log.bind(console),b=console.error.bind(console);h&&(v=function(){for(var e=arguments.length,t=new Array(e),r=0;re.startsWith(Q),te=e=>e.startsWith("file://");function re(e){if(e==J&&w)return new Uint8Array(w);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ie(e){if(!w&&(c||u)){if("function"==typeof fetch&&!te(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((()=>re(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>re(e)))}function ne(e,t,r){return ie(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{U(`failed to asynchronously prepare wasm: ${e}`),Z(e)}))}function se(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||ee(t)||te(t)||h||"function"!=typeof fetch?ne(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return U(`wasm streaming compile failed: ${e}`),U("falling back to ArrayBuffer instantiation"),ne(t,r,i)}))))}function ae(){var e={a:hi};function t(e,t){return fi=e.exports,Le(fi.R),Te=fi.V,V(fi.N),E=t,X(),fi}if(K(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){U(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return se(w,J,e,(function(e){t(e.instance,e.module)})).catch(i),{}}function oe(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}n.locateFile?ee(J="decoder-pro-simd-mt-worker.wasm")||(J=m(J)):J=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 de=e=>{e.terminate(),e.onmessage=e=>{}},le=e=>{var t=Ae.pthreads[e];delete Ae.pthreads[e],de(t),wi(e),Ae.runningWorkers.splice(Ae.runningWorkers.indexOf(t),1),t.pthread_ptr=0},ce=e=>{Ae.pthreads[e].postMessage({cmd:"cancel"})},ue=e=>{var t=Ae.pthreads[e];Ae.returnWorkerToPool(t)},he=e=>{var t=Ae.getNewWorker();if(!t)return 6;Ae.runningWorkers.push(t),Ae.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},fe=0,pe=()=>Pe||fe>0,me="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,_e=(e,t,r)=>{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&me)return me.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},ge=(e,t)=>e?_e(T,e,t):"",ye=e=>{var t=Ui(),r=e();return xi(t),r},ve=function(e,t){var r=arguments.length-2,i=arguments;return ye((()=>{for(var n=r,s=Bi(8*n),a=s>>3,o=0;o{if(x=e,f)throw Be(e),"unwind";be(e)},Se=we,Ee=e=>{if(e instanceof oe||"unwind"==e)return x;l(1,e)},Ae={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){f?Ae.initWorker():Ae.initMainThread()},initMainThread(){for(var e=8;e--;)Ae.allocateUnusedWorker();W((()=>{K(),Ae.loadWasmModuleToAllWorkers((()=>X()))}))},initWorker(){Pe=!1},setExitStatus:e=>{x=e},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var e of Ae.runningWorkers)de(e);for(var e of Ae.unusedWorkers)de(e);Ae.unusedWorkers=[],Ae.runningWorkers=[],Ae.pthreads=[]},returnWorkerToPool:e=>{var t=e.pthread_ptr;delete Ae.pthreads[t],Ae.unusedWorkers.push(e),Ae.runningWorkers.splice(Ae.runningWorkers.indexOf(e),1),e.pthread_ptr=0,wi(t)},receiveObjectTransfer(e){},threadInitTLS(){Ae.tlsInitFunctions.forEach((e=>e()))},loadWasmModuleToWorker:e=>new Promise((t=>{e.onmessage=r=>{var i=r.data,s=i.cmd;if(i.targetThread&&i.targetThread!=_i()){var a=Ae.pthreads[i.targetThread];a?a.postMessage(i,i.transferList):U(`Internal error! Worker sent a message "${s}" to target pthread ${i.targetThread}, but that thread no longer exists!`)}else"checkMailbox"===s?Fr():"spawnThread"===s?he(i):"cleanupThread"===s?ue(i.thread):"killThread"===s?le(i.thread):"cancelThread"===s?ce(i.thread):"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&&U(`worker sent an unknown command ${s}`)},e.onerror=e=>{throw U(`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(Ae.unusedWorkers.map(Ae.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"});Ae.unusedWorkers.push(e)},getNewWorker:()=>(0==Ae.unusedWorkers.length&&(Ae.allocateUnusedWorker(),Ae.loadWasmModuleToWorker(Ae.unusedWorkers[0])),Ae.unusedWorkers.pop())};n.PThread=Ae;var Ue=e=>{for(;e.length>0;)e.shift()(n)},xe=()=>{var e=_i(),t=P[e+52>>2],r=P[e+56>>2];Ai(t,t-r),xi(t)};function Be(e){if(f)return ve(1,0,e);Se(e)}n.establishStackSpace=xe;var Te,ke=[],Ce=e=>{var t=ke[e];return t||(e>=ke.length&&(ke.length=e+1),ke[e]=t=Te.get(e)),t},De=(e,t)=>{!function(e){pe()?Ae.setExitStatus(e):Si(e)}(Ce(e)(t))};n.invokeEntryPoint=De;var Pe=n.noExitRuntime||!0,Le=e=>{Ae.tlsInitFunctions.push(e)},Fe=(e,t,r,i)=>{Z(`Assertion failed: ${ge(e)}, at: `+[t?ge(t):"unknown filename",r,i?ge(i):"unknown function"])};function Ie(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,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){P[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return P[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Ti(this.get_type()))return P[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var Me=(e,t,r)=>{throw new Ie(e).init(t,r),e},Re=e=>{yi(e,!u,1,!c,16777216,!1),Ae.threadInitTLS()},ze=e=>{f?postMessage({cmd:"cleanupThread",thread:e}):ue(e)};function $e(e,t,r,i){return f?ve(2,1,e,t,r,i):He(e,t,r,i)}var Ne,Oe,Ge,He=(e,t,r,i)=>{if("undefined"==typeof SharedArrayBuffer)return U("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var n=[];if(f&&0===n.length)return $e(e,t,r,i);var s={startRoutine:r,pthread_ptr:e,arg:i,transferList:n};return f?(s.cmd="spawnThread",postMessage(s,n),0):he(s)},We=(e,t,r,i,n)=>{},Ve=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ne=e},je=e=>{for(var t="",r=e;T[r];)t+=Ne[T[r++]];return t},qe={},Ye={},Ke={},Xe=e=>{throw new Oe(e)},Ze=e=>{throw new Ge(e)},Je=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ze("Mismatched type converter count");for(var n=0;n{Ye.hasOwnProperty(e)?n[t]=Ye[e]:(s.push(e),qe.hasOwnProperty(e)||(qe[e]=[]),qe[e].push((()=>{n[t]=Ye[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function Qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||Xe(`type "${i}" must have a positive integer typeid pointer`),Ye.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Xe(`Cannot register type '${i}' twice`)}if(Ye[e]=t,delete Ke[e],qe.hasOwnProperty(e)){var n=qe[e];delete qe[e],n.forEach((e=>e()))}}function et(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Qe(e,t,r)}var tt,rt=8,it=(e,t,r,i)=>{et(e,{name:t=je(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:rt,readValueFromPointer:function(e){return this.fromWireType(T[e])},destructorFunction:null})},nt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),st=e=>{Xe(e.$$.ptrType.registeredClass.name+" instance already deleted")},at=!1,ot=e=>{},dt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},lt=e=>{e.count.value-=1,0===e.count.value&&dt(e)},ct=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=ct(e,t,r.baseClass);return null===i?null:r.downcast(i)},ut={},ht=()=>Object.keys(yt).length,ft=()=>{var e=[];for(var t in yt)yt.hasOwnProperty(t)&&e.push(yt[t]);return e},pt=[],mt=()=>{for(;pt.length;){var e=pt.pop();e.$$.deleteScheduled=!1,e.delete()}},_t=e=>{tt=e,pt.length&&tt&&tt(mt)},gt=()=>{n.getInheritedInstanceCount=ht,n.getLiveInheritedInstances=ft,n.flushPendingDeletes=mt,n.setDelayFunction=_t},yt={},vt=(e,t)=>{for(void 0===t&&Xe("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},bt=(e,t)=>(t=vt(e,t),yt[t]),wt=(e,t)=>(t.ptrType&&t.ptr||Ze("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ze("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Et(Object.create(e,{$$:{value:t}})));function St(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=bt(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?wt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):wt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=ut[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=ct(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?wt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):wt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var Et=e=>"undefined"==typeof FinalizationRegistry?(Et=e=>e,e):(at=new FinalizationRegistry((e=>{lt(e.$$)})),Et=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};at.register(e,r,e)}return e},ot=e=>at.unregister(e),Et(e)),At=()=>{Object.assign(Ut.prototype,{isAliasOf(e){if(!(this instanceof Ut))return!1;if(!(e instanceof Ut))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||st(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Et(Object.create(Object.getPrototypeOf(this),{$$:{value:nt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||st(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Xe("Object already scheduled for deletion"),ot(this),lt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||st(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Xe("Object already scheduled for deletion"),pt.push(this),1===pt.length&&tt&&tt(mt),this.$$.deleteScheduled=!0,this}})};function Ut(){}var xt=(e,t)=>Object.defineProperty(t,"name",{value:e}),Bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Xe(`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}},Tt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&Xe(`Cannot register public name '${e}' twice`),Bt(n,e,e),n.hasOwnProperty(r)&&Xe(`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))},kt=48,Ct=57,Dt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=kt&&t<=Ct?`_${e}`:e};function Pt(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 Lt=(e,t,r)=>{for(;t!==r;)t.upcast||Xe(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Ft(e,t){if(null===t)return this.isReference&&Xe(`null is not a valid ${this.name}`),0;t.$$||Xe(`Cannot pass "${hr(t)}" as a ${this.name}`),t.$$.ptr||Xe(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Lt(t.$$.ptr,r,this.registeredClass)}function It(e,t){var r;if(null===t)return this.isReference&&Xe(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Xe(`Cannot pass "${hr(t)}" as a ${this.name}`),t.$$.ptr||Xe(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&Xe(`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=Lt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Xe("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Xe(`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,lr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:Xe("Unsupporting sharing policy")}return r}function Mt(e,t){if(null===t)return this.isReference&&Xe(`null is not a valid ${this.name}`),0;t.$$||Xe(`Cannot pass "${hr(t)}" as a ${this.name}`),t.$$.ptr||Xe(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&Xe(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Lt(t.$$.ptr,r,this.registeredClass)}function Rt(e){return this.fromWireType(P[e>>2])}var zt=()=>{Object.assign($t.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:rt,readValueFromPointer:Rt,deleteObject(e){null!==e&&e.delete()},fromWireType:St})};function $t(e,t,r,i,n,s,a,o,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=It:i?(this.toWireType=Ft,this.destructorFunction=null):(this.toWireType=Mt,this.destructorFunction=null)}var Nt,Ot=(e,t,r)=>{n.hasOwnProperty(e)||Ze("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Gt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Ht=(e,t,r)=>e.includes("j")?Gt(e,t,r):Ce(t).apply(null,r),Wt=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Ht(e,t,r)}},Vt=(e,t)=>{var r=(e=je(e)).includes("j")?Wt(e,t):Ce(t);return"function"!=typeof r&&Xe(`unknown function pointer with signature ${e}: ${t}`),r},jt=(e,t)=>{var r=xt(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},qt=e=>{var t=gi(e),r=je(t);return pi(t),r},Yt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Ye[t]||(Ke[t]?Ke[t].forEach(e):(r.push(t),i[t]=!0))})),new Nt(`${e}: `+r.map(qt).join([", "]))},Kt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=je(c),s=Vt(n,s),o&&(o=Vt(a,o)),l&&(l=Vt(d,l)),h=Vt(u,h);var f=Dt(c);Tt(f,(function(){Yt(`Cannot construct ${c} due to unbound types`,[i])})),Je([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:Ut.prototype;var a=xt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Oe("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Oe(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Oe(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Pt(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new $t(c,u,!0,!1,!1),m=new $t(c+"*",u,!1,!1,!1),_=new $t(c+" const*",u,!1,!0,!1);return ut[e]={pointerType:m,constPointerType:_},Ot(f,a),[p,m,_]}))},Xt=(e,t)=>{for(var r=[],i=0;i>2]);return r},Zt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Jt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=xt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Qt(e,t,r,i,n,s){var a=t.length;a<2&&Xe("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+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=Xt(t,r);n=Vt(i,n),Je([],[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 Oe(`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]=()=>{Yt(`Cannot construct ${e.name} due to unbound types`,a)},Je([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Qt(r,i,null,n,s),[]))),[]}))},tr=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},rr=(e,t,r,i,n,s,a,o,d)=>{var l=Xt(r,i);t=je(t),t=tr(t),s=Vt(n,s),Je([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Yt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(Bt(c,t,i),c[t].overloadTable[r-2]=n),Je([],l,(function(n){var o=Qt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function ir(){Object.assign(nr.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)}})}function nr(){this.allocated=[void 0],this.freelist=[]}var sr=new nr,ar=e=>{e>=sr.reserved&&0==--sr.get(e).refcount&&sr.free(e)},or=()=>{for(var e=0,t=sr.reserved;t{sr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),sr.reserved=sr.allocated.length,n.count_emval_handles=or},lr={toValue:e=>(e||Xe("Cannot use deleted val. handle = "+e),sr.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 sr.allocate({refcount:1,value:e})}}};function cr(e){return this.fromWireType(D[e>>2])}var ur=(e,t)=>{et(e,{name:t=je(t),fromWireType:e=>{var t=lr.toValue(e);return ar(e),t},toWireType:(e,t)=>lr.toHandle(t),argPackAdvance:rt,readValueFromPointer:cr,destructorFunction:null})},hr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},fr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(L[e>>2])};case 8:return function(e){return this.fromWireType(F[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},pr=(e,t,r)=>{et(e,{name:t=je(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:rt,readValueFromPointer:fr(t,r),destructorFunction:null})},mr=(e,t,r)=>{switch(t){case 1:return r?e=>B[e>>0]:e=>T[e>>0];case 2:return r?e=>k[e>>1]:e=>C[e>>1];case 4:return r?e=>D[e>>2]:e=>P[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},_r=(e,t,r,i,n)=>{t=je(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");et(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:rt,readValueFromPointer:mr(t,r,0!==i),destructorFunction:null})},gr=(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(B.buffer,r,t)}et(e,{name:r=je(r),fromWireType:n,argPackAdvance:rt,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},yr=(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)),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},vr=(e,t,r)=>yr(e,T,t,r),br=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},wr=(e,t)=>{var r="std::string"===(t=je(t));et(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==T[o]){var d=ge(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)vr(t,a,i+1);else if(n)for(var o=0;o255&&(pi(a),Xe("String has UTF-16 code units that do not fit in 8 bits")),T[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&C[i];)++i;if((r=i<<1)-e>32&&Sr)return Sr.decode(T.slice(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=k[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},Ar=(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 k[t>>1]=0,t-i},Ur=e=>2*e.length,xr=(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},Br=(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},Tr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},kr=(e,t,r)=>{var i,n,s,a,o;r=je(r),2===t?(i=Er,n=Ar,a=Ur,s=()=>C,o=1):4===t&&(i=xr,n=Br,a=Tr,s=()=>P,o=2),et(e,{name:r,fromWireType:e=>{for(var r,n=P[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return pi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&Xe(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=mi(4+s+t);return P[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(pi,d),d},argPackAdvance:rt,readValueFromPointer:cr,destructorFunction(e){pi(e)}})},Cr=(e,t)=>{et(e,{isVoid:!0,name:t=je(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Dr=()=>{if(!pe())try{f?Si(x):Se(x)}catch(e){Ee(e)}},Pr=e=>{if(!I)try{e(),Dr()}catch(e){Ee(e)}},Lr=e=>{if("function"==typeof Atomics.waitAsync){Atomics.waitAsync(D,e>>2,e).value.then(Fr);var t=e+128;Atomics.store(D,t>>2,1)}};n.__emscripten_thread_mailbox_await=Lr;var Fr=()=>{var e=_i();e&&(Lr(e),Pr(Ei))};n.checkMailbox=Fr;var Ir,Mr=(e,t,r)=>{if(e==t)setTimeout((()=>Fr()));else if(f)postMessage({targetThread:e,cmd:"checkMailbox"});else{var i=Ae.pthreads[e];if(!i)return;i.postMessage({cmd:"checkMailbox"})}},Rr=[],zr=(e,t,r,i)=>{Rr.length=r;for(var n=i>>3,s=0;s{h&&Ae.pthreads[e].ref()},Nr={},Or=e=>{var t=Nr[e];return void 0===t?je(e):t},Gr=[],Hr=(e,t,r,i,n)=>(e=Gr[e])(t=lr.toValue(t),t[r=Or(r)],i,n),Wr=e=>{var t=Gr.length;return Gr.push(e),t},Vr=(e,t)=>{var r=Ye[e];return void 0===r&&Xe(t+" has unknown type "+qt(e)),r},jr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},qr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(P[t>>2]=lr.toHandle(i)),n},Yr=(e,t,r)=>{var i=jr(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],c=0;ce.name)).join(", ")}) => ${n.name}>`;return Wr(xt(h,u))},Kr=e=>{e>4&&(sr.get(e).refcount+=1)},Xr=e=>lr.toHandle(Or(e)),Zr=()=>lr.toHandle({}),Jr=e=>lr.toHandle(ge(e)),Qr=e=>{var t=lr.toValue(e);Zt(t),ar(e)},ei=(e,t,r)=>{e=lr.toValue(e),t=lr.toValue(t),r=lr.toValue(r),e[t]=r},ti=(e,t)=>{var r=(e=Vr(e,"_emval_take_value")).readValueFromPointer(t);return lr.toHandle(r)},ri=()=>{Z("")},ii=()=>{},ni=()=>{fe+=1},si=()=>{throw ni(),"unwind"};Ir=()=>performance.timeOrigin+performance.now();var ai=e=>{Z("OOM")},oi=e=>{T.length,ai()},di=[null,[],[]],li=(e,t)=>{var r=di[e];0===t||10===t?((1===e?A:U)(_e(r,0)),r.length=0):r.push(t)};function ci(e,t,r,i){if(f)return ve(3,1,e,t,r,i);for(var n=0,s=0;s>2],o=P[t+4>>2];t+=8;for(var d=0;d>2]=n,0}Ae.init(),Ve(),Oe=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Ge=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},At(),gt(),zt(),Nt=n.UnboundTypeError=jt(Error,"UnboundTypeError"),ir(),dr();var ui=[be,Be,$e,ci],hi={e:Fe,s:Me,D:Re,m:ze,A:He,v:We,J:it,u:Kt,t:er,j:rr,I:ur,o:pr,c:_r,b:gr,p:wr,k:kr,K:Cr,x:Mr,E:zr,C:Lr,G:$r,h:Hr,d:ar,g:Yr,L:Kr,q:Xr,H:Zr,B:Jr,i:Qr,r:ei,M:ti,l:ri,n:ii,F:si,f:Ir,w:oi,z:Se,y:ci,a:S||n.wasmMemory},fi=ae(),pi=e=>(pi=fi.O)(e),mi=e=>(mi=fi.P)(e),_i=n._pthread_self=()=>(_i=n._pthread_self=fi.Q)();n.__emscripten_tls_init=()=>(n.__emscripten_tls_init=fi.R)();var gi=e=>(gi=fi.S)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=fi.T)();var yi=n.__emscripten_thread_init=(e,t,r,i,s,a)=>(yi=n.__emscripten_thread_init=fi.U)(e,t,r,i,s,a);n.__emscripten_thread_crashed=()=>(n.__emscripten_thread_crashed=fi.W)();var vi,bi=(e,t,r,i)=>(bi=fi.X)(e,t,r,i),wi=e=>(wi=fi.Y)(e),Si=n.__emscripten_thread_exit=e=>(Si=n.__emscripten_thread_exit=fi.Z)(e),Ei=()=>(Ei=fi._)(),Ai=(e,t)=>(Ai=fi.$)(e,t),Ui=()=>(Ui=fi.aa)(),xi=e=>(xi=fi.ba)(e),Bi=e=>(Bi=fi.ca)(e),Ti=e=>(Ti=fi.da)(e);function ki(){if(!(q>0)){if(f)return t(n),G(),void startWorker(n);O(),q>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e())}function e(){vi||(vi=!0,n.calledRun=!0,I||(G(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),H()))}}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=fi.ea)(e,t,r,i,s),n.___start_em_js=143516,n.___stop_em_js=143573,n.wasmMemory=S,n.keepRuntimeAlive=pe,n.ExitStatus=oe,n.PThread=Ae,Y=function e(){vi||ki(),vi||(Y=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ki(),e.ready}),a=(()=>{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 async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};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-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var s,a,o,d=Object.assign({},n),l="./this.program",c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f="";function p(e){return n.locateFile?n.locateFile(e,f):f+e}if(h){const{createRequire:e}=await import("module");var m=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),_=m("fs"),g=m("path");f=u?g.dirname(f)+"/":m("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=J(e)?new URL(e):g.normalize(e),_.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=J(e)?new URL(e):g.normalize(e),_.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(c||u)&&(u?f=self.location.href:"undefined"!=typeof document&&document.currentScript&&(f=document.currentScript.src),e&&(f=e),f=0!==f.indexOf("blob:")?f.substr(0,f.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,v,b=n.print||console.log.bind(console),w=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&(l=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(y=n.wasmBinary),"object"!=typeof WebAssembly&&j("no native wasm support detected");var S,E,A,U,x,B,T,k,C=!1;function D(e,t){e||j(t)}function P(){var e=v.buffer;n.HEAP8=S=new Int8Array(e),n.HEAP16=A=new Int16Array(e),n.HEAPU8=E=new Uint8Array(e),n.HEAPU16=U=new Uint16Array(e),n.HEAP32=x=new Int32Array(e),n.HEAPU32=B=new Uint32Array(e),n.HEAPF32=T=new Float32Array(e),n.HEAPF64=k=new Float64Array(e)}var L=[],F=[],I=[];function M(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)$(n.preRun.shift());ne(L)}function R(){n.noFSInit||ke.init.initialized||ke.init(),ke.ignorePermissions=!1,ne(F)}function z(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)O(n.postRun.shift());ne(I)}function $(e){L.unshift(e)}function N(e){F.unshift(e)}function O(e){I.unshift(e)}var G=0,H=null;function W(e){G++,n.monitorRunDependencies&&n.monitorRunDependencies(G)}function V(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),0==G&&H){var t=H;H=null,t()}}function j(e){n.onAbort&&n.onAbort(e),w(e="Aborted("+e+")"),C=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var q,Y,K,X="data:application/octet-stream;base64,",Z=e=>e.startsWith(X),J=e=>e.startsWith("file://");function Q(e){if(e==q&&y)return new Uint8Array(y);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ee(e){if(!y&&(c||u)){if("function"==typeof fetch&&!J(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((()=>Q(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>Q(e)))}function te(e,t,r){return ee(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{w(`failed to asynchronously prepare wasm: ${e}`),j(e)}))}function re(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||Z(t)||J(t)||h||"function"!=typeof fetch?te(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return w(`wasm streaming compile failed: ${e}`),w("falling back to ArrayBuffer instantiation"),te(t,r,i)}))))}function ie(){var e={a:ni};function t(e,t){return si=e.exports,v=si.E,P(),Lt=si.H,N(si.F),V(),si}if(W(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){w(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return re(y,q,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?Z(q="decoder-pro-audio.wasm")||(q=p(q)):q=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).href;var ne=e=>{for(;e.length>0;)e.shift()(n)};function se(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_caught=function(e){e=e?1:0,S[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=S[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,S[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=S[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){B[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return B[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ci(this.get_type()))return B[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var ae=(e,t,r)=>{throw new se(e).init(t,r),e},oe=e=>(x[oi()>>2]=e,e),de={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=de.isAbs(e),r="/"===e.substr(-1);return(e=de.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=de.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=de.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return de.normalize(e.join("/"))},join2:(e,t)=>de.normalize(e+"/"+t)},le=()=>{if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues)return e=>crypto.getRandomValues(e);if(h)try{var e=m("crypto");if(e.randomFillSync)return t=>e.randomFillSync(t);var t=e.randomBytes;return e=>(e.set(t(e.byteLength)),e)}catch(e){}j("initRandomDevice")},ce=e=>(ce=le())(e),ue={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ke.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=de.isAbs(i)}return(t?"/":"")+(e=de.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=ue.resolve(e).substr(1),t=ue.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;o{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&he)return he.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},pe=[],me=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},_e=(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 ge(e,t,r){var i=r>0?r:me(e)+1,n=new Array(i),s=_e(e,n,0,n.length);return t&&(n.length=s),n}var ye=()=>{if(!pe.length){var e=null;if(h){var t=Buffer.alloc(256),r=0,i=process.stdin.fd;try{r=_.readSync(i,t)}catch(e){if(!e.toString().includes("EOF"))throw e;r=0}e=r>0?t.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(e=window.prompt("Input: "))&&(e+="\n"):"function"==typeof readline&&null!==(e=readline())&&(e+="\n");if(!e)return null;pe=ge(e,!0)}return pe.shift()},ve={ttys:[],init(){},shutdown(){},register(e,t){ve.ttys[e]={input:[],output:[],ops:t},ke.registerDevice(e,ve.stream_ops)},stream_ops:{open(e){var t=ve.ttys[e.node.rdev];if(!t)throw new ke.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new ke.ErrnoError(60);for(var s=0,a=0;aye(),put_char(e,t){null===t||10===t?(b(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(b(fe(e.output,0)),e.output=[])},ioctl_tcgets:e=>({c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),ioctl_tcsets:(e,t,r)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,t){null===t||10===t?(w(fe(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(w(fe(e.output,0)),e.output=[])}}},be=e=>{j()},we={ops_table:null,mount:e=>we.createNode(null,"/",16895,0),createNode(e,t,r,i){if(ke.isBlkdev(r)||ke.isFIFO(r))throw new ke.ErrnoError(63);we.ops_table||(we.ops_table={dir:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,lookup:we.node_ops.lookup,mknod:we.node_ops.mknod,rename:we.node_ops.rename,unlink:we.node_ops.unlink,rmdir:we.node_ops.rmdir,readdir:we.node_ops.readdir,symlink:we.node_ops.symlink},stream:{llseek:we.stream_ops.llseek}},file:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:{llseek:we.stream_ops.llseek,read:we.stream_ops.read,write:we.stream_ops.write,allocate:we.stream_ops.allocate,mmap:we.stream_ops.mmap,msync:we.stream_ops.msync}},link:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr,readlink:we.node_ops.readlink},stream:{}},chrdev:{node:{getattr:we.node_ops.getattr,setattr:we.node_ops.setattr},stream:ke.chrdev_stream_ops}});var n=ke.createNode(e,t,r,i);return ke.isDir(n.mode)?(n.node_ops=we.ops_table.dir.node,n.stream_ops=we.ops_table.dir.stream,n.contents={}):ke.isFile(n.mode)?(n.node_ops=we.ops_table.file.node,n.stream_ops=we.ops_table.file.stream,n.usedBytes=0,n.contents=null):ke.isLink(n.mode)?(n.node_ops=we.ops_table.link.node,n.stream_ops=we.ops_table.link.stream):ke.isChrdev(n.mode)&&(n.node_ops=we.ops_table.chrdev.node,n.stream_ops=we.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:e=>e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0),expandFileStorage(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(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(e){var t={};return t.dev=ke.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,ke.isDir(e.mode)?t.size=4096:ke.isFile(e.mode)?t.size=e.usedBytes:ke.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(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&we.resizeFileStorage(e,t.size)},lookup(e,t){throw ke.genericErrors[44]},mknod:(e,t,r,i)=>we.createNode(e,t,r,i),rename(e,t,r){if(ke.isDir(e.mode)){var i;try{i=ke.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ke.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(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var r=ke.lookupNode(e,t);for(var i in r.contents)throw new ke.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){var i=we.createNode(e,t,41471,0);return i.link=r,i},readlink(e){if(!ke.isLink(e.mode))throw new ke.ErrnoError(28);return e.link}},stream_ops:{read(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(we.stream_ops.write(e,t,0,i,r,!1),0)}},Se=(e,t,r,i)=>{var n=i?"":`al ${e}`;a(e,(r=>{D(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&&W()},Ee=(e,t,r,i,n,s)=>{ke.createDataFile(e,t,r,i,n,s)},Ae=n.preloadPlugins||[],Ue=(e,t,r,i)=>{"undefined"!=typeof Browser&&Browser.init();var n=!1;return Ae.forEach((s=>{n||s.canHandle(t)&&(s.handle(e,t,r,i),n=!0)})),n},xe=(e,t,r,i,n,s,a,o,d,l)=>{var c=t?ue.resolve(de.join2(e,t)):e;function u(r){function u(r){l&&l(),o||Ee(e,t,r,i,n,d),s&&s(),V()}Ue(r,c,u,(()=>{a&&a(),V()}))||u(r)}W(),"string"==typeof r?Se(r,(e=>u(e)),a):u(r)},Be=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===t)throw new Error(`Unknown file open mode: ${e}`);return t},Te=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},ke={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=ue.resolve(e)))return{path:"",node:null};if(t=Object.assign({follow_mount:!0,recurse_count:0},t),t.recurse_count>8)throw new ke.ErrnoError(32);for(var r=e.split("/").filter((e=>!!e)),i=ke.root,n="/",s=0;s40)throw new ke.ErrnoError(32)}}return{path:n,node:i}},getPath(e){for(var t;;){if(ke.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)%ke.nameTable.length},hashAddNode(e){var t=ke.hashName(e.parent.id,e.name);e.name_next=ke.nameTable[t],ke.nameTable[t]=e},hashRemoveNode(e){var t=ke.hashName(e.parent.id,e.name);if(ke.nameTable[t]===e)ke.nameTable[t]=e.name_next;else for(var r=ke.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=ke.mayLookup(e);if(r)throw new ke.ErrnoError(r,e);for(var i=ke.hashName(e.id,t),n=ke.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return ke.lookup(e,t)},createNode(e,t,r,i){var n=new ke.FSNode(e,t,r,i);return ke.hashAddNode(n),n},destroyNode(e){ke.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==(49152&e),flagsToPermissionString(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ke.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=ke.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{ke.lookupNode(e,t);return 20}catch(e){}return ke.nodePermissions(e,"wx")},mayDelete(e,t,r){var i;try{i=ke.lookupNode(e,t)}catch(e){return e.errno}var n=ke.nodePermissions(e,"wx");if(n)return n;if(r){if(!ke.isDir(i.mode))return 54;if(ke.isRoot(i)||ke.getPath(i)===ke.cwd())return 10}else if(ke.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ke.isLink(e.mode)?32:ke.isDir(e.mode)&&("r"!==ke.flagsToPermissionString(t)||512&t)?31:ke.nodePermissions(e,ke.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=ke.MAX_OPEN_FDS;e++)if(!ke.streams[e])return e;throw new ke.ErrnoError(33)},getStreamChecked(e){var t=ke.getStream(e);if(!t)throw new ke.ErrnoError(8);return t},getStream:e=>ke.streams[e],createStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return ke.FSStream||(ke.FSStream=function(){this.shared={}},ke.FSStream.prototype={},Object.defineProperties(ke.FSStream.prototype,{object:{get(){return this.node},set(e){this.node=e}},isRead:{get(){return 1!=(2097155&this.flags)}},isWrite:{get(){return 0!=(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(e){this.shared.flags=e}},position:{get(){return this.shared.position},set(e){this.shared.position=e}}})),e=Object.assign(new ke.FSStream,e),-1==t&&(t=ke.nextfd()),e.fd=t,ke.streams[t]=e,e},closeStream(e){ke.streams[e]=null},chrdev_stream_ops:{open(e){var t=ke.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new ke.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){ke.devices[e]={stream_ops:t}},getDevice:e=>ke.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),ke.syncFSRequests++,ke.syncFSRequests>1&&w(`warning: ${ke.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=ke.getMounts(ke.root.mount),i=0;function n(e){return ke.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&&ke.root)throw new ke.ErrnoError(10);if(!n&&!s){var a=ke.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,ke.isMountpoint(i))throw new ke.ErrnoError(10);if(!ke.isDir(i.mode))throw new ke.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,n?ke.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount(e){var t=ke.lookupPath(e,{follow_mount:!1});if(!ke.isMountpoint(t.node))throw new ke.ErrnoError(28);var r=t.node,i=r.mounted,n=ke.getMounts(i);Object.keys(ke.nameTable).forEach((e=>{for(var t=ke.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ke.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=ke.lookupPath(e,{parent:!0}).node,n=de.basename(e);if(!n||"."===n||".."===n)throw new ke.ErrnoError(28);var s=ke.mayCreate(i,n);if(s)throw new ke.ErrnoError(s);if(!i.node_ops.mknod)throw new ke.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ke.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ke.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,ke.mknod(e,t,r)),symlink(e,t){if(!ue.resolve(e))throw new ke.ErrnoError(44);var r=ke.lookupPath(t,{parent:!0}).node;if(!r)throw new ke.ErrnoError(44);var i=de.basename(t),n=ke.mayCreate(r,i);if(n)throw new ke.ErrnoError(n);if(!r.node_ops.symlink)throw new ke.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var r,i,n=de.dirname(e),s=de.dirname(t),a=de.basename(e),o=de.basename(t);if(r=ke.lookupPath(e,{parent:!0}).node,i=ke.lookupPath(t,{parent:!0}).node,!r||!i)throw new ke.ErrnoError(44);if(r.mount!==i.mount)throw new ke.ErrnoError(75);var d,l=ke.lookupNode(r,a),c=ue.relative(e,s);if("."!==c.charAt(0))throw new ke.ErrnoError(28);if("."!==(c=ue.relative(t,n)).charAt(0))throw new ke.ErrnoError(55);try{d=ke.lookupNode(i,o)}catch(e){}if(l!==d){var u=ke.isDir(l.mode),h=ke.mayDelete(r,a,u);if(h)throw new ke.ErrnoError(h);if(h=d?ke.mayDelete(i,o,u):ke.mayCreate(i,o))throw new ke.ErrnoError(h);if(!r.node_ops.rename)throw new ke.ErrnoError(63);if(ke.isMountpoint(l)||d&&ke.isMountpoint(d))throw new ke.ErrnoError(10);if(i!==r&&(h=ke.nodePermissions(r,"w")))throw new ke.ErrnoError(h);ke.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{ke.hashAddNode(l)}}},rmdir(e){var t=ke.lookupPath(e,{parent:!0}).node,r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!0);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.rmdir)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.rmdir(t,r),ke.destroyNode(i)},readdir(e){var t=ke.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ke.ErrnoError(54);return t.node_ops.readdir(t)},unlink(e){var t=ke.lookupPath(e,{parent:!0}).node;if(!t)throw new ke.ErrnoError(44);var r=de.basename(e),i=ke.lookupNode(t,r),n=ke.mayDelete(t,r,!1);if(n)throw new ke.ErrnoError(n);if(!t.node_ops.unlink)throw new ke.ErrnoError(63);if(ke.isMountpoint(i))throw new ke.ErrnoError(10);t.node_ops.unlink(t,r),ke.destroyNode(i)},readlink(e){var t=ke.lookupPath(e).node;if(!t)throw new ke.ErrnoError(44);if(!t.node_ops.readlink)throw new ke.ErrnoError(28);return ue.resolve(ke.getPath(t.parent),t.node_ops.readlink(t))},stat(e,t){var r=ke.lookupPath(e,{follow:!t}).node;if(!r)throw new ke.ErrnoError(44);if(!r.node_ops.getattr)throw new ke.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ke.stat(e,!0),chmod(e,t,r){var i;"string"==typeof e?i=ke.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new ke.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod(e,t){ke.chmod(e,t,!0)},fchmod(e,t){var r=ke.getStreamChecked(e);ke.chmod(r.node,t)},chown(e,t,r,i){var n;"string"==typeof e?n=ke.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new ke.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown(e,t,r){ke.chown(e,t,r,!0)},fchown(e,t,r){var i=ke.getStreamChecked(e);ke.chown(i.node,t,r)},truncate(e,t){if(t<0)throw new ke.ErrnoError(28);var r;"string"==typeof e?r=ke.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new ke.ErrnoError(63);if(ke.isDir(r.mode))throw new ke.ErrnoError(31);if(!ke.isFile(r.mode))throw new ke.ErrnoError(28);var i=ke.nodePermissions(r,"w");if(i)throw new ke.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=ke.getStreamChecked(e);if(0==(2097155&r.flags))throw new ke.ErrnoError(28);ke.truncate(r.node,t)},utime(e,t,r){var i=ke.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open(e,t,r){if(""===e)throw new ke.ErrnoError(44);var i;if(r=void 0===r?438:r,r=64&(t="string"==typeof t?Be(t):t)?4095&r|32768:0,"object"==typeof e)i=e;else{e=de.normalize(e);try{i=ke.lookupPath(e,{follow:!(131072&t)}).node}catch(e){}}var s=!1;if(64&t)if(i){if(128&t)throw new ke.ErrnoError(20)}else i=ke.mknod(e,r,0),s=!0;if(!i)throw new ke.ErrnoError(44);if(ke.isChrdev(i.mode)&&(t&=-513),65536&t&&!ke.isDir(i.mode))throw new ke.ErrnoError(54);if(!s){var a=ke.mayOpen(i,t);if(a)throw new ke.ErrnoError(a)}512&t&&!s&&ke.truncate(i,0),t&=-131713;var o=ke.createStream({node:i,path:ke.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!n.logReadFiles||1&t||(ke.readFiles||(ke.readFiles={}),e in ke.readFiles||(ke.readFiles[e]=1)),o},close(e){if(ke.isClosed(e))throw new ke.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ke.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,t,r){if(ke.isClosed(e))throw new ke.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ke.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ke.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 ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(1==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.read)throw new ke.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new ke.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 ke.ErrnoError(28);if(ke.isClosed(e))throw new ke.ErrnoError(8);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(ke.isDir(e.node.mode))throw new ke.ErrnoError(31);if(!e.stream_ops.write)throw new ke.ErrnoError(28);e.seekable&&1024&e.flags&&ke.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new ke.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(ke.isClosed(e))throw new ke.ErrnoError(8);if(t<0||r<=0)throw new ke.ErrnoError(28);if(0==(2097155&e.flags))throw new ke.ErrnoError(8);if(!ke.isFile(e.node.mode)&&!ke.isDir(e.node.mode))throw new ke.ErrnoError(43);if(!e.stream_ops.allocate)throw new ke.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,i,n){if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new ke.ErrnoError(2);if(1==(2097155&e.flags))throw new ke.ErrnoError(2);if(!e.stream_ops.mmap)throw new ke.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>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 ke.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=ke.open(e,t.flags),n=ke.stat(e).size,s=new Uint8Array(n);return ke.read(i,s,0,n,0),"utf8"===t.encoding?r=fe(s,0):"binary"===t.encoding&&(r=s),ke.close(i),r},writeFile(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=ke.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(me(t)+1),s=_e(t,n,0,n.length);ke.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ke.write(i,t,0,t.byteLength,void 0,r.canOwn)}ke.close(i)},cwd:()=>ke.currentPath,chdir(e){var t=ke.lookupPath(e,{follow:!0});if(null===t.node)throw new ke.ErrnoError(44);if(!ke.isDir(t.node.mode))throw new ke.ErrnoError(54);var r=ke.nodePermissions(t.node,"x");if(r)throw new ke.ErrnoError(r);ke.currentPath=t.path},createDefaultDirectories(){ke.mkdir("/tmp"),ke.mkdir("/home"),ke.mkdir("/home/web_user")},createDefaultDevices(){ke.mkdir("/dev"),ke.registerDevice(ke.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ke.mkdev("/dev/null",ke.makedev(1,3)),ve.register(ke.makedev(5,0),ve.default_tty_ops),ve.register(ke.makedev(6,0),ve.default_tty1_ops),ke.mkdev("/dev/tty",ke.makedev(5,0)),ke.mkdev("/dev/tty1",ke.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(t=ce(e).byteLength),e[--t]);ke.createDevice("/dev","random",r),ke.createDevice("/dev","urandom",r),ke.mkdir("/dev/shm"),ke.mkdir("/dev/shm/tmp")},createSpecialDirectories(){ke.mkdir("/proc");var e=ke.mkdir("/proc/self");ke.mkdir("/proc/self/fd"),ke.mount({mount(){var t=ke.createNode(e,"fd",16895,73);return t.node_ops={lookup(e,t){var r=+t,i=ke.getStreamChecked(r),n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams(){n.stdin?ke.createDevice("/dev","stdin",n.stdin):ke.symlink("/dev/tty","/dev/stdin"),n.stdout?ke.createDevice("/dev","stdout",null,n.stdout):ke.symlink("/dev/tty","/dev/stdout"),n.stderr?ke.createDevice("/dev","stderr",null,n.stderr):ke.symlink("/dev/tty1","/dev/stderr"),ke.open("/dev/stdin",0),ke.open("/dev/stdout",1),ke.open("/dev/stderr",1)},ensureErrnoError(){ke.ErrnoError||(ke.ErrnoError=function(e,t){this.name="ErrnoError",this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ke.ErrnoError.prototype=new Error,ke.ErrnoError.prototype.constructor=ke.ErrnoError,[44].forEach((e=>{ke.genericErrors[e]=new ke.ErrnoError(e),ke.genericErrors[e].stack=""})))},staticInit(){ke.ensureErrnoError(),ke.nameTable=new Array(4096),ke.mount(we,{},"/"),ke.createDefaultDirectories(),ke.createDefaultDevices(),ke.createSpecialDirectories(),ke.filesystems={MEMFS:we}},init(e,t,r){ke.init.initialized=!0,ke.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,ke.createStandardStreams()},quit(){ke.init.initialized=!1;for(var e=0;ethis.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||[]):ge(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,b("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(!u)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=ke.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 c(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 ke.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(ke.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{ke.forceLoadFile(d);var s=be();if(!s)throw new ke.ErrnoError(48);return c(e,S,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d}},Ce=(e,t)=>e?fe(E,e,t):"",De={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(de.isAbs(t))return t;var i;-100===e?i=ke.cwd():i=De.getStreamFromFD(e).path;if(0==t.length){if(!r)throw new ke.ErrnoError(44);return i}return de.join2(i,t)},doStat(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&de.normalize(t)!==de.normalize(ke.getPath(e.node)))return-54;throw e}x[r>>2]=i.dev,x[r+4>>2]=i.mode,B[r+8>>2]=i.nlink,x[r+12>>2]=i.uid,x[r+16>>2]=i.gid,x[r+20>>2]=i.rdev,K=[i.size>>>0,(Y=i.size,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+24>>2]=K[0],x[r+28>>2]=K[1],x[r+32>>2]=4096,x[r+36>>2]=i.blocks;var n=i.atime.getTime(),s=i.mtime.getTime(),a=i.ctime.getTime();return K=[Math.floor(n/1e3)>>>0,(Y=Math.floor(n/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+40>>2]=K[0],x[r+44>>2]=K[1],B[r+48>>2]=n%1e3*1e3,K=[Math.floor(s/1e3)>>>0,(Y=Math.floor(s/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+56>>2]=K[0],x[r+60>>2]=K[1],B[r+64>>2]=s%1e3*1e3,K=[Math.floor(a/1e3)>>>0,(Y=Math.floor(a/1e3),+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+72>>2]=K[0],x[r+76>>2]=K[1],B[r+80>>2]=a%1e3*1e3,K=[i.ino>>>0,(Y=i.ino,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[r+88>>2]=K[0],x[r+92>>2]=K[1],0},doMsync(e,t,r,i,n){if(!ke.isFile(t.node.mode))throw new ke.ErrnoError(43);if(2&i)return 0;var s=E.slice(e,e+r);ke.msync(t,s,n,r,i)},varargs:void 0,get(){var e=x[+De.varargs>>2];return De.varargs+=4,e},getp:()=>De.get(),getStr:e=>Ce(e),getStreamFromFD:e=>ke.getStreamChecked(e)};function Pe(e,t,r){De.varargs=r;try{var i=De.getStreamFromFD(e);switch(t){case 0:if((n=De.get())<0)return-28;for(;ke.streams[n];)n++;return ke.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=De.get();return i.flags|=n,0;case 5:n=De.getp();return A[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return oe(28),-1}}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}function Le(e,t,r,i){De.varargs=i;try{t=De.getStr(t),t=De.calculateAt(e,t);var n=i?De.get():0;return ke.open(t,r,n).fd}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return-e.errno}}var Fe,Ie,Me,Re=(e,t,r,i,n)=>{},ze=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Fe=e},$e=e=>{for(var t="",r=e;E[r];)t+=Fe[E[r++]];return t},Ne={},Oe={},Ge={},He=e=>{throw new Ie(e)},We=e=>{throw new Me(e)},Ve=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&We("Mismatched type converter count");for(var n=0;n{Oe.hasOwnProperty(e)?n[t]=Oe[e]:(s.push(e),Ne.hasOwnProperty(e)||(Ne[e]=[]),Ne[e].push((()=>{n[t]=Oe[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function je(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||He(`type "${i}" must have a positive integer typeid pointer`),Oe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;He(`Cannot register type '${i}' twice`)}if(Oe[e]=t,delete Ge[e],Ne.hasOwnProperty(e)){var n=Ne[e];delete Ne[e],n.forEach((e=>e()))}}function qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return je(e,t,r)}var Ye,Ke=8,Xe=(e,t,r,i)=>{qe(e,{name:t=$e(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:Ke,readValueFromPointer:function(e){return this.fromWireType(E[e])},destructorFunction:null})},Ze=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),Je=e=>{He(e.$$.ptrType.registeredClass.name+" instance already deleted")},Qe=!1,et=e=>{},tt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},rt=e=>{e.count.value-=1,0===e.count.value&&tt(e)},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)},nt={},st=()=>Object.keys(ut).length,at=()=>{var e=[];for(var t in ut)ut.hasOwnProperty(t)&&e.push(ut[t]);return e},ot=[],dt=()=>{for(;ot.length;){var e=ot.pop();e.$$.deleteScheduled=!1,e.delete()}},lt=e=>{Ye=e,ot.length&&Ye&&Ye(dt)},ct=()=>{n.getInheritedInstanceCount=st,n.getLiveInheritedInstances=at,n.flushPendingDeletes=dt,n.setDelayFunction=lt},ut={},ht=(e,t)=>{for(void 0===t&&He("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},ft=(e,t)=>(t=ht(e,t),ut[t]),pt=(e,t)=>(t.ptrType&&t.ptr||We("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&We("Both smartPtrType and smartPtr must be specified"),t.count={value:1},_t(Object.create(e,{$$:{value:t}})));function mt(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?pt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):pt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=nt[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=it(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):pt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var _t=e=>"undefined"==typeof FinalizationRegistry?(_t=e=>e,e):(Qe=new FinalizationRegistry((e=>{rt(e.$$)})),_t=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Qe.register(e,r,e)}return e},et=e=>Qe.unregister(e),_t(e)),gt=()=>{Object.assign(yt.prototype,{isAliasOf(e){if(!(this instanceof yt))return!1;if(!(e instanceof yt))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||Je(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=_t(Object.create(Object.getPrototypeOf(this),{$$:{value:Ze(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),et(this),rt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Je(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&He("Object already scheduled for deletion"),ot.push(this),1===ot.length&&Ye&&Ye(dt),this.$$.deleteScheduled=!0,this}})};function yt(){}var vt=(e,t)=>Object.defineProperty(t,"name",{value:e}),bt=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||He(`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}},wt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&He(`Cannot register public name '${e}' twice`),bt(n,e,e),n.hasOwnProperty(r)&&He(`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))},St=48,Et=57,At=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=St&&t<=Et?`_${e}`:e};function Ut(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 xt=(e,t,r)=>{for(;t!==r;)t.upcast||He(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Bt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Tt(e,t){var r;if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&He(`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=xt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&He("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:He(`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,sr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:He("Unsupporting sharing policy")}return r}function kt(e,t){if(null===t)return this.isReference&&He(`null is not a valid ${this.name}`),0;t.$$||He(`Cannot pass "${dr(t)}" as a ${this.name}`),t.$$.ptr||He(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&He(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return xt(t.$$.ptr,r,this.registeredClass)}function Ct(e){return this.fromWireType(B[e>>2])}var Dt=()=>{Object.assign(Pt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:Ke,readValueFromPointer:Ct,deleteObject(e){null!==e&&e.delete()},fromWireType:mt})};function Pt(e,t,r,i,n,s,a,o,d,l,c){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=c,n||void 0!==t.baseClass?this.toWireType=Tt:i?(this.toWireType=Bt,this.destructorFunction=null):(this.toWireType=kt,this.destructorFunction=null)}var Lt,Ft,It=(e,t,r)=>{n.hasOwnProperty(e)||We("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Mt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Rt=[],zt=e=>{var t=Rt[e];return t||(e>=Rt.length&&(Rt.length=e+1),Rt[e]=t=Lt.get(e)),t},$t=(e,t,r)=>e.includes("j")?Mt(e,t,r):zt(t).apply(null,r),Nt=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),$t(e,t,r)}},Ot=(e,t)=>{var r=(e=$e(e)).includes("j")?Nt(e,t):zt(t);return"function"!=typeof r&&He(`unknown function pointer with signature ${e}: ${t}`),r},Gt=(e,t)=>{var r=vt(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},Ht=e=>{var t=di(e),r=$e(t);return ai(t),r},Wt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Oe[t]||(Ge[t]?Ge[t].forEach(e):(r.push(t),i[t]=!0))})),new Ft(`${e}: `+r.map(Ht).join([", "]))},Vt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=$e(c),s=Ot(n,s),o&&(o=Ot(a,o)),l&&(l=Ot(d,l)),h=Ot(u,h);var f=At(c);wt(f,(function(){Wt(`Cannot construct ${c} due to unbound types`,[i])})),Ve([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:yt.prototype;var a=vt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new Ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new Ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new Ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Ut(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Pt(c,u,!0,!1,!1),m=new Pt(c+"*",u,!1,!1,!1),_=new Pt(c+" const*",u,!1,!0,!1);return nt[e]={pointerType:m,constPointerType:_},It(f,a),[p,m,_]}))},jt=(e,t)=>{for(var r=[],i=0;i>2]);return r},qt=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=vt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Kt(e,t,r,i,n,s){var a=t.length;a<2&&He("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+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=jt(t,r);n=Ot(i,n),Ve([],[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 Ie(`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]=()=>{Wt(`Cannot construct ${e.name} due to unbound types`,a)},Ve([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Kt(r,i,null,n,s),[]))),[]}))},Zt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},Jt=(e,t,r,i,n,s,a,o,d)=>{var l=jt(r,i);t=$e(t),t=Zt(t),s=Ot(n,s),Ve([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Wt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[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,c[t]=n):(bt(c,t,i),c[t].overloadTable[r-2]=n),Ve([],l,(function(n){var o=Kt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function Qt(){Object.assign(er.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)}})}function er(){this.allocated=[void 0],this.freelist=[]}var tr=new er,rr=e=>{e>=tr.reserved&&0==--tr.get(e).refcount&&tr.free(e)},ir=()=>{for(var e=0,t=tr.reserved;t{tr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),tr.reserved=tr.allocated.length,n.count_emval_handles=ir},sr={toValue:e=>(e||He("Cannot use deleted val. handle = "+e),tr.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 tr.allocate({refcount:1,value:e})}}};function ar(e){return this.fromWireType(x[e>>2])}var or=(e,t)=>{qe(e,{name:t=$e(t),fromWireType:e=>{var t=sr.toValue(e);return rr(e),t},toWireType:(e,t)=>sr.toHandle(t),argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction:null})},dr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},lr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(T[e>>2])};case 8:return function(e){return this.fromWireType(k[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},cr=(e,t,r)=>{qe(e,{name:t=$e(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:Ke,readValueFromPointer:lr(t,r),destructorFunction:null})},ur=(e,t,r)=>{switch(t){case 1:return r?e=>S[e>>0]:e=>E[e>>0];case 2:return r?e=>A[e>>1]:e=>U[e>>1];case 4:return r?e=>x[e>>2]:e=>B[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},hr=(e,t,r,i,n)=>{t=$e(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");qe(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:Ke,readValueFromPointer:ur(t,r,0!==i),destructorFunction:null})},fr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=B[e>>2],r=B[e+4>>2];return new i(S.buffer,r,t)}qe(e,{name:r=$e(r),fromWireType:n,argPackAdvance:Ke,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},pr=(e,t,r)=>_e(e,E,t,r),mr=(e,t)=>{var r="std::string"===(t=$e(t));qe(e,{name:t,fromWireType(e){var t,i=B[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==E[o]){var d=Ce(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)pr(t,a,i+1);else if(n)for(var o=0;o255&&(ai(a),He("String has UTF-16 code units that do not fit in 8 bits")),E[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&U[i];)++i;if((r=i<<1)-e>32&&_r)return _r.decode(E.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},yr=(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},vr=e=>2*e.length,br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=x[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},wr=(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(x[t>>2]=a,(t+=4)+4>n)break}return x[t>>2]=0,t-i},Sr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Er=(e,t,r)=>{var i,n,s,a,o;r=$e(r),2===t?(i=gr,n=yr,a=vr,s=()=>U,o=1):4===t&&(i=br,n=wr,a=Sr,s=()=>B,o=2),qe(e,{name:r,fromWireType:e=>{for(var r,n=B[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return ai(e),r},toWireType:(e,i)=>{"string"!=typeof i&&He(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=li(4+s+t);return B[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(ai,d),d},argPackAdvance:Ke,readValueFromPointer:ar,destructorFunction(e){ai(e)}})},Ar=(e,t)=>{qe(e,{isVoid:!0,name:t=$e(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Ur={},xr=e=>{var t=Ur[e];return void 0===t?$e(e):t},Br=[],Tr=(e,t,r,i,n)=>(e=Br[e])(t=sr.toValue(t),t[r=xr(r)],i,n),kr=e=>{var t=Br.length;return Br.push(e),t},Cr=(e,t)=>{var r=Oe[e];return void 0===r&&He(t+" has unknown type "+Ht(e)),r},Dr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},Pr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(B[t>>2]=sr.toHandle(i)),n},Lr=(e,t,r)=>{var i=Dr(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],c=0;ce.name)).join(", ")}) => ${n.name}>`;return kr(vt(h,u))},Fr=e=>{var t=sr.toValue(e);qt(t),rr(e)},Ir=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,Mr=()=>{j("")},Rr=()=>Date.now(),zr=(e,t,r)=>E.copyWithin(e,t,t+r),$r=e=>{j("OOM")},Nr=e=>{E.length,$r()},Or={},Gr=()=>l||"./this.program",Hr=()=>{if(!Hr.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",_:Gr()};for(var t in Or)void 0===Or[t]?delete e[t]:e[t]=Or[t];var r=[];for(var t in e)r.push(`${t}=${e[t]}`);Hr.strings=r}return Hr.strings},Wr=(e,t)=>{for(var r=0;r>0]=e.charCodeAt(r);S[t>>0]=0},Vr=(e,t)=>{var r=0;return Hr().forEach(((i,n)=>{var s=t+r;B[e+4*n>>2]=s,Wr(i,s),r+=i.length+1})),0},jr=(e,t)=>{var r=Hr();B[e>>2]=r.length;var i=0;return r.forEach((e=>i+=e.length+1)),B[t>>2]=i,0};function qr(e){try{var t=De.getStreamFromFD(e);return ke.close(t),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function Yr(e,t){try{var r=De.getStreamFromFD(e),i=r.tty?2:ke.isDir(r.mode)?3:ke.isLink(r.mode)?7:4;return S[t>>0]=i,A[t+2>>1]=0,K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+8>>2]=K[0],x[t+12>>2]=K[1],K=[0,(Y=0,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[t+16>>2]=K[0],x[t+20>>2]=K[1],0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Kr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=B[t+4>>2];t+=8;var d=ke.read(e,S,a,o,i);if(d<0)return-1;if(n+=d,d>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}function Zr(e,t,r,i,n){var s=Ir(t,r);try{if(isNaN(s))return 61;var a=De.getStreamFromFD(e);return ke.llseek(a,s,i),K=[a.position>>>0,(Y=a.position,+Math.abs(Y)>=1?Y>0?+Math.floor(Y/4294967296)>>>0:~~+Math.ceil((Y-+(~~Y>>>0))/4294967296)>>>0:0)],x[n>>2]=K[0],x[n+4>>2]=K[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var Jr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=B[t+4>>2];t+=8;var d=ke.write(e,S,a,o,i);if(d<0)return-1;n+=d,void 0!==i&&(i+=d)}return n};function Qr(e,t,r,i){try{var n=De.getStreamFromFD(e),s=Jr(n,t,r);return B[i>>2]=s,0}catch(e){if(void 0===ke||"ErrnoError"!==e.name)throw e;return e.errno}}var ei=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ke.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},ti=365,ri=146;Object.defineProperties(ei.prototype,{read:{get:function(){return(this.mode&ti)===ti},set:function(e){e?this.mode|=ti:this.mode&=~ti}},write:{get:function(){return(this.mode&ri)===ri},set:function(e){e?this.mode|=ri:this.mode&=~ri}},isFolder:{get:function(){return ke.isDir(this.mode)}},isDevice:{get:function(){return ke.isChrdev(this.mode)}}}),ke.FSNode=ei,ke.createPreloadedFile=xe,ke.staticInit(),ze(),Ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Me=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},gt(),ct(),Dt(),Ft=n.UnboundTypeError=Gt(Error,"UnboundTypeError"),Qt(),nr();var ii,ni={o:ae,A:Pe,s:Le,q:Re,C:Xe,D:Vt,y:Xt,h:Jt,B:or,l:cr,c:hr,b:fr,m:mr,j:Er,n:Ar,f:Tr,g:rr,e:Lr,d:Fr,a:Mr,i:Rr,w:zr,r:Nr,u:Vr,v:jr,k:qr,t:Yr,z:Xr,p:Zr,x:Qr},si=ie(),ai=e=>(ai=si.G)(e),oi=()=>(oi=si.I)(),di=e=>(di=si.J)(e),li=e=>(li=si.K)(e),ci=e=>(ci=si.M)(e);function ui(){function e(){ii||(ii=!0,n.calledRun=!0,C||(R(),r(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z()))}G>0||(M(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_viiijj=(e,t,r,i,s,a,o,d)=>(n.dynCall_viiijj=si.N)(e,t,r,i,s,a,o,d),n.dynCall_jij=(e,t,r,i)=>(n.dynCall_jij=si.O)(e,t,r,i),n.dynCall_jii=(e,t,r)=>(n.dynCall_jii=si.P)(e,t,r),n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=si.Q)(e,t,r,i,s),H=function e(){ii||ui(),ii||(H=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ui(),t.ready}})(),o=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=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 c(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 u,h=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 f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(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 i={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")}},n=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}}(),s=p(),a=p(),d=p(),u=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 s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,a,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)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)}}const Vt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],jt=Vt,qt=Vt;function Yt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Kt(e){return Xt(e)&&e[1]===Tt}function Xt(e){return e[0]>>4===Oe}const Zt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Jt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,a=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Zt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Zt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=Ot.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),a=s-3):(i=2,r=new Array(2),a=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=s):(i=5,a=s,r=new Array(4),s>=6?a=s-3:1===d&&(i=2,r=new Array(2),a=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=jt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class er{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Wt(t.subarray(i+3,i+3+n)),a=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}a=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let o=s.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=jt[a.sampling_freq_index],a.channel_config=n,a.other_data_present=d}let o=0;for(;;){let e=s.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function rr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 ir(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++;return{payload:e.subarray(i),type:n,size:s,uuid:a}}function nr(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 sr(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 ar(){return(new Date).getTime()}function or(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function dr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function lr(e){let t=0,r=dr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=dr(),a=s-r;a>=1e3&&(e(t/a*1e3),r=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){}})();function cr(e){return null==e}function ur(e){return!cr(e)}function hr(e){return"function"==typeof e}function fr(e){let t=null,r=31&e[0];return r!==Ve&&r!==je||(t=$e),t||(r=(126&e[0])>>1,r!==at&&r!==dt&&r!==ct||(t=Ne)),t}function pr(){return"undefined"!=typeof WritableStream}function mr(e){e.close()}function _r(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 gr(e){return e.ok&&e.status>=200&&e.status<=299}function yr(){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}(B)}function vr(e){return e[0]>>4===kt&&e[1]===Tt}function br(e){return!0===e||"true"===e}function wr(e){return!0!==e&&"true"!==e}function Sr(){return!!(Ot.Worker&&Ot.MediaSource&&"canConstructInDedicatedWorker"in Ot.MediaSource&&!0===Ot.MediaSource.canConstructInDedicatedWorker)}function Er(e,t){const r=rr(e.slice(5));let i=!1;return r.forEach((e=>{const r=t?e[0]>>>1&63:31&e[0];(t&&(r===et||r===rt||r===nt)||wr(t)&&r===qe)&&(i=!0)})),i}var Ar=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 Ur=Symbol(32),xr=Symbol(16),Br=Symbol(8);class Tr{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 Ar(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(Ur)}readU16(){return this.read(xr)}readU8(){return this.read(Br)}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===Ur){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===xr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Br){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}}Tr.U32=Ur,Tr.U16=xr,Tr.U8=Br;class kr{constructor(e){this.log=function(t){if(e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=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=Cr._ebsp2rbsp(e),r=new Wt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Cr.getProfileString(i),a=Cr.getLevelString(n),o=1,d=420,l=[0,420,422,444],c=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]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[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(),A=t,U=2*e,S=A/U}}let x=1;1===b&&1===w||(x=b/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*(f+1),C=16*(p+1)*(2-m);k-=(_+g)*B,C-=(y+v)*T;let D=Math.ceil(k*x);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Cr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:U,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,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=Cr._ebsp2rbsp(e),n=new Wt(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=Cr.getProfileString(s),d=Cr.getLevelString(a),l=1,c=420,u=[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&&(c=u[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=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=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);x=n.readBool(),B=t,T=2*e,U=B/T}}let k=1;1===E&&1===A||(k=E/A);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 P=16*(_+1),L=16*(g+1)*(2-y);P-=(v+b)*C,L-=(w+S)*D;let F=Math.ceil(P*k);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:c,chroma_format_string:Cr.getChromaFormatString(c),frame_rate:{fixed:x,fps:U,fps_den:T,fps_num:B},sar_ratio:{width:E,height:A},codec_size:{width:P,height:L},present_size:{width:F,height:L}}}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 Lr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Fr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Cr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,n&&(a[d]=252|s.chroma_format_idc,a[d+1]=248|s.bit_depth_luma-8,a[d+2]=248|s.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Ir(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}function Mr(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 Rr(e){return 31&e[0]}function zr(e){return e===Xe}function $r(e){return!function(e){return e===Ve||e===je}(e)&&!zr(e)}function Nr(e){return e===qe}function Or(e){if(0===e.length)return!1;const t=Rr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Qe||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Hr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Wr=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)},Vr=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"}};class jr{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 parseVPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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()}}static parseSPS(e){let t=jr._ebsp2rbsp(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=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&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&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();M=n;let s=!0,a=1;n||(s=r.readBool());let o=!1;if(s?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>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)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{let t=Wr(e),r=new Wt(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()}})(t),a=(e=>{let t=Wr(e),r=new Wt(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(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=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?(F=t[e-1],I=i[e-1]):255===e&&(F=r.readBits(16),I=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),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()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(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();M=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=Wr(e),r=new Wt(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}})(r);n=Object.assign(n,s,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|at,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|dt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|ct,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Zr(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}function Jr(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 Qr(e){return(126&e[0])>>1}function ei(e){return e===ht}function ti(e){return!function(e){return e>=32&&e<=40}(e)}function ri(e){return e>=16&&e<=21}function ii(e){if(0===e.length)return!1;const t=Qr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class si{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ai(e){return parseInt(e)===e}function oi(e){if(!ai(e.length))return!1;for(var t=0;t255)return!1;return!0}function di(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(!oi(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ai(e.length)&&oi(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function li(e){return new Uint8Array(e)}function ci(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 ui,hi={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("")}},fi=(ui="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+ui[15&i])}return t.join("")}}),pi={16:10,24:12,32:14},mi=[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],_i=[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],gi=[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],yi=[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],vi=[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],bi=[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],wi=[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],Si=[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],Ai=[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],Ui=[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],xi=[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],Bi=[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],Ti=[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],ki=[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 Ci(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^_i[a>>8&255]<<16^_i[255&a]<<8^_i[a>>24&255]^mi[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^_i[a>>16&255]<<16^_i[a>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Bi[a>>16&255]^Ti[a>>8&255]^ki[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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^vi[i[(n+1)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=li(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(_i[i[n]>>24&255]^a>>24),o[4*n+1]=255&(_i[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(_i[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(_i[255&i[(n+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,r=[0,0,0,0],i=Ci(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^Ei[i[(n+3)%4]>>16&255]^Ai[i[(n+2)%4]>>8&255]^Ui[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=li(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(gi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(gi[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(gi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(gi[255&i[(n+1)%4]]^a);return o};var Pi=function(e){if(!(this instanceof Pi))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Di(e)};Pi.prototype.encrypt=function(e){if((e=di(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=li(e.length),r=li(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)},Mi.prototype.setBytes=function(e){if(16!=(e=di(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Mi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Ri=function(e,t){if(!(this instanceof Ri))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Mi||(t=new Mi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Di(e)};Ri.prototype.encrypt=function(e){for(var t=di(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=a<<24-(i+s)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,a=this.blockSize,o=s/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,a=0;a>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],U=e[t+14],x=e[t+15],B=s[0],T=s[1],k=s[2],C=s[3];B=l(B,T,k,C,a,7,o[0]),C=l(C,B,T,k,d,12,o[1]),k=l(k,C,B,T,f,17,o[2]),T=l(T,k,C,B,p,22,o[3]),B=l(B,T,k,C,m,7,o[4]),C=l(C,B,T,k,_,12,o[5]),k=l(k,C,B,T,g,17,o[6]),T=l(T,k,C,B,y,22,o[7]),B=l(B,T,k,C,v,7,o[8]),C=l(C,B,T,k,b,12,o[9]),k=l(k,C,B,T,w,17,o[10]),T=l(T,k,C,B,S,22,o[11]),B=l(B,T,k,C,E,7,o[12]),C=l(C,B,T,k,A,12,o[13]),k=l(k,C,B,T,U,17,o[14]),B=c(B,T=l(T,k,C,B,x,22,o[15]),k,C,d,5,o[16]),C=c(C,B,T,k,g,9,o[17]),k=c(k,C,B,T,S,14,o[18]),T=c(T,k,C,B,a,20,o[19]),B=c(B,T,k,C,_,5,o[20]),C=c(C,B,T,k,w,9,o[21]),k=c(k,C,B,T,x,14,o[22]),T=c(T,k,C,B,m,20,o[23]),B=c(B,T,k,C,b,5,o[24]),C=c(C,B,T,k,U,9,o[25]),k=c(k,C,B,T,p,14,o[26]),T=c(T,k,C,B,v,20,o[27]),B=c(B,T,k,C,A,5,o[28]),C=c(C,B,T,k,f,9,o[29]),k=c(k,C,B,T,y,14,o[30]),B=u(B,T=c(T,k,C,B,E,20,o[31]),k,C,_,4,o[32]),C=u(C,B,T,k,v,11,o[33]),k=u(k,C,B,T,S,16,o[34]),T=u(T,k,C,B,U,23,o[35]),B=u(B,T,k,C,d,4,o[36]),C=u(C,B,T,k,m,11,o[37]),k=u(k,C,B,T,y,16,o[38]),T=u(T,k,C,B,w,23,o[39]),B=u(B,T,k,C,A,4,o[40]),C=u(C,B,T,k,a,11,o[41]),k=u(k,C,B,T,p,16,o[42]),T=u(T,k,C,B,g,23,o[43]),B=u(B,T,k,C,b,4,o[44]),C=u(C,B,T,k,E,11,o[45]),k=u(k,C,B,T,x,16,o[46]),B=h(B,T=u(T,k,C,B,f,23,o[47]),k,C,a,6,o[48]),C=h(C,B,T,k,y,10,o[49]),k=h(k,C,B,T,U,15,o[50]),T=h(T,k,C,B,_,21,o[51]),B=h(B,T,k,C,E,6,o[52]),C=h(C,B,T,k,p,10,o[53]),k=h(k,C,B,T,w,15,o[54]),T=h(T,k,C,B,d,21,o[55]),B=h(B,T,k,C,v,6,o[56]),C=h(C,B,T,k,x,10,o[57]),k=h(k,C,B,T,g,15,o[58]),T=h(T,k,C,B,A,21,o[59]),B=h(B,T,k,C,m,6,o[60]),C=h(C,B,T,k,S,10,o[61]),k=h(k,C,B,T,f,15,o[62]),T=h(T,k,C,B,b,21,o[63]),s[0]=s[0]+B|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),a=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,a){var o=e+(t&r|~t&i)+n+a;return(o<>>32-s)+t}function c(e,t,r,i,n,s,a){var o=e+(t&i|r&~i)+n+a;return(o<>>32-s)+t}function u(e,t,r,i,n,s,a){var o=e+(t^r^i)+n+a;return(o<>>32-s)+t}function h(e,t,r,i,n,s,a){var o=e+(r^(t|~i))+n+a;return(o<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Ht((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=$i).lib,n=i.WordArray,s=i.Hasher,a=r.algo,o=[],d=a.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(n&s|~n&a):l<40?1859775393+(n^s^a):l<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,d=a,a=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Ht((function(e,t){var r;e.exports=(r=$i,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(o[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=a.SHA256=s.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Ht((function(e,t){var r,i,n,s,a,o;e.exports=(i=(r=o=$i).lib.WordArray,n=r.algo,s=n.SHA256,a=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(a),r.HmacSHA224=s._createHmacHelper(a),o.SHA224)})),Ht((function(e,t){var r;e.exports=(r=$i,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,a=e.algo;function o(){return n.create.apply(n,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,U=u.high,x=u.low,B=h.high,T=h.low,k=f,C=p,D=m,P=_,L=g,F=y,I=v,M=b,R=w,z=S,$=E,N=A,O=U,G=x,H=B,W=T,V=0;V<80;V++){var j,q,Y=l[V];if(V<16)q=Y.high=0|e[t+2*V],j=Y.low=0|e[t+2*V+1];else{var K=l[V-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[V-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[V-7],ae=se.high,oe=se.low,de=l[V-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&$^~R&O,fe=z&N^~z&G,pe=k&D^k&L^D&L,me=C&P^C&F^P&F,_e=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[V],we=be.high,Se=be.low,Ee=H+ye+((ue=W+ve)>>>0>>0?1:0),Ae=ge+me;H=O,W=G,O=$,G=N,$=R,N=z,R=I+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,I=L,M=F,L=D,F=P,D=k,P=C,k=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+k+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

)j0Whic}u!be<5>}n~kVy{8=@2)BgAET) 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�oT5+e2?b}di$C!(+so;D@|5{Tt4WHF9)f?w0CvT-gVhQ?i zB|E)67Z{DuZMjmKXDd=AMU&*+7^o`^LS$`UW1;5qE-VKWTdquqc(KQ77RY!5) zM!pz{=7-g!9BW;Y(XCiAgl7x(|4-MrrgH{T)AB6}dGpr7Pl!gMMgD)e-4C|=5HL(Z z787xdq|kmci`Dhd21gO|Gzn1_3Rh?BGhXdD>Pac~ z>=s;Ghdo0iU|1o5kk^^xXSZ#k3UdZ>JoQoIJj*JxKLHS4U#>h`F( zv(_@LZmfPJ1o_mSybXVL|NOgVK}+kLE-uBg!8m*(Uryf{&W>21u{A?zpWd4;df>{wUymx&A7)*LC?7q|t=sQrLf&21ge=FW*8n6zfd#2|ybOb+g_BP< zgGG=ckAQpy>!_hL;HfnQ8D0aRkLN{7hydbQ!yj=~c4XN4xmA#MI(BXS&mS%sWr!hV z4!T3~VY6orT&U3XxOMZrYux&aV)vU#Fo&{qa3&-vwA+8#oA4E6L5ckXEtV?Y9H#FY zYi(hPGC>dY?`VP=_I~R6h*u0x)akIi*b*jH>p14i29wsa`CM_%e_xn7h5J?%6|Kf9i(!1nCe*fX*?aBGcZ^z@q4<8Qyp$^`7I71qsdJ6f2 z@ge9&-fZsQbX$?%5+#XJiB#$uh+y(l*&B7S@xgx}6sd@bFF13uD98U?MzhyxGK)(s z0t+F~WMku5<@0!{G$Id@N&#tL6CY@}?O5|I?D%xrF8uw?-u*pfOib~0!6eD2G>h>4 zeP#VB;$1-{>1TyMJw8s4d?8d#>LsoMS|fpLR?_l2aMFP@Px@JpbE}-Clce1Z20k5f zrB;8d)~x1%YzqNJ3i3Bz-HIP%9r@piDS&@8w0~Bxl1OdXW(f1^1(aiB^0hZt{h3Y} zSW>s5CM9$&zw`uxhH(oWkYtE(fdGdR!7=_<8UcO};B!5K2Qd#M$+;Y`>0vb2(?e5F zDeK(@0f#&KGG7*xM8vR8G2(sHPN;*+)pCDII2A@0L&{+rbz`IZj8Lfbh3j0HP!N!pF7b@E_IvD#q(@k@rJOpS)Kh>k_Ng9aTIr1kTwzxtD~73f z_^?pEOG0YXG)rRd8Q*5FPT$gu(-723G#R!5kD||C%k>Jm@)eQ>C1n7 z2Jw^%y2@j9mB(wWG7Gk4TTJ&X9|EIk8U)UASHN556vBhCX~~<2Q{I|&Y^ey72l(c@ZzBHt)^D&LNa zA}^#bl!W0>f4NL&b&LG9N)lrvpL(7w-n;QVEnl-LNNFcoO4Ioy^{i=M1WgmbQg)4V zmCE6D0>R6aMiAyo4@fNL_{i)aF^e=2@{{4@VRS8#8#%bEBEOSKU0QEp2Eu<|99X12 zq%;A&`2UX}{$mNE#->ybFV&@=C?MC9$_OL5qegi6`Vhz@MI=Lp-cu9^RWUCp_~}eF z@1#P^yu3S!A^aC49pVXC2-CG9mqs_u{2<$cy!7OsCGf6_{6UcYDNKVDk;52tmwadP z`dLk}b`1L0yQE3&X;HsE7>5v%TxBl?xO%tDxr_3w=z< zn+)(ft+lpap0L!$s`6iu;$>rF&E>Q$P19uEtE11zSR4(YX>IhjoJ)U$QiLU}DB%1V z~no(1!q`Br&LIQurB-lSxi)A6&i;xD*B$9j^(%_II(`PXt@tTb@k>bC!{|f%O14O%@9D`+LU<7h(#l3A zt4tFyBz|>M>)5@ z8B!|WKbq*;HN;#-#nP9yFLiSuUxf*2kNXy0kstAyC@Y1$t_!dHDu-?sOARJW^SKB~ zn$JTLt-DH%Hb3xBfS7zfcE&i_A=~EnzIcM8#gy{$1Cj7eE3kuybl>?ysg`m!D0D^! zb)3aOGrah4T2VWHLbwK8yCAc1_HZl2UJ zgQv5os*>!4$m)Q0-nOC4)Op0y@Wy2i)S@~0;(8sU4pC=*)X=NB_vOr+Z)H7; z(_c=V%Gk^zcq4u;eZcJ3@`sX{6XkDnmL5y~c9Uj*mHa!eZjz$@ASFY=;elEwl%#~+ zTb3bb&Na+Ma_JM{G>zba{giCWs~NuN5wBjlmynbCK}?J;Qwm8NiGEd}2c~eO13faD zC*(6W34!VGLy$_3@KA*Wf4`}eSCf7)LtlVStJIcsS=h^=ToH`q^l54xo7)87C8J_1 zi7U*1?Lz*5q}B8ThSlWrhj}`Ph|OIip43S^4BkRCQ0F$SFZnoH1#92{HG`0t1t~>e zPhJaukdK<5Cok4M6F}ylo?H`a$G{NV*w$^6T&bP2nkt#brTZC_`R$Ir+XNb#1 zz?U&d1@vG1#wqha{zi7l@T-WFHT1jy<6;dVbz&+)MDbBVT-gKZZ!@y%P@WI}$nIHE z)zG5eDZ!lKioc#G{3Ktm(h5_-?*2$2ev}sAClgUY$6r0P zO2@QyOibApP>g_S8O=Azd*v5Ga>tyjm!84mdH=LB6B31<7l;ynFiX%=fg0`2qB-#p*Kv5>ZAG`uNH!1HJ ziO#%HYrzvwlMeXz1_@>B_dErYTiwJDJPB297>VC$`WoKHnwO^{jgFxX+O z?p#Doh-Rpgf(~le75$;TF?$=jRaH@6tzk3NcZ0^|O>IMTUjS`vP{}h?@2d1v-Y%b68xM>}S{1XLAlL`2!T@H&*Xqc82QGSW?X zWPXQq(NRXe*&`n>y+1+~)oxB}D@GzMN{ZJr`f@OD1$D_*qf~E(UfZRAd}CPX+NUf2 z@W4#C(jH}N$#G0PGyG%juVU1kbg0tZQRyNN$h&Zug` zhwT4B&p1K-1@|{Lhr(3b^fI9RnrK7Rvei)yUj`19t7VSFgNiSI9lM!o>cNW2#^&|C zR%rr5kwA7EyoNG`2Kj!x8)WvLGNMS8)o(;HU@hF=w~cRMw|<3GhDPzI+^a?3Z_F;Y1V6(Vfch`*JxQb*(oz&kUcC zDqpPMXiu#?oe?a^wN0vg4Ise(1$A+f^j2MF=|k^+gRNhG*Kv|hNHzA|jb`}>@*oGZ z5M!6X{jPD|asA1d^ShiMXDK`Eg4QI;vb<_R&(B&P@#X|9BV?!LK*O(?MTEJ4b^{O$ z@y42}Im1?$;Oi^~iDZrf&P|g81#lLi8P?4UHk(4cYcFY3%{UH1cB>!V71q!`US?r^qznY^0RS+bvY9 z0(%0pnE2Eo``4d!I-H@GDm+sOUCrC1Y_cA>7Qh?Z)q(fn@Vy5qnw@eRWPjx%43sEV zX<(xb%bEm{zN|zDs@Juo>ze!&IZjsIp5=WGPbtlR=YG&ecNLC_L?aKv34K_aPE|kt z|Ea3i9NsLMo5ptH(rc{R+E3_;&xf=@X9SI@*H&NI^Q%#|SE_di83s#aA1^W@YwRnW zp5vfhfLlSEY0Y9wvz_cSV%Uq=AA~yjpG1-7p)sg^k^sR!2m*hE^s_Gn2RGqFRnvmg z=ICaB&XOc9TM@qn#ZX=DThB-gQH(ka2^tS-?7HsGDQg%;%A>gzm*jPK=2U6GF_0F> zoaBdFOzZwtT#YN~9v0pnvX??ZJm57fQpsAh-577#=$LvN5tlHMlqGfySGM0!bBMI`z9`^c|8$-D(80;$C4+QfbnZ7$-pt|gs?Mz zqctG1wpPx)s5N~0%u&Z!BO*c!HCG_?8glrLD0^<2W--}xka0P^Ugpb^$R=&yv3>Q4 zfFIPbOIK z;RctZ^#c&n53Pj!DR??Fi+UEGplz0?Y>dFrQEdLr795*<-o-5ft{v%!&?Fw+XW3Ac z?5xN|cAAU2>hY?HRxWl(_Oi*hU92d>1oFoUt&hFy3OoR;}O zRFD%YdO??cwmk0UZQS2q&=xMKJ(tNBI27dBLWC^X$J?8jcPE5xXixmOzu)Qdp5aa# z3gKV!9ef)2n3TuCVyNcxU{NH0-gO7H$bWy&OQ|mgl;PF%L3h}Hz9aBRAF^Lir;0BA zPyV~teX;#w(A(_~E?E^NHIGLG;6Thj`N9~7K`pvU&UOLdk-c;PB4{(yxmbI4na=*b zzu$(iT>KiH|G__}aR~om?bQxe%76pv+8@$?2$4j$lb$CpFjm9~ftuofv8?8f=CH?3 zkD~xIMot141H}t&w$A^?L)0C=JAC=(_|?7q?d09~?dfkP$NIJ@?^ zu0<&5^8-crNBv!M_Nn{el-1LzsT*kjgL0kG2F%er}R{^1Q6K0w;Irp4y#4<5hF=usd5mu0qJ)c!bgGc0{=Lyp|iX1o0aDml-!EuUS3PSlTGz%}{ z%V0v3!pYu@Ykm{3q)*#35dndY3&J4yU-K|#b}jbaCufg#Xr?7^h$b;a1H?Jvc$5PW z)dV8~eOxel4oVwEJE)m|R>cQn=da#fZ(oB9vZGb(gA^M-6yOKDYEW&%9k>7THX`64PFWB{XlxWDhSR+ym; zB6-vo2ILoE96JgKKi%tJ{EU}heSzba80`&?RxajFVKSwEmK8t+9;8YFL6H%BSu+t# zM8r7>{vew_%j+UOP&F$Nj#m9d>TzIOb|R=@`;OJvJosBQHu?!Jgkmj!u4c6qxZoelSZ=iR15r|yo0AV~pC;HO)e4LpYd*W1>lKM1k2zS6>tYYVbRrRFb}X0p81n=&nxa1K{vy%zv^QIr549b$|b?N59WV z`!sS-{e!iUz?;f)OnVbQM2qwj5f>3a{Xl_kqLPSmF_CAhD; z6wCHYX`e~0lH21M!S0ORXTxPa8JgmM!Va7q9}U$Tw#{DjOflRO1YE{Hq$s#yPQ&}M zD49&bi7LW1sYe6Z+;aXta-8WesI3FEu!`;o%=L_r4tjfg{pUlJOqdQ#B{Fbc0Evu$ zt6tMulG3s=d$tHDzU|}xW$)d(+c>gDvA+T$K0IinNTUJp2C&H`Q)79+S7^Jr7wce;~gm4>@_uU&y}HwJ!kZ%Y1XbZ$@LH>t3~M z*REZ=cJ1Bmy5~8B2r8Y_krZQ9TLD-(9#{&iCuT3P@|O?a+CKc_Cr=-}eg1|m?LRw( zQ}@fK`XGfaA`Gio@s@xs0HSOG7p8FsNx3Nxlb4;h8AN|Ag7kUixn)U#rXCw3LC(vGffu2g$n-G8s?U0(bhPgWKaNyX#3 z&HCZ3td{gp zDe{d|Tp!rTG{^u}?jXADFWTK|v>BUxZ$0Z&Gl`|;FcJ2xhJl?;&x5djXpqz}I$0=( z@#TlH8Xu{Dp5>*Upn_DTd!)8vGpbllI8kKagY3Q_6V7IcslCK*FL^+F=B>7^K*=nVXrw2 zy#i2@Md{F#cPZ+STScl_@&$=j!I~=XR!g0gYd&{fa8!Gu-5F(>vW}|?C1f_ zz|KL2r`9gvrQEeT`f}WuGKx!f(;G3Y+Tu~~xRXDihevow+BvRS4UHv^{9SL$e*k~n z0BpcEVz zy`ox!ExU-Uz*%-qk~1y4hzy6P;y6!9grW1f@tn6L$2I14LrH^3+gwW>_LkEXy?c>M}KZQDAmc%)~_8h%0d^=Hgmhh)?2Hyb~Y9 zsdyqDiI37Sws}XP0~hvr$dTVbLiLSOPG%we;Rtv&-)Ts{y+ zyhV$kZ1UPNpOP0e zQp}l^JiIudfE}cJAujaX7Du4S-;g z+5|Q^3#L+DJL5|lM^1}5CV@;rcI&3*x?)0}lr2x7msY0eV||`DkWowB_a4hktFFIC zm&cc@Gx@+Vt!(w}>!wB}Hq^GI($MSHswVJyqoEB_-mj^j;(?;Btefse8Y-tkb+vOs zPfT1A8X8axa%6e|4hm)^Y@7zsRD0IIuHloxZC|GgO% ze_W@V%sEtYnFzYRoulT6<`{2E9OK;L7;kDh#(5pL0vw1FA5_6^-{9BOaSj!*9WZgR z#2Kv2bYU~3cu+K>lng0n#9k?yoYYrrxvaG^>jt!oQMVC8qD>)4=J~*hy`V=t)BF1j zSfM#FAiDHfd5*UF%vr3+q1H4JuW2Exf8{`(Q~A+cGCnmOBMY{3Vp=FyJ#ZYqrB?2) zwF2s$jUu?NgS5U{CJNUE%IrZk1BL+Q;G3KErEGu1Sh&XJEDTArEuCu=`E2?!QV9_t zw!gbMAcWPT1dJR~WJ#ca34KZ^i4`!RC#$L9bVxk4c};gzpMs5zP9vc#yP5~4e|l;D z`it{-Sf(Dq?W%#@9e)TuDS}+~U_ZLOzvnaDjNdbjLKvXZ5ebMLqbWLmcl-g6z%Kd$ z@`i!R-IWWlQ>NJW_mcKH3|ZZ=duaxzhUIMB4KO)nx@+jH!`0yp$%ME{@9u_XT+2Bv z7IdRW(|Q`z5n#)GBiB?C5Yy&zf7%V)L~;dYGvTnE7;11zZ^*44)D+fk@!t?B>YXLc2KA?d#}zGXEqIQW;Tm z0iHF?gxwcW+qB4xmj;D_e{PoLX3|~EmKYo><0iQ?_iInY9J(8avwy^dl+LAd`l%oe!toiQ7ycGnJi)2UEHg$~)r=9)>!={_jWv9LovN4( zJFdh9n1e^$B9Eu$V6C&6BAk57TJ~Znx{Z_*yaP)mz=>FCx7Oq7U1Rdn$d}f0sUBX#yHI} z+s380jn$ouZb9 zK^x(_KiI9v*K>dd9}?w|qP|H&!*H9-CT2H`pRkOt(kZ`#ZS_Xxv0=*}(NBNW+|8Pr zT9q!6dT7QT2@2_^LtgqbNexw+>&03|;x#ZJksVgzfY6TPPbmuMhAdc+Oo3CF8>uZU z<&{qMI_97o)YP~jB$~&?HK~5_f2UkmQ=|#;b(no3sTbgm@>8O54ZVq2{z%FQN5s(0 zgIH(w)M-uWf)q>9*-i?bkT@xcCCg&(h^p}Ahlr;myA~MQ!sAf^*_&HWv3uj$AxFZW z>rl5hQ@x!8cJkTm+~Q{@+hLxklbE=#>OgM-Hv^6m`alco23Iaxg3E$Le+ERx{Ze~4 z(Q7GpQRG``J`x(4ur}7IWbikXSl!dF0+}NB@+(!zC$mwM&H}r;HmbYvunSdg5{QQXQG?KWbR=^?? zE1b2d$%t37b;K)JMp?Txf8vv@L44x2K*AIC{5-2#ptPh$ndbGBnavVmiWNpA76FI} zC!7a5*#GWf`c{sT^1aKN^l^1pyJiYR5Eo|C1!QPh0GBye`K!grD4YGu8Gid zAANR%(5(g|3R~I`E*I*olGZd&z&`-+4Y=d|^UOy>2i+;C&$N7AN|V}9Mfm}+;UPg5VW% zobFhvbt+GeSShls#||XjG{w$(H7#P&oAjyc`Gd@+Hdt~Ke_5dT4EE_vj}Wn%XVX$A zWUMqx=Z+0sahCVSm{^kcX#c%pL{-{5y0gyHqGCa0ROPQ04lA}D=kz)%*;YR5N@?5B z!S@k+w8OXa%5hzNHfa?|-o(V(LYnoUJV(D=+A>2YmniIsxNbJcu){;l=n}hYV)0zV z#vvlF?qRu_f9D1Z5p_l(tcTrl46!IYGyRFVT68QR?oX6XbXwh7pJb4 z^e)s^OJc>Oib(fQ&97~PkTs_^H$xd2SyuVVj%eF}#e%Js7gcNJ;c^Q$%8b6Qk&_7Pex4V=<%lfr}`!$-0 zP;s?xDFntVy~NCtIeka$&5s|64wZbn;mau&fazt8P9Ll)Tj(_B9bWhY_&1kX#~D6< zr=D9&=CR42pG~+ED`|h#>o59xYH%nPohx@{JoUjcl4Sfji=dkQ}R=gE&W-gS5u6 z=TCulJh=D6Wka^zf>k>qpLVK#$Y3=eYck7RtfJTe=xQge&UAQ`Xums*VblJ973J%0 zQY##&avY+VP@_A+0~+g*1?^T_IC;4}-ViubkS)q*&2mR|R?8Ua+AOkMGnEb?sE}T+ zg3=1KS&jjYky|bOEIAG@7pj=R)dg!jh*uC_dyG+qjNhP2W=+&oUj25Yk`>Ki>TDRO zL3gq&Orj>ncM2aJ?Rzz2B&)-JW?&R#uefc|YS)x-OgQU;PAttSZczW;=CnL&^C0Cn z%;+CGU1W}07obozQ^`oR&R&YI7NjG)&dyeRE1CGfu5-!r`$B44-^oKVoN`8Wnqd06 zD!RXqgp^hQ!)$DuRpb`H>MYOzx~Vz%WCa$UXAA*-7b7BS767%lCQ+wY2lLOAh_wn}g^u2%|W~JG8EQU!YsY5T|^b+$4!HRtKrF&K#ca42^6#6C>N?vCh-J&4^A z`+K7ALvY}Wet#EcYhT$~l``N&&XEVxkIVslE#SmiWa+1Wz<_jrUF;@g0YoLqQ6oU= zTuE0na{rti?evuJC(^#dX5FrA$fPM0EkTSej&lFFehy4{6Tk5s(USIsA=NHJIyOra zSjtpku1rtsp=81~=_#{?63i+G{dAp--l&7!PG@kO%`(6zGV`8ZP~f7k&Wm*DgMq+W zEIir6Nw-Uy?03q4)ul^J>SO5*V^m0yePrJS7Pj18<>Sjv;}kYJ%ewJ7GR<_i$xK;H zrlpmI8FOQ5>#kArB>gtD1WA#i7F~Z=;Ggck_O^Cb2q#B>DDV&F5cZ~Ojx*sL2upDE zKcEW|tKgt7@DGx;b4Q_0&8xiR%*wbFyKHOr3DKvWzWZB$G%4B}0dC*vW$XLs-J?8@ zuHVf*q2+v8qBb42h`b0BIE4ZqLmtprE-gXAA`UzMi*$N3i#i6Kx6{i`PaNz4{oR3; zeIR`Hnc&HLTJ$xEO-#xyb4{C@@dQHk}8L1^?0!W#$j@0fgkIAQbplm+gl(a z6=MWn5!^+8$?fRw;(~7{E}&*$C{iFom$UT4sDpb#r=cnzw|nXOyaFeR?%YYa4mvFn z*Wt(b`sNzH7pVELW{-E;*6~_WkJyGPl~JhTuHJYXSl&E*A35uGtcatgm>C>$MQJgM z20ZCxXMMD>wOw3A3E?+kVFk~~&7e|)%!-t6fF}^ZdeLu(BAqsPYsRD^kYdEcH3A?O;fZm+{$0#j=9c=f-rl3 zb8THp3f>;n&LAWmB$|iM0!;x3XexlNytl1g->@?!_DNG+Y$Wb zkJ}7?S#`_gj#DZtvV|w8T5rLvd=m#iG=GSLv%WtRKCl9PWC?cQ7k1lze@E;Bs|LJ5 zzYjlsh!wCCi(wD)_yRcxF&r>22W5PJUko85FcuIv0OA77#O^+Piow3vgG_^=0A^wb zv+s)CU9sOI{=*+4s{w>)2TDUzQ1?DoCw75<4H>|HJs?(leQ~f49fA7x4g~(}!Vj>L z5DDbjA42&)W`Np<@Vf(j^`RVea2J`IU9sm22xFblP9Hl?EDnqeIt850{(;!VkwF}k z1wcSMKK37A;bRy25Z;5Zk7I_MFkTtk&P5D&2K`v7V#24<`-2dUSsAi95#jp+4vu#L&))jUjd*qQU5@60A(Cfd#vK;OLV(kG;V9s`T0T93k@9y>XcL@+X z{k{k?+$j%l#7KinUG>>?cY2fg0@-af#0FzCT*>0@()y}d#IV0QqsI)ug4 z+u6gs!`^WBV7LR3`+K|ngZ+KzEv(kPgWjMAT?Gs}*y&+G1Pja`ARJD^ZhsHH0Cfj| zeFMNmfWly}w{rli3qUpmEP)a10Yo4;0D1zE`@Q{x{_fsBE!W=809KcOkJAYlvC}_5 zQUgnVaIk|kVfSDM>ZS6qfDeZIJ(#}1?qGjs2i7Q1AOLjlptpx8yn6s$-09&20sap6 z5S^e-SU^3Tx!wKY-tM5kvv+O|vVU^VrL0COd0RS%Dt7iT2J#;CJt;k>4e=R@;^;zgS)wUuyT--Dm_1lay4nt>bi*Jfz!Q zl@(L)<@_tCuy|Ae8%=!4VF2sK)As^enGq6T6VNHJmha=EqoZAYhXB)ezdP7;i@?Mj z?A$}n0FY@o+}wmXdMd8!0a8Qt_)cx}a9NW~5qw0SRIHeZ^Ah0SJpJ zi<9{c3_LF@jU!l8L$ElxL;IWk{Yszwez{Z4JzXrSlV3b=uF%-SQ2>3SgVH(7!Eg`l z7g9@%C!}wEq9zg;hds*b9Ul7oz#nv=FL=iCDW-45^f6`^B4l`Q?g2Xth&}K|vfchr zw>vmk)vmvz8}65X8@8J1t7iJD8NemoOnzqIR{qGP^;H}C`w^C+#zZ!*g=iKe2p=r zYl{Tf+kpChHvGIe7YUqBOc-VhV)}MWA7ch~%m7X(_!?pPER=@%e9Y%p@~JG8hWYRm zg{4dRR2E8q!+bQBft}Cvn=aD*-7((J!GR$<$A-3|FNWtDg#<)HpX>xiAxh{w3Hv%; zLQ|!g>7D+b)7$HoC)igpdV>2ZMo;j7W7e5qp0GYJ4uip9AJ}G|88{;h4uAsyu8F4r z_|n}z@F~EAF|7LszyTc$fR(Y3gimLHBv~zz{51xDS^`*7&<{^#kTxR=<@Y&1O^{#7 z?;s83?{j{dw|*tRgFKXf!1)K~T${*Y9np)b^rnD)bd(0|oQQ0DQ8^VK4XhWL z<^(){I6t-nqq_x;p*?vw!E19gpRKA4lvIIS<^;f+sH62fm576bJC1zKO@KXqD}MZbiJi73#RfU znGCFC7UX2`RawcB+ScRA5i~nCeNaNq8*$S`g$0{BpifkLzC4$TK|QGSLxVyf12OwC znBhB~afscDMOY?$vWSHN(jrnPHl@Y%?50bEF*+aH$TABU?(wMb#AFKw0-c7x_>63S z1>ge<@KG=|!kp<@gb$$%?0tZJz`#ele~_G=Bhpl{MXnqdW2W2roB$ea6~I_Xp0FJv zK-*AHDscyn1*mbH;NPiPn-gc(hBb2^N$MCWav4biY6{&*CWZ%4S)2XZwb?)4+_Xb5 z^J}kayW~JgxzIYY5jPPM=9Q}yiETZ9vE!j9jvYqI^f1vV8ETYFMcRcO2`icg0GN=l zae9;(>@8KVI^NYcim5j)NE}8sDEU*@kJ^b!K`4hgXZNkVdZIIE96i8p_^^2Tbn$T9 zi2)05fMFK1V20Z=90VZC8JzD$U%-)Cz)4=fAr}P!yC{wDN&eMG8N~T^oJ?kaH`6HZ z%<$S~wh7!Ol*W_b?EZcSe*mowFN$@3sQD)e+9#^;1FI(oh1Rk_i#wtOG9{2*4UGFIUNmq6^@MX2J=V2bFS9^<;s7Yi+1 ztXw?ac;m!{e|Jbjy76Fc#%lI|^Q`lixRZ$Tvp;0`XN?mc>Wku;nQs0JomrmQS6+tv zslJdBVpAhS`##z~I}FzN|>z4sK2Zqd6UJjslF ziad=V@6^Qh7xFs!GU4}6)4W9ycWH&+BZ+vV6hl#iPo0T~>_P(m;9FIHPd?neOh$#6 z6dy+@GsaSjlx}#c^%`*sY6y~D9JB#$^s(})2tBp-7*v6Wtsy+j$049ydKTIu^za;( zZ#bXN00Bg*<@L$-g>ouHqfMY!i|CqMy6dU!bZW-!(Rj&GDPLe)Z;&eewD-d7$Un}| zmm_k_{x~_zNMk!bOJHSxSv^k9OIx146-A9e;`p~O6FDXd0hnRc*q;3s3`FZ#S~r6z z6VVTVUee{vHZU;g*3-DC#S0N-l?EC^*R({@WgJ(huPHDK4DXCd#pY&V@A$AVv`d-@ zhEL;(c|03rI!^|+FF2S;nGA6Rdgi2r3!4g(k<~ZGvxTD^fsS>5Z{|_fQBD&{9Y^__ ziu1>;a}ZhD0;s)Q)kdhxict34Qu0@7Fce{t2UiK{ddqv>=z1=d%S%K;Ia(#*;Pj<( zJ87#=KBvC-7SlMN^G%}JwCnD@DzG3gAvMiFD{w|sI<&f;vq}Z$QuSiP-&~oOfDCf$J{AZhsQlHgilqbQ`^r^#tttCVCctUCaBd?roft01P z%$KxSU+)r3@6}Md{>r6;wj(sZFxPyF(G>zd`%nwTyWLprfJqQ^xg?}>$&}6|A)iY^IFlQ;Z*KJs z*k<^zn|cJIaYQ>$Og&!Y0VUN;#QWrT)Um+BKP-2Ajb8w#@MW6LqA<~SX@`BSpaOF{ zwq>C9hFey|h+H*0(vL!*Pqr9 zURhcC@l#+vx8K2PqQ$Db-iJAQu8S6w{3~&^PCTcXN(`{dSez?Q&>EI}ky!*sri=PX zriX|C=hG**P%}Dgz=xO}PSfiEHMQ<80RjN|>-08qGJBhwwehl&#n{m~lCabMyOT2a z$FSmm7oyM8_nkIXnzuz;X4Gnusw#VCBYXrd%G0!v6MCE6A;pU)^vD!nNhS1dClBtz z+lfDd35DMi{JoOlD;W-Ndotap@Vg=_@E2`u(Qg*fZ#=n!4fAfj_oyy<8^KU`@LIdsm z%k|*1VEOwq|K240%kAMq2mHOgmhH;l_V)FB(8jNqFqH&>mvj1Uhm$Q%nTC@A#Y8$L zqL_s_ccB>tH4C2lK+6j+KP1v{HqsSz@*@-J_#16cuEGrWsYgYJJeF8tzZCA5!UOMr zoC!n}K&6D_AzCDZH5F|?ee;)B6+LXyC_x=e-zOy((!vzJD94jR$v&zN4G+lO?dhA- z#}}_&KY9A>hf1YAVgK`G{x_#9GWJx(CjtJPybQP)NB(tHX{VO2A3uM6@!hk>PhPGp zhU22)q7qZjudfvTp+c3F4IzX2U{cdahGO?+%Fyn`qqmQrtMQg+y3jjiLzdR9gKLK@Be zqU;gkfoixsKz`%PJFsez8bCQlQ-2wH?7bfO5Jrtc7{v*pRV4)7CJPHgEaWJhT!qH> zW~$PhvQGN$a7FQ^f3l0}KYY3*fhp&r36z+O_=VdiP8m)Z?D%*!tZU#Ti2%`dJf-JV z+8i~i9L-V4l@#Bz?HCjBHN7%xntQCdVIKD?LtJ-;_+MtNcx$mcxwAC@`+qylXY4c_ zQ(WT2B^YPTo1BHlB>>4hS$f`(gHuxoOqxA~GMAo0vv%#7Y+Rz#2Q0VsrfI$DK~>>{ z-4bBrFy&b2p^9SMgLa7T{qce}qP`zHl+$eAqiQ@c7ot3LYz%K)6&x9^Yq#yxg&e6% z%5eksM&*3Bm3+AWdX>ImXMcclLKu1b4rM?t+n#t%X+k1QtyGH#1h;u)I82qYiKaR+ znR}8e#4M%5?(RYXc*44T`J|lh^rSZ5-z)k4T9z%%lIM#0VNoZL$PN~AVV05q(Zz<*dq#S5BwJ>SAz1Y9+X!lP|D*;^HC%ENc?d| z*(|m?`dDF#o51=I*0l~i80R;S6#Ih83g*Cex%~J98E99zq<@249{qBI=F`8Geu()1 z$5oh0FKrI8X`pMJwU*F6XvE^SbT8z6HbFVA9Fb8%*vOu)#b^QzgF{QT-f7WT?^;ue z_2yVFdw@peGy*Q^*5&pY-QT5G=KN=W$xMfrdp|ln+<(2-&X!&#hlj)aj4o%{XA;Kr@5#N=YvWz1!aJZlYkTfo1;SFd`Y^_# z8w_@(l!f4mA~TKg>j4;*y!d*;I*{V|lgtF?YUBX;2t6^m4_nV-(?)FCC=;{94Ln6&0_N_0?gA4bj+wqqlT&m)g%C(htAD9!HFa7|&jr4Ds$$7aV$*|Z zSS&qBhJ}c{#p0HgQab#O`duPEB*FJZr{mh5l5eRiR#X*kp`1KAma0S3=rT?sBOZsW zcVt3zl!++0xsEb42{__s)xgZ$=rEebliv$`<5Qs9oM<6*2evORqMXeK&~tVjFKtN% zItC5RbbsC@!H2}#+?L?A2p z!ha9KeGDHBfx2}3z7F?A7!064o#Je8PA~fg-f@3~*WW#Xu1KWgoml&@nFf!Nv-Esy z`LgLlKm1v#!I4t?&k1@}aBIvD-#U5TR`LuW&qpWEN6Mp( zz6W>j;sVb_qnRLch%i+YoC^CSH3|hWoqr=bHj6Zi-^WQfJF(*QF`B~*kx9kXH%TxM zCrL0AkCR|myh;Mt7oNl4J@FL&_7B7}_!;bo7fAqTm)95=ioZi(Pkakyccl*NXYQrA z()_{826H1$emJBT9i@K)WCLhIG%ZDEVKPmxFTx3$en<1SXr(Mg-8*?{`?9vdd4D{$ zj0;(2>shS@ZAGy!EX!<9Lrc=c2{rcB8jZ=?oj4d%b9d&2ZD1*h!Ys;*3paKuLkl@w zUjy|xK+?9qk7fgQk<<|xWQs_{kmw(iLZX61_?QM_&b`47DpAn5zONk@IuCo}0?GI& z*HJ*b$=;_MMHW46yHS{hFwu%6X@5#Nl5(P*FU0V2=9>7D=%CW3wLq*iw#IICneDEd zh|9SRf7q(fMT9e@x6#Z-pXl;w7G6hosmWEAUWZT72CH3l9%g9k)QNcPU@HJ^3VYK-$b7-sWZ>W>%B?)xtg$u^OF>zS4177UZ`xLs@c82-{_U&Hh(wSsb6V= ztI=k5YKqvRpu%mLkf_u$#W~d&EOMf0hMgFmVGJi}C{N;5#o5ieyn2%&Oe94GVRp#bL>~BQ{F@3R6Ra>VQ z`(6E(kG9r<2>>2F;0JcaA*%SH^DatAyS_Kh4}+8yo|7Q&z6gseIEti@xsz_?-WPp5 zanh@@;wXsD5;V*TwIrxzdkgNHj0l z(h@sWjB8^P35^96mhU zqadf}9_B|~$C#cns`ylu>ti_xao1HZla6>HrY43nT^7i|2e8ZV!9g?M-gEaC1(LsefxwQ^f5> zy}qCUNRA6wO%{&?`=2|ik3d{nkeENZ4daKTh-|7l;jJi$phE56vj2f7Bw zD?r#72*Lgq`DD+JEH6RIKDmMxuB)SbD;nRGlX6eD6m4l)OmcV_-#gF%)avFaz@RyM z{#V5elwC~MP4l?hjqoi2!o;c6w?N#D&{dsdV@~y6MA}jZwf^?We^>hGpb*IK>M(ZB zqm1k1LpvL8;XMRkp;tiKr@`&|;g0;&AGLtosoRAM%3MKd_M zEt&HzIv3L{SOxETwRqRF6@Po@Bfow)u#{yZr&nlQ)m^!!C%ZBi+C*x|Gw6Gk>i;hf zP{d~#{>3&^@h@w2fB&*p_b+R8|3ud6Jn@aQK8^Jj%WjKhvBlVG@x%{~0h)gqy!*Wk z-dUF0|Ej%aiA1@MO~!dpbd#eTCCq?!}(>L9_Hf|^>@$GEcaeWiNPAm%Ex4k+z z2rwp9d08*($x{G_fZd|NzQ-!^6!80=1!SCC0IHl-1S(GMk8$3?AelRhyM6uvpdway zW8>V*u@)8wgPn1F6kvT@TOLg3&Q{D7O80v8xN24OxqjHL-ul_5Om=hwrQG-^dR zYv@1Db&Hy*3gJVO=7!oP@%$>vmQ+@#%HX3|-8(kl<$u;?aFnPY5CB8dRR6v}LshwL zoI|5eif)J5vWK)Ql8{}IyEMq~w3;#+PhBflVix$jpNC??ja|n{XGZ=6w7rGD;`GkM z6cBK-H8V>I?P}c|Le%&MTFK95-JA1ZdUkXEV+wy3RkY0W-{m~SUY_FXhp3&>&DZgHx!u(ps4|94%YFk#Ckm;Y$Gw+uv)|2*n zLi2+8aacs#N&4abzN0>?-jB)s0496n$uPb~?|&$suu=a%|LNVUENy+CWB(6}xC>tGcLbQ7#kDX3=}-Y&@CNB|p1teM)ayAHt+)6=~}#n$1P)W2QS?`LH;cu zI8XE91v{?j+)b{hqZEBcE%4zxbn-gRqixjANpsr?g|@+k@A5aSW%Qe5S$7LjRDa7h zNqmp(z=+(2|HJL)k;Ns!rZ)L1NM7MeWdM0$EU&w7_~!~q=p}!j^3M~D`WgSEQLwS` zAwv(SPtbDHBmDChyrC75y7ZO5vHZ=+&+DZOy_LT|qot1%{PUHJ`C9&dkCETupT8k0 zh+pXMpXhHU-;d7Z@5c;d-)5-%^?x(oyM2j&US(_pKnY22Gc6juqnG+{8l+#r@AmOR zRYg&N19qe$PB3x9QS&2jWe zWzicjY4Z3w_%zKvphvgxBPKkK@QUXdT{p`{mS@uSJj+kQ$yM}a1RK1}0i~YK^Vg^n znOT*c(0$i-yu1Kw9?>oSs3(%B_yAj;0-zlP0O#?$cor9*P^S>)FmC1R*? zl4fM|5OItG5{f1O*}e^bj(?_4(HT&*ZG{B%5sbyJAVA~%>Fk!$;TJ>K^C1V}17R?a-hXoheL>8doPuw1 znfp~1-{L&0LNW}gPp;$Q^vN?yk>7egan`V9>caQ1y}W>SDR6?S5s~a0-$rxbahA?c zVY-mD$_qfSuhKcyU6&xPbBULFlAH+fVUoM)ZiGk_1|g^)!@m6SZ619aA$m0>nKmj=!f`8XNH}li05vC;%E6NU64oTH?#IfHX1RDxo^ma5vbvUP z9<1dg&0rA{v+EYENwD%0gc}Q0Qq5d6%!54#IueMHod<$K@?1djc|yL9ZYPLaL=f03 zWHq1w~ zDV8EnijN#WWenkfG%1sA%UC+5Q4b^{b?&6)SDVp;QxzH3Vb_z-u7NB2GA^#ex#!hH zb`(!mz-F9oSNpX+&B6~`nF!YDWJ zFVe8|2Orjx6if!W&_MzvC<=!8dD_5D8jdHO~rl=xeFS*okfA51dpHTdO3nt3jkN zR1FWKv1Lz7V=QpGR3>LC)l$fdgbX>VwkIl}eIq`M?54!k$m!I=Z5vM!m8D8k_|lE* zIF&k8des_$X4FuC_fdgf>7$QDr`<;h0(qgdR)36q3lpL1A&vOZMdK`Tt;MbD;bq>I z6so+|ozQ|8fU5s{k_xEme`=^6ddPAS=w?f_;`|wDY@)d2v%7c!QS!ZlR#Fy&`F{eUpp4~O!}d!v<=4#=?S6IOXI*t(N#A9*U=0@eM>;-+9>PD|4&RYN zihnvO*CQikYUMYioZt4$l&n#T^0M$p{4Hbq+|ZG~W!tkbFMtW-DjR#>!l=b#HR&XrJuXl;6*I$W2`2R|w1PInFbcJJ(R%1F?AjfGX_NVX>yBs}#*N1K z+3_jB_#&MbwJe%Zkb+iViDluW`1aBBn}5#+okDv%(N{yxbD`RqQ=Muh;p~Pw(c-d* z%e}TY{u{oGM7OcDI9MAS_hec}r9Sl0>4revXs8UpW2tjh#sn;-x3LLR1d`RB#QIN`Dn< z>A-9pqoq>$t_kILakq;WwbUCa(lsYPF23_*$sa*An0DMB_1yPP@<|h?<^gN@qDk?? zSgYF>F9$dw5Z0c#(90QC~oy z&Ug~oRg2R8wWy&h;U7*{HUgp{npT8slb1uhv$Vz#)=(J>S?M{pMNonvpjxC421A;4 zYiq(SfJ|73YUCYHq}jCMv^s5X=k$+iE&<9F~z4;|| zr@j&#BP!1e#eKx?kQ#f9*J`Tint83`xJtswe}Z}5`EBzY#cG~!3ZCbg{0)oheDA3F z&fV0+ zaW+taA9ggIqLd3be zK}2IHB;fU$&fM5T+Gh-}{W4=ET*zggE>Y7BpnzT!AZ02=H=V?3J2q`+s_BKZAJ}8A zJG-kFWJ@8@IQHIy#$G$^LW zF4$X%ytNDWuYj(%jH9=BgZIa*;Z-s;902hVWyY({EqTwIEr(uGa(9!astLz6mEb|Q=18b} zII1o4GJm4QSDHdoX!Y5L^Fmyya#B-;#nbjGo27voODD;8>>27AZlJJl!ylK#_1ic2 zmvl30Q=m{e{&q5B%H_nytPEAX4N%?{?u@gQl&9>D?tLu@$Iv)OvyR58Cp}kfpouL6 z?GMp7+6aPg(00iN2Ji1XBqt|vH30))!K4B`_J2ZAa^$O?m!TX6?eSe+=lAy;A*!Zk z(upYz+9vfe?GH8xu_o4#MoJRj-%pW{+~0=_(?X{L2URgZ58b4j%A3xs68>ZsQ+B52 zx)|U7*HsWMtMgI3epJPsBQue-Q%A9;k@g^PZmr1^hcd6tO+Y`o(1yCF>)W4NJwkn!Md^T z?K0TaU@cUY9{#G;TDIk_Fm^LSeHIm=^&b}YE?GF^ifXx>g;$|@JOA!z9|L%pOP5T@9lbwe=PwL z<~Z7vk`sas{(%wH0DZTLd?rDj9(3TC>F-=HolDm_0&cS0H3kLUgr)qezn|1a@ET);xmE83nQ(_4CPdL%r zUq1Wl;>ovsf!G?Dd~}qs|YRx+q1m5r10&?vPt_ z-xO_jCd(@sU*OlsC1y${F9C~YsorWJ(M62{_C9>Y+tim_dG;EB;XmOU zjyO$Tl5%U_!7g~TXOm2V=zp+!EJYo*7b05CHyxH~_xJQX@Gpga@+j>nMr5cD_veiD zM1fe$XW=C380&bV4S-zH#f%n!@^Sl3fv-l%IOs^LU&W;AWxb0kls)EAl#pc2xOL!BEzfpfrDXh3S^P$+<25M zMBfHTECCV{Kr)N3@_*NbNR4iCi8!gu9y$*}NNLq)&($xjw=GXgv1ae0vtWIai9?oO zC^AiUW$7Z6woTgSh5qUWHViEi70&Uj#5$LnbYAF_y%y8Cv)^CN@LXoc=qgMc zzr+xYV{RC+Q&a6uud3zI20c+G{KU|diK~iKd!-NjR2bLrQ&89VSWq)mQe6u9;L>~o zDiVd9zEpe`+56Y`(>j{X1lPplYnD+PS)I0!3hCczBhSQ&$pZvrUQc~Fj7!(-_T)mM z8BMt`j0V!}0ihM%c)OR6`xzR4OsTa-eFrKtE7h*bYcZOer8;f^p93DFC8<~*GR4eF zgLX#IYgUS_tFaUt6l1pI%)mm0APGKWqntIE>nhtSP1#W}9D7pb$;p3K%6Pt3E;JVn z`TUjn`sXwTf4{#n>)@OaQDVp?Ff~sd3~M(cU8$xrx^{!1KxZw|wskpwwaeta5QqZGDzgZO1QzBo3LqmI_y_&X zoWh-#j|LF0-zMhbPljqpr_5;Ax8v@UdW-?Sp+L(7Ut zarltImebV^_PA4##J%LFrC&yZ-CNo0-J<4sqRjtByL09W|tQHd*jlRr=K;QC#^&3xVkb@~DYw?+PnJU)>D4&dwHn5db&`E_x@ z5;lI(CSGGI;u!}PER3{E%GbhLP-*)PkX2SaNz^2u zj0J!b zVA~Ye7JxgxaNTwyQuEn&bapOyr$ZwF+_GB>`?khf`fJv50mtzW#-6bM3MkZ z1T5M(@b~xmYSMnGGx$7~yYyWWMbj5(<_JN$(c=r@F&TQx#)?8}3zB{`5O!5tSd+d( zX2Z4-A6NG1RT6oYQJ>w|4)i~d9bYpE@N7_ynGy7PC|lF(w1h z_1RsiFALE!RjUjp1~oQ`#1!39!9&+7t9Qq1w+eJT`Ze1*f%6j(4rRI|lb1hxJ`s(7 zJBO2X#!3((Pn-d1mI~r)dmo2;Kgoxg3#M_M-62`aMlVXcWBiiZG@XIZ326Krtt_Ks z&fz|p&1OfPAzE<3pqK_5oei8@;HK{H<;S+97tqxl?e`*)fHOXN7!88-{(b;|6-my} z>@A*7(S&4YDihIX<~A%cd18%=PnQ3G#*W{|&g@WU_Qb5w(IbzL^X)>uh^>u=*(XKA zfQF=5srEr%7updWe^-Zwp6c|V*ZaJao$aFK`5ge!9-5QigO7dqIDp>+jDTOCG-md^ zZl^;q?J1!8=!bmDX9;4=SmA}?v(v@93Y`5rz!9H(eGHpW$loO#qJ#Zn5hvbuyD%k$0@y<1@!Gs zL?-TV+sK8~qPVyrz7J0_2I8YcSknxjH+XS03Pr=Tjv6O?VJ>@0BXWW@<8p=s+(vWG zalR4gWNYi&#+`3-b4lt>bE?{Z9h-Bg{c=eilRN8c;p50{il39 z>X7M?`Xz>z1{ifKstkM)Eb^e~U~m>Ab`$N5x0k_&8%TphZb7`30AX-{mR#4r&3)%&&oP0yV9ve7yO)_X&A@Lv#mZCx0-C91Lar&RRqSnG#|M8^!7l8|(IZ z)KZ56susm&DD1h6KeqC#^kz0~y^C6Y>)lPk=G#dc4D4?XZ2FjgdA2&yiK2l>mf4Z%Tw>NtTC`f`xYfv7}mMK#9rWGB|~0bYDK{ z0M)SS20lQmMZHnl-G#-wY`Ij*;t`=*A-b_$J|7{@$9lCLx^-376jrqm)g@|q7_Gd@ zcW8zdG8JSSsy8lw4kHCsY5u7|pD4UKRnl2;E)5qYNb_PBQVW$0UlmjlcFPxTC!ke6 zRo*SeG_yg0e_=Mshb&MBQoFfO{+yv3PFOVJ8{}+A5lU_$;nq=bw3p3)i!dbPmPr#F zEfy5bTba;rf+4_+;O7t+R3(4l5TtNNO^KH7SjvDfo-x^fl{wapKYG(Cyirzvm^9g5 zP_~Anr7dJbZ{b3ZtJ;Y|ZAFFLiVAk=P_Tc7LT*Hb+=y82$~XJ_8zeOK4|?ju=a2rd zr#@5+v3wNMS0DQ-UE>4eV4J*ex}%XEm^o4U970GN)n|9CSlzv@J;3)79ai8?Lv7w_k)aSg3FY zY{9&a@Q)Jh$!F7ttwF0x@mHiO%ZEu$Y3KldqKCB>ceWBpE3zeer7Wig&Qi1YeO@&ygN;uDZiA@cyBG4_#tb5266ER5yYlODeWx#8y?KJE)tV67o!aCQmA(TWH)eLg z_{so(8b!HNP?i4L(?o_sf1x))vr`${mOGaa&-E=3RMk$a53xkZHHb7n+3yM4&PqH26s>Qe}2Aj0h{g8fQ= zo!sOzPn_6<&9moT8my~!A$NLGyGXa)LP4x;v88-dRa^)@fTZp*Biq{98j2}$B{TSA zv2^>u&h5j#L)RmcA9P)@!rtGZXZNJTXWX|+MkU?0Iv&KMPP$#{J8&F9Ea;kbink8H zFK}pv7Y~5a-ogeBT6ouos1Vth#+#;pSES$5qFb;QP4#DYe>#2nEiRBac^_YX>ZBf^ zk&smdsj!(S+09@oYFMjarm^ou4fgdb*tc>iyjU9*Ul>$G=$DZZjhzBIa&U-9=VD{3 zurXw8#0wulNHX!q7Hb3GDiFTvZn}f-nBAM{Ac3e7zU6{179Euy^e>xfL{xWwkL4^9 zFEfRgnYy-;$hEJAcW^ExYI4{;l>p2ddNb^Ir(zPsTL)Xyt)Yd;GeG27cQRJ)BoT=L zPzrT@gSvf!7}ZX?rYasCS?zU0IkUQCD8~c4QjUsh z;*c{c$6e0{Bpd?V{CjeLPq$Hj82Hu>yu!EcD)8J6JhcPQ?7$mXocMd9BjvtBrYY-h zC;)OBJ&_;v_=ykCO3~dJ$A|E@s~l#s)$AUVPV~5oBf!nCQ0Z*tfBP~^uTQSRjBNC6 zZ*S9Km11qn)^WEFhs}OB_kb~KfA{FylQvnr&B~k^b#K&u31Cz?DvW1;GHL^R@u)4W z?Pd*3BUNQ?!~Fgp7f8rLXt~z1jcqs{kjoBqGfYo*B62nC$rS@&aQ3zKw?HvY*=rAw z3+#VOYN560t=x9ozM_=(-BS0hjU8wU=WX4HG!};5_$ChH&Z+4|{^&D$>#O4lEMrw{D{>|foCy0B=& z8KBkX9bSK@uGikx*6&rVY^5)542RS(zVV?kN?rFXzt9r^yi*iSLhFUm1^4rWx zk1TS7#hH**g>R#eq$;i|hNY+USV$imJr@x}wk=O@f6}bwV`%{A^wsHS{Z38-IXa## z*YiEz=rKkxVU$q=p^ zdQ(&Dwk!z5RvM31aQ}03yb`pVn;Xr;U|CYRy?Ikd$oflt0mj;fW~h+rQ=Ps-IoaOP zJah!Ehx`LaJ$#e_v@_>Ri2|I$kT|XZk4~s;hKp%e3XN^EJ_{BU(!K8GEXB8tU!YQk zeuLnN8#^^CrIM?3^`!Am-zD10&m}(|D)%^-*9#gff3e^`+(||Bsd+O#6F~V!H)0Nd zC-i)LvUQ_0Wk#t`Pw%zOl*L#XWssME1-7pA6`Xr`QISa1khDDh14vpLmr2^R;FoMG z@k!0sFUs`StJ5moGfU-m)gr$GPNX?mKx(ltOq}lTq$qdfw5}t6ECJqe3GmLpHv+uQ z+<4Wwf4N#0mq_^EFyQj^zFLlFjWqlrW2q~D+pq`x8|@7XdrO4VeO91wSq2h2kQT7p z{cDr>{Wl3k@*logs7<2xkWFGag}S3BKXjzOxCU^`$#2H=QeGtvZ9I6e5BCx{BxFUy{YgfV9 zEBLvr3|_xm!SMs&Ic>d;@^p5Css&|;%Hb?N;wN`Y!Y(r@nMxt>Ewr_{IXbsYinW1Q z&A(*hQzLlAgR9V8b4~1XpnF+jB|@5KGsBx-fB4qSt7OOV7boOVWkXg ze^hE=a*w?-dC^Zu|BbA=*c@`>kSjCRS&q!^+^VaRvDuL0FNWa69D zn`BW~erkiLvLIEubl4kJmz&VDt?H;wzR9EOaWYvok-;)br>_eZkdP_b+h|4}IpNnt zzl)2<(VW_a&xMrLn9a>M1Vob(e~4qsAt{K!6ZRz=s6|c0=#n4PW8q~)Ls6Ur3C6cK z*MT7-lEzWW<0!FHu2gStjjah^GqW#n8fi<*$T8JfQ8sq^QcI}R5oucICV`&zn*2!aKOxUule^+x&w7L=d z<^9@?JbXBv`lhVIt`qOo_MuK4O!50QEXWF(jl96;vW<2NnoJDXC#YrRopTi%LR*&I zm`jV6np1ENVz4k5Qpv(RwZfY=*htFl)-}o(f9l3~J&jSohEeNn@^g}YNLo-++gmlM7UoxmbobCP8Q!6B zTqFYs-{qZXEB20j>mX5m!a}2YOy^tJh@gU2dK+akv`sk`Ev24~8&0&i&IKyMVy+QA z+rG|!B8&7MAI$Lq86qxOdNzX6*b$GWL9WH4&^QrsmW@hCq)h`?f2MfV?Kz^BKv0d+ z-*9>E)K;}`lWteyYR%o0dd;zQ_HXKjSGI?fZo3hSrT6dAstf+;H(u~V1L%EO8hfxL zOktx1>y+83*($rSoKN(%lME%PiIr@}c7H%poq{Ahg^&hj7vnOmccePGS2p;fIu$rI zhut7slhCGUQeKUr5N<#PY>1a&-(q|PEYiQ5aI7~Y!aOLf3R|4Vlmr3N1}?Mk2Y`y zn*)40x669tM@Rmc9x?D^fR2yK;(byU?~7?L0E&b9gtVVXsF@bei74$xVRKIfVd3e7P5RQ%ljj$)hP`z1Gg;1^rh+D@0#l&e)V=X$tc5q)LLf2$v6CEMyDBl|)Feo3VoE?rkP zr0>(JDb|&1&5m3@keZC^4dql8e5!WxXIOTP5!JM)$5fYQUnD!MK?4FhdDa`tiPqe= z1m)`>q|2)4n{YRpuW}Xl-VP^QgA$_3n1^9%m6uv$hAH1_pqvcM1h@1IKXh`bQ2pF; zk~OvOf5?;uz4(EhIw|5ye6k7CP(P@~?CXu~%eZKc&CwH7l{X>voRy`mI*sn!UCgs4Ts5e`o0jgLfCvBqs{I=Vv0+7UszfCR;eefu zC0ZIS1L&N^@8cw#oyZI-d{N2CEF;x{AEHiYh(v{zPJdohyzjXV zAC=F)>pXgFJTo50_F@}ZeXEH5q<6?#e`sl!kuH#I_s*6hNTgybx!(KxcC@bjT}} z$XDFb9$OgLeD7&&`f2O+rGh&Ci$Skf!esS)%T)=xQ@46kSBp#(W&TN0e^ULzWL#*` zuCeRcu`=LRG6@UKGUuqEnr-LkYPLhyB*9UHt81&kzn+JdXJ9jU5>BolJveIgLaL0P zdgEz?cRnp0Bh1S~denO{l_O>KQGBfx>6bJ3fKBHQBUYGG1(;K)6j*rlphtR?Cwq^| zsG}(C_(I1oM5z}`{HvOge@T0sXr+ODLmPk17~-cv(s8pDVSTT33r)aRjxI27_6dl; zT0faxt>K`wA7pk6O?8;3N~Q?CQzB2zjNNAj6Y=BRrK{uy^ z^kr=NoH@RmOMSNdH!s92W|%+8=;m=&=ctXZS<;(q61CB_RF3zLf6wTd1Zr?Tx}ES{ zK8GHi=+G@cthh|kGlvQz;gR7`U3bWEPHiY}y0Q{xKI&4Wqd)X~%OQPal2NgVpA{?Y8NO8#jS<8IiAJ**%J&8tqslIaZslgD!krtcFmNKuqH62$=Z{(NvF&;<+U| z`r1syBg^shQ`Al2f7TmvkYTQxEYqnC*oIt76YXf!u+XbbcbZZ1aeR4MO~VrCGSCjw zu*;DW*SRa?!KcR)Ov>pmGuB4u8?&k1otnC>xab!6>*sM^L<#;yI)*s`Zg2v9O)kw} zW0kp^B2VO{SgO3a5FZ8Hk~teQA~H#f^CXV-du-}moJ_5%o={&pj$3YoEIU}o z0%W}S(J}~ff5s9rY;IQLw7PqzCe7Z;Q609fQkZvdCBVpE9dKC;dSs{E9Mm%_ylo~5 zs673?1f)|XRZS2Kf)9ntaxzPE`P{FZ=~QQWf`<8O^SmoW(^T+Yhcb|lpGMIl&=>&#ZB<6Qwq)MnVFiPh+-PVEr0f09+3c(P^_1d%q?5?5>axMnR# z&8Jk$xCTl1nKD_Y04||%BzL9V@czEj*lc4ZExQJ?xCodada4Y zD`e-_b)!lB+tvqa;me|a0H=f^d!TbYudtSM#>7Da2CrSn#C1(B5hCo_K=4I9(uX2wLne%I=GO*-i% z0ty9~?Y~=$3$))B9cRJwtRpS#cXm8)R7eB?-v2MCI%||5?WrBdo13xqV6Pm?P!8ur zf7tK%$ZDKPMRW94knN4>%%xPXtUT<@*MFb1R{YPJ(UEkC%`f27ti|v4aQc)5nAP>A zv#G3rX5H@ULQtxyRVVYv7Hd?G%fhNYbF0TxyZY>*)gzI?r7Z{Cq7CFHZyC2stguTC z@~9@O_=);GDg$Nfs4@&5!m^xSE0YNxfBJrD>|L|Md=sHv0|y95Trq3bzoT_g*HmSj zvgrp_V^IihR~_J5>?@##UbLmnC(A?d+x5oz(~{PU6xzN9{@)^7(tiO{FI!(w+DJ}< zVyyPFSF`X_lv$4@g6aX2X;}Hx={huZ`diA%J*ifKcNdk-A&CSTG#}OECk^jnf2*1z zlEdCodSXFv^fpKu1h1yydHq;EP$P=`6J)y&u zx>n>e)+J$09)xWYm?@QK=HuST1iH(s;A0RSc=BiYi|`|!#!+NczV%*?u+Z7-@MCKV zh1Z57=XPVa=+b)?A7gb@{PY_ee=~O=76dmplS3=0IK$s#A5$1NgY^J}BTPC#$AGSc zGmrXC>1*KFRE;|^<2I3|?~B&|_kaDD_4bw|{ZKb`t)c?X_3JcXrzNe*W72~bNtuCL zy92*rb*;H2*9xH=h*eS-4u#Kk{t_V2l9)fx2aq*K>Zo_Tf7mRB9}InV>o*j)HwXKXFp_q*5d0Z{|buyt9Uvo`Cm!y*Bz$F zN-UYWwlI8|im9Q5x+X;qJ>jw^vb%6fKP)%!8&2Cc%Ki=h>D!!~@t9 zHJ$5KTEm~H3TP&O&4kf)YYo9xR4{8K*6I?fsN8sERAM!`Sw@T(qOz@yA`;*8sz9xU z=uihWy8-)9bo5B9A)#~KU3PZRtn%GLi85bD$2m%{5^tm=o1HxP1|vM@PFNb5%55W4 zPP()=l{@yP$WM|Zf5)<7IL}HJqTM{mR)qU}Taw#x{WdzCuxs3*{9n3Bm-TO$X|Rx2YHyi_qM zCg$7vdm+N$HrZCjmTjHnl(s6?0pQt}E{tTg%8uu(eC<9xf7ZHtLtAxEmP0*1Rq^qs zVsu+n6>cb} zpip~SQB@7Mjh7Z58YO=c9o??iVbnHQr^_`R^mqCzI;d`aLTT?VHID##a<#T$6}H7p zXJLh&apK%c#X0bq(PjG4`~TbfwjD=~EU|Zg1&a_0OjQ;|R$tUhHjC(cx29X_QT0Wd zLSu?WMs=l{mC4Brc6Cn`ft_9KU?0}@!+Q5&umgK+cx@QAcL9IfSTAOF{WFqAdfH!b zoO2=~ANL*ue1cQNZ``$Yz8QP*P z-h1a{ve?sqtD#XrU>Kh#x)&)}UYEkv*gy*lT_2Ys0HMCd54@~A>@BNgE_J(rIgrR79g($dy4jV zAuBD}3CSoNONFpiS4Zh-OpqB4YVN1FDW5`UnL4eu2tojP8e_tLWq)< zafF_*5-Wd{9ig5mpR<^(CPev12jq4v5R2et7A-SEaZ}lPOuvWqO4_RS&mahzKeLF$ z!fzp-bPYjv$O43<+nNyJSF|#(B7`eaG|%SbY-G(M(yNfQz)a6Z+w2j~WVq&A$S$XZ z_HbvWgrVg+qx}9*L=S!rS@gbtJG9Xo_AG!}g-%`u*7ZA1EPYF|Z;@EWLF(emW=XPI zZ;V?ou8wdC=j8(5TK7qm)xdjYR`PI9dXbb|R+4w+D71IMzt#!Ydp0Cz;*F zwYa+}{;<4VnQ)d9b|>=^rF|KgzNLyF0fVbSHAeL;W)8oUvXr_}@lug5N=VfxAn@4;>c)+7u8l$CWPzwMDJAY?TVIiwP1D}lqXl&kgBpItCVNF0AUJM~%liLZlfHRtezSJI6=a6~_bg_sn;>={4AZ_|E ztbUYO4Wq^k?|8@Tp|_lssTqGE%!7qGQLklxM90(c?4vmytTfU&7v}a*Io6wu67Ckb3smB5o^m(F<+bW?1p&yr}LRDumGMQWo#1oSbDwS$H&e`DIy1lEu;J~@Jb|F z3yD3bO(nM%)p2l^PnqELT9weQFjx2a)uz#2>8wVa!`YpHSsGbu1IvGG*Bj#;nvpp# zbYqha&To5Oz${0QYTYNhXQu^b>+cD|9}GdTe1A=<5D-&-Yox(r`oE_S-za^kpvKC( zws1GtENIVV?YM5^R96A43YC_flD9MpX!f%_U@np4R{Q0a1Z@$c1ncqa+H~p&?WGOZ9D)303t3<{adxej34takQ@k7j}MIMg<7k)Z+C)l8u$D#sw zJ1$nbDLpCYGRZLu>LA|c(!6K`%htE_xciG-#Mb_vC`T`gEIiI5DzAj$>FM$rREm79 z8K9A^1VDpjMN>JLnh^~;(yG@Fby&7KxyHACNX|KLUn3H}MC(>?o?|dQQ)rq+9HN#d+Pm1g z3Efx@!F{d;S7@-n4%_h}ye96Dt04H&k*kot3NOyS&I*iJzF2?obFbJ}N>!irfM!fx z+Ai;?Y@m>O2H$^?ss_9XoK8s^RNpmB2BOU10bt5X`C|<5ae^VN+?Sk9mJ|x(1nq}Z zH8~IT8h)U`%MFDtwra-A$F=6!E~y#9)A*j!Yr!F_F$@Sr{#`odWg#uZv@s|F*cq0;RIrOt%MNA=iV^ ztLx$oay-f>+R^F+c1`92WSbT3lGJUtiWDG4E*YYn%HYa>S1HU6VaaN(i-p+tTuH~? zwj6;kkt6&;>`%QYW2H@6r3-JT&Lt74kbgQ)ZEGr(FZp1t*m}HTzY3_z#Tm_j0(k{u zZ^8j?ayhCh{e5^jl&+QOP>9QV>#MXCtoCU~tW`^5X^aTE5>Mu>c_kKfQFZcG#19`v z-i}rRs;=LEYH0aX;4Ome3_Pqj0>E#2>|&)l;)Gso%heiD=_z>Bjyld67{`?~B7<@SCa#-O{yP8r4UvcFG_iKeX|xX0v+}^*4ykZ_f(zCnAkgMxm2c*>Rrm z(f*W?)Sb#w#vzV5&9W08v;F7OkM=(^rbo4bl3f!oa{+`x#g6YC%+oQPv=)+6m|=Bg z0j==>qx#CmCz#OxKhW>nGl)fAlNLpxpx>pq@XN{en8qYhK zF=s7Psnj;nnV4h321`;YdXu65yyJw=L$7q(Z0~*DWMpt|JsM;JfM&d>79b<^c+GXF zE$_>sv5h9>Mm51j9|=Ujup~3hH_JGE0%1*@I z*X)?F-V(t+%s7ej-!8g2C;e=QN2nEyVc;W}y@2lw-8Q=d%Lo_&M4~4ieP(5UT!&hW zN`e@bZx0fMQCwh6qEU$t5`kFqVb|abwLhR;EIe|8*OP;0c)|IYrivAg;otJ9Fj!Ol zUz<)tLzH8;Do!D3Kvnt^0|O%+i7zQ`iD%T#t$X6(Tc)p(jxNSK1xo~Jo$RorWu?3+ zjOaU$3-(~=mZ17lsCqA@E?Uul&`5SO40Ft2vSb;`+oM406e+5enN|D>#sYL_(woVu zYowQnF;7gSvjd77<>`$bT&{V!fa1#PKa<@Lv+#6Oze{HA&qRfA`;fijGT}TpSEcgd zD$j1e%w`JtWCrPO=UEIsTE-M15^tH(hB!aL*tuSP<-wIm96(0WfG$ z_d%B51umDB(swyO@#Uj`>EsE^3mx7wp)cYXiQju};3j#(qVoBz&K%g*KBA3!DTr;L zcpuRBv%F1tPt0&%boG|}7sbt6Mvj0!kXNst2WxmJj5HMETQYg}y62?*oFBrPnh9vj+~DjC&_3Q~)t6N9^} z9}5|{Qh-ChP3UQ6%y$a&^(MMj_OiaNKJ+7Ft|snQypwXE$T^<+sBd=2uF6)TfdVDn z*qAvZOp%&;2g;>?56FWMvMlIebI#MjI{CSgj|{IBaSP~7+7=??i_|{YqPo83kXWVek(wh3JoRb(&# zjJ^R2>~ouo-GYfgz6_bc?z+Zvu$iv9JpxF#4RLXCozkm+6I?(i&QT&p%6jg#oIUOM zv61dBK-s$TI^{y0eLE>PX027VE88Iii1aEUpy-lQoS{{?ykDzMXl#-b?|AO#Z1iGL zwOr!yHoI$xTiBoNqwOJ+Jr+Bf@z;{^z%7CvnxTDJ^rZmm-XtVsLS;nA6SU9x>1m6J zN1LJ}z}qr^E?AFlryhb06ivBa;gE|o21tlLgRZAhywwS~CYO+y$%9Y4o&0gHsJ+li zzly%CPVkb138I!!N|qJxWJ__bg}?y0^>q*X6A8)Fh$copxb^idr(`&(AW(bQy_C2V8N{YGni0g!js&E8tyidrpR}nhL?Lb7m?kV0 zlq@L(UZ!jeip^#e#Q@JqJ4>?}qjVNA{F2r)WdZh7{zNq-0Xd!+B8_E&_;YL`{4UiU z^foGgw{?0!yI$GWRz9fEiFRpw3V@wNxChRECkg*HDR3zva5WytjSBanwYPSlphXmz zC;@ezp!M}!lB)G}^_OTkryQ}qX1RJ=Qd2=f2<)e7N&?#tY3xHi_F*~p;n~N=*TT}V zqs5d~&SYv#62jer%%a!eKN(ykYS&5jq7WdHn-2UOg>X?{WIA00^V!64roLs+iA`F6 zYBV)Tr&FvbWl+H92yj(tPSbaBSdAbbrmwFf=-viV$0$NJV z9GyJ%%RYCRtyz&K5Vy*ZP2y5-VpBnUxOjmIyx>i2nL1jTr%>w#)w(Zgov(jLgDxH{ zljUQ4ENh0w(ExGE@7%BYa)ZB;n3h6+E?G<{JBM(oiUh=S`Tc;p*r9)J!A9T?Wr**e zVRV+C;D0~B|K`%ah0@`^-~t(Mz<;@j$xPD^(7@22llGwO_WWYwHlZDT(`~dQC1O5{O;p;@WDZML04_7>YjdVxS zwqHx)K*R>z@wL(T28649Na-CcUQ3FLV;puj-gmJ-W)k2{WJl8TFp0y?CS)n-MpN)!TICBxgHi0^hWl6)l5UjM)T+M z({c(r@4E>Ynil4PM<9hKXq}7_OixF}(SzB=nwiDP;77px5A!m_P_9D^`P03vrkfZL zOUelaa@<)U62G5v)1V)^*u2Z*eDIWSJmv3g_1Sh__3-tO+!FIibhjjbef23PoHHVB zS(S|B?$Q*HrAVIXsBMo5oAr7s6Js1vdI!ap*LQp*?q(*AW%B&FSm*u}_;0#Uz|-nr znjJ%~LoBH8Xb-nT`d{7U>+5&?XD1o#(bc)A*ODjA8_Rh z0=^NRkf~!>o)%6|&N{CUuZ_Ek3!Te`lyzFUAd`%>;8q^WXE%L+d1tF7*lQ&@l7|O` zTF14buVc`*67DV4j!&zy8FzagfzBair{I~yS%;wfVs|Bljo_(g8O{AoKP-wBFLR zJ<)n1rJb+P7eSbRgG3@%i8iX0g(Q1gVqcb#mz;5X4^!z6p)P(&@p?=u{`1}m{n4{u zk_&p)j9B@MSnDpLp7o$~JJ+v@RffU0n;d4sLa&uYWV4q`6raEZ<)!dbvBlBpsadR; z=+ctkYe8CJyE+J;gT14i_Ich)V~9b`2xlC|ocYYj6KT$W=*v4JTLi#|Y=a9p8j^42 z4N|Sfo2>$|xMB4M=t!|bQ4R=Ecs)68rx^vr5k&6;GR{aaqao0Xd2@ooK z8w?D=z*if{*qrdzmk-$X(P)MuH-W`~iDY~Mk5RC70ou2UsJt4)$izfx`C;IpgwWQdJp%{z5!jq-_D@TO*JR^TGCsMSxpuW6(wEu0WgM?S?LY4Qac`ju@i3WwTY9gNYuJLcHce z*W-z8g%Fr>Uqv+XrwqdEiZOu-=;@2E93kSHD_EXztGpuK+ls^JzA9)(E@&&P=H340 zg5F5p6|V*L!-~^dK8-&dygsHJZG4#pfk*t=?t^=thf8DU#Sl>hKw8Y9ODQ!H(1=1EK<+QC2%3jpdwBe*aJ(#iQ<~RJUK9>7`8rW-9=}}=s{DYsACTcLw>CjX;LOiw{ zAtJ3#r3K`5y9rsvatPQ98_(Ob zJmc9ogHR?vj!q=#;0=aSp+`CG-O>D&D8?IlgdeU!geH)T=h<}1a&4OM(f(&_%-f@X zqDY>ntrPg~XxbaK>5oNxa)=^Ecwow127#vHiRH)B(-Ux@Li~VKoKc$}vXlTSut_jU zuW~P`o{d{MNHoQaWZ)@ae&;DL!0r8P^13}9rDKNna{;L~qBXNC0v4~m&W-HC6*nvP z1q02*f|$7UpjRc2pkLDB@r5eQUKrVbt5MZeG7T~kmbffYM~qXe!l`?VRze{V2))iZ zpS=aHxN4*u@Tfn^DNvBBjuhDO)GBJ7KotgQOa)<6xKRE@;l9|U!a}NP4}dCDt*5ln z(CJXi1By(?Um%9v+4S3ju=EJ6&M^szYj`ArLwcjpKEjShJ)BRIXk6)nM0ucp%~tn$ zJZ)JCovIrg>Tk%7E(Buxk;4k$_Tt%wzOSJmtxPUPj{oA{2DkktvTr_F;qDgBnnzZVo zNvkiKG<4CVD_k_G!0lG`Wm5qwx@ek^1E&eF3S2Y-LCkafW`xFcFi2#c!zqc!u(r-ci3*Ib{EdE187rVv5Q9_`B}~{PKYC5 z`#Wfpiu_zWY40cLC?{8~<_OFVWOU6~+nClo04>RZ=$g!3<((>xUmMU#vl_6-!&H5| zjgPj{o>dxihEhQUw!La*a$?ve0^Sc#M=D4?io(9wBwW42Z)os;{W)AKv`QZdTn!fRRO@YD~TrG{*z{)ja7`|3@{S-PV&WcyfkY?E&B z1j^?HTv1J3qcJakz#x%soMzAXK#*3%NLkw>+u?}}Fh$m|1yX{EBPaGn1z4q0USNC; z3Jv7y&Re5FKE1@vg?D-Gi=Y-!U$bcE|iCmiyB*L8H4G(`6j#EICw_^i({ z8{Y2w&ti^w@OCf5UyuQB_tG=jDjh)1JXN*Z(RKew*S!LNUBJ)XXMM`4ijAm;Y|x^C zQ)NsT^^4;KZgy~s8bPi&)&olp0~x^1jx-)w->^nGdcU}lzn<|-E2U9YG{!P%G)2~_ zS!B2giu?S3MA;bd0)jN!u4B%=mQMri?oM{NXr4u*7;}~0>z*N(+H!L5>*Gqt{z?az zOSM-9V3SsxNpUMZ1j+8??$+f?WcAu2H&U5*(fm&4saafDOgI~KFRf#zq&9;;x3@2f z>+2?$+aqv6{QN1CE^nL+e6Ho9uOzBg`y-6deYdoKvMW{kb8xd)u)BBjV=6=g8%UcY z`ErhW2#yxQSs6fmtW5YLZx#BJoHQ7cXE4>WO&q@WjXkZkCzg~Oy3$57^ivvFji!$w zU%j@;%fVN1!SNvg8hEAFB!!5!{A!uuL}Zd(sQ#hhk^yxvLuDpTC*`Kh#KEGhl$rPs zC8X?s$b^niH6D5RFQCDtB?038NaFs4aNn?gK_i-U;ihk1ei}*();Bv1;;!-TrVo^v zZnlVbGi{zLn@!lkXg=j(z9BSKQ2Fnn3Vh-QivhhM4@7S%BcN957G7x0n7K}ChoL*e zcuP?ru8lq%<7m8PN&_U*z7BqWluloh^#kpH9{8`HDON*#*7<;BiaVimoS06P@VQda5lh&t;>4fy4A=F4 zTB|!+0-6OzT;DSvqdP|z9UvE~L`-3r555K17sVMN9|z`-uaB*$H&2bu%(bl6Jk%1S zb_5wfql1Rqsv!g1H%)MVlI2vvFopO=vHHj9Tf}NT``<~d7OxhE(ok4&GcKD9I9)?* zzMYL>`UQLkt-=O(SED}B?=R62PwYj1TriFvgYM42MW7XS1e-XOe|6U}`rtGl(2HC3etNnlcnHBah-T>JczOy=?=t%Lsr>gzm5=qFJxw#e z5!{mF82`C9(Po=OGSF7ckJ(U`Ly#5C&(d0q#PkkV-9fXGM8=Q7*@gm2xg^PdnflS} z0urK3u*35iST#X>nnorV;g=L!tQqwIbU4W$=VF!vf8qkbB@fFb+iC#3mB)cbY1Gdp zhI=ord+L3iiuZM@-`C);+llivc`j((LpwYHy*SOV1OjjesVH>f6|@CrH9`2%j9WPG z!S;!>kSKE7Op;%aW+m;XNg>hJ#Hi$DK|FaP@Qzy8(#`TCdt@r$4T>o5QNuc$@~0ttWd z^FRCgPyg%Zzxlty#m0YB$D2)J;hMOmpkvWcg24&Byk#A%ISgzT1I#FXfQq5S! zj9L-N%@7Pgw5*T}s&08hA1fv-M1++4rIwji#LF^zh?Tnv1`*S;)?hBT@iJ#6QS!hF z+u4dDH*hB~)~ZA41$AsC9Wa_lk++HO7``g-cBdDYKtLKOe@-an8jT4ZL?Mbciwqsf z8vGFOg#xnmlc9Z9nl^EOx2`r)^UiBAMOf&)y&H<%tS=N}2^5=r|=rU(!YD(58IVtUHk_LR{Z^0#& z3=a+b>_ojo>%Qax^7o}vGRprQW-)6oCIvtFlvwp#|L@K$db^HR|fCE`?x?e)dtUmhPCmxq@3q~$$Q z$g~+_e;snry;h*}TR`d7GH|FYW7uUB-5}MWIuyZD6qF=ICyPEunkBf~`+2LRW>JqL z&BS-(r`ScD8|Qg_JvWc=`uf58`VLe!>WFH$09OOljNuzd_dB+2-e=_>WZE^=+&F(BXEbCgE<V7idyX z`@QbxXL(CKaaA6r9;A?pqy~A0R6LpvEW7xtk5>s&Tr)J>q6HX@h!=+{HYEj?;GIGh zf8SyQ9w*VE^>}klcJ<td_@u@9%YD?(!VfaKf-;4IQ`ut}zwQx9`5|6d6oa*lWtr&?pEcv-0Dn6fQXoHyw@yGI__5E;wS>;b`YLsryBR4}7R zSH{C#*2#_x%YZSr;1)I9^_|d<+Wl5*f7w&afp9OKuvcifcntL22%2H|RYsA%MJv2G zBb6u;{51Jh9g&wqqDbuyz004)$*SR|K_IhT6J@&Uxo*cSXjD$QG|<7P5WvBD2XS^Z zGeR!Nfbgj|6D@$Mm?xsmfXj%#Ktb8|pc9dn*^Yk~Mgz@EXsD(Tx)o2Y5q;N)f9oBL zz8s8&90;=<49d3xoNp6|H5l0`JQxQS$;uJcVbllX~_r zBO`W2%jI(7OOa*GBA6Car#?Xoe-mz5m~^{pA&JK{L3imOS!Q^W)*GHAN^)dG$I_s< z6rseOQrQsv>ntS%=IsM_9xw>8EJBiyMaW{j%*aA?57&ZN^2KK{B*PPbU4Xx~;IA$C z%P_Kls&VEUStKztjVvZDl60S=+Z+e>nY_DV@>w zXh*Y)R;^D$wa~QAss`Z`y=sr_Lo{*fRH0FgUP2tMi&xggQv`NC$BZyiSOf^1g-+VY zJ82nMdN)T+!C0V`Ui%==j&2-|a(IZeV5`f!4RK1`sS`LJ0<%a&nTS6>GN)#VbSBmr z@Xp$$ja=oe=;QmRwYzmCf9}x#pT&Y=P-zZJBFiTB=9Wz@W`J2=bmy~kGEC|c3*)&F zyQhOF-&yEXdIS?RKW{JgsVA?O1nox1EeW$0b5!oV&(>o$l#0&5jnj&t& zUvPTG08mYk=^vJy>J@SFBZ~WEALcwR%%$a3ODoi2j;w{fV<3cFe@wo@VkCw6p~*@E z8BP5Orm>mzK>VzjU|xbg4$^V!SQ51mB>7_=0b?&XO_>QRXen~Be<+@q_{Pi!;@>!N zW^RY#Fe1VbVoBZWc6a^qh2Dkkx;)nUyHq`Z|305!xyyr>Cj$ znzWCKAN}!1I#{Jne^Vue@4BEA=%FRLdvREx11U-i#3)R>p;hWCd0lZnY;i7-JmG^8 zdbP2uoL37n+=1f8gzE@BM&Lo3-VQ`yxTyp4VMIV{v{Kx>$ssr;6mBLQqVH_;VZOT)b5G=bQ=FpbfEf#>sSO#;zaCTA?nqSqOL-B0#TAljkW2#RxjxN`t1=HU+3T z&PJ=1zy~wF)LDugDoA}0L2Q}g(wV5ff>^MKk%zjM9yofWJdjsis(%234wsMOWAVy5 zME&5wfX6!&0Mt#R7uX170i5}_xO~mM2`0VC_6J58O(t(8!2!xa&fNdm6CA)e5U~X4 z-fH`Mzh-|Q#-;HTsM7@6rQ(4vp3@UHzL*{b zl2LM#gX2msNeo%yL@PlCE-)!U>t}QBsZ-UYihq(zh-c#?8y8rd$I1Dy zLH4x@Hc0QEID_07Bf;xV^pk5;1|kH`y{`oEIRp;8y4BA?0uKcsszmI$u(jJ_+uK{w zMlN`>t$wzfKa<~XU)U;9OK=DqDXRQl$SmKjbbBBew#lX_(0a5Nd}EN3eC@X2sg&eJ zU`eapZlf?w{C^9+Trz~j)?jc0cq0_V1)FqblkPK!kXrB+`Yxy45vMbX^&otOQJlsB za&c2(uAp}UEfUDgrGvXFr8|Y8%j0xYkPX;}7vlK!U-0e0MErMiFo|d>G+$(*NAYMw zlsnU4@@HlW}yf5+rdzZ)8^TCT;JOl)v!vvob5PtzP!~`?M$xrjVOb`tEJrndcn4m;i z_J0e)k&fKtV>fsxCqNa)!wimxq4pZ~L0jgfl0s8*8G*0o`#FYiS$VEAPLWMQzn+u3_27hGni(LIZim_%C z8)5_gW@3ZMH!e2d-?i9aQZXr8xrktp8Gmp4ynW5^nu5SoWH?}#!z+T?$!xWK)_!6b z(u;P7)Xpx)cK$iKE-vqaO%IHCO#yFR3}B>;lXzP+lm<$N;?fZNE~&Bitie)>i$5FX z;`xlx(<5VF&`d|%TP@3W=>YAXjK~Kn5o4^wuUqwJZYm+O0k`WOx%q(Xx<*PztAE*R zY-VadKtswVH=x9-`4VdyVY@`lc|P^QU<9@6aWYS z2msE4B3S?c00000003n02bYnV3K*B(vbqMBpC!Hr3&eHRW@dNQW@dNQx2sMXPHKN5 z@4B|b9}J&4xZldDO>cL1_oaBf3hQd-Z=NtoDNmRvG+WpSHV(XvH~-PFpRqe(5PBcW zoiDr}%8^7DZeRcGMo;0FJ509Uy=BKAs;Te2!(DF>1H4N#@EM1nbNKyXKk;M^>5(~=lp*=pZ7!Go7%r4{Tqlw_;)<-N1->ce<%7k@{aA_ z6a5=|NA~X%{abhs?ce+Je(Zav^Zw?e;R{XM++2FXpTl|o9~c*Y>+xy4zu_D%g(Xjq zg55Os{qXwcKky!OH+ndH8tkgs?t4KP?cVd%@`av^c|j)ib7G$My?GhMpu2zdduArC zjBD=HCtTxO^>O)}>vQXlVu-oDQolacuj}_T?d5bn=c6!>L^1CZ{<)#cBa7Q^>X*xN zTb%nI9htBN4>8Hxw7tzj$B*mP z@Auu0Ywpk9%5AgZ$^ES@{@s7&AKk#8Yy7j?_`%8K-r!_w%l+MTe{_rcan1cHKQd+8 zDZDf9-0;pd{N&+ic5U%eS>eU)lJ<6NSo)9Nwn4IRum5Jkijh&epWg*;>})*14n7d^b+nTK>%g?=A}e(P;j0 z$D7@iTg&fvr{C`A#mbesFYZc5kCrc-)2}=24%}b?z)9By2Q^$=S?=K4JHJ-{9#4MQ z)j6H+c)red^{0Khrj~zBcXXw7w$YDS*W5jxt<2lwS=XGk&elD6|IXrU<@~iyI=y&s zz#>y`R)4s_8}}uaqbsxh(auhf56lhwd{U>kwZ*FY(RgF-n7;hxPPHu~t;cuS%|MM0 z`a`}^SAPx8{kRmc-&ms8`#)Gh6Rxdm;DsU88Zc&A!_qlJDBTdNr@LLpc$> zyQAF|;XmN}6qDw69LqlPp`Q7};dpz{+jX0Ik6Z8WvEpRZwQY0fK#dZbE4Kl6gCD9d z)SWy0ncKPc+~I%Es;_R%HO{s|JJ{~+k2}XWc4M4XW1N;Buv>atj}KivcyKa2=PR_$ zLAm|1>BM%=?Ur2<-flbdCM7qucG+GT(a>5thU;wT1hj0o#C2|a%^4rH8f|UOcL&GE zx1Nd%-ZM0*+bqnx6maYP`>(loYL$sKw@(Mp_C}J&YukV8wmTp5iLu5~vo+g&zcraq zncimpR_xCKdqNG}@4c79u^4;m0KdN1{kZPO*tX-P4!YQL)^y7~;=pZ3KD}1k-u`&6 zG|sLexAe!oy=Ie_i!MmxbhK|bIAhc1-fn$v-|Z^??tFPGabt`_=PFh^;+KbqBbG(7 zU#*>-PZWPE9Nv2|AF?wPf8TSuwRL%NU=ak-b1+v2~~& v2F3L^sA2^xLp&g9feFdwl{A*KYeF% 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